该工具与 Less SmartScreen More Caffeine: ClickOnce (Ab)Use for Trusted Code Execution 会议演讲 / 博客文章 一同发布,作者为 0xthirteen 和我本人。
这是一个 Golang Web 爬虫,同时使用 chromedp 以及普通 HTTP 请求来抓取搜索引擎上已发布的 ClickOnce 应用程序。支持 AWS API Gateway 源 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 应用程序而言,这似乎没有必要。