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, 信标, 后门, 命令与控制, 安全学习资源, 恶意软件模拟, 数据渗漏, 日志审计, 横向移动, 注册表, 程序破解, 端点可见性, 编程工具, 编程规范, 网络信息收集, 网络基础设施, 远程代码执行