pranto814/recon-with-TraceMind
GitHub: pranto814/recon-with-TraceMind
TraceMind 是一款聚合多种开源侦查工具与被动 API 来源的 Python 命令行子域名发现与 DNS 枚举工具,解决安全测试前期信息收集需要手动编排多工具的问题。
Stars: 0 | Forks: 0
```
_____ __ __ _ _
|_ _| __ __ _ ___ ___| \/ (_)_ __ __| |
| || '__/ _` |/ __/ _ \ |\/| | | '_ \ / _` |
| || | | (_| | (_| __/ | | | | | | | (_| |
|_||_| \__,_|\___\___|_| |_|_|_| |_|\__,_|
TraceMind - Maximum Subdomain Discovery Tool
A simple, modern subdomain discovery and DNS reconnaissance tool.
```
# TraceMind
TraceMind 是一款使用 Python 3 编写的 Linux/Kali 命令行网络安全侦查工具。
它仅设计用于授权的 DNS 侦查:子域名发现、DNS 枚举、DNS 解析以及清晰的结果保存。
仅在你拥有或获得测试授权的域名/IP 上使用此工具。
## TraceMind 的功能
TraceMind 结合了来自公共/开源侦查工具和被动来源的输出,移除重复项,提取目标根域名的有效子域名,将每个主机名解析为 IP 地址,并保存最终的 TXT 报告。
核心本地工具:
- `subfinder`
- `sublist3r`
- `amass`
- `dnsrecon`
- `theHarvester`
- `dig`
- `host`
可选的公共本地工具:
- `bbot`
- `findomain`
- `knockpy`
- `darkscout`
内置的被动 Web/API 来源:
- crt.sh
- AlienVault OTX
- ThreatMiner
- HackerTarget
- AnubisDB
- SecurityTrails,仅在设置了 `SECURITYTRAILS_API_KEY` 时可用
- DNSDumpster 官方 API,仅在设置了 `DNSDUMPSTER_API_KEY` 时可用
- Shodan DNS/域名查询和主机搜索,仅在设置了 `SHODAN_API_KEY` 时可用
TraceMind 在这个最终的公共使用版本中不包含 Censys、直接的 C99 API 或 Pentest-Tools 云扫描,因为它们依赖于 token/计划/付费/配额,可能会导致设置混乱。
没有任何公共侦查工具能保证发现所有子域名。了解所有 DNS 名称的唯一可靠方法是直接访问目标的权威 DNS 区域数据。TraceMind 尽最大努力并结合多种来源以提高覆盖率。
## 安装说明
克隆或复制此项目,然后安装 Python 依赖项并使脚本可执行:
```
pip3 install -r requirements.txt
chmod +x tracemind.py
```
如果未安装 `dnspython`,TraceMind 将回退使用 `dig` 和 `host` 进行 DNS 解析。
## Kali 可选安装
```
sudo apt update
sudo apt install subfinder sublist3r amass dnsrecon theharvester dnsutils seclists findomain -y
```
某些 Kali 软件包名称和可用性可能因版本而异。如果缺少某项工具,请从该工具的官方指南进行安装。
## 可选工具安装
如果尚未提供 `pipx`,请先安装它:
```
sudo apt install pipx -y
pipx ensurepath
```
如果在执行 `pipx ensurepath` 后未找到已安装的命令,请关闭并重新打开终端。
`pipx` 通常会将命令安装到:
```
/home/kali/.local/bin
```
这是正常的。TraceMind 会检查你的常规 `PATH` 以及常见的 Kali 路径(如 `/home/kali/.local/bin` 和 `/usr/local/bin`)。如果你的 shell 仍然找不到 `pipx` 命令,请将此行添加到 `~/.bashrc` 中:
```
export PATH="$HOME/.local/bin:$PATH"
```
然后重新加载终端:
```
source ~/.bashrc
hash -r
```
安装 BBOT:
```
pipx install bbot
bbot --help
```
安装 Findomain:
```
sudo apt install findomain -y
findomain --help
```
如果 Kali 找不到 `findomain` 包,请使用官方发布的二进制文件:
```
wget https://github.com/Findomain/Findomain/releases/latest/download/findomain-linux.zip
unzip findomain-linux.zip
chmod +x findomain
sudo mv findomain /usr/local/bin/findomain
findomain --help
```
安装 Knockpy:
```
pipx install git+https://github.com/guelfoweb/knock.git
knockpy --help
```
安装 DarkScout:
```
sudo apt install git cargo -y
git clone https://github.com/DarkSuite/DarkScout
cd DarkScout
cargo build --release
sudo cp target/release/DarkScout /usr/local/bin/darkscout
darkscout --help
```
确认 TraceMind 可以检测到可选工具:
```
which bbot
which findomain
which knockpy
which darkscout
python3 -c 'import shutil; print(shutil.which("bbot")); print(shutil.which("knockpy"))'
```
```
sudo cp /home/kali/.local/bin/bbot /usr/local/bin/bbot
sudo cp /home/kali/.local/bin/knockpy /usr/local/bin/knockpy
sudo chmod +x /usr/local/bin/bbot /usr/local/bin/knockpy
hash -r
```
## API 密钥
TraceMind 无需 API 密钥即可工作。这些可选的公共注册 API 仅在存在匹配的环境变量时使用:
```
export SECURITYTRAILS_API_KEY="your_key"
export DNSDUMPSTER_API_KEY="your_key"
export SHODAN_API_KEY="your_key"
```
在运行 TraceMind 之前,将这些 `export` 命令粘贴到你的 Kali 终端中。如需永久使用,请将它们添加到 `~/.bashrc` 的底部并运行 `source ~/.bashrc`。
切勿分享包含真实 API 密钥的截图或消息。
## Shodan 支持
当设置了 `SHODAN_API_KEY` 时,TraceMind 可以将 Shodan 用作被动来源。
它使用:
- Shodan DNS 域名查询来收集已知的子域名标签
- 使用 `hostname:` 进行 Shodan 主机搜索,以收集 Shodan 数据中出现的主机名
TraceMind 不会启动 Shodan 按需扫描。根据你的套餐,使用 Shodan API 可能会消耗账户查询额度。
在 Kali 中设置你的密钥:
```
export SHODAN_API_KEY="your_shodan_api_key"
```
然后正常运行 TraceMind:
```
python3 tracemind.py -t example.com
```
Shodan 原始输出:
- `raw_shodan_domain.txt`
- `raw_shodan_search.txt`
## 使用示例
基础域名扫描:
```
python3 tracemind.py -t example.com
```
选择最终输出文件的名称:
```
python3 tracemind.py -t example.com -o final.txt
```
使用暴力破解字典:
```
python3 tracemind.py -t example.com --wordlist /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
```
使用更多解析线程:
```
python3 tracemind.py -t example.com --resolver-workers 50
```
运行 BBOT 的完整 subdomain-enum 预设,而不是默认的仅被动 BBOT 模式:
```
python3 tracemind.py -t example.com --bbot-full
```
跳过内置的 Web/API 来源:
```
python3 tracemind.py -t example.com --skip-apis
```
运行 IP 模式:
```
python3 tracemind.py -t 192.168.1.10 -o ip_result.txt
```
显示详细的命令错误:
```
python3 tracemind.py -t example.com --debug
```
## 域名模式
当目标是域名时,TraceMind 会运行它能找到的已安装工具,并跳过缺失的工具而不会崩溃。
原始 pipeline 依然会运行:
- `subfinder -d -all -silent -o raw_subfinder.txt`
- `sublist3r -d -o raw_sublist3r.txt`
- `amass enum -passive -d -o raw_amass_passive.txt`
- `amass enum -brute -d -o raw_amass_brute.txt`
- `dnsrecon -d -a -k`
- 提供字典时的 `dnsrecon -d -D -t brt`
- 包含 `dnsdumpster` 和 `subdomainfinderc99` 等多个独立来源的 `theHarvester`
- 尽最大努力尝试的 `theHarvester -d -b all -c`
更强大的公共使用 pipeline 添加了:
- BBOT 子域名枚举(如果已安装)
- Findomain(如果已安装)
- DarkScout(如果已安装)
- Knockpy(如果已安装)
- 来自公共来源的内置被动 API 收集
- SecurityTrails、DNSDumpster 和 Shodan(如果你设置了它们的密钥)
Aquatone 不作为发现来源使用,因为它主要用于探测和截取已发现的活跃 Web 服务。如果你需要可视化侦查,可以在枚举后将 TraceMind 的 `clean_subdomains.txt` 提供给 Aquatone。
## IP 模式
当目标是 IP 地址时,TraceMind 会使用以下方法执行反向 DNS/PTR 查询:
- `socket.gethostbyaddr()`
- `dig -x +short`
- `host `
IP 模式保存的输出如下:
```
hostname.example.com : 192.168.1.10
```
如果未找到 PTR 记录:
```
No PTR hostname found : 192.168.1.10
```
IP 模式存在限制。为了最大程度地发现子域名,请提供根域名。
## 输出格式
最终输出将按如下方式保存:
```
www.example.com : 93.184.216.34
mail.example.com : 93.184.216.35
dev.example.com : No IP found
```
如果一个子域名解析到多个 IP,TraceMind 将为每个 IP 写入一行。
## 输出文件夹
TraceMind 会自动创建一个带有时间戳的输出文件夹:
```
tracemind__/
```
该文件夹内的常见文件:
- `raw_subfinder.txt`
- `raw_sublist3r.txt`
- `raw_amass_passive.txt`
- `raw_amass_brute.txt`
- `raw_dnsrecon.txt`
- `raw_dnsrecon_brute.txt`
- `raw_theharvester_.txt`
- `raw_theharvester_all_brute.txt`
- `raw_bbot.txt`
- `raw_findomain.txt`
- `raw_darkscout.txt`
- `raw_knockpy.txt`
- `raw_securitytrails.txt`
- `raw_dnsdumpster.txt`
- `raw_shodan_domain.txt`
- `raw_shodan_search.txt`
- `raw_public_.txt`
- `all_raw.txt`
- `clean_subdomains.txt`
- `final_subdomains_with_ip.txt`
如果你传递了 `-o final.txt`,最终报告将以该文件名保存在 TraceMind 输出文件夹中。
## 道德警告
TraceMind 仅用于授权侦查。
请勿将其用于漏洞利用、漏洞扫描、密码攻击、暴力破解登录页面或任何你未获授权执行的活动。
标签:DNS枚举, GitHub, MISP, Python, 动态插桩, 实时处理, 无后门, 网络安全工具