ice-wzl/DataReaper

GitHub: ice-wzl/DataReaper

基于 Shodan API 和 Web 爬虫的自动化侦察工具,用于发现暴露目录的 HTTP 服务器并自动收集敏感文件、利用 SSH 密钥访问目标。

Stars: 16 | Forks: 1

# DataReaper (DARE)

DataReaper 是一个基于 Python 的侦察工具,旨在发现和枚举具有暴露目录列表的公开可访问 HTTP 服务器。它利用 Shodan API 识别目标,执行自动化的目录遍历以对暴露的文件进行编目,下载敏感内容,并可以利用发现的 SSH 密钥来访问远程主机。 ## 功能 - **Shodan 集成**:查询 Shodan 以获取具有开放目录列表的 HTTP 服务器,并将结果存储在本地 SQLite 数据库中 - **自动化枚举**:递归扫描并对暴露的目录和文件进行编目 - **敏感文件检测**:内置对安全相关文件的检测,包括 SSH 密钥、凭据、配置文件等 - **自动化文件下载**:从发现的目标下载与关键字列表匹配的文件 - **SSH 密钥利用**:解析下载的 SSH 密钥和公钥文件以提取用户名,然后尝试对目标进行 SSH 访问 - **Bash 历史解析**:从下载的 `.bash_history` 文件中提取潜在用户名,用于 SSH 利用阶段 - **Shadow 文件处理**:从下载的 `/etc/shadow` 文件中提取密码哈希,并将其存储以用于离线破解 - **勘察日志记录**:SSH 遍历器将被访问主机的完整目录树记录到按 IP 划分并带有时间戳的日志文件中 - **扫描结果导出**:将数据库扫描结果导出并筛选到带有日期的日志文件中 - **代理支持**:通过 SOCKS 代理(如 Tor)路由流量,以进行匿名扫描 - **非交互模式**:跳过所有提示,用于自动化或计划执行 ## 要求 - Python 3.6 或更高版本 - 付费的 Shodan API 会员(API 访问所必需) - 可选:Tor(用于匿名扫描) ## 安装说明 ### 步骤 1:克隆仓库 ``` git clone https://github.com/ice-wzl/DataReaper.git cd DataReaper ``` ### 步骤 2:创建虚拟环境 建议使用虚拟环境来隔离依赖项。 **Linux/macOS:** ``` python3 -m venv venv source venv/bin/activate ``` **Windows:** ``` python -m venv venv venv\Scripts\activate ``` ### 步骤 3:安装依赖项 ``` pip install -r requirements.txt ``` ### 步骤 4:配置您的 Shodan API 密钥 1. 登录您的 Shodan 账户,网址为 https://shodan.io 2. 导航到您的账户页面以获取您的 API 密钥 3. 在 DataReaper 目录中创建一个名为 `api.txt` 的文件 4. 将您的 API 密钥作为唯一内容粘贴到该文件中 ``` echo "YOUR_API_KEY_HERE" > api.txt ``` ### 步骤 5:初始化数据库 此步骤已为您预先完成,如果您需要创建新的数据库,可参考此处。 数据库 schema 位于 `db/schema.sql` 中。如果数据库尚不存在或者您需要重新初始化它: ``` sqlite3 db/database.db < db/schema.sql ``` 在 Windows 上(使用 SQLite 命令行): ``` sqlite3 db/database.db ".read db/schema.sql" ``` ## 使用方法 DataReaper 在五种模式下运行:**query**、**scan**、**exploit**、**shadow** 和 **process targets**。 ### 命令语法 ``` python DataReaper.py [-h] (-q | -s | -e | -sh | -pt) [-t TOR] [-p PORT] [-n] [-v] ``` ### 参数 | 参数 | 描述 | |----------|-------------| | `-q`, `--query` | 查询 Shodan 以获取指定端口上具有目录列表的目标 | | `-s`, `--scan` | 扫描存储在数据库中的所有目标并下载匹配的文件 | | `-e`, `--exploit` | 使用下载的 SSH 密钥对发现的目标进行测试 | | `-sh`, `--shadow` | 处理下载的 shadow 文件并提取密码哈希 | | `-pt`, `--process_targets` | 将扫描结果从数据库导出到日志文件 | | `-p PORT`, `--port PORT` | 目标端口号(query 模式下必填) | | `-t IP:PORT`, `--tor IP:PORT` | 用于匿名请求的 SOCKS 代理地址(例如,`127.0.0.1:9050`) | | `-n`, `--noninteractive` | 无提示运行(跳过 IP 确认和警告) | | `-v`, `--verbose` | 启用详细输出 | 注意:`-q`、`-s`、`-e`、`-sh` 和 `-pt` 选项是互斥的。每次执行只能选择一个。 ### 工作流 **1. 查询 Shodan 获取目标** 查询 Shodan 以使用潜在目标填充您的数据库: ``` python DataReaper.py -q -p 8000 ``` 这将搜索 Shodan 上端口 8000 中带有暴露目录列表的服务器,并将结果存储在 SQLite 数据库中。 **2. 扫描并从目标下载** 扫描发现的目标以枚举其暴露的文件,并自动下载任何与内置关键字列表匹配的内容: ``` python DataReaper.py -s -p 8000 ``` 下载的文件将按目标 IP 组织并保存到 `downloads/` 中。 **3. 利用发现的 SSH 密钥** 下载文件后,尝试使用任何发现的 SSH 密钥向目标进行身份验证。DataReaper 从公钥文件和 bash 历史记录中提取用户名,然后尝试每个密钥/用户名组合: ``` python DataReaper.py -e -t 127.0.0.1:9050 ``` 如果不使用代理,在直接连接之前您将收到警告。成功访问的主机将被记录到数据库中,SSH 遍历器将执行完整的目录枚举,并将结果写入 `survey_results/`。 **4. 处理 Shadow 文件** 从任何下载的 `/etc/shadow` 文件中提取密码哈希: ``` python DataReaper.py -sh ``` 哈希将被写入 `hashes.txt` 并存储在数据库中以便离线破解。 **5. 导出扫描结果** 将数据库中的扫描结果导出到 `scan_results/` 中带有日期的日志文件: ``` python DataReaper.py -pt ``` ### 使用 Tor 进行匿名化 要通过 Tor 路由您的流量,请首先确保 Tor 正在您的系统上运行。 **Linux:** ``` sudo apt install tor sudo systemctl start tor ``` **Windows:** 从 https://www.torproject.org/download/tor/ 下载并安装 Tor Expert Bundle 然后运行 DataReaper,并使用 `-t` 标志指向您的 Tor SOCKS 代理: ``` python DataReaper.py -s -p 8000 -t 127.0.0.1:9050 ``` ### 示例 查询 Shodan 上端口为 80 的服务器: ``` python DataReaper.py -q -p 80 ``` 通过 Tor 扫描存储的目标并启用详细输出: ``` python DataReaper.py -s -p 8000 -t 127.0.0.1:9050 -v ``` 通过 Tor 利用下载的 SSH 密钥: ``` python DataReaper.py -e -t 127.0.0.1:9050 ``` 无提示导出扫描结果: ``` python DataReaper.py -pt -n ``` 处理 shadow 文件: ``` python DataReaper.py -sh ``` ## 输出 - **数据库**:所有目标数据、扫描结果、下载记录、已访问主机和提取的哈希都存储在 `db/database.db` 中 - **下载文件**:从目标下载的文件按 IP 地址组织并保存在 `downloads/` 中 - **扫描结果**:导出的扫描数据作为带有日期的日志文件保存到 `scan_results/` 中(例如,`targets_output_2026-04-07.log`) - **勘察结果**:SSH 遍历器目录枚举结果作为按 IP 划分的带有日期的日志文件保存到 `survey_results/` 中(例如,`192.168.1.1_survey_2026-04-07.log`) - **哈希**:提取的 shadow 文件哈希被写入 `hashes.txt` - **运行时日志**:每次执行都会在 `runtime.log` 中记录时间戳 ## 检测到的文件类型 DataReaper 内置了对安全敏感文件和目录的检测,包括: - SSH 密钥(`id_rsa`、`id_ed25519`、`id_ecdsa` 等) - AWS 凭据(`.aws`) - Git 仓库和凭据(`.git`、`.git-credentials`) - 证书文件(`.pem`、`.pfx`、`.p12`、`.crt`、`.key`) - Shell 历史文件(`.bash_history`、`.zsh_history`、`.python_history`) - 系统目录(`/home`、`/root`) - 密码文件(`passwd`、`shadow`) - 配置文件(`.env`、`config.yaml`、`docker-compose.yml`、Wireguard 配置) - 进攻性安全工具(Cobalt Strike、Metasploit、Sliver、Havoc、Mythic 等) - 恶意软件构件(勒索软件、窃密程序、释放器、加密程序) ## SSH 遍历器 SSH 遍历器(`executors/ssh_walker.py`)也可以作为独立工具用于 SSH 目录枚举: ``` python executors/ssh_walker.py -i -p -u (-P | -k ) ``` | 参数 | 描述 | |----------|-------------| | `-i`, `--ip_addr` | 目标 IP 地址 | | `-p`, `--port` | 远程 SSH 端口(默认:22) | | `-u`, `--username` | 身份验证使用的用户名 | | `-P`, `--password` | 身份验证使用的密码 | | `-k`, `--key` | 私钥文件路径 | 该遍历器执行完整的 SFTP 目录枚举,同时跳过嘈杂的系统目录(`/proc`、`/sys`、`/snap`、`/dev`、`/usr/share`、`/usr/src`、`/usr/snap`)。结果将被记录到 `survey_results/`。 ## 数据库解析器 数据库解析器(`parsers/db_parser.py`)也可以独立运行以导出扫描结果: ``` python parsers/db_parser.py [-f] [-t] ``` | 参数 | 描述 | |----------|-------------| | `-f`, `--filter` | 过滤掉常见的垃圾文件类型(html、js、jpg、ts、svg) | | `-t`, `--today` | 仅导出今天扫描的结果 | ## 免责声明 DataReaper 仅用于授权的安全研究和教育目的。用户需自行确保在扫描任何系统之前已获得适当授权。未经授权访问计算机系统是违法行为。作者对滥用本工具不承担任何责任。 ## 资源 - Shodan API 文档:https://developer.shodan.io/api - Python Requests 库:https://docs.python-requests.org/ - Tor Project:https://www.torproject.org/ ## 许可证 详情请参阅 LICENSE 文件。
标签:ESC4, OSINT, Python, SOCKS代理, SQLite, SSH密钥利用, Tor, VEH, Web爬虫, 侦察工具, 命令控制, 字典攻击, 字符串匹配, 实时处理, 密码管理, 影子文件破解, 敏感文件检测, 数据采集, 无后门, 检测规则, 网络安全, 网络资产发现, 逆向工具, 隐私保护