desertcod98/ArtemisC2Client
GitHub: desertcod98/ArtemisC2Client
基于 DNS 通信的 Windows C2 客户端,支持远程命令执行、文件下载及持久化。
Stars: 2 | Forks: 0
# ArtemisC2Client
ArtemisC2 是一个针对 Windows 系统的命令与控制 (C2) 框架,使用 DNS 作为其与代理的通信通道。该项目设计用于红队演练、研究和教育目的,提供了一个交互式 Web 界面来管理代理、任务和结果。
*本项目是 C2 客户端。*
服务端组件可以在 [ArtemisC2Server](https://github.com/desertcod98/ArtemisC2Server) 仓库中找到。
## 项目状态
由于我比较忙,该项目目前处于停滞状态,但偶尔可能会有一些提交来扩展它。
## 主要功能
- **基于 DNS 的 C2 通信**:与服务器的所有通信均通过使用 [base64url](https://base64.guru/standards/base64url) 编码的 DNS TXT 查询执行。
- **远程命令执行**,目前可用的命令:
- **whoami**
- *参数*:无
- *返回*:`DOMAIN\Username` 或 `Username`
- **shell**
- *参数*:`command` (字符串)
- *返回*:stdout + stderr (字符串形式)
- **download**
- *参数*:`filepath` (字符串)
- *返回*:文件内容 (分块,通过 DNS 传输 base64)
- **setbeaconinterval**
- *参数*:`interval` (整数,秒)
- *返回*:确认字符串
- **心跳系统**:定期联系服务器以获取任务并发送结果。
- **分块数据传输**:大型输出被拆分为块,并通过基于 DNS 的类似 TCP 协议可靠传输。
- **持久化机制**:
- 注册表 RunKey。
- WMI 事件订阅。(可能存在 bug,我不记得上次测试是什么时候了)
- **配置管理**:将持久化配置(AgentId、心跳间隔等)存储在 `%APPDATA%\ArtemisC2\cfg` 中。
- **单实例强制执行**:通过系统互斥锁 防止运行多个实例。
- **可扩展架构**:模块化调度程序系统,便于添加新命令。
## 使用的技术
- Go (>= 1.25.5)
- miekg/dns (DNS 通信) (非常重要的一点是,要知道我使用这个库是为了强制客户端在开发过程中向 localhost 发起 DNS 查询,而在生产环境中不应使用任何库,以便查询通过系统 DNS 解析器发送)
- go-ole/go-ole (WMI 集成)
- 原生 Windows API (持久化和互斥锁处理)
## 入门指南
- 阅读 [Build](#build) 了解构建说明 (包括如何在不启用持久化的情况下以调试模式安全运行)。
- 运行可执行文件时,它将在没有终端窗口的情况下运行。
### 前置条件
- Go >= 1.25.5
- 目前适用于 Windows 系统,持久化功能仅受此支持,并且目前还没有系统可以退出持久化。
## 构建
本项目支持两种构建模式:
- **Debug build** 用于开发
- **Release build**
### Debug build
启用详细日志记录并**禁用持久化机制**,这意味着:
- 不会创建注册表 RunKey
- 不会安装 WMI 事件订阅
- 不会向系统写入永久性残留文件
这可以防止代理在测试期间驻留在您的机器上。
手动构建:
```
go build -tags=debug ./cmd/client
```
### Release build
构建客户端时不包含调试保护并进行优化:
- 剥离调试符号 (`-s -w`)
- 移除构建元数据
- 使用 `windowsgui` 子系统 (无控制台窗口)
- 启用完整行为,包括持久化机制
```
go build -trimpath -ldflags="-s -w -buildid= -H=windowsgui" -buildvcs=false ./cmd/client
```
### VSCode tasks
如果您使用 VSCode,两种构建的任务都已准备就绪,可以直接使用。
## 贡献
非常欢迎提交 Pull Request,但审查/合并可能需要一些时间。我不鼓励更改项目结构,因为我可能不会合并此类请求,但涉及新命令、信号、返回类型、优化的请求都会被考虑。
## 安全提示
本项目仅用于授权研究和教育用途。在许多环境中运行 C2 服务器可能是非法的或违反策略的。请负责任地使用。
标签:C2框架, DNS隐蔽通道, EVTX分析, Go语言, IP 地址批量处理, WMI, 信标, 后门, 命令与控制, 安全学习资源, 恶意软件模拟, 数据渗漏, 日志审计, 横向移动, 注册表, 程序破解, 端点可见性, 编程工具, 编程规范, 网络信息收集, 网络基础设施, 远程代码执行