在日常的安全防护运营工作中,蓝队的同学们会有对自己的主机防护能力的检测的需求。从理论上,我们有Mitre's ATT&CK 这个理论,但是落地要怎么做呢,这时候我想推荐一下最近学习到了Atomic Red Team 这个组件了
Atomic Red Team (简称ART) 是一个依据Mitre's ATT&CK整理的一个测试库。他依据了ATT&CK的每一个techniques,整理了相应的“原子测试”脚本。通过ART我们能够对于主机防护面有很好的认知。并且依据他们提供的原子测试对自身的安全防护能力做一个自测。
1 准备阶段 - 基础环境
需要准备的材料有:
- 虚拟机并安装 (centos7)
- 通过yum安装需要的实验环境,安装你需要测试的agent ()
- 确定你需要测试的内容并且制定相关的测试计划
第一,是虚拟机的安装。 虚拟机的安装需要注意的是linux的内核版本,一定要和自己的agent支持版本匹配。在测试初期我就遇到过这个问题。通过以下命令在安装后确认内核版本。
uname -r
第二,语言环境的安装
# centos 环境 if [ -f /etc/redhat-release ]; then # yum 安装php yum install -y epel-release yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-config-manager --enable remi-php72 yum install -y php72 # yum 安装perl yum install -y perl # yum 安装lua yum install -y lua # yum 安装Golang yum install -y golang # yum 安装java yum install -y java-1.8.0-openjdk-devel fi
通过简单粗暴的几条yum,准备好服务器的环境.
2 Atomic Red Team 测试自动化
为了方便测试,社区准备了一套非常方便的执行框架。但是框架仅限于PowerShell的环境下进行使用。对于无法使用PowerShell 的情况,社区也准备了python与golang的自动化执行框架,都是非常便捷的工具。我在使用的过程中主要挑选了官方本身的框架以及golang的框架进行了自动化的测试。
2.1 通过PowerShell invoke-atomicredtem 进行自动化测试
2.1.1 准备 powerShell
microsoft官方为linux以及macOS都准备了相关的安装方法,能够让linux以及macOS都能够使用powerShell
# 注册微软repo curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/microsoft.repo # 安装 sudo yum install -y powershell # 启动 pwsh
2.1.2 准备 invoke-atomicredteam
第二步,安装invoke-atomicredteam
首先通过pwsh进入powershell操作页面
IEX (IWR 'https://raw.githubusercontent.com/redcanaryco/invoke-atomicredteam/master/install-atomicredteam.ps1' -UseBasicParsing); Install-AtomicRedTeam -getAtomics

在安装完毕之后,可以通过
invoke-atomictest All -ShowDetailsBrief
来确定是否安装成功。命令输入后回出现反馈

记得日后要在在powershell导入模块才能用哦
Import-Module "/root/AtomicRedTeam/invoke-atomicredteam/Invoke-AtomicRedTeam.psd1" -Force
在没有调整过的情况下,centos7 的该文件位置如命令,如果在之前安装时候有自定义位置,需要按照位置导入。
最后,需要我们明确需要测试的测试项。可以通过依靠官方给出的mitre ATT&CK 并依据环境进行选择,确定下最后的测试项。

2.1.3 开始测试吧!
可以按照表格准备的Technique一个个测试
Invoke-AtomicTest T1053.003 -TestNumbers 1
也可以简单粗暴的 (非虚拟机的话,建议别这么搞)
Invoke-AtomicTest All
2.2 使用go-art 吧!
go-atomicredteam是一个Golang应用程序,用于执行ART的Atomics文件夹中定义的测试。
2.2.1 安装
在安装好了 git 与 golang环境下
git clone https://github.com/activeshadow/go-atomicredteam.git cd go-atomicredteam make release
2.2.2 使用
如果需要观察信息的话
/root/go-atomicredteam/bin/goart-linux -t T1053.003#{Technique ID}

