
ABYSS C2 — HiSilicon DVR Exploit Framework (CVE-2020-25078). Educational IoT security research platform.
⚠️ 仅供教育/演示目的
本软件仅供在受控且授权环境中进行教育和授权的安全研究。旨在演示常见的 IoT 漏洞及后渗透技术。
您不得在以下设备上使用本软件:
- 任何您不拥有的系统或设备
- 任何未经您明确书面授权测试的系统或设备
- 任何未经事先批准的生产基础设施
创建者对使用本软件进行的任何滥用、损坏或非法活动不承担任何责任。 使用本软件即表示您承认自己有责任确保遵守所在司法管辖区所有适用法律法规。未经授权访问计算机系统在诸如《计算机欺诈与滥用法》(CFAA)及全球类似法规下均属非法。
本项目旨在演示:
- CVE-2020-25078(HiSilicon DVR 信息泄露)的工作原理
- IoT 设备安全弱点及固件更新的重要性
- 后渗透技术,以便防御者了解攻击者的 TTP
- 网络分段与凭据卫生的重要性
若不属于您,请不要触碰。
ABYSS C2 是一个基于 Python/Flask 构建的全栈命令控制框架,配备实时暗色主题网页面板。它演示了针对 IoT 设备(特别是受 CVE-2020-25078 影响的 HiSilicon 平台 DVR 和 IP 摄像头)的完整攻击链——从侦察和目标获取到利用、后渗透、持久化、横向移动及数据窃取。
CVE-2020-25078 是 HiSilicon Hi3516/Hi3518/Hi3519 系列 DVR/NVR 设备中的一个路径遍历/信息泄露漏洞。未认证攻击者可通过 HTTP 服务器的目录遍历访问包含明文管理员凭据的配置文件(/mnt/mtd/Config/Account*)。
---``` panel/ ├── server.py # Flask + SocketIO C2 web panel (~1200 lines, 50+ API routes) ├── database.py # SQLite ORM — 11 tables (cameras, vulns, creds, shells, DNS, ASN, etc.) ├── scanner.py # Multi-threaded TCP/HTTP vulnerability scanner ├── exploit.py # CVE-2020-25078 exploit — 37 vulnerable paths, 14 credential parsers ├── telnet_client.py # Raw telnet command execution against owned devices ├── brute.py # Multi-threaded brute force engine ├── web_exploit.py # Full website vulnerability scanner (CMS detection, exposed files, SQLi) ├── web_cves.py # CVE scanner — Log4Shell, Spring4Shell, Confluence, Ghostcat, etc. ├── web_bugs.py # Bug class scanner — SQLi, LFI, SSRF, XXE, CmdI, JWT, etc. ├── web_brute.py # Web brute force — forms, WordPress xmlrpc, Basic Auth, cred stuffing ├── network_exploit.py # Network service exploit scanner — SMB, RDP, VNC, databases, etc. ├── cred_spray.py # Multi-service credential spraying ├── recon_asn.py # ASN import, organization search, IP-to-ASN lookup ├── recon_dns.py # DNS recon — all record types, subdomain brute, zone transfer ├── recon_jarm.py # JARM TLS server fingerprinting ├── recon_waf.py # WAF detection and identification ├── recon_geoip.py # GeoIP lookup and bulk IP geolocation ├── portscan.py # TCP port scanner with banner grabbing, SYN option, multiple presets ├── persistence.py # SSH key injection, cron backdoors, full deployment ├── reverse_shell.py # Payload generator + multi-session listener ├── pivot_chain.py # Multi-hop command execution and TCP relay ├── socks_pivot.py # SOCKS5 proxy through compromised hosts ├── botnet.py # Bot grouping, fan-out commands, health checks, payload deployment ├── intel.py # Telegram/Discord webhooks, AbuseIPDB, screenshot capture ├── scheduler.py # APScheduler-based job scheduling ├── proxy_rotation.py # Proxy list rotation for stealth ├── stealth.py # Traffic obfuscation utilities ├── inject_key.py # SSH key injection variants ├── inject_ssh.py # SSH-based injection ├── launch.py # Simple launcher wrapper ├── auto_exploit.py # Automated exploitation routines ├── templates/ │ └── index.html # Dark-themed SPA — 8 tabs, real-time updates, terminal └── requirements.txt # Python dependencies
### 数据库模式
SQLite 数据库(`cameras.db`,首次运行时自动创建)包含 11 个表:
| 表名 | 用途 |
|-------|---------|
| `cameras` | 受攻击设备 — IP、凭据、型号、固件、序列号、状态 |
| `command_log` | 每条已执行命令及其输出的完整审计跟踪 |
| `scan_results` | 扫描历史 — 哪些 IP 已扫描及是否脆弱 |
| `web_vulns` | 已发现的 Web 漏洞(CVE、严重性、证据) |
| `network_vulns` | 已发现的网络服务漏洞 |
| `shells` | 活跃的反向 shell 会话 |
| `dns_records` | DNS 侦察结果 |
| `cred_vault` | 按服务组织的已收集凭据 |
| `asn_targets` | ASN 前缀及导入的 IP 范围 |
| `web_targets` | 带有元数据的 Web 目标(状态、服务器、CMS、JARM、WAF) |
| `scan_jobs` | 作业跟踪 — 扫描类型、目标、时长、结果数量 |
| `scan_log` | 用于审计的模块级活动日志 |
---
## 安装
### 先决条件
- Python 3.10 或更新版本
- pip
- Git(可选)
### 步骤 1 — 克隆或下载```bash
git clone https://github.com/YOUR_USERNAME/abyss-c2.git
cd abyss-c2
python -m venv venv
venv\Scripts\activate
source venv/bin/activate
### 步骤 3 — 安装依赖```bash
pip install -r requirements.txt
暴力破解模块期望在项目根目录下存在一个 rockyou.txt 字典文件。由于 GitHub 文件大小限制(100MB),该文件未包含在此存储库中。```bash
cp /usr/share/wordlists/rockyou.txt.gz . gunzip rockyou.txt.gz
如果您不需要暴力破解,其他模块无需词表即可工作。
### 步骤 5 — 启动```bash
python server.py
在浏览器中打开 **http://localhost:5000**。
数据库在首次运行时自动创建——无需设置。
初次打开面板时,您会看到:
这是您的指挥中心。您可以在此执行以下操作:
从搜索引擎获取目标:
手动扫描:
192.168.1.0/24)设备被攻陷后(出现在表格中):
批量操作:
Web扫描模式(通过WEB按钮切换):
六个侦察模块:
CVE 扫描器 — 检查20+个已知CVE: Log4Shell (CVE-2021-44228)、Spring4Shell (CVE-2022-22965)、Confluence (CVE-2022-26134)、Ghostcat (CVE-2020-1938)、Struts2 (CVE-2017-5638)、Jenkins (CVE-2018-1000861)、GitLab (CVE-2021-22205)、Exchange ProxyShell/ProxyLogon、F5 BIG-IP (CVE-2022-1388)、Citrix (CVE-2019-19781)、MOVEit (CVE-2023-34362)、Ivanti (CVE-2024-21887)、vCenter (CVE-2021-21972)、PHPUnit (CVE-2017-9841)、GeoServer (CVE-2024-36401)、Apache Solr (CVE-2019-17558) 以及WordPress插件漏洞。
漏洞类别扫描器 — 测试: 盲注SQL注入、命令注入、本地文件包含、服务端请求伪造、XML外部实体、JWT攻击、子域名劫持、HTTP请求走私、GraphQL内省、CORS配置错误。
Web 暴力破解 — 四种模式:
结果出现在下方的 已发现漏洞 表格中。
网络漏洞扫描器 — 检查常见网络服务是否存在已知漏洞: SMB (EternalBlue, SMBGhost)、RDP (BlueKeep)、VNC (认证绕过)、FTP (匿名访问)、SNMP (默认团体字)、Redis (未授权)、MongoDB (未授权)、Elasticsearch (未授权)、CouchDB (未授权)、MySQL/MSSQL/PostgreSQL (默认凭据)、Memcached (未授权)、IPMI (认证绕过)、Mirai-IoT 默认凭据。
凭据喷洒 — 将收集的或自定义的凭据喷洒到多个服务: Telnet、SSH、FTP、HTTP Basic、WordPress、SMB、Redis、MySQL、MongoDB、VNC 或全部同时。
结果填入 网络漏洞 表格和 凭据库。
对被控主机的三种部署操作:
/root/.ssh/authorized_keys(或多个路径)跳板链 — 通过多个中间主机执行命令:``` hop1 → hop2 → hop3 → command
**SOCKS 代理** — 启动一个本地 SOCKS5 代理,通过被攻陷设备路由流量,使您能够使用 proxychains 或任何兼容 SOCKS 的工具访问内部网络。
### 标签页 6 — 反向 Shell
- **Payload 生成器** — 选择 Shell 类型(bash、python、perl、php、nc、ruby、node、lua 等),设置 LHOST/LPORT,点击“生成”——Payload 出现,点击即可复制
- **监听器** — 在任何端口启动监听器,自动管理多个并发连接
- **活跃会话** — 点击任意会话进行交互,输入命令并点击“发送”
- **所有 Shell** 表格显示所有接收到的反向 Shell 回调,以及状态
### 标签页 7 — 僵尸网络
用于管理大量被攻陷设备:
- **广播命令** — 在所有 Bot(可选按标签过滤)上执行命令
- **健康检查** — Ping 所有 Bot 并报告在线/离线状态
- **标记 Bot** — 为 Bot 分配标签以进行分组(例如 `eu`、`cameras`、`high-value`)
- **部署 Payload** — 向某个标签组中的所有 Bot 推送 Payload
- **Bot 摘要** — 显示总数量、在线数量以及按标签划分的统计
### 标签页 8 — 设置
- **Telegram/Discord** — 配置事件(新攻陷、扫描完成等)的 Webhook 通知
- **AbuseIPDB** — 检查 IP 信誉
- **截图** — 从摄像头的 Web 界面抓取 HTTP 截图
- **调度器** — 设置周期任务(例如每 3600 秒进行一次健康检查)
- **扫描日志** — 所有模块操作的完整审计跟踪,可按模块类型过滤
---
## API 参考
完整 REST API 位于 `http://localhost:5000/api/`。关键端点:
| 端点 | 方法 | 描述 |
|----------|--------|-------------|
| `/api/cameras` | GET | 列出所有被攻陷设备 |
| `/api/cameras/<ip>` | GET | 获取设备详情 |
| `/api/stats` | GET | 仪表盘统计信息 |
| `/api/scan/start` | POST | 启动扫描器(CIDR、目标、线程数) |
| `/api/scan/stop` | POST | 停止扫描器 |
| `/api/scan/status` | GET | 扫描器运行状态 + 统计 |
| `/api/exploit/check` | POST | 检查单个 IP 是否存在 CVE-2020-25078 |
| `/api/fetch_targets` | POST | 从 Shodan/FOFA/ZoomEye/Free 获取目标 |
| `/api/web_scan` | POST | 完整网站漏洞扫描 |
| `/api/web_cves/scan` | POST | 针对目标的 CVE 扫描 |
| `/api/web_bugs/scan` | POST | 针对目标的 Bug 类扫描 |
| `/api/web_brute` | POST | Web 暴力破解 |
| `/api/network/scan` | POST | 网络漏洞扫描 |
| `/api/cred_spray` | POST | 凭证喷洒 |
| `/api/portscan` | POST | TCP 端口扫描 |
| `/api/recon/asn` | POST | ASN 导入/查询/搜索 |
| `/api/recon/dns` | POST | DNS 信息收集 |
| `/api/recon/jarm` | POST | JARM 指纹 |
| `/api/recon/waf` | POST | WAF 检测 |
| `/api/recon/geoip` | POST | GeoIP 查询 |
| `/api/persistence/deploy` | POST | 部署持久化(ssh_key/cron/full) |
| `/api/revshell/generate` | POST | 生成反向 Shell Payload |
| `/api/revshell/listen` | POST | 启动反向 Shell 监听器 |
| `/api/revshell/stop` | POST | 停止监听器 |
| `/api/botnet/bots` | GET | Bot 列表 + 组摘要 |
| `/api/botnet/fanout` | POST | 在 Bot 上执行命令 |
| `/api/botnet/health` | POST | Bot 健康检查 |
| `/api/botnet/deploy` | POST | 向 Bot 部署 Payload |
| `/api/socks/start` | POST | 启动 SOCKS5 代理 |
| `/api/socks/stop` | POST | 停止 SOCKS5 代理 |
| `/api/intel/config` | GET/POST | 获取/设置通知配置 |
| `/api/intel/screenshot` | POST | 抓取摄像头截图 |
| `/api/intel/notify` | POST | 发送测试通知 |
| `/api/scheduler/jobs` | GET | 列出已调度任务 |
| `/api/scheduler/add` | POST | 添加调度任务 |
| `/api/scheduler/remove` | POST | 移除调度任务 |
| `/api/credentials` | GET | 凭证库 |
| `/api/web_vulns` | GET | Web 漏洞列表 |
| `/api/network_vulns` | GET | 网络漏洞列表 |
| `/api/shells` | GET | 所有反向 Shell 会话 |
| `/api/scan_log` | GET | 审计日志(可按模块/目标过滤) |
| `/api/scan_jobs` | GET | 扫描任务历史 |
WebSocket 事件(SocketIO):
- `scanner_event` — 实时扫描进度(存活、存在漏洞、已控制、状态)
- `stats_update` — 仪表盘统计变化
- `cameras_list` — 摄像头列表刷新
- `new_camera` — 新设备被攻陷
- `command_result` — Telnet 命令输出
- `mass_result` / `mass_result_item` — 批量命令结果
- `brute_event` — 暴力破解进度
- `web_cve_event` / `web_cves_done` — CVE 扫描进度
- `web_bug_event` / `web_bugs_done` — Bug 扫描进度
- `network_event` / `network_done` — 网络扫描进度
- `spray_event` / `spray_done` — 凭证喷洒进度
- `portscan_event` / `portscan_done` — 端口扫描进度
- `persistence_result` — 持久化部署结果
- `revshell_event` — 反向 Shell 数据/连接
- `botnet_event` / `botnet_fanout_done` — 僵尸网络操作
---
## 技术细节
### CVE-2020-25078 漏洞利用链
1. **存活检查** — TCP 连接至端口 80
2. **HTTP 指纹** — 检查响应中是否存在 15 个已知 DVR 签名(`AppName="Hipcam"`、`hi3516`、`WEB SERVICE` 等)
3. **路径遍历** — 尝试 37 个已知漏洞路径(`/../../../../../../../../../mnt/mtd/Config/Account1` 等)
4. **凭证提取** — 用 14 个正则模式解析响应,覆盖 INI、XML、JSON、URL 编码、二进制、Base64、冒号分隔及 DVR 专用格式
5. **垃圾过滤** — 激进地去除误报(HTML 标签、HTTP 头、常见单词)
6. **默认回退** — 若设备存在漏洞但未提取出凭证,则尝试 22 个已知默认凭证对
### 扫描器架构
- 线程池,可配置工作线程数(默认 50)
- 基于队列的目标分配
- 通过 SocketIO 向 UI 发送实时事件
- 使用互斥锁实现线程安全统计
- CIDR 范围扩展,排除网络地址和广播地址
- 多端口扫描(80、8080、443、8443、554、8000、81、88、8888、37777)
---
## 免责声明
**本软件仅供教育和演示目的使用。**
本项目仅限在授权的安全测试、教育环境或您拥有所有权的系统上使用。此处演示的技术在网络安全行业广为人知,记录它们是为了帮助防御者理解攻击方法。
**使用本软件即表示您同意:**
1. 您只会在您拥有或已获得明确书面授权测试的系统上使用它
2. 您有责任遵守所有适用的地方、州、国家和国际法律
3. 本项目的创建者和贡献者对以下情形**不承担任何责任**:
- 未经授权或非法使用本软件
- 因使用或滥用本软件造成的损害
- 因使用本软件而产生的法律后果
4. 本软件不提供任何形式的明示或暗示担保
**如果您不确定您的使用场景是否合法或已获授权,请不要使用本软件。**
本项目的存在不构成对非法活动的鼓励。它的存在是因为理解攻击技术对于构建有效防御至关重要。
---
## 许可证
本项目按原样提供,仅供教育目的。无担保。无责任。使用风险自负。
---
*请记住:安全研究的存在是为了让系统更安全,而不是破坏它们。善用这些知识去防御,而不是攻击。*
| 模块 | 功能 |
|---|
| ASN 查询 | 导入ASN的所有前缀、搜索组织、查询IP所属ASN |
| DNS 侦察 | 完整的DNS枚举 — A、AAAA、MX、NS、TXT、SOA、CNAME记录 + 子域暴力破解 + AXFR区域传输尝试 |
| JARM 指纹 | TLS服务器指纹识别 — 即使在负载均衡器后面也能识别TLS实现 |
| WAF 检测 | 识别目标前端的WAF(Cloudflare、CloudFront、Imperva、Akamai等) |
| GeoIP | 任何IP的地理位置和ISP查询 |
| 端口扫描 | TCP端口扫描,6种预设——Web、Top 100、Top 1000、全端口、IoT、数据库——带服务指纹识别 |