生成用于目标定位的活跃主机和URL列表,自动化使用Massdns、Masscan和nmap来过滤掉不可达的主机
给定一个域名输入文件,此脚本将自动化使用MassDNS过滤掉无法解析的主机,然后将结果传递给Masscan以确认主机是否可达以及在哪些端口上可达。脚本随后将生成完整的URL列表,用于进一步的目标定位(传递给gobuster或dirsearch等工具,或发起HTTP请求),同时生成可达域名列表和可达IP地址列表。作为可选的最后一步,你可以在缩减后的主机列表上运行nmap版本扫描,验证之前可达的主机是否在线,并从其开放端口收集服务信息。
此脚本对于大型域名集特别有用,例如从顶级域名收集的拥有数千个子域的子域枚举。对于这些大型列表,nmap扫描耗时过长。这里的目标是首先使用精度较低但速度更快的MassDNS快速通过移除无法解析的域名来缩小输入列表的大小。然后,Masscan能够接收MassDNS的输出,进一步确认主机是否可达以及开放哪些端口。脚本随后将解析这些结果并生成所发现活跃主机的列表。
现在,主机列表应已缩减到适合进一步扫描/测试的程度。如果你希望更进一步,可以告诉脚本在可达主机列表上运行nmap扫描,由于主机列表更短,这将花费更合理的时间。运行nmap后,任何Masscan产生的误报都将被过滤掉。原始的nmap输出将以标准的nmap XML格式存储,版本检测的额外信息将添加到SQLite数据库中。

如果使用nmap扫描选项,此工具假定你已经安装了nmap
注意:仅当你尚未安装MassDNS和Masscan,或者希望在本仓库内重新安装它们时,才需要运行安装脚本。如果你不运行脚本,你可以通过参数提供相应可执行文件的路径。脚本还期望MassDNS附带的解析器列表位于{massDNS_directory}/lists/resolvers.txt。
git clone https://github.com/allyomalley/LiveTargetsFinder.git
cd LiveTargetsFinder
sudo pip3 install -r requirements.txt
(可选)
chmod +x install_deps.sh
./install_deps.sh
如果你尚未安装MassDNS和Masscan,并且更倾向于自行安装,请参阅文档中的说明:
我仅在macOS和Linux上测试过此脚本——Python脚本本身应该可以在Windows机器上运行,但我认为MassDNS和Masscan的安装方式会有所不同。
python3 liveTargetsFinder.py [domainList] [options]
-s(--hashmap-size)是为了性能而选择的——你很可能可以增加此值。-c 25 -o J -r ./massdns/lists/resolvers.txt -s 100 -w massdnsOutput -t A targetHosts--max-rate参数——你很可能需要调整它。
-iL ipFile -oD masscanOutput --open-only --max-rate 5000 -p80,443 --max-retries 10--script http-server-header.nse,http-devframework.nse,http-headers -sV -T4 -p80,443 -oX {output.xml}如果运行了安装脚本:
python3 liveTargetsFinder.py --target-list victim_domains.txt
如果未运行安装脚本:
python3 liveTargetsFinder.py --target-list victim_domains.txt --massdns-path ../massdns/bin/massdns --masscan-path ../masscan/bin/masscan
执行nmap扫描并写入/追加到默认数据库路径(liveTargetsFinder.sqlite3)
python3 liveTargetsFinder.py --target-list victim_domains.txt --nmap
执行nmap扫描并写入/追加到指定数据库
python3 liveTargetsFinder.py --target-list victim_domains.txt --nmap --db-path serviceinfo_victim.sqlite3
输入:victimDomains.txt
| 标志 | 描述 | 默认值 | 必需 |
|---|
--target-list | 包含域名列表的输入文件,例如 google.com | 是 | |
--massdns-path | MassDNS可执行文件的路径,如果非默认 | ./massdns/bin/massdns | 否 |
--masscan-path | Masscan可执行文件的路径,如果非默认 | ./masscan/bin/masscan | 否 |
--nmap | 对收集到的活跃主机运行nmap版本检测扫描 | 禁用 | 否 |
--db-path | 如果使用--nmap选项,提供要追加到的数据库路径(如果不存在则创建) | output/liveTargetsFinder.sqlite3 | 否 |
| 文件 | 描述 | 示例 |
|---|
| output/victimDomains_targetUrls.txt | 可达的活跃URL列表 | https://github.com, http://github.com |
| output/victimDomains_domains_alive.txt | 活跃域名列表 | github.com, google.com |
| output/victimDomains_ips_alive.txt | 活跃IP地址列表 | 10.1.0.200, 52.3.1.166 |
| 提供或默认的数据库路径 | 存储活跃主机及其运行服务信息的SQLite数据库 | |
| output/victimDomains_massdns.txt | MassDNS的原始输出,ndjson格式 | |
| output/victimDomains_masscan.txt | Masscan的原始输出,ndjson格式 | |
| output/victimDomains_nmap.txt | nmap的原始输出,XML格式 |