
자동화 방지 시스템
Predator는 크롤링 방지, 자동화 방지 및 봇 탐지 기법을 시연하기 위해 설계된 프로토타입 웹 애플리케이션입니다. 허니팟(honeypot), 크롤링 방지 시스템 또는 취약점 스캐너를 위한 오탐(false positive) 테스트 베드로 사용할 수 있습니다.
경고: 시연된 기법들이 정확히 무엇을 하는지 이해하지 못한 채 프로덕션 서버에서 사용하는 것을 강력히 권장하지 않습니다. 기억하세요, 웹 애플리케이션에 따라 사용 가능해 보이는 기법만 구현해야 합니다. Predator는 기법들의 모음이며, 그 코드를 있는 그대로 사용해서는 안 됩니다.
아래 마인드 맵은 여기서 시연된 기법들이 프로덕션 환경에서 어떻게 구현될 수 있는지를 대략적으로 시각화한 것입니다.

참고: "Observation Phase"의 숫자와 요소는 클라이언트에 평판(reputation)을 설정하는 데 사용될 수 있으며, 임계값에 도달하면 악성 활동의 강력한 지표로 사용될 수 있습니다.
봇이 보내는 HTTP 헤더는 실제 브라우저와 비교했을 때 순서가 다른 경우가 많거나 아예 없는 경우가 많습니다. 많은 봇은 윤리적 차원에서 User-Agent 헤더에 자신을 드러내지만, 어떤 봇은 아예 헤더를 보내지 않습니다.
여기서 설명된 HTML 변형 기법 대부분은 selenium 및 puppeteer 같은 브라우저 기반 프레임워크로 우회할 수 있지만, isBot.js에 구현된 것처럼 다양한 테스트를 통해 탐지할 수 있습니다.
대부분의 봇은 웹페이지와 이미지에만 요청을 보내지만, .css 같은 리소스 파일은 사용 중인 HTTP 구현에서 다운로드되지 않아 종종 무시됩니다. 웹페이지/이미지와 이러한 리소스 파일의 비율이 미리 정의된 임계값보다 높아지면 봇을 탐지할 수 있습니다.
크롤러에 사용되는 많은 HTML 파서는 브라우저처럼 깨진 HTML을 처리할 수 없습니다. 예를 들어, 브라우저에서 다음 링크를 클릭하면 page_1로 이동하지만 영향을 받는 파서는 후자의 값인 page_2를 파싱합니다.
<a/href="page_1"/href="page_2">Click</a>
이는 사용자 경험에 영향을 주지 않으면서 크롤러를 차단하고 금지하는 데 사용할 수 있습니다.
일부 링크는 CSS를 사용하여 사용자에게 숨겨져 있지만 자동화된 프로그램은 여전히 이를 볼 수 있습니다. 이러한 링크는 봇을 탐지하고 IP 주소 차단과 같은 원하는 조치를 취하는 데 사용할 수 있습니다.
Predator는 방문자가 봇이라고 의심되면 더 많은 무작위 링크가 포함된 페이지(limbo.php)로 연결되는 무작위 개수의 무작위 링크를 생성하며, 이 과정이 계속 반복됩니다.
취약점 스캐너는 일반적으로 페이로드를 입력하고 웹앱이 특정 방식으로 응답하는지 확인합니다. Predator는 HTML 내에 예상 응답, 즉 시그니처를 포함시켜 취약점이 있는 것처럼 위장할 수 있습니다. Predator는 현재 다음 취약점을 모방합니다:
이 방법을 사용하면 실제로 취약한 코드를 호스팅하지 않고도 허니팟을 설정할 수 있으며, 오탐 테스트를 위한 테스트 베드 역할을 합니다.
PatheticGeek이 Predator를 보기 좋게 만드는 모든 프론트엔드 마법을 담당했습니다.