
공개된 ClickOnce 배포를 식별하기 위한 Golang 검색 엔진 스크래퍼
이 도구는 0xthirteen과 제가 함께한 Less SmartScreen More Caffeine: ClickOnce (Ab)Use for Trusted Code Execution 컨퍼런스 발표 / 블로그 게시물과 함께 공개되었습니다.
chromedp와 일반 HTTP 요청을 모두 사용하여 검색 엔진에서 공개된 ClickOnce 애플리케이션을 스크래핑하는 Golang 웹 스크래퍼입니다. AWS API 게이트웨이 소스 IP 회전 지원과 문제 해결을 위한 HTTP 프록시 지정 기능을 포함합니다. 현재 Google 및 Swisscows 검색 엔진 스크래핑을 지원합니다.
ClickonceHunter의 기능은 config.yml에 의해 제어됩니다. 현재 애플리케이션이 실행되는 두 가지 모드가 있습니다:
awsapigateway 필드에 채웁니다검색 엔진 요청과 관련된 config.yml 파일의 값은 다음과 같습니다:
config.yml 파일의 기타 관련 값은 다음과 같습니다:
Swisscows 스크래핑은 chromedp 프로젝트와 함께 Chrome DevTools 프로토콜을 사용하여 구현되었습니다. Swisscows 검색 엔진에서 수행되는 검색에는 CSRF와 유사한 무결성 검사가 포함되어 있으며, 이는 X-Request-Signature 및 X-Request-Nonce 헤더 형태로 나타납니다. 각 dork 요청에 대해 헤드리스 Chromium 브라우저를 사용하여 getSwissSecrets() 함수로 Swisscows 랜딩 페이지를 탐색하고, 이러한 헤더가 식별될 때를 대비해 listenForSwissSecrets() 함수로 리스닝 이벤트가 생성됩니다. 그런 다음 무결성 검사를 통과하기 위해 dork 요청에 헤더가 채워집니다.
HTTP 프록시 옵션은 구현된 검색 엔진이 필연적으로 응답 형식이나 요청에 사용되는 API 엔드포인트를 변경할 경우 사용자가 이 문제를 해결할 수 있도록 추가되었습니다. PR은 언제나 환영합니다!
수행되는 검색에 대한 멀티스레딩 / goroutine 지원은 구현되지 않았습니다. 공개된 ClickOnce 애플리케이션을 찾는 목적에는 필요해 보이지 않았습니다.