ARTC2 是一个现代化的执行框架,帮助安全团队从单个和多个入侵点目标扩展攻击场景的执行。它旨在生成可操作的情报,提升安全产品和事件响应的有效性。
ARTC2 核心功能与能力源自 SILENTTRINITY,通过 Boo 执行的原子测试来自 ATOMIC-RED-TEAM。所有其他功能增强都是为了确保作战技艺、敏捷性、可扩展性和快速执行不受影响。
| 功能 | 描述 |
|---|---|
| 快速部署 | 自动化并扩展开源自位于不同区域环境的单目标和多目标入侵点的测试工作 |
| 现代命令与控制 | 植入体与服务器通信: 使用 SILENTRINITY 的 ECDHE 加密 C2 通信能力,通过 HTTPS 加密 C2 流量。 客户端与服务器通信: 使用 Asyncio、WebSockets 和 prompt-toolkit CLI。值得注意的功能包括: - 植入体位置标记:在不同区域管理信号和断点时非常有用。NGROK 集成 - 非常适合准备载荷并使用 ngrok URL 部署它们 |
| 标准签名头 | JSON PID: , Date(UTC), IsHighIntegrity, HostName, CurrentUser , IsUserAdmin, IPv4, IPv6 |
| JSON 日志支持 | 使用您的 ELK 堆栈或任何能够解析 JSON 的分析平台,简化、摄取、解码和分析证据。 |
| 无存留在内存中执行代码 | 从具有低、中、高完整性的 非托管 PowerShell 进程 中执行 Atomic Red Team 测试。 |
| 动态攻击编队 | 无需重新编译或重启 ARTC2 即可执行攻击链。目前支持三种不同的攻击函数:攻击链、攻击配置文件 和 攻击场景 |
| 模块化载荷交付 | ARTC2 利用 SILENTRINITY 框架,使用 非托管 PowerShell 和 无状态 PowerShell 存根器编译并在内存中执行 Red Team Atomic 测试载荷,“按原样” |
| 运营管理 | 作业 ID 包含在控制器执行和证据收集中。它们对于事件分析和证据关联非常有用。"job_id": "D3l820IWpyi67" |
组织需要:
默认情况下,ARTIC-C2 日志写入 ARTIC-C2 的当前工作目录下的 ./logs/。
会话日志包括:
utc_timestamp:UTC 时间戳session:目标会话 GUIDjob_id:唯一作业执行 IDttp_data:技术 IDevidence:从入侵点目标收集的 Base64 编码证据evidence_status:指示执行的 TTP 是否被阻止的状态。
执行签名头
执行签名头用于验证防御是否阻止原子测试。有时,原子命令可能不会在标准输出中返回数据。但是,如果执行签名头返回了头部信息,则表明源代码已编译、加载到 CLR 中,并在目标入侵点执行。执行签名头包括:
PID:技术执行期间使用的进程 IDDate:从入侵点目标生成的 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": "IntQSUQ6IDU1NTYsIERhdGUoVVRDKTogMjAyMS0wOC0yMVQwNzo0MjoyNC45MDczMjQ5WiwgSXNIaWdoSW50ZWdyaXR5OiB0cnVlLCBIb3N0TmFtZTogYWQtZGMxLCBDdXJyZW50VXNlcjogZGVlcHJvb3RcXHJ1c3NlbF9oYW5jb2NrLCBJc1VzZXJBZG1pbjogdHJ1ZSwgSVB2NDogWzEwLjEuMC4wMDAsIDE2OS4yNTQuMTM0LjExMV0sIElQdjY6IFtmZTgwOjpkZGUxOjIyYTo3YmEzOmZlMGIlNSwgZmU4MDo6YjhmODpiNDIxOjI3Yzg6ODY2ZiUxMV19XHJcbk5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4tLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuQ2VydCBQdWJsaXNoZXJzICAgICAgICAgICAgICAgICAgICAgICAgIE1lbWJlcnMgb2YgdGhpcyBncm91cCBhcmUgcGVybWl0dGVkIHRvIHB1Ymxpc2ggY2VydGlmaWNhdGVzIHRvIHRoZSBkaXJlY3RvcnkgICAgXHJcblJBUyBhbmQgSUFTIFNlcnZlcnMgICAgICAgICAgICAgICAgICAgICBTZXJ2ZXJzIGluIHRoaXMgZ3JvdXAgY2FuIGFjY2VzcyByZW1vdGUgYWNjZXNzIHByb3BlcnRpZXMgb2YgdXNlcnMgICAgICAgICAgICAgIFxyXG5BbGxvd2VkIFJPREMgUGFzc3dvcmQgUmVwbGljYXRpb24gR3JvdXAgTWVtYmVycyBpbiB0aGlzIGdyb3VwIGNhbiBoYXZlIHRoZWlyIHBhc3N3b3JkcyByZXBsaWNhdGVkIHRvIGFsbCByZWFkLW9ubHkgZG8uLi5cclxuRGVuaWVkIFJPREMgUGFzc3dvcmQgUmVwbGljYXRpb24gR3JvdXAgIE1lbWJlcnMgaW4gdGhpcyBncm91cCBjYW5ub3QgaGF2ZSB0aGVpciBwYXNzd29yZHMgcmVwbGljYXRlZCB0byBhbnkgcmVhZC1vbmx5Li4uXHJcbiI=",
"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...
"
默认情况下,监听器绑定到系统的接口,使用 HTTPS:443 和 HTTP:80。它们必须能够从假定的入侵点目标访问。在生成任何存根器之前,请在 :> listeners 上下文中设置您的回调 URL。
git clone https://github.com/ARMADOinc/Atomic-Red-Team-intel-C2.gitcd ./Atomic-Red-Team-intel-C2./install.sh install部署选项
ARTIC-C2 支持灵活的部署模型,以满足所有原子测试用例执行要求。虽然客户端控制台有一些与缓存相关的依赖,但客户端控制台不需要与团队服务器运行在同一系统上。很快,我们将打包并发布一个专用客户端。
注意: 下面的示例假设 ARTIC-C2 将从同一实例启动。
在默认端口上启动 WSS 并生成临时日志
artic2.py wss 127.0.0.1 Art1.c25rvr >> /var/log/artic2.log &artic2.py client wss://operator:[email protected]:5000在默认端口上以前台模式启动 WSS
artic2.py wss 127.0.0.1 Art1.c25rvrartic2.py client wss://operator:[email protected]:5000启动 WSS 在端口 5443,绑定到 10.0.0.43,生成临时日志并连接两个客户端
artic2.py wss 10.0.0.43:5443 Art1.c25rvr >> /var/log/artic2.log &artic2.py client wss://operator1:[email protected]:5443artic2.py client wss://operator2:[email protected]:5443