网络安全【免费下载链接】aquatoneA Tool for Domain Flyovers项目地址https://gitcode.com/gh_mirrors/aq/aquatone点击查看免费下载导读Aquatone 是一款用于对大量主机进行网站可视化巡检的开源工具能够帮助安全研究人员快速掌握目标范围内所有存活 Web 服务的整体面貌——从端口扫描、HTTP 探测、页面截图到技术栈指纹识别与子域接管风险检测一条流水线全部完成。本文以仓库根目录 README.md 为核心结合main.go、core/、agents/、parsers/等源码系统讲解 Aquatone 的安装、全部命令行参数、数据输入方式、输出产物结构以及底层事件驱动的 Agent 架构原理。读完本文你将能独立完成「域名枚举 → 端口扫描 → 截图取证 → 生成 HTML 报告」的完整侦察流程。Aquatone 是什么按照 README.md 的定位Aquatone 是一个用于跨大量主机进行网站可视化检查的工具其核心价值在于帮助使用者快速获得基于 HTTP 的攻击面总览面对数以千计的子域名或 IP逐个打开浏览器查看显然不现实而 Aquatone 会自动完成端口扫描、请求探测、无头浏览器截图、响应头采集、页面结构聚类等工作最终产出一份可直接在浏览器中翻阅的 HTML 报告。从仓库源码看当前版本为1.7.0见 core/banner.go项目由 Go 编写入口位于 main.go。安装与依赖第一步安装浏览器必需依赖Aquatone 的截图功能依赖无头headless模式的浏览器安装 Google Chrome 或 Chromium。注意README 明确指出Google Chrome 在 headless 模式下目前结果不可靠推荐安装 Chromium以获得最佳截图效果。该提示在源码中有对应印证截图 Agentagents/url_screenshotter.go会依次在固定路径列表中查找浏览器二进制包括/usr/bin/google-chrome、/usr/bin/chromium-browser、/usr/bin/chromium、macOS 的 Chrome/Chromium.app路径以及 Windows 的chrome.exe路径若找到的路径包含 chrome会输出警告Using unreliable Google Chrome for screenshots. Install Chromium for better results.若找到的是 Chromium 且主版本号低于 72也会提示An older version of Chromium is installed. Screenshotting of HTTPS URLs might be unreliable.。第二步获取二进制下载对应操作系统的最新 release 包。解压 zip 后将aquatone可执行文件移动到任意位置——README 建议放入$PATH中的目录以便直接调用。第三步编译源码可选如果你不信任预编译二进制也可以自行编译源码。README 明确提醒自行编译遇到的问题官方不提供支持。仓库根目录提供Gopkg.toml、Gopkg.lockdep 依赖管理以及release.sh发布构建脚本可据此了解构建依赖。命令行参数全解以下参数定义可在 core/options.go 中找到原始 Go 实现与 README 完全一致参数默认值说明-chrome-path string空自动查找Chrome/Chromium 可执行文件的完整路径。默认情况下 Aquatone 会自动在常见路径中搜索。注意若指定的路径不存在程序会直接报错退出见 core/session.go-debugfalse打印调试信息。对应 Logger 的 debug 级别输出见 core/log.go-http-timeout int3000HTTP 请求超时时间单位毫秒。同时用于截图时的 TLS 探测拨号超时-nmapfalse将输入解析为 Nmap/Masscan XML 格式-out string.输出文件写入目录-ports string80,443,8000,8080,8443要扫描的主机端口。支持内置别名small、medium、large、xlarge-proxy string空HTTP 请求使用的代理如http://127.0.0.1:8080。该代理同时会传递给 Chrome 截图进程的--proxy-server参数-resolution string1440,900截图分辨率格式为「宽,高」-save-bodytrue是否将响应体保存为文件。处理大量主机时可设-save-bodyfalse节省磁盘空间-scan-timeout int100端口扫描超时单位毫秒对应 TCP 拨号超时-screenshot-timeout int30000单张截图超时单位毫秒默认 30 秒-session string空加载已有 Aquatone session 文件并仅生成 HTML 报告离线重生成场景-silentfalse除错误外抑制所有输出。注意 silent 模式下 INFO/DEBUG 不输出但 ERROR 与 FATAL 仍会显示见 core/log.go-template-path string空使用内置模板生成 HTML 报告使用的自定义模板路径-threads int逻辑 CPU 数并发线程数。传入0时自动取runtime.NumCPU()见 core/session.go-versionfalse打印当前 Aquatone 版本并退出几个容易忽略的细节超时单位是毫秒-http-timeout 3000即 3 秒-screenshot-timeout 30000即 30 秒切勿按秒设置。端口合法性校验自定义端口列表会被逐个解析端口必须位于 165535 之间否则直接 FATAL 退出见 core/session.go 的initPorts()。默认线程数 逻辑 CPU 数在-threads 0时由runtime.NumCPU()决定并发执行所有扫描、请求与截图任务。AQUATONE_OUT_PATH环境变量可在未指定-out时设定默认输出目录源码逻辑为当-out仍为默认值.且环境变量非空时采用环境变量值见 core/session.go。给 Aquatone 喂数据管道输入与正则提取Aquatone 被设计为极易上手、无需胶水代码即可融入现有工具链通过管道把其他命令的输出喂给它即可README 原文Aquatone is started by piping output of a command into the tool.。核心机制是正则表达式提取Aquatone 并不关心管道数据长什么样URL、域名、IP 地址都会被正则模式匹配提取出来。因此任何主机发现工具host discovery的输出都可以直接使用。数据中的IP、主机名、域名会进入端口扫描流程扫描那些常用于 Web 服务的端口并被转换为带正确 schemehttp://或https://的 URL数据中如果已经包含 URL则假定其存活不再进行端口扫描直接进入请求探测阶段。该机制在 parsers/regex.go 中有源码佐证使用github.com/mvdan/xurls的 Relaxed 模式从每行文本中提取所有 URL并用 map 去重。main.go 中的isURL()与hasSupportedScheme()进一步区分能被解析为带 scheme 的 URL 直接发布为 URL 目标仅http/https协议被接受否则发布为 Host 目标进入端口扫描。最基础的用法$ cat targets.txt | aquatone输出产物六类文件与目录Aquatone 处理完目标后会在当前目录或-out指定的目录生成以下文件与目录README 原文清单产物类型说明aquatone_report.html文件可在浏览器打开的 HTML 报告按页面相似度聚类展示所有截图与响应头aquatone_urls.txt文件所有响应成功的 URL 列表便于喂给其他工具继续分析aquatone_session.json文件包含统计信息与页面数据的 session 文件便于自动化处理headers/目录每个目标的原始响应头文件html/目录每个目标的原始响应体文件。处理大量主机且无需进一步分析时可-save-bodyfalse禁用以节省磁盘screenshots/目录目标的 PNG 截图这些产物很容易打包压缩后与团队共享或归档。深入产物生成机制从 main.go 可以看到完整流程所有页面处理完成后程序逐一读取html/目录下的响应体用 core/similarity.go 的GetPageStructure()提取页面结构HTML 标签序列 id 属性再以 difflib 的Ratio()计算两两相似度相似度 ≥ 0.80 的页面归入同一聚类聚类结果写入报告与 session。aquatone_urls.txt在计算页面结构的同时逐行写入响应成功的 URL。aquatone_session.json由Session.SaveToFile()序列化整个 Session含统计信息、页面数据、相似度聚类字段结构见 core/session.go。更改输出位置不想在当前目录生成文件时用-out指定$ cat hosts.txt | aquatone -out ~/aquatone/example.com或通过环境变量设置永久默认输出目录export AQUATONE_OUT_PATH~/aquatone离线重新生成报告-session参数支持加载之前保存的aquatone_session.json仅重新生成 HTML 报告而无需重新扫描。此时也可以搭配-template-path使用自定义报告模板模板为空时使用内置的static/report_template.html由sess.Asset(static/report_template.html)读取见 main.go。该模板基于 Bootstrap 与 Vue.js报告渲染由 core/report.go 的template.Execute()完成。指定扫描端口内置别名与自定义列表默认情况下Aquatone 只扫描一组常见的 HTTP 端口80, 443, 8000, 8080, 8443即medium列表。可通过-ports传入自定义端口列表$ cat hosts.txt | aquatone -ports 80,443,3000,3001同时支持四个内置端口列表别名README 与 core/ports.go 一致别名端口列表small80, 443medium80, 443, 8000, 8080, 8443与默认相同large80, 81, 443, 591, 2082, 2087, 2095, 2096, 3000, 8000, 8001, 8008, 8080, 8083, 8443, 8834, 8888xlarge80, 81, 300, 443, 591, 593, 832, 981, 1010, 1311, 2082, 2087, 2095, 2096, 2480, 3000, 3128, 3333, 4243, 4567, 4711, 4712, 4993, 5000, 5104, 5108, 5800, 6543, 7000, 7396, 7474, 8000, 8001, 8008, 8014, 8042, 8069, 8080, 8081, 8088, 8090, 8091, 8118, 8123, 8172, 8222, 8243, 8280, 8281, 8333, 8443, 8500, 8834, 8880, 8888, 8983, 9000, 9043, 9060, 9080, 9090, 9091, 9200, 9443, 9800, 9981, 12443, 16080, 18091, 18092, 20720, 28017使用别名示例$ cat hosts.txt | aquatone -ports largeTLS 探测细节端口扫描器agents/tcp_port_scanner.go用net.DialTimeout逐个端口做 TCP 连接测试端口开放后由 agents/url_publisher.go 决定 URL 协议——80 直接判为http443 直接判为https其余端口则尝试一次忽略证书校验的 TLS 握手成功即按https处理。从源码结构还可看到 core/urls.go 内置了一份securePorts列表含 443、2087、8443、9443 等用于 Nmap XML 解析时推断协议。实战用例与主流侦察工具联动场景一Amass DNS 枚举 → AquatoneAmass 通过 OSINT 源、主动爆破与排列组合可在一分钟内识别出成百上千个子域名。README 给出的完整链路$ amass -active -brute -o hosts.txt -d yahoo.com alerts.yahoo.com ads.yahoo.com am.yahoo.com - - - SNIP - - - prd-vipui-01.infra.corp.gq1.yahoo.com cp103.mail.ir2.yahoo.com prd-vipui-01.infra.corp.bf1.yahoo.com $ cat hosts.txt | aquatoneAquatone 对其他 DNS 枚举工具同样适用README 列举了 Sublist3r、Subfinder、Knock、Fierce、Gobuster 等。只要输出包含主机名或 IP正则提取器都能识别。场景二Nmap / Masscan 扫描结果 → Aquatone 报告Aquatone 可以直接消费 Nmap 或 Masscan 的 XML 输出只需加上-nmap标志告诉它按 XML 解析$ cat scan.xml | aquatone -nmap该功能的解析实现在 parsers/nmap.go使用github.com/lair-framework/go-nmap解析 XML只处理 state 为open的端口协议推断规则为服务名ssl或 tunnel 为ssl排除 smtp/imap/pop3时按httpshttp/http-alt按http其余端口若存在于xlarge端口列表中则继续处理并借助securePorts推断协议主机名优先于 IP 用于构造 URL。注意 README 也提醒过见 CHANGELOG.md 1.6.0 记录早期版本曾未忽略 closed/filtered 端口现版本已只处理open端口。底层原理事件驱动的 Agent 流水线从源码看Aquatone 内部是一个基于事件总线的多 Agent 并发流水线这是理解其行为的关键。事件常量定义在 core/events.gosession:start/session:end会话生命周期事件host待扫描的主机目标url待请求的 URL 目标url:responsive已确认响应的 URLport:tcp探测到的开放 TCP 端口main.go 启动时依次注册 8 个 Agent均在agents/目录下TCPPortScanneragents/tcp_port_scanner.go订阅host事件对每个主机并发扫描所有配置端口开放端口发布port:tcp事件并统计PortOpen/PortClosed。URLPublisheragents/url_publisher.go订阅port:tcp探测 TLS 后把端口转换为http(s)://URL 并发布url事件。URLRequesteragents/url_requester.go订阅url发起 HTTP 请求——每次请求都会随机设置User-Agent、X-Forwarded-For、Via、Forwarded头见 agents/util.go 的RandomUserAgent()与RandomIPv4Address()并忽略 TLS 证书校验随后按状态码区间2xx/3xx/4xx/5xx分类统计把响应头写入headers/、响应体写入html/最后发布url:responsive事件。URLHostnameResolveragents/url_hostname_resolver.go订阅url:responsive对非 IP 主机做 DNS 解析并记录解析结果。URLPageTitleExtractoragents/url_page_title_extractor.go订阅url:responsive用 goquery 解析响应体提取title页面标题。URLScreenshotteragents/url_screenshotter.go订阅url:responsive调用无头 Chrome/Chromium 截图。启动参数包括--headless --disable-gpu --hide-scrollbars --mute-audio --ignore-certificate-errors --incognito等分辨率由-resolution控制代理由-proxy传入--proxy-server以 root 运行时自动追加--no-sandbox每次运行使用独立的临时用户目录会话结束时清理对应 1.7.0 新增的session:end清理机制。URLTechnologyFingerprinteragents/url_technology_fingerprinter.go订阅url:responsive加载内置的static/wappalyzer_fingerprints.json指纹库技术指纹能力基于 Wappalyzer 项目分别对响应头、HTML 正文、script src与meta标签做正则匹配识别 Web 技术与框架。URLTakeoverDetectoragents/url_takeover_detector.go订阅url:responsive对每个域名解析 A 记录与 CNAME并与内置的接管指纹比对——该能力基于 can-i-take-over-xyz 项目README 致谢部分覆盖 GitHub Pages、Amazon S3、Campaign Monitor、Cargo Collective、FeedPress、Ghost、Helpjuice、HelpScout、Heroku、JetBrains、Microsoft Azure、Readme、Surge、Tumblr、UserVoice、WordPress.com、SmugMug、Strikingly、UptimeRobot、Pantheon 等 20 余个平台命中后会在页面上打上danger类型的 Domain Takeover 标签并输出警告。所有并发任务由sizedwaitgroup按-threads数量限流统计信息请求成功/失败、各状态码数量、截图成功/失败等通过原子计数器维护见 core/session.go 的Stats并在最终输出中汇总打印。安全头评估与页面聚类报告的价值不只在于截图每个页面的响应头会被逐条评估安全属性见 core/page.go 的SetSecurityFlags()降低安全性DecreasesSecurityServer、X-Powered-By、X-Pingback等信息泄露头Access-Control-Allow-Origin: *以及不以1开头的X-XSS-Protection提升安全性IncreasesSecurityContent-Security-Policy、Strict-Transport-Security、X-Frame-Options、Referrer-Policy、Public-Key-Pins、值为nosniff的X-Content-Type-Options等。报告中的页面相似度聚类则基于 HTML 结构标签序列 id 属性的 difflib 相似度阈值 0.80见 main.go 与 core/similarity.go这有助于从大量页面中快速区分出不同的站点模板、识别出批量部署的同源站点。注意事项与适用前提必须安装 Chrome/Chromium否则截图阶段会 FATAL 退出提示使用-chrome-path指定位置。建议使用 Chromium 而非 ChromeREADME 与源码双重提示 Google Chrome 的 headless 截图结果不可靠。截图以 root 运行时需要--no-sandbox源码已自动处理无需手动干预。端口扫描只做 TCP 连通性测试-scan-timeout默认 100ms对 SYN 过滤的防火墙环境可能误判属预期行为。URL 目标跳过端口扫描管道输入中已有 URL 时Aquatone 直接请求它们不做存活探测前的端口确认。自定义报告模板可通过-template-path提供自己的 HTML 模板报告渲染基于 Gohtml/template见 core/report.go。本文所述命令、参数与行为均以当前仓库版本 1.7.0为准跨版本使用时请以对应版本的-version输出与 README 为准。赞分享网络安全【免费下载链接】aquatoneA Tool for Domain Flyovers项目地址https://gitcode.com/gh_mirrors/aq/aquatone点击查看免费下载相关推荐微信聊天记录永久保存并不难留痕WeChatMsg免费工具完整上手指南微信聊天记录永久保存并不难留痕WeChatMsg免费工具完整上手指南 如果你正为聊天记录丢失而焦虑那么留痕WeChatMsg这个免费开源项目值得认真pyLDAvis主题模型可视化工具全面指南pyLDAvis主题模型可视化工具全面指南 pyLDAvis是一个用于交互式主题模型可视化的Python库它是R语言中LDAvis包的Python版本。该工具如何在资源受限的嵌入式设备上实现高质量JPEG图像显示如何在资源受限的嵌入式设备上实现高质量JPEG图像显示 当你需要在智能家居控制面板、工业HMI界面或便携医疗设备上显示图像时是否曾因内存不足而放弃使用JPE图像处理嵌入式物联网上一篇Qwen2.5-1.5B-Instruct-ptpc-Quark-ts对话系统开发构建智能客服的完整指南下一篇3分钟解锁全网无损音乐LX Music音源配置终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?