efti74/Sub-Domain-Enumeration-Tool-for-Linux

GitHub: efti74/Sub-Domain-Enumeration-Tool-for-Linux

一个基于 Bash 的 Linux 子域名枚举工作流,整合多种被动收集、DNS 验证和 HTTP 探测工具以实现自动化的安全侦察。

Stars: 0 | Forks: 0

# 子域名枚举 **由 Efti74 创建** 一个基于 Bash 的子域名侦察工作流,专为**授权的 Bug Bounty 和渗透测试范围**设计。它结合了被动发现、主动 DNS 枚举、排列生成、DNS 验证、HTTP/HTTPS 探测、状态码收集以及可选的 VHost 发现。 ## 1. 克隆仓库 ``` git clone cd ``` 发布后,请将上方的占位符替换为实际的 GitHub 仓库 URL 和目录名称。 ## 2. 使脚本可执行 ``` chmod +x install.sh sub_enum.sh ``` ## 3. 首先安装必需的工具 在**运行侦察脚本之前**,请运行包含的依赖安装程序: ``` ./install.sh ``` 安装程序会尝试安装或检测该工作流所使用的依赖项,包括: - Subfinder - Amass - Assetfinder - Findomain - Sublist3r - curl - jq - Gobuster - PureDNS - MassDNS - AlterX - dnsx - **ProjectDiscovery httpx** - ffuf - SecLists/wordlists 不同 Linux 发行版之间的软件包可用性有所不同。如果某个依赖项无法自动安装,`install.sh` 会打印一条 **警告**。在开始完整的侦察运行之前,请从其官方项目/包源手动安装所有缺失的依赖项。 安装完成后,请检查验证输出。不要忽略针对您期望工作流使用的工具的 `[WARNING] ... missing` 消息。 有关详细说明和故障排除,请阅读 [`TOOLS.md`](TOOLS.md)。 ## 4. 验证主脚本 首次运行之前: ``` bash -n ./sub_enum.sh ``` 如果该命令没有输出任何内容,则说明 Bash 语法是有效的。 您还可以查看可用的选项: ``` ./sub_enum.sh --help ``` ## 5. 运行子域名枚举 ### 推荐初学者使用:交互模式 只需运行: ``` ./sub_enum.sh ``` 脚本将以交互方式询问配置信息。 示例: ``` ============================================================ Sub Domain Enumeration Created by Efti74 ============================================================ Interactive setup (optional fields can be skipped by pressing Enter) ------------------------------------------------------------------ Target domain (required, e.g. example.com): example.com Wordlist [optional - Enter = default]: PureDNS resolver list [optional - Enter = skip]: Base URL for ffuf [optional - Enter = skip]: Output directory [optional - Enter = automatic]: Threads [optional - Enter = 50]: Run active enumeration? [Y/n - Enter = Yes]: Enable ffuf VHost stage? [Y/n - Enter = Yes]: ``` 只有**目标域名是必填的**。对于可选问题,按 **Enter** 键即可使用默认值或跳过该功能。 输入根域名,例如: ``` example.com ``` 请勿输入任意的 URL 路径,例如: ``` https://example.com/login/page ``` 可选的 **Base URL** 提示是专门用于 ffuf VHost 发现的,可以接受如下值: ``` https://example.com ``` ### 命令行模式 您可以通过提供参数来跳过交互式问题。 基础用法: ``` ./sub_enum.sh -d example.com ``` 自定义字典: ``` ./sub_enum.sh \ -d example.com \ -w /path/to/subdomains-wordlist.txt ``` 自定义 PureDNS resolver 列表: ``` ./sub_enum.sh \ -d example.com \ -r /path/to/resolvers.txt ``` 可选的 ffuf VHost 发现: ``` ./sub_enum.sh \ -d example.com \ -u https://example.com ``` 自定义输出目录: ``` ./sub_enum.sh \ -d example.com \ -o recon_example ``` 自定义并发: ``` ./sub_enum.sh \ -d example.com \ -t 100 ``` 被动/低噪音模式: ``` ./sub_enum.sh \ -d example.com \ --no-active ``` 仅禁用 ffuf: ``` ./sub_enum.sh \ -d example.com \ --no-ffuf ``` ## 6. 推荐的首次运行流程 对于全新的 Linux 安装,请严格遵循以下顺序: ``` # 1. Enter the cloned repository cd # 2. Make scripts executable chmod +x install.sh sub_enum.sh # 3. Install/check dependencies ./install.sh # 4. Resolve every important MISSING/WARNING dependency # shown by install.sh before continuing. # 5. Validate Bash syntax bash -n ./sub_enum.sh # 6. Start interactive reconnaissance ./sub_enum.sh ``` 或者,在依赖项准备就绪后: ``` ./sub_enum.sh -d example.com ``` ## 7. 关键的 ProjectDiscovery httpx 检查 存在多个名为 `httpx` 的程序。本项目需要的是 **ProjectDiscovery httpx**,而不是 Python 的 HTTPX CLI。 在首次完整运行之前,请验证: ``` type -a httpx httpx -h 2>&1 | grep -E -- '-l|-status-code|-json' ``` 正确的工具支持如下选项: ``` -l -status-code -json ``` 如果您收到: ``` Error: No such option: -l ``` 则说明执行了错误的 `httpx`。 如果 ProjectDiscovery httpx 是使用 Go 安装的,请尝试: ``` export PATH="$HOME/go/bin:$PATH" hash -r ``` 然后再次验证: ``` httpx -version httpx -h 2>&1 | grep -E -- '-l|-status-code|-json' ``` 有关更多故障排除信息,请参阅 `TOOLS.md`。 ## 8. 字典说明 SecLists 路径因 Linux 发行版而异。 如果脚本中配置的默认字典不存在,请找到您安装的 DNS 字典并明确指定它: ``` ./sub_enum.sh \ -d example.com \ -w /path/to/subdomains-top1million-20000.txt ``` 在使用自定义字典之前: ``` test -f /path/to/wordlist.txt && wc -l /path/to/wordlist.txt ``` ## 9. 理解结果 结果目录包含以下文件: ``` passive_unique.txt all_candidates_unique.txt resolved_subdomains.txt dns_records.txt httpx.jsonl live_urls.txt live_with_status.txt dns_alive_but_no_http.txt vhost_candidates_ffuf.txt raw/ ``` 重要文件: - **`resolved_subdomains.txt`** — 当 DNS 验证工具可用时,这是经过 DNS 验证的主要子域名清单。 - **`live_urls.txt`** — 有 HTTP/HTTPS 响应的 URL。 - **`live_with_status.txt`** — 存活的 URL 信息,包括 HTTP 状态码和其他收集的元数据。 - **`httpx.jsonl`** — 结构化的 ProjectDiscovery httpx 输出。 - **`dns_alive_but_no_http.txt`** — DNS 解析正常但对 HTTP/HTTPS 探测无响应的主机。 - **`vhost_candidates_ffuf.txt`** — VHost 候选者;这些与 DNS 子域名分开存放。 - **`raw/`** — 每个工具的原始结果和中间结果,有助于故障排除。 空文件**并不总是意味着零发现**。某个工具可能缺失、被跳过、超时或失败。在解读空结果之前,请检查终端警告和 `TOOLS.md`。 ## 依赖清单 `requirements.txt` 列出了项目依赖项,但它**不是 Python 的 pip requirements 文件**。 请勿使用: ``` pip install -r requirements.txt ``` 大多数依赖项是 Linux/Go 安全工具。请使用: ``` ./install.sh ``` 并手动安装安装程序报告为不可用的任何内容。 ## 文档 - `README.md` — 安装和使用说明。 - `TOOLS.md` — 逐个工具的解释和故障排除。 - `requirements.txt` — 依赖清单。 - `install.sh` — 尽力而为的依赖安装程序/检查器。 - `sub_enum.sh` — 主侦察脚本。 ## 法律和授权声明 仅在您获得明确授权进行测试的域和系统上使用此项目。请遵守目标的 Bug Bounty 或渗透测试范围、自动化限制和速率限制。您需自行负责遵守适用法律和计划规则。
标签:Bash, GitHub, 代码生成, 子域名枚举, 实时处理, 应用安全, 数字取证, 渗透测试工具, 系统安全, 自动化脚本, 运行时操纵