HyperAI초신경
Back to Headlines

가짜 JPEG 생성기, 웹 크롤러 대상으로 15,000개 이상 이미지 제공

14일 전

2025년 3월 25일: JPEG 위조 Spigot는 작은 웹 애플리케이션으로, 마르코프 체인을 사용하여 무의미한 콘텐츠를 생성하여 공격적인 웹 크롤러가 수집하도록 설계되었습니다. 이 애플리케이션은 몇 달 동안 하루에 100만 페이지 이상을 제공하며, 대부분의 시간은 서버의 CPU 부하를 최소화하는 데 초점을 맞추고 있습니다. 최근, Spigot의 로그를 살펴보았을 때 새로운 크롤러인 "ImageSiftBot"의 활동을 발견했습니다. Spigot에서 생성된 모든 페이지에는 이미지가 포함되어 있지 않았지만, ImageSiftBot은 매시간 수천 건의 요청을 보내며 이미지를 찾으려고 했습니다. 이 크롤러의 끈질긴 노력에 동정을 느끼면서, 그 요구를 만족시키는 방법을 고민하게 되었습니다. Spigot의 주요 목표는 서버의 CPU 부하를 최소화하는 것입니다. 실시간으로 이미지를 생성하는 것은 CPU 부하가 크기 때문에, 저는 이미지가 크롤러에게 실제 데이터로 보이도록 하는 방법을 찾아야 했습니다. JPEG 파일은 이미 잘 압축되어 있으므로, 압축된 데이터 부분은 랜덤해 보일 것입니다. 이를 이용하면, "압축" 부분에 랜덤 데이터를 채워넣어 실제 JPEG 파일처럼 보이는 가짜 이미지를 쉽게 만들 수 있을 것이라고 생각했습니다. JPEG 파일의 구조를 연구한 결과, 파일은 여러 개의 청크로 구성되며, 각 청크는 마커와 길이를 가지고 있습니다. 이 구조 덕분에, 기존 JPEG 파일들을 스캔하여 "주석" 청크를 제외하고 "픽셀 데이터" 청크의 길이만 기록하여 사용할 수 있었습니다. 이렇게 하면, 514개의 실제 이미지 템플릿을 얻을 수 있게 됩니다. 테스트 코드를 작성한 결과, 완전히 랜덤한 데이터를 "픽셀 데이터" 청크에 삽입하면 디코더가 오류를 감지한다는 것을 알게 되었습니다. 하지만 대부분의 JPEG 뷰어는 이러한 오류를 무시하고 이미지를 표시하므로, 이 방법이 크롤러에게 충분한 방해가 될 수 있다는 결론을 내렸습니다. 크롤러는 이미지를 다운로드하고 디코딩을 시도해야만 오류를 감지할 수 있으므로, 이는 그들의 비용을 증가시킵니다. 이제 Spigot는 약 60%의 생성 페이지에 이러한 가짜 JPEG 이미지를 포함시킵니다. 이미지는 URL에서 파생된 난수 발생기 값으로 생성되므로, 페이지를 새로고침해도 같은 이미지가 나타납니다. ImageSiftBot은 이 방식에 매우 만족하며, 하루에 15,000개의 가짜 이미지를 수집했습니다. Meta의 크롤러, AmazonBot, 그리고 GPTBot도 이에 열중하고 있습니다. 이 프로젝트는 약 100줄의 Python 코드로 구현되었으며, GitHub에 공개되었습니다. Huffman 코드에 대한 연구 결과, 생성된 픽셀 데이터를 0x6D와 비트 AND 연산을 통해 세 개 이상의 연속된 1이 생기는 확률을 크게 줄일 수 있었습니다. 이는 CPU 부하를 최소화하면서도 가짜 이미지의 유효성을 크게 높였습니다. Industry Insiders' Evaluation: 이러한 방법은 크롤러의 비용을 증가시키면서도, 서버의 부하를 최소화하는 효과적인 전략으로 평가되고 있습니다. Spigot의 개발자는 이 방식을 통해 불법적인 봇넷 활동을 방해하는 데 성공했으며, 이는 디지털 보안과 웹 크롤링 관리 분야에서 주목할 만한 발전입니다.

Related Links

Hacker News