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, 动态插桩, 实时处理, 无后门, 网络安全工具