对每个测试项有很好的描述
在测试的时候需要指定测试单元
/root/go-atomicredteam/bin/goart-linux -t T1053.003 -i 0 #{Test ID}

要强调的是,与invoke-art不同,这里的testNumer是从零开始的。
接下来的步骤与之前相同,略。
3 尾声
在使用中,我更觉得ART相较于一个自动化工具,更像一个知识库。他能帮助我们更好的去理解ATTCK,更好的去理解防御以及常用的探测命令,是一个很值得学习的repo。
参考文档:
https://github.com/redcanaryco/atomic-red-team
https://github.com/activeshadow/go-atomicredteam

湖北省武汉市 1F
看到你的文章,感觉很不错,想与你友情链接
网站名:电脑教程网
网站:https://dnjcw.com.cn/
同意的话给我发邮件Internetyewu@163.com
宁夏银川市 B1
@ 友情链接 已添加。
北京市 B1
@ 友情链接 链接我暂不接受合作,专注内容创作。
日本 2F
这工具之前试过,内核版本不匹配真坑爹
内蒙古呼伦贝尔市 3F
求问go-art在CentOS8上跑得动不?
江苏省苏州市 B1
@ 小豹子 CentOS8上跑go-art没问题,只要先把glibc更新到7.3以上,编译的二进制就能直接执行。
湖北省黄冈市 4F
感觉用All一次性跑太危险了,搞崩过一次…
重庆市 5F
老哥稳,这流程整得挺细,收藏了慢慢试
北京市 B1
@ 悠悠白云 流程确实细致,慢慢实验能更好掌握每一步。
湖北省武汉市 6F
The command completed successfully 看到这句真安心 👍
韩国 7F
不是说好不用PowerShell吗,咋还得装pwsh…
越南 8F
之前自建检测体系踩了不少坑,这套倒是省事多了
上海市 9F
T1053.003那个定时任务测试,有遇到权限报错的吗?
陕西省西安市 10F
说实话,当知识库用比当测试工具用价值还大
韩国 11F
听说有人拿这玩意误触EDR直接被封了,属实吓人
韩国 12F
这套流程确实省事。
陕西省咸阳市 13F
CentOS7的内核要怎么确认版本?
山东省淄博市 14F
golang版的go-art也可以直接二进制运行。
湖南省张家界市 15F
我之前也踩过内核不匹配的坑。
上海市静安区 16F
有人说装pwsh会被EDR抓到,真是笑死。
福建省福州市 17F
挺实用的。
陕西省安康市 18F
这玩意儿文档有点少。
日本 19F
看完后才发现,Atomic Red Team真的像个知识库,防御思路都清晰了。
北京市 20F
go-art在CentOS8上会不会因为glibc版本不兼容?
北京市 21F
如果不想装PowerShell,直接用invoke-atomicredteam的Python版也行,省事。
北京市 22F
我之前在虚拟机里跑All一次,系统卡死,建议分批执行。
天津市河西区 23F
内核版本这块确实坑过不少人。
宁夏银川市 B1
@ 狂奔的仙人掌 装agent前最好先查下兼容列表,能省不少事
湖北省武汉市 24F
那如果测试时想只看日志输出,不要实际执行,有没有dry-run模式?
广东省广州市 25F
听说有公司用了这套脚本,结果EDR误报封了账号,真是要小心。
福建省厦门市 26F
文章里把PowerShell在linux上的安装步骤写得很清楚,我按照步骤装好后,直接用invoke-atomicredteam跑T1053.003,结果成功验证了定时任务检测,感觉防护覆盖面大大提升,强烈推荐给同事们。
广东省广州市 27F
Golang框架看起来比PowerShell轻量一点?
重庆市 B1
@ 青丝绾 是的,省去了装PowerShell的麻烦
江西省抚州市 28F
之前也卡在goart的test id从0开始这了。
北京市 B1
@ 朱砂点韵 我也卡过这里