eredotpkfr/subscan
GitHub: eredotpkfr/subscan
基于 Rust 构建的高性能子域名枚举工具,集成多种发现技术,专为渗透测试和资产测绘设计。
Stars: 48 | Forks: 2
Subscan 是一款使用 [Rust](https://www.rust-lang.org/) 构建的强大子域名枚举工具,专为渗透测试设计。它将多种发现技术结合在一个轻量级二进制文件中,使安全研究人员的子域名搜寻工作更加轻松快捷
## 功能特性
- 🕵️ 智能发现技巧
- 使用多种搜索引擎(`Google`、`Yahoo`、`Bing`、`DuckDuckGo` 等)
- 集成 `Shodan`、`Censys`、`VirusTotal` 等 API
- 执行区域传送(zone transfer)检查
- 使用优化的字典进行子域名暴力破解
- 🔍 解析所有子域名的 IP 地址
- 📎 导出 `CSV`、`HTML`、`JSON` 或 `TXT` 格式的报告
- 🛠️ 可配置
- 自定义 HTTP 请求(user-agent、timeout 等)
- 通过代理轮换请求(`--proxy` 参数)
- 使用 `--resolver` 参数微调 IP 解析器
- 使用 `--skips` 和 `--modules` 过滤并运行特定模块
- 🐳 Docker 友好
- 原生支持 `amd64` 和 `arm64` Linux 平台
- 一个不会占用您存储空间的微型容器 —— 体积不足 1GB,即刻可用 🚀
- 💻 兼容多平台,易于作为单一二进制文件安装
## 安装
🦀 使用 Rust 的包管理器 Cargo 安装 `subscan` 工具。请确保您的系统已安装 [Rust](https://www.rust-lang.org/)。然后运行
```
~$ cargo install subscan
```
## 使用方法
✨ 这里是关于如何使用它的快速概览
```
~$ subscan
_
| |
___ _ _| |__ ___ ___ __ _ _ __
/ __| | | | '_ \/ __|/ __/ _` | '_ \
\__ \ |_| | |_) \__ \ (_| (_| | | | |
|___/\__,_|_.__/|___/\___\__,_|_| |_|
Usage: subscan [OPTIONS]
Commands:
scan Start scan on any domain address
brute Start brute force attack with a given wordlist
module Subcommand to manage implemented modules
help Print this message or the help of the given subcommand(s)
Options:
-v, --verbose... Increase logging verbosity
-q, --quiet... Decrease logging verbosity
-h, --help Print help (see more with '--help')
-V, --version Print version
```
### 开始扫描
要使用所有可用模块扫描域名,请使用以下命令
```
~$ subscan scan -d example.com
```
您也可以使用 `--skips` 和 `--modules` 参数选择运行或跳过特定模块。模块名称应以逗号分隔的列表形式提供
```
~$ # skip the commoncrawl and google modules during the scan
~$ subscan scan -d example.com --skips=commoncrawl,google
```
```
~$ # run only the virustotal module
~$ subscan scan -d example.com --modules=virustotal
```
### 暴力破解
使用 `brute` 命令配合特定字典启动暴力破解攻击
```
~$ subscan brute -d example.com --wordlist file.txt
```
## 环境变量
所有环境变量均由 `.env` 文件管理。Subscan 可以从该 `.env` 文件中读取您的环境配置。您可以参考 `.env.template` 文件来了解如何创建它们
邮箱 -
| 名称 | 必填 | 描述 |
| :----------------------------- | :------: | :---------: |
| `SUBSCAN_CHROME_PATH` | `false` | 指定您的 Chrome 可执行文件。如果未指定,headless_chrome 将根据您的系统架构自动获取 Chrome 二进制文件 |
| `SUBSCAN__HOST` | `false` | 某些 API 集成模块可以提供用户特定的主机地址,对于这些情况,请设置模块特定的主机 |
| `SUBSCAN__APIKEY` | `false` | 某些模块可能包含 API 集成并需要 API 密钥进行认证。在此类情况下设置 API 密钥 |
| `SUBSCAN__USERNAME` | `false` | 如果模块使用 HTTP 基本认证,请设置用户名 |
| `SUBSCAN__PASSWORD` | `false` | 如果模块使用 HTTP 基本认证,请设置密码 |
## Docker
🐳 对于容器化使用,您可以直接从 [Docker Hub](https://hub.docker.com/) 拉取 `eredotpkfr/subscan` Docker 镜像
```
~$ docker pull eredotpkfr/subscan:latest
```
拉取预构建镜像后,您可以轻松运行容器以执行子域名枚举
```
~$ docker run -it --rm eredotpkfr/subscan scan -d example.com
```
通过 docker `--env` 指定环境变量
```
~$ docker run -it --rm \
--env SUBSCAN_VIRUSTOTAL_APIKEY=foo \
eredotpkfr/subscan scan -d example.com --modules=virustotal
```
将输出报告保存到主机,请使用 `/data` 文件夹
```
~$ docker run -it --rm \
--volume="$PWD/data:/data" \
eredotpkfr/subscan scan -d example.com
```
要在 docker 容器中指定字典,请使用 `/data` 文件夹
```
~$ docker run -it --rm \
--volume="$PWD/wordlist.txt:/data/wordlist.txt" \
eredotpkfr/subscan brute -d example.com \
-w wordlist.txt --print
```
## 开发
📚 您可以在项目文档页面的 [Development](https://www.erdoganyoksul.com/subscan/development/index.html) 章节中找到开发 Subscan 的所有资源和文档
## 联系方式
博客 - [erdoganyoksul.com](https://www.erdoganyoksul.com)邮箱 -
标签:GitHub, Pentest, Rust, Subdomain, URL枚举, Windows内核, 可视化界面, 域名爆破, 子域名扫描器, 子域名枚举, 密码管理, 白帽子, 系统安全, 网络安全, 网络流量审计, 请求拦截, 通知系统, 通知系统, 隐私保护