egetangoren/Argus
GitHub: egetangoren/Argus
一个模块化的命令行侦察框架,将域名信息、DNS、子域名、端口、HTTP 探测等常见信息收集功能整合为一体,帮助安全人员高效完成目标资产侦察。
Stars: 0 | Forks: 0
___
/ | _________ ___ _______
/ /| | / ___/ __ `/ / / / ___/
/ ___ |/ / / /_/ / /_/ (__ )
/_/ |_/_/ \__, /\__,_/____/
/____/
全视侦察框架
以希腊神话中的百眼巨人阿耳戈斯·潘诺普忒斯(Argus Panoptes)命名
## 🏛️ 关于
**Argus** 是一个用 Python 编写的基于 CLI 的模块化侦察框架。它专为需要一套用于被动和主动信息收集的统一工具包的红队(Red Team)专业人士和安全研究人员而设计。
该名称源自 **Argus Panoptes** (Ἄργος Πανόπτης) —— 希腊神话中拥有百只眼睛的全视巨人,受赫拉之命成为永远警惕的守卫者。正如其神话同名者一样,该框架可以洞察一切:域名注册数据、DNS 基础设施、隐藏的子域名、开放端口、运行中的服务以及 Web 服务器技术——所有功能集于一身。
## ⚡ 功能特性
| 模块 | 描述 |
|--------|-------------|
| **WHOIS 查询** | 域名注册信息:注册商、日期、域名服务器、国家、DNSSEC |
| **DNS 枚举** | 查询 A、AAAA、MX、NS、TXT、CNAME、SOA 记录及其 TTL |
| **子域名爆破** | 通过 DNS 解析进行基于多线程字典的子域名发现 |
| **端口扫描** | TCP 连接扫描,支持默认 Top-100 端口或自定义范围,以及服务检测 |
| **HTTP 探测** | HTTP/HTTPS 探测,获取状态码、标题、响应头和重定向链 |
| **Banner 抓取** | 使用感知协议的 Payload 进行原始套接字(Raw socket)Banner 捕获 |
| **报告生成器** | 双格式输出:结构化的 JSON + 易读的 TXT |
### 框架亮点
- 🧩 **模块化架构** — 每个模块均可独立运行,或通过 CLI 统一调度
- 🧵 **多线程扫描** — 使用 `ThreadPoolExecutor` 实现并行的 DNS、端口和 HTTP 操作
- 🛡️ **健壮的错误处理** — 优雅降级,具有按模块隔离异常的能力
- 📊 **丰富的 CLI 输出** — 彩色表格、进度条和实时状态更新
- 📁 **双重报告** — 自动生成 JSON + TXT 报告
- 🔗 **模块间数据流动** — 发现的子域名和开放端口会自动馈送至 HTTP 探测模块
## 📦 安装
### 前置条件
- Python **3.10** 或更高版本
- `pip` 包管理器
### 安装步骤
```
# 克隆 repository
git clone https://github.com/egetangoren/Argus.git
cd Argus
# 创建并激活 virtual environment
python3 -m venv .venv
source .venv/bin/activate # Linux / macOS
# .venv\Scripts\activate # Windows
# 安装 dependencies
pip install -r requirements.txt
```
### 依赖项
| 包 | 用途 |
|---------|---------|
| `python-whois` | WHOIS 域名注册查询 |
| `dnspython` | DNS 记录解析和枚举 |
| `requests` | HTTP/HTTPS 端点探测 |
| `rich` | 终端 UI:表格、进度条、样式化输出 |
## 🚀 使用说明
### 基本语法
```
python main.py -t
[MODULES] [OPTIONS]
```
### 参数标志
| 标志 | 描述 |
|------|-------------|
| `-t`, `--target` | **必填。** 目标域名或 IP 地址 |
| `--all` | 运行所有侦察模块 |
| `--whois` | WHOIS 注册查询 |
| `--dns` | DNS 记录枚举 |
| `--sub` | 子域名爆破枚举 |
| `--ports [RANGE]` | TCP 端口扫描(默认:Top 100,或指定范围) |
| `--http` | HTTP/HTTPS 探测 + Banner 抓取 |
| `--output PATH` | 自定义输出路径(文件或目录) |
### 示例
```
# 对 target 运行所有 modules
python main.py -t example.com --all
# 仅 WHOIS + DNS
python main.py -t example.com --whois --dns
# Subdomain 枚举 + HTTP 探测
python main.py -t example.com --sub --http
# 自定义范围的 Port 扫描
python main.py -t example.com --ports 1-1024
# 扫描特定 Port + Banner 抓取
python main.py -t example.com --ports 22,80,443,8080 --http
# 带有自定义输出文件的 Full scan
python main.py -t example.com --all --output results.json
# 带有自定义输出目录的 Full scan
python main.py -t example.com --all --output ./reports
```
### 输出
报告默认以 **两种格式** 保存:
- **JSON** — 机器可读的结构化数据,适用于自动化流水线
- **TXT** — 人类可读的报告,包含带标签的章节和格式排版
```
output/
├── argus_example_com_20260513_120000.json
└── argus_example_com_20260513_120000.txt
```
## 🏗️ 项目结构
```
Argus/
├── main.py # CLI entry point and orchestration engine
├── requirements.txt # Python dependencies
├── README.md # This file
│
├── modules/
│ ├── __init__.py # Package exports
│ ├── whois_lookup.py # WHOIS registration queries
│ ├── dns_enum.py # DNS record enumeration (7 types)
│ ├── subdomain_enum.py # Multithreaded subdomain bruteforce
│ ├── port_scanner.py # TCP connect scanner with service detection
│ ├── banner_grabber.py # Raw socket banner grabbing
│ ├── http_probe.py # HTTP/HTTPS probing + banner integration
│ └── reporter.py # JSON & TXT report generator
│
├── wordlists/
│ └── subdomains.txt # Default subdomain wordlist (120 entries)
│
└── output/ # Generated reports directory
└── .gitkeep
```
## 🔒 模块详情
### WHOIS 查询
查询 WHOIS 服务器以检索域名注册数据。能够处理字段可能以字符串或列表形式返回的 WHOIS 响应双重性。提取包括注册商、日期、域名服务器、国家、组织和 DNSSEC 状态在内的 12 个字段。
### DNS 枚举
独立查询 7 种 DNS 记录类型,每种类型均采用隔离的错误处理机制。TXT 记录上的超时不会阻止 NS 或 MX 记录的收集。MX 记录按优先级排序。SOA 记录包含完整的区域元数据。
### 子域名爆破
使用具有可配置线程数(默认:20)和每次查询超时设置的 `ThreadPoolExecutor`。从字典文件中读取内容,通过 DNS A 记录查找解析每个候选项,并收集活跃的子域名及其 IP 地址。实时进度条显示完成进度和发现数量。
### 端口扫描
使用 `socket.connect_ex()` 进行 TCP 连接扫描以实现最小开销。内置精心策划的 Top-100 端口列表,涵盖常见服务(SSH、HTTP、数据库、DevOps 工具)。支持自定义范围(`1-1024`)、逗号分隔列表(`80,443`)和混合格式。服务名称通过 `socket.getservbyport()` 解析。
### HTTP 探测与 Banner 抓取
两阶段模块:首先向目标及所有已发现的子域名发送 HTTP/HTTPS 请求,收集状态码、页面标题、服务器响应头和重定向链。接着使用感知协议的 Payload(Web 端口使用 HTTP HEAD,其他端口使用通用探测),通过原始套接字连接到开放端口。
### 报告生成器
将所有模块的输出整合为结构化报告。支持三种输出模式:默认目录(自动命名)、显式 `.json`/`.txt` 文件路径(自动生成另一种格式)或自定义目录。TXT 报告采用基于章节的格式化,为每个模块设置了明确的标题。
## ⚠️ 法律免责声明
## 📝 许可证
本项目基于 MIT 许可证授权。详情请参见 [LICENSE](LICENSE)。
## 👤 作者
**Ege Tangören** — 红队开发者与安全研究员
- GitHub: [@egetangoren](https://github.com/egetangoren)
“即使是百眼巨人阿耳戈斯也无法看穿一切。但我们仍在努力。”
标签:DNS枚举, DNS枚举, ESC4, ESC6, GitHub, HTTP探测, OSINT, Python, URL短链接分析, WHOIS查询, 侦察框架, 协议探测, 子域名爆破, 实时处理, 密码管理, 数据统计, 无后门, 服务器安全, 服务探测, 端口扫描, 网络安全, 网络安全工具, 网络安全工具, 资产测绘, 逆向工具, 隐私保护