
Скрапер поисковых систем на Golang, предназначенный для выявления опубликованных ClickOnce-развертываний.
Инструмент выпущен в связке с Less SmartScreen More Caffeine: ClickOnce (Ab)Use for Trusted Code Execution — презентацией на конференции / статьёй в блоге от 0xthirteen и меня.
Веб-скрапер на Golang, использующий как chromedp, так и обычные HTTP-запросы для сбора опубликованных ClickOnce-приложений из поисковых систем. Поддерживает ротацию исходного IP-адреса через AWS API Gateway и указание HTTP-прокси для отладки. В настоящее время для скрапинга поддерживаются поисковые системы Google и Swisscows.
Функциональность ClickonceHunter управляется через config.yml. В настоящее время приложение поддерживает два режима работы:
awsapigateway в конфигеЗначения в файле config.yml, относящиеся к поисковым запросам, включают:
Другие важные значения в файле config.yml:
Скрапинг Swisscows реализован с использованием протокола Chrome DevTools через проект chromedp. В поисковых запросах к Swisscows присутствуют проверки целостности, похожие на CSRF, которые реализованы в виде заголовков X-Request-Signature и X-Request-Nonce. Для каждого dork-запроса используется headless-браузер Chromium, который с помощью функции getSwissSecrets() открывает стартовую страницу Swisscows, а с помощью функции listenForSwissSecrets() создаётся обработчик событий для перехвата этих заголовков. Затем заголовки подставляются в наш dork-запрос для прохождения проверки целостности.
Опция HTTP-прокси была добавлена, чтобы помочь пользователям диагностировать эту проблему, если/когда реализованные поисковые системы, как это неизбежно случится, изменят формат ответов или API-эндпоинты, используемые для выполнения запросов. PR приветствуются!
Поддержка многопоточности / горутин для выполняемых поисковых запросов не реализована. Для задачи поиска опубликованных ClickOnce-приложений это не показалось необходимым.