egetangoren/Argus

GitHub: egetangoren/Argus

一个模块化的命令行侦察框架,将域名信息、DNS、子域名、端口、HTTP 探测等常见信息收集功能整合为一体,帮助安全人员高效完成目标资产侦察。

Stars: 0 | Forks: 0

     ___                           

    /   |  _________ ___  _______  

   / /| | / ___/ __ `/ / / / ___/ 

  / ___ |/ /  / /_/ / /_/ (__  )  

 /_/  |_/_/   \__, /\__,_/____/   

              /____/               

  
全视侦察框架
以希腊神话中的百眼巨人阿耳戈斯·潘诺普忒斯(Argus Panoptes)命名

Python License Platform Version

## 🏛️ 关于 **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查询, 侦察框架, 协议探测, 子域名爆破, 实时处理, 密码管理, 数据统计, 无后门, 服务器安全, 服务探测, 端口扫描, 网络安全, 网络安全工具, 网络安全工具, 资产测绘, 逆向工具, 隐私保护