portbuster1337/ArachneC2
GitHub: portbuster1337/ArachneC2
ArachneC2:基于libp2p的去中心化C2框架,提供隐蔽安全的通信。
Stars: 15 | Forks: 4
# Arachne C2
基于 **libp2p**(IPFS背后的对等网络堆栈)构建的去中心化命令与控制框架。没有服务器,没有域名,没有要阻止的IP——只有通过全球p2p网络进行通信的加密身份。
受 [Sliver](https://github.com/BishopFox/sliver) 启发,但为去中心化基础设施重新设计。
## 核心思想
Arachne不是在VPS上运行C2服务器,而是使用IPFS对等网络上的 **GossipSub(PubSub**) 和 **DHT对等发现**。您的植入机群和操作员都是网络中的平等对等节点——没有单点故障。
## 功能
- 自包含的单个二进制文件——无需源代码树即可生成植入
- 信标模式植入,通过PubSub主题保持存在
- 基于DHT的对等发现——没有硬编码的服务器IP
- 加密和签名消息(Ed25519 + NaCl box)
- 交互式操作员控制台(列表、选择、执行、ls、ps、cd、pwd、下载、上传)
- 通过直接libp2p流进行交互式shell(Linux/macOS上的PTY,Windows上的隐藏ConPTY)
- 通过植入直接libp2p流进行端口转发
- 跨平台植入(Linux、macOS、Windows)
- 基于Protocol Buffers的消息格式,每条消息进行签名验证
- 不透明的协议标识符(短的proto包名,Z系列消息类型,短的wire ID)
- 每个植入的命令主题——命令只到达预期的植入
- 内置打洞和NAT穿越
- 如果缺少Go,则自动安装Go(在任何地方生成植入)
- 基于Garble的混淆(`--obfuscate`——删除名称、字面量、路径)
- 隐藏信标时间签名以掩盖流量
- 持久植入身份(每个构建嵌入密钥对)
- 静音模式(`--quiet`——在Linux/macOS上守护进程化,在Windows上隐藏控制台)
- 自动检测植入断开连接并发出警报
- 流保持活动防止中继电路空闲超时
- WebSocket + TCP传输(UDP/多播免费,以兼容沙盒)
- 虚拟机检测(`--antivm`——65+检测技术,与VMAware兼容的评分,无需CGO)
## 项目结构
```
arachne-c2/
├── build.sh # Build script (auto-installs Go if missing)
├── bin/ # Compiled binaries
├── cmd/
│ └── arachne/ # Single entry point (serve + generate)
├── docs/ # Design documentation
├── implant/ # Implant agent code
│ └── core/ # Agent runtime, command handlers, shell, portfwd
├── pkg/
│ ├── config/ # Shared config types
│ ├── cryptography/ # Ed25519 + NaCl key management
│ └── transport/ # libp2p node, messenger, PubSub helpers
├── protobuf/ # Protocol Buffers definitions
│ ├── apb/ # C2 protocol messages (opaque type names: Z1, Z2, ...)
│ ├── cpb/ # Common types (Process, Response, Request)
│ └── rpb/ # RPC service definitions (service S, methods M0-M13)
└── server/ # Operator node (the "server")
└── core/ # Operator logic, implant tracking, CLI, generate
```
## 构建
操作员二进制文件是自包含的——在构建时嵌入植入源,然后它可以在任何地方构建植入:
```
./build.sh # auto-installs Go if missing, embeds source, cross-compiles for all platforms
```
二进制文件写入到 `bin/` 作为 `arachne-{os}-{arch}`(或Windows上的 `*.exe`)。构建的二进制文件可以复制到任何安装了Go的机器(或没有Go——它会自动安装)。无需源代码树。
## 快速入门
### 1. 运行操作员
```
./bin/arachne
```
首次运行时,在 `~/.arachne/operator.key` 生成密钥对,并将公钥导出到 `~/.arachne/operator.pub`。
### 2. 构建植入
从操作员控制台(`generate`)或独立:
```
./bin/arachne generate --os linux --arch amd64 --output ./myimplant --upx
```
标志:`--os`(linux、darwin、windows)、`--arch`(amd64、arm64)、`--output`、`--pubkey`、`--upx`(默认为true)、`--obfuscate`、`--quiet`、`--antivm`。
使用 `--obfuscate` 通过 [garble](https://github.com/burrowers/garble)(如果缺少则自动安装)删除函数名称、包路径和字面量字符串。与 `--upx` 结合使用以实现最大加固。
使用 `--antivm` 将虚拟机检测编译到植入中。植入运行65+检测技术(CPUID签名、MAC前缀、DMI/SMBIOS、PCI供应商ID、进程枚举、注册表键、容器检测),并使用 [VMAware](https://github.com/kernelwernel/VMAware) 兼容的累积评分系统。如果评分超过50%,则干净退出。纯Go——无需CGO,无需交叉编译器。
每个构建生成一个唯一的嵌入密钥对——植入在重启之间保持相同的PeerID。
### 3. 部署和运行植入
将 `./myimplant` 复制到目标机器并运行:
```
./myimplant
```
植入将通过DHT发现操作员,注册自己,并通过自动保持活动的持久中继流开始信标。
### 4. 使用操作员控制台
从操作员提示符:
```
arachne> list
0: user@hostname [linux/amd64] last=5s peer=12D3Koo...
arachne> select 0
arachne (user@hostname) > exec whoami
```
可用命令:`list`、`select `、`exec `、`ls `、`cd `、`pwd`、`ps`、`shell`、`portfwd `、`download `、`upload `、`generate [flags]`、`regenerate`、`help [command]`、`exit`。
在交互式shell中,键入 `exit` 或按 **Ctrl+]** 返回到arachne提示符。
使用 `help ` 或 ` --help` 获取每个命令的详细信息。
## 可用命令
| 命令 | 描述 |
|---|---|
| `list` | 显示已注册的植入 |
| `select ` | 通过索引选择植入 |
| `ps` | 在所选植入上列出进程 |
| `ls ` | 列出目录 |
| `cd ` | 切换目录 |
| `pwd` | 打印工作目录 |
| `shell` | 交互式shell(直接libp2p流,按 **Ctrl+]** 返回) |
| `portfwd ` | 通过植入转发本地端口 |
| `exec [args]` | 执行命令(带有输出) |
| `download ` | 从植入下载文件 |
| `upload ` | 将文件上传到植入 |
| `generate [flags]` | 为任何OS/arch构建植入(自动安装Go,garble)。标志:`--os`、`--arch`、`--output`、`--pubkey`、`--upx`、`--obfuscate`、`--quiet`、`--antivm` |
| `regenerate` | 重新生成操作员密钥对(旧植入孤儿化) |
| `help [command]` | 此帮助,或特定命令的详细信息 |
| `exit` | 退出 |
## 安全性
- 所有消息都使用Ed25519密钥签名
- 植入使用嵌入操作员公钥构建——它们只会接受来自该操作员的命令
- 每个植入都有一个唯一的嵌入密钥对(在重启之间保持持久身份)
- 隐藏流量掩盖信标时间以对抗网络观察者
- 在每条消息上通过信封签名验证对等身份
- 中继节点只能看到加密的字节——无法读取或修改流量
## 许可证
GPLv3
标签:C2 框架, DHT, EVTX分析, GossipSub, Go 语言, libp2p, NAT 穿透, P2P 网络, Sliver, TCP 传输, WebSocket, 交互式控制台, 依赖分析, 分布式架构, 加密通信, 协议缓冲区, 去中心化, 去噪模式, 命令与控制, 持久化身份, 日志审计, 流保持活动, 流量隐藏, 消息签名, 混淆技术, 生成式AI安全, 网络渗透, 自动安装, 自动断开检测, 虚拟机