darmado/Atomic-Red-Team-C2

GitHub: darmado/Atomic-Red-Team-C2

一个基于 SILENTTRINITY 框架的后渗透测试平台,用于远程、分布式执行 Atomic Red Team 原子测试并自动收集证据,帮助安全团队评估 EDR/AV 防护效果并生成可操作的攻击情报。

Stars: 178 | Forks: 23

## 描述 ARTC2 是一个现代执行框架,旨在帮助安全团队从单个和多个入侵点目标扩展攻击场景的执行。其目的是产生可操作的攻击情报,以提高安全产品和事件响应的有效性。 ## 操作系统支持 - Windows OS ## 功能特性 ARTC2 Core 的功能和特性源自 SILENTTRINITY,通过 Boo 执行的原子测试来自 [ATOMIC-RED-TEAM](https://github.com/redcanaryco/atomic-red-team)。所有其他功能增强都是为了确保在不牺牲操作技巧、敏捷性、可扩展性和快速执行的前提下构建的。 | 功能 | 描述 | | ------ | ------ | | **快速部署** | 从位于不同区域环境的单个和多个目标入侵点自动化并扩展测试工作 | **现代命令与控制 (C2)** | *Implant 与 Server 通信:* 使用 SILENTRINITY 的 ECDHE 加密 C2 通信功能,通过 HTTPS 加密 C2 流量。
*Client 与 Server 通信*:使用 Asyncio、WebSockets 和 prompt-toolkit CLI。值得注意的功能包括:*- Implant 位置标签:有助于管理不同区域的信号和断点。NGROK 集成* - 非常适合暂存 Payload 并使用 ngrok URL 进行部署 | **标准签名头** | JSON `PID: , Date(UTC), IsHighIntegrity, HostName, CurrentUser , IsUserAdmin, IPv4, IPv6` | **JSON 日志支持** | 使用您的 ELK Stack 或任何准备好解析 JSON 的分析平台来简化、摄取、解码和分析证据。| || | **无阶段内存代码执行** | 在具有低、中、高完整性的 `非托管 PowerShell 进程` 中执行 Atomic Red Team 测试。 | **动态攻击编队** | 无需重新编译或重启 ARTC2 即可执行攻击链。目前支持三种不同的攻击功能。`攻击链`、`攻击配置文件` 和 `攻击场景`| | **模块化 Payload 投递** | ARTC2 利用 [SILENTRINITY 的](https://github.com/byt3bl33d3r/SILENTTRINITY) 框架,使用 `非托管 powershell` 和 `无阶段 powershell` Stager 在内存中编译和执行 Red Team Atomic 测试 Payload,*“按原样”* | **操作管理** | 包含用于控制器执行和证据收集的 Job ID。它们非常适合用于事件分析和证据关联。`"job_id": "D3l820IWpyi67"`| **Atomic 更新** | ART port 管道由 [ATOMIC-RED-TEAM](https://github.com/redcanaryco/atomic-red-team) 的仓库更新触发

## 使用案例 - SOC 需要在几分钟内评估和改进 EDR 解决方案 - 组织正在评估适用于 Windows OS 的不同 EDR/AV 解决方案 **组织需要:** - 在受控环境中执行 APT 组织战术 - 展示阻止来自磁盘和内存的常见攻击的能力 - 远程执行轻量级 Atomic - 在将系统发布到 Corp IT/生产环境之前,根据 MITRE ATT&CK 对关键风险配置文件进行基准测试 - 安全地执行映射到 ATT&CK 的勒索软件战术 - 保持 \(MTTD\) 和 \(MTTR\) 指标之间的紧密差距 - 持续改进 SOAR Workbook - 评估不同业务部门和区域之间的主机安全控制。
## 日志功能 默认情况下,ARTIC-C2 日志写入 ARTIC-C2 当前工作目录的 `./logs/` 中。 会话日志包括:
- `utc_timestamp`: UTC 时间戳 - `session`: 目标会话 GUID - `job_id`: 唯一 Job 执行 ID - `ttp_data`: 技术 ID - `evidence`: 从入侵点目标收集的 Base64 编码证据 - `evidence_status`: 指示 TTP 执行是否被阻止的状态。 - 1: TTP 未被阻止 - 0: TTP 被部分阻止或执行失败

**执行签名头** 执行签名头用于验证是否有防御措施阻止了 Atomic。有时,Atomic 命令可能不会在 STDOUT 中返回数据。但是,如果执行签名头返回了头信息,则表明源代码已编译、加载到 CLR 中,并在目标入侵点上执行。执行签名头包括: - `PID`: 技术执行期间使用的 PID - `Date`: 来自入侵点目标的 UTC 时间戳 - `IsHighIntegrity`: 进程完整性状态 - `HostName`: 入侵点目标主机名 - `CurrentUser`: 当前用户。非常适合跟踪用户何时被模拟 - `IsUserAdmin`: 管理员状态 - `IPv4`: IPv4 地址信息 - `IPv6`: IPv6 地址信息

**示例执行事件日志** T1069.001-2 已在内存中执行 ``` 2021-08-21 07:42:21,146 - {"utc_timestamp": "2021-08-21T07:42:21Z", "msg": "Technique executed:", "controller": "Discovery/T1069.001-2", "last_updated_by": "ARMADO, Inc.", "ttp_id": "T1069.001", "ttp_opts": {"OutString": {"Description": "Appends Out-String to the PowerShellCode", "Required": false, "Value": true}, "BypassLogging": {"Description": "Bypasses ScriptBlock and Techniques logging", "Required": false, "Value": true}, "BypassAmsi": {"Description": "Bypasses AMSI", "Required": false, "Value": true}}, "decompressed_file": "n/a", "file_name": "n/a", "gzip_file": "n/a", "language": "boo", "references": ["System.Management.Automation"], "run_in_thread": "n/a", "job_id": "B5ppBWed5NF6c"} ```

**示例证据收集日志** 从目标入侵点执行 T1069.001-2 后收集的证据。 ``` 2021-08-21 07:42:25,076 - {"utc_timestamp": "2021-08-21T07:42:25Z", "session": "17ed378a-8cb9-4690-9087-e894c2b1e0a2", "job_id": "B5ppBWed5NF6c", "ttp_data": "T1069.001", "evidence": "IntQSUQ6IDU1NTYsIERhdGUoVVRDKTogMjAyMS0wOC0yMVQwNzo0MjoyNC45MDczMjQ5WiwgSXNIaWdoSW50ZWdyaXR5OiB0cnVlLCBIb3N0TmFtZTogYWQtZGMxLCBDdXJyZW50VXNlcjogZGVlcHJvb3RcXHJ1c3NlbF9oYW5jb2NrLCBJc1VzZXJBZG1pbjogdHJ1ZSwgSVB2NDogWzEwLjEuMC4xMDAsIDE2OS4yNTQuMTM0LjExMV0sIElQdjY6IFtmZTgwOjpkZGUxOjIyYTo3YmEzOmZlMGIlNSwgZmU4MDo6YjhmODpiNDIxOjI3Yzg6ODY2ZiUxMV19XHJcbk5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4tLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuQ2VydCBQdWJsaXNoZXJzICAgICAgICAgICAgICAgICAgICAgICAgIE1lbWJlcnMgb2YgdGhpcyBncm91cCBhcmUgcGVybWl0dGVkIHRvIHB1Ymxpc2ggY2VydGlmaWNhdGVzIHRvIHRoZSBkaXJlY3RvcnkgICAgXHJcblJBUyBhbmQgSUFTIFNlcnZlcnMgICAgICAgICAgICAgICAgICAgICBTZXJ2ZXJzIGluIHRoaXMgZ3JvdXAgY2FuIGFjY2VzcyByZW1vdGUgYWNjZXNzIHByb3BlcnRpZXMgb2YgdXNlcnMgICAgICAgICAgICAgIFxyXG5BbGxvd2VkIFJPREMgUGFzc3dvcmQgUmVwbGljYXRpb24gR3JvdXAgTWVtYmVycyBpbiB0aGlzIGdyb3VwIGNhbiBoYXZlIHRoZWlyIHBhc3N3b3JkcyByZXBsaWNhdGVkIHRvIGFsbCByZWFkLW9ubHkgZG8uLi5cclxuRGVuaWVkIFJPREMgUGFzc3dvcmQgUmVwbGljYXRpb24gR3JvdXAgIE1lbWJlcnMgaW4gdGhpcyBncm91cCBjYW5ub3QgaGF2ZSB0aGVpciBwYXNzd29yZHMgcmVwbGljYXRlZCB0byBhbnkgcmVhZC1vbmx5Li4uXHJcbiI=", "evidence_status": "1"} ```

**示例头签名** ``` "{PID: 5556, Date(UTC): 2020-01-02T06:55:47Z, IsHighIntegrity: true, HostName: ad-dc1, CurrentUser: artic\\c2operator, IsUserAdmin: true, IPv4: [10.1.0.100, 169.254.134.111], IPv6: [fe80::dde1:22a:7ba3:fe0b%5, fe80::b8f8:b421:27c8:866f%11]} ```

**示例 BASE64 解码证据日志** ``` "{PID: 5556, Date(UTC): 2021-08-21T07:42:24.9073249Z, IsHighIntegrity: true, HostName: ad-dc1, CurrentUser: deeproot\\russel_hancock, IsUserAdmin: true, IPv4: [10.1.0.100, 169.254.134.111], IPv6: [fe80::dde1:22a:7ba3:fe0b%5, fe80::b8f8:b421:27c8:866f%11]} Name Description ---- ----------- Cert Publishers Members of this group are permitted to publish certificates to the directory RAS and IAS Servers Servers in this group can access remote access properties of users Allowed RODC Password Replication Group Members in this group can have their passwords replicated to all read-only do... Denied RODC Password Replication Group Members in this group cannot have their passwords replicated to any read-only... " ``` ## 通用要求 #### Listener 默认情况下,Listener 绑定到系统的 HTTPS:443 和 HTTP:80 接口。必须确保它们可以从假定的入侵点目标访问。在生成任何 Stager 之前,请在 `:> listeners` 上下文中设置您的回调 URL。

### 基础安装 1. `git clone https://github.com/ARMADOinc/Atomic-Red-Team-intel-C2.git` 2. `cd ./Atomic-Red-Team-intel-C2` 3. `./install.sh install`

**部署选项** ARTIC-C2 支持灵活的部署模式,以适应所有 Atomic 测试用例的执行要求。虽然相对于缓存而言,客户端控制台有一些依赖项,但客户端控制台不需要与 Team Server 运行在同一系统上。很快,我们将打包并发布一个专用客户端。 **注意:** 以下示例假设 ARTIC-C2 将从同一实例启动。 **在默认端口上启动 WSS 并生成临时日志** - server: `artic2.py wss 127.0.0.1 Art1.c25rvr >> /var/log/artic2.log &` - client: `artic2.py client wss://operator:Art1.c25rvr@127.0.0.1:5000`

**在前台启动默认端口上的 WSS** - server: `artic2.py wss 127.0.0.1 Art1.c25rvr` - client: `artic2.py client wss://operator:Art1.c25rvr@127.0.0.1:5000`

**在端口 5443 上启动 WSS,绑定到 10.0.0.43,生成临时日志并连接两个客户端** - server: `artic2.py wss 10.0.0.43:5443 Art1.c25rvr >> /var/log/artic2.log &` - client1: `artic2.py client wss://operator1:Art1.c25rvr@10.0.0.43:5443` - client2: `artic2.py client wss://operator2:Art1.c25rvr@10.0.0.43:5443`

### 文档: - 正在编写中。

## 致谢与鸣谢 - Marcello Salvati [@byt3bl33d3r](https://twitter.com/byt3bl33d3r) 以及所有 [SILENTRINITY](https://github.com/byt3bl33d3r/SILENTTRINITY) C2 项目贡献者 - [Red Canary](https://github.com/redcanaryco) 以及所有 [ATOMIC RED TEAM](https://github.com/redcanaryco/atomic-red-team) 项目贡献者 - [Atomic Red Team 社区](https://slack.atomicredteam.io/)
标签:AI合规, Asyncio, Atomic Red Team, Boo 语言, DNS 反向解析, ECDHE 加密, ELK 日志, HTTPS 通信, HTTP工具, .NET DLR, Ngrok 集成, OpenCanary, Raspberry Pi, RFI远程文件包含, SILENTTRINITY, WebSockets, Windows 安全, 内存执行, 动态攻击, 后渗透, 命令与控制, 安全测试, 攻击性安全, 攻击模拟, 攻击链, 数据泄露检测, 无阶段攻击, 红队框架, 逆向工具, 驱动签名利用