inter-recon
脚本用于执行自动化的初始网络和漏洞侦察。
它包含一些错误检查机制。
有选项可以跳过某些检查、重新执行它们,或者从上次停止的位置继续执行。(这是因为有时网络问题,如VPN时间限制。)
记住,如果将 inter-recon 脚本复制或链接到 bin 路径(例如 /usr/bin/),则可以从任何位置执行该脚本。它会在你当前所在位置创建输出目录。
重要:请参阅README末尾的“附加信息”部分,了解WFUZZ问题及解决方案。
使用多个已知域名/IP 示例:
- 创建 domains.txt 文件,包含所有域名或不同IP
- 执行:inter-recon -T $(pwd)/domains.txt -d $(pwd)/known-domains -w /home/kali/Desktop/tools/inter-recon/dictionaries/without-slash/dict-small-without-slash.txt -s all -a true
在网络/IP 上使用示例:
- 执行:inter-recon -t 10.11.1.1/24 -w /home/kali/Desktop/tools/inter-recon/dictionaries/without-slash/dict-small-without-slash.txt -s all -a true
使用方法:
inter-recon.sh [选项]
-t {网络或IP}
-T {目标路径}
-d {字典路径}
-w {字典路径}
-s {扫描类型}
-a 可选,用于超级自动扫描,跳过所有提示,在首次执行 wfuzz 时不询问任何问题
扫描类型
- all
- portscan
- nmap TCP -> 全端口扫描,检查主机是否存活,如果开放以下端口之一(1025,1028,1029,10443,111,135,139,1521,161,1917,21,22,23,25,2869,3306,3389,443,445,49000,497,5000,515,53,548,5985,5986,6000,79,80,8080,8081,8090,9001,9002,9100,993,995)
- nmap UDP -> 默认存活主机检查,扫描前100个端口
- vulnscan
- 解析 nmap UDP 和 TCP 扫描结果到文件
- 按服务将 nmap UDP 和 TCP 扫描结果解析到 services 文件夹
- 对开放端口执行 nmap 端口/版本相关脚本(UDP 和 TCP)
- smbmap guest 执行 -> 检查是否无需用户即可写入/读取任何内容
- enum4linux guest 执行 -> 检查从 samba 获取的信息
- smbversion 执行 -> 获取 samba 版本(有时在 Linux 服务器上是查看 samba 版本的唯一方式)
- webscan
- 基于 nmap 结果使用 httpx 进行 HTTP 发现
- 使用 wfuzz 对发现的 URL 进行模糊测试
- 使用 aquatone 对模糊测试中状态码 200 的 URL 截图
- 使用 byp4xx 进行 403 绕过技术
- following steps -> 脚本执行后要做的快速说明
- Documentation folder and template structure -> 创建用于添加证据的文件夹,并添加与扫描信息相关的 .md 文件
- vuln
- portscan(同上)
- vulnscan(同上)
- following steps(同上)
- Documentation folder and template structure
- web
- portscan(同上)
- webscan(同上)
- following steps(同上)
- Documentation folder and template structure
结构:
- 首先进行 TCP 和 UDP 端口扫描及版本检测(nmap,需要 sudo)
- 漏洞侦察扫描(将端口解析为“IP,端口,服务,版本”格式的文件,解析到 services 文件,执行含全部端口/版本相关脚本的 nmap)
- 如果 httpx 发现 HTTP 端口,则进行 Web 模糊测试侦察扫描(httpx, wfuzz, aquatone, byp4xx 403 文件 <- 如果存在状态码 403 的 URL)
使用的工具:
- nmap(普通版本和带 nmap-vulners 脚本的版本,两者都需要 sudo,TCP 全端口扫描,如果主机存活则使用 -PS 检测一些端口,UDP 仅扫描前100个端口)
- httpx(从 nmap 执行结果获取 HTTP 端口)
- aquatone(对 HTTP 发现中状态码 200 的响应截图)
- wfuzz(对 HTTP 端口进行模糊测试)
- byp4xx(尝试通过不同方法绕过 403 URL)
- smbmap(获取与网络共享文件夹相关的 guest 权限)
- enum4linux(以 guest 权限获取 smb 信息)
- smbversion(获取 smb 的真实版本)
- dnsrecon(尝试对 DNS 服务器进行区域传输)
- crackmapexec(获取与服务器相关的名称)
- host(获取 DNS 服务器的主机名)
- dig(使用服务器作为 NS “@” 获取 DNS 服务器的主机名)
输出文件夹结构:(示例)
- 192.168.122.1-24/ -> 初始文件夹
- nmap/ -> 存放 TCP 和 UDP nmap 的 xml 和 grepable 输出(含版本)
- nmap-tcp-target.xml -> 用于导入其他工具的 nmap 输出
- nmap-udp-target.xml -> 用于导入其他工具的 nmap 输出
- nmap-tcp-target.xml -> grepable 格式的 nmap,用于解析并提高可读性
- nmap-udp-target.xml -> grepable 格式的 nmap,用于解析并提高可读性
- aux/ -> 用于控制先前执行和跳过的 wfuzz URL 的文件夹
- nmap/ -> 此文件夹包含所有传给 httpx 的 nmap 文件,httpx 处理后会移除已处理的 nmap 文件,以便在出错时能继续处理该 nmap 文件。
- full-initial-files.txt -> 此文件会移除已正确执行的 URL
- wfuzz-skipped-urls.txt -> 此文件会添加因错误而跳过的 URL((总请求数 + 1)- 已处理请求数 != 0)
- debug/ -> 存放执行调试信息的文件夹
- nmap-tcp-output.txt -> nmap(仅版本)输出执行结果
- nmap-tcp-cve-output.txt -> nmap 使用 -A 选项执行所有相关脚本的输出
- nmap-udp-output.txt -> nmap(仅版本)输出执行结果
- nmap-udp-output.txt -> nmap 使用 -A 选项执行所有相关脚本的输出
- wfuzz-output.txt -> wfuzz 输出执行结果
- screenshot-output.txt -> aquatone 输出执行结果
- fuzzing/ -> 存放 wfuzz 执行结果的文件夹(重点检查状态码 50* 和 40*)
- services/ -> 存放从 nmap 中解析的所有服务的文件夹
- {SERVICE-NAME}-services.txt -> 服务执行结果,格式为“IP,端口,额外服务信息”
- cve/ -> 存放 nmap-vulners 脚本发现的每个主机的漏洞信息文件夹
- {IPs}.txt -> nmap-vulners 脚本输出
- http-discover/ -> 保存和控制 httpx 执行的文件夹
- httpx_aux.txt -> 包含所有域名+端口,用于执行 httpx 的文件
- screenshots/ -> 存放 wfuzz 发现的状态码 200 的 URL 截图的文件夹
- screens -> 所有截图的文件夹
- report.html -> 结构化信息的报告
- {OTHER} -> report.html 所需的其他内容
- full-initial-files.txt -> 初始 HTTP 发现中 httpx 发现的 URL,用于 wfuzz 模糊测试
- urls-status-{200,401,403,etc}.txt -> wfuzz 发现的最终状态 URL,根据变量 $status(即 URL 的状态码)变化
- targets.txt -> 包含通过 -t 参数添加的 IP 或网络的文件
- bypass/ -> 存放 byp4xx lobuhi 应用程序的文件夹(仅当存在 403 URL 时)
- byp4xx-{不含 : 和 / 的 URL}.txt -> 每个 403 URL 的 byp4xx 输出
- all-urls-fuzzing-results.txt -> 包含所有 URL 模糊测试结果的文件,格式为“状态码 URL”
- full-nmap-parsed-tcp.txt -> 解析后的 nmap 文件,格式为“IP,端口,服务,版本”
- smb/
- smbmap/
- {HOST}-smbmap.txt -> smbmap 执行结果,显示 guest 的 samba 文件夹权限
- enum4linux/
- {HOST}-enum4linux.txt -> 可恢复的 guest 信息
- smbversion/{HOST}-smbversion.txt -> samba 版本(很有用,因为 nmap 和其他工具有时无法识别真实版本)
- dns
- dnsrecon/
- {DNSNAME}-{HOST}-dnsrecon.txt -> 区域传输攻击结果
- documentation
待办事项:
- 将 wfuzz 的 URL 状态文件直接添加到文档中(200, 401, 403, 503,以免忘记检查任何内容)
- 在漏洞扫描中包含“OPENVAS 扫描”
- 在 Web 扫描中包含从 wfuzz 发现的 HTTP URL 中提取的 URL 和域名
- 添加新的 OSINT 扫描类型,可以从网络或其他脚本执行中获取信息
工具安装链接:
附加信息
- UDP nmap 仅扫描前100个端口,如果有时间,可以在后台执行一个全 UDP 端口的额外 nmap 扫描。
- TCP nmap 会检查一些端口以确定主机是否存活,然后扫描存活的主机;如果有时间,可以在后台执行一个带 -Pn 参数的全 TCP 端口额外 nmap 扫描。
- 我偶尔发现 wfuzz 会阻塞脚本,观察到 wfuzz 在 URL 出错时存在死锁问题。在官方修复该问题之前,一个解决方法是注释掉 th.join() 并在 /usr/local/lib/python3.9/dist-packages/wfuzz/myhttp.py 文件的“Cleanup”函数中添加 pass。