关于 reconnaissance
reconnaissance 是用于域名和 Web 应用侦察的安全技能,可构建子域名、端口、端点、API 和 JavaScript 路由的攻击面清单。它涵盖被动发现、服务枚举和 Web 映射,并要求保存原始工具输出。
主要功能
- 01发现子域名并扫描端口
- 02识别服务版本与协议
- 03扫描 Web 目录和文件
- 04发现 API、前端路由与脚本
- 05整理攻击面及软件清单
适用场景
- 01为授权测试绘制域名攻击面
- 02盘点 Web 应用的端点和 API
- 03检查服务配置与暴露的管理面板
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ transilienceai/ communitytools --skill reconnaissance安装后在 Claude Code 中输入/reconnaissance确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/anti-bot-bypass.mdINDEX.mdreconnaissance-principles.mdwaf-edge-bypass.mdreference/scenarios/api-endpoint-discovery.mdobfuscated-js-deobfuscation.mdport-scanning.mdsubdomain-enumeration.mdvhost-enumeration.md详细介绍
侦察
域名和 Web 应用侦察。发现子域名、开放端口、端点、API 和 JavaScript 路由,构建攻击面清单。
阶段
域名评估
- 子域名发现 - 被动 DNS、证书透明度、DNS 暴力破解、区域传送
- 端口扫描 - nmap/masscan(前 1000/10000 个/全部端口)、服务检测、操作系统指纹识别
- 服务枚举 - 版本检测、横幅抓取、特定协议枚举
Web 应用映射
- 软件清单 - 依赖项、框架、生成 SBOM
- 主动扫描 - 使用 ffuf、gobuster、nikto、ZAP spider 扫描目录/文件
- API 发现 - REST、GraphQL、SOAP、WebSocket、Swagger/OpenAPI 文档
- JavaScript 和 SPA - 客户端路由、动态脚本、浏览器存储
- 攻击面分析 - 对攻击面分类,按风险确定优先级
输出
inventory/ - JSON: subdomains, ports, endpoints, APIs, SBOM
analysis/ - MD: attack-surface, testing-checklist
raw/ - Tool outputs (nmap, ffuf, ZAP, subfinder)
工具
subfinder、amass、certspotter、crt.sh、nmap、masscan、nuclei、sslscan、ffuf、gobuster、nikto、ZAP、Playwright MCP
相关技能
/osint- 配合侦察使用,枚举仓库、扫描机密信息并分析 Git 历史记录
规则
- 主动扫描前先进行被动发现
- 在阶段 2 期间,始终并行运行
/osint - 遵守速率限制
- 端口扫描前,先确认子域名处于活跃状态
- 保存所有原始工具输出
- HTTP 响应头中的 vhost 泄露:始终检查原始 IP 的响应头(
curl -sI http://IP/)。X-Backend-Server、X-Forwarded-Host、X-Served-By、X-Upstream等响应头经常会泄露无法通过 DNS 或暴力破解发现的内部主机名/vhost。发现主机名后,立即将其添加到/etc/hosts。 - 通配符 SSL 证书(SAN 中有
*.domain.tld)= 隐藏 vhost 的强烈迹象。检测到通配符 SAN 时,始终使用ffuf -u https://IP -k -H "Host: FUZZ.domain.tld" -w subdomains.txt -mc all -fs <default_size>进行 vhost 暴力破解。将响应大小/状态与默认 vhost 比较,以识别有效子域名。 - 不使用 ffuf 进行 VHost 枚举:当 ffuf/gobuster 不可用时,使用 shell 循环:
for sub in admin dev api portal dashboard staging git; do code=$(curl -s -o /dev/null -w "%{http_code}:%{size_download}" -H "Host: ${sub}.DOMAIN" http://IP); echo "$sub: $code"; done——根据响应大小与默认页面的差异进行筛选。 - Web 管理面板:发现 admin vhost(admin.、panel.、manage.*)时,检查常见管理 UI:Nginx UI(
manifest.json→ "Nginx UI")、Cockpit、Webmin、phpMyAdmin。这些面板通常存在未授权 API 端点或已知 CVE。对于 Nginx UI,检查/api/backup、/api/settings、/api/install。 - 营销层上的移动端/原生客户端下载:当公共 Web 层提供指向
.apk/.dmg/.exe/.ipa的下载链接时,“真正的” API 端点及其所需请求头通常只能通过该客户端访问。Web HTML 中没有有用信息;API 会受到静态 User-Agent / Host 的限制,而这些值是硬编码在二进制文件中的。不要轻易认定目标机器只有静态页面;务必先下载客户端并反编译/提取。对于 Android React Native:unzip <app>.apk -d ext/ && file ext/assets/index.android.bundle。该 bundle 通常采用 obfuscator.io 风格(function _0xNNNN(idx)解码器 +array.shift()IIFE,不断循环直到parseInt方程等于目标值)。不要手动逆向——将解码器、数组字面量和 IIFE 提取到独立的 Node.js 文件中,几秒内即可转储所有索引:for(let i=baseHex; i<baseHex+arr.length; i++) console.log(i.toString(16), _0xDecode(i));。然后还原 API 调用的混淆对象字面量(URL = 由 4–7 个短片段拼接而成,请求头也一样),并使用恢复出的值原样重放请求。 - 针对 Windows 目标的 AD 定向端口扫描:初始指纹识别显示目标符合 Windows DC 特征(53/135/139/445/389 中任意端口开放)时,跳过
-p-,先对 13 个与 AD 相关的端口进行定向扫描——几秒内即可完成,涵盖所有重要端口。
端口说明:53 DNS、88 Kerberos、135 RPC、139/445 SMB、389/636 LDAP/LDAPS、464 kpasswd、593 RPC-over-HTTPS、3268/3269 GC/GC-LDAPS、5985 WinRM(HTTP)、5986 WinRM(HTTPS — 证书认证)、9389 AD Web Services。始终同时探测 5985 和 5986——当 5985 被过滤时,使用客户端证书认证的 5986 是常见的立足点路径(参见nmap -Pn -sC -sV -p 53,88,135,139,389,445,464,593,636,3268,3269,5985,5986,9389 -oA recon/ad-focused TARGETskills/system/reference/foothold-patterns.md中的 WinRM 证书认证立足点)。只有在以下情况才回退到-p-:(a)定向扫描未发现能提供 flag 的服务;或(b)怀疑高位端口上运行着非标准应用(自定义 Web 服务、非 3389 端口上的 RDP 等)。当 AD 特征明显时,不要在全 TCP 端口扫描上浪费 30 分钟。 - CT 日志枚举为必做项:每次参与测试只要提及顶级域名,就必须进行 CT 日志枚举(crt.sh / certspotter / subfinder),包括已提供主机名的灰盒测试——提供的主机名只是种子,并非全部攻击面。对于由 CDN/WAF 前置的目标,还要进行源站发现(直连云端点、archive.org CDX、历史 DNS)。crt.sh/subfinder 命令已包含在
reference/scenarios/subdomain-enumeration.md中——请使用这些命令。
评论
支持 Markdown