Russ McRee的HolisticInfoSec™ 包含文章与研究,以及反馈和偶尔的吐槽。HolisticInfoSec™ 在实现全面信息安全的过程中,提倡标准化、简单化、工具化和效率化。
2018年2月11日,星期日
toolsmith #131 - HELK vs APTSimulator - 第一部分
女士们,先生们,我们的主要节目是……HELK对决APTSimulator,一场死亡之战!已故的伟大兰迪·“狂人”·萨维奇曾以他独特的方式说过很多话,但“在疯狂的王国里,期待意想不到的事情!”可以成为我们这个月和下个月toolsmith的主题。天哪,我仿佛回到了多年前的大学时光。:-) HELK就这么登场了。是的,我知道,HELK是狩猎ELK栈,明白,但它让我想起了绿巨人浩克(Hulk),然后,我想到了一场浩克狂热(Hulkamania)与APTSimulator的对决,兰迪·萨维奇那经典的沙哑声音在我脑海中响起:“浩克狂热就像是撒哈拉沙漠中的一粒沙子,而狂人疯狂(Macho Madness)才是整个沙漠。”亲爱的读者,这大约是你笔者脑海中不到三秒钟的一瞥,一个肯定很奇怪的地方。但不管怎样,这就是我们构思出这场精彩展示的由来。
在这个角落,来自Roberto Rodriguez,@Cyb3rWard0g,SpecterOps的幽灵,它是……HELK!朋友们,这玩意儿太棒了,值得我们为之大张旗鼓地宣传。
在另一个角落,来自Florian Roth,@cyb3rops,法兰克福的喧嚣,我们有APTSimulator。你所有最糟糕的对手幻影都集中在这个APT“一鸣惊人”的工具里。这……就是……死亡之战!
好了,废话少说,让我们开始吧。这里有很多精彩内容,所以我肯定会分两部分进行,以免低估了这两个作品的价值。
HELK的安装非常简单。它的文档也很完善,有很多相关阅读材料,我建议你花时间通读一遍。特别关注wiki,熟悉其架构,然后查看安装步骤。
在一个Ubuntu 16.04 LTS系统上,我运行了:
|
|
在我看到的三个安装选项中(从cyb3rward0g的dockerhub拉取最新的HELK Docker镜像,从本地Dockerfile构建HELK镜像,或者通过本地bash脚本安装HELK),我选择了第一个,即使用最新的Docker镜像。安装脚本在为你满足依赖项方面做得非常出色,如果你没有安装Docker,HELK安装脚本会为你安装。你可以在图1中观察整个安装过程。
图1: HELK 安装
安装完成后,你可以立即通过访问HELK的KIBANA URL来确认安装成功,在我这里是http://192.168.248.29。
对于我的测试Windows系统,我使用Virtualbox创建了一个Windows 7 x86虚拟机。这里成功的关键是确保你在想要向HELK发送日志的Windows系统上安装了Winlogbeat。更重要的是,确保你使用正确的winlogbeat.yml文件运行Winlogbeat。你需要修改这个文件并将其复制到目标系统上。关键修改是第123行,在Kafka输出部分,你需要在三个位置添加你的HELK服务器的IP地址。我的修改如下:hosts: ["192.168.248.29:9092","192.168.248.29:9093","192.168.248.29:9094"]。正如HELK架构图所示,HELK通过Kafka消费Winlogbeat的事件日志。
在你的Windows系统上,使用正确修改过的winlogbeat.yml,运行:
|
|
你也肯定想在目标主机上设置Sysmon。我更喜欢使用@SwiftOnSecurity的配置文件。如果你是初始设置,使用sysmon.exe -accepteula -i sysmonconfig-export.xml。如果你要修改现有配置,使用sysmon.exe -c sysmonconfig-export.xml。这将确保在使用APTSimulator的对手模拟服务时(就像我们将要做的那样),或者遭遇真实攻击时,Sysmon能返回丰富的数据。
当一切设置并运行正常后,你应该能在你的Kibana仪表板中看到结果,如图2所示。
图2: 初始的HELK Kibana Sysmon仪表板。
现在,对决开始。:-) Florian的APTSimulator进行全面的模拟,使你的系统在以下场景下看起来像是被攻陷了:
- POC(概念验证):端点检测代理/损害评估工具
- 测试你的安全监控检测能力
- 测试你的安全运营中心(SOC)对非EICAR或端口扫描的威胁的响应
- 为数字取证课程准备环境
这是一次真正令人钦佩的努力,作为蓝队负责人,我由衷地倡导。特别关注测试你的安全监控检测能力,如果你不经常和全面地进行测试,那么你的实践可以说是不完整的。如果你没有测试和验证过,就不要认为那是检测,那只是一条带有祈祷性质的规则。可以观察到APTSimulator进行了以下类似活动:
- 创建典型的攻击者工作目录 C:\TMP…
- 激活来宾用户账户
- 将来宾用户添加到本地管理员组
- 将 svchost.exe(实际上是 srvany.exe)放入 C:\Users\Public
- 修改 hosts 文件
- 添加 update.microsoft.com 到私有 IP 地址的映射
- 使用 curl 访问已知的 C2 地址
- C2: msupdater.com
- 将 PowerShell 的 netcat 替代品放入 APT 目录
- 在本地网络上执行 nbtscan
- 将修改过的 PsExec 放入 APT 目录
- 在 At 作业中注册 mimikatz
- 注册恶意的 RUN 键
- 在计划任务中注册 mimikatz
- 将 cmd.exe 注册为 sethc.exe 的调试器
- 在新的 WWW 目录中投放 Web shell
这里有几个注意事项。 从APTSimulator的GitHub页面的Releases部分下载并安装它。 APTSimulator在其helpers目录中包含了curl.exe、7z.exe和7z.dll。确保你为你的系统架构放置了正确版本的7 Zip。我假设默认是64位,但我是在32位虚拟机上测试的。
让我们快速浏览一下,使用HELK的Kibana Discover选项来查找上述提到的APTSimulator活动。首先在sysmon-*索引中搜索TMP,立即得到了结果,并击中了我们上面APTSimulator列表中的第1、6、7和8项,自己在图3中看看吧。
图3: 一举捕获TMP、PS nc、nbtscan和PsExec
创建了TMP,投放了PowerShell netcat,对本地网络进行了nbtscan扫描,并投放了修改过的PsExec,确认,确认,确认,再确认。
那么,启用来宾用户账户并将其添加到本地管理员组呢?图4证实了这一点。
图4: 来宾用户被启用并提权
击中了列表中的第2项。直觉告诉我,我们会立即在C:\Users\Public中找到svchost.exe。是的,图5证实了。
图5: 你的svchost就在这里
划掉待办事项中的第3项,包括process.commandline、process.name和file.creationtime的引用。接下来是At作业和计划任务的创建。确实,见图6。
图6. tasks OR schtasks
我想你已经明白重点了,这里没有遗漏任何一项。当然,还有可视化选项。别忘了Kibana的Timelion功能。取证人员和事件响应人员依靠时间线生存,好好利用它吧(图7)。
图7: Timelion
最后,就这个月而言,在HELK的Kibana Visualize菜单下,你会注意到有34个可视化选项。默认情况下,这些都比较基础,但你可以通过添加子分组(sub-buckets)快速增加价值。举个例子,我选择了Sysmon_UserName可视化。最初,它产生了一个包含malman(我的被入侵用户)、SYSTEM和LOCAL SERVICE的甜甜圈图。仅仅这样不够有用,我添加了一个子分组来包含与每个用户关联的进程名。生成的图表更加详细,告诉我们,在过去四小时与malman用户相关的242个事件中,有32个与cmd.exe进程相关,占18.6%(图8)。
图8: 强大的可视化能力
这个月真是太愉快了,我对HELK和APTSimulator都感到非常兴奋。蓝队和检测质量的真正原则在这些项目中与生俱来。Roberto认为HELK仍处于alpha阶段,这让我相信还有更多精彩内容即将到来。也一定要深入研究APTSimulator的Advance Solutions,模拟对手的方法不止一种。
下个月的第二部分将通过网络仪表板和相关的可视化,以及HELK与Spark、Graphframes和Jupyter notebooks的集成,来探索网络方面的内容。 哇哦,还有更多好东西要来,我等不及了。 干杯……下次见。