HELK与APTSimulator对抗实战:第一部分
女士们、先生们,让我们隆重推出本月的重头戏——HELK与APTSimulator的死亡对决!已故的伟大Randy “Macho Man” Savage曾用他独特的方式说过许多话,但“在疯狂的王国中,期待意想不到的事情!”或许正是我们本月和下月toolsmith的主题。天哪,我仿佛回到了多年前的大学时光。:-) HELK确实带来了这种感觉。是的,我知道HELK是Hunting ELK堆栈,但它让我想起了Hulk,然后我又想到了Hulkamania与APTSimulator的 showdown,Randy Savage那经典而沙哑的声音在我脑海中响起:“Hulkamania就像撒哈拉沙漠中的一粒沙子,而Macho Madness才是整个沙漠。”亲爱的读者,这就是你笔者的脑海中三秒或更短时间的闪现,一个确实奇怪的地方。但唉,这就是我们如何想出这个精彩展示的。
在这个角落,来自Roberto Rodriguez(@Cyb3rWard0g),SpecterOps中的幽灵,是……HELK!朋友们,这真是太棒了,值得我们竭尽全力地宣传。
在另一个角落,来自Florian Roth(@cyb3rops),法兰克福的喧嚣,我们有APTSimulator。所有你最糟糕的对手幻象都在一个APT mic drop中。这……就是……死亡对决!
现在,让我们开始吧。这里有很多好东西,所以我肯定会分成两部分,以免低估这两个产品。
HELK的安装非常容易。它也有很好的文档,附带大量相关阅读材料,我建议你花时间全部 review。特别关注wiki,熟悉架构,然后 review 安装步骤。
在Ubuntu 16.04 LTS系统上,我运行了:
|
|
在提供的三个安装选项中(从cyb3rward0g dockerhub拉取最新的HELK Docker镜像、从本地Dockerfile构建HELK镜像,或从本地bash脚本安装HELK),我选择了第一个,使用最新的Docker镜像。安装脚本在满足依赖方面做得非常出色,如果你还没有安装Docker,HELK安装脚本会为你安装。你可以在图1中观察整个安装过程。
图1: HELK安装
你可以立即通过导航到你的HELK KIBANA URL来确认 clean 安装,在我的例子中是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进行了一些全面的模拟,使你的系统在以下场景下看起来被入侵:
- POCs:端点检测代理/入侵评估工具
- 测试你的安全监控检测能力
- 测试你的SOC对不是EICAR或端口扫描的威胁的响应
- 为数字取证课程准备环境
这是一个真正令人钦佩的努力,作为蓝队领导者,我衷心倡导。特别关注测试你的安全监控检测能力,如果你不经常和全面地进行测试,那么你的实践就是不完整的。如果你没有测试和验证,不要认为它是检测,它只是一个带有祈祷的规则。APTSimulator可以进行以下活动:
- 创建典型的攻击者工作目录C:\TMP…
- 激活guest用户账户
- 将guest用户添加到本地管理员组
- 将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
这里有几个注意事项。 从其GitHub页面的Releases部分下载并安装APTSimulator。 APTSimulator在其helpers目录中包含curl.exe、7z.exe和7z.dll。确保你为你的系统架构放置正确版本的7 Zip。我假设默认是64位,但我在32位VM上测试。
让我们快速浏览一下HELK的Kibana Discover选项,寻找上述APTSimulator活动。从在sysmon-*索引中搜索TMP开始,立即产生结果,并从我们的APTSimulator列表中命中#1、#6、#7和#8,你自己在图3中查看。
图3: TMP、PS nc、nbtscan和PsExec一网打尽
创建了TMP,放置了PowerShell netcat,对本地网络进行了nbtscan,并放置了修改后的PsExec,检查、检查、检查和检查。 那么启用guest用户账户并将其添加到本地管理员组呢?图4确认了。
图4: Guest启用并提升
从列表中命中#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个可视化。默认情况下,这些相当基本,但你可以通过子桶快速增加价值。例如,我选择了Sysmon_UserName可视化。最初,它产生了一个包含malman(我被入侵的用户)、SYSTEM和LOCAL SERVICE的甜甜圈图。不够特别有用,我添加了一个子桶来包括与每个用户关联的进程名称。结果图更详细,并告诉我们,在最近四个小时与malman用户关联的242个事件中,有32个特定于cmd.exe进程,或18.6%(图8)。
图8: 强大的可视化能力
本月非常愉快,我对HELK和APTSimulator都感到兴奋。蓝队和检测质量的真正原则在这些项目中是天生的。Roberto认为HELK仍处于alpha状态,这让我相信还有更多东西要来。务必深入挖掘APTSimulator的Advanced Solutions,模拟对手的方法不止一种。
下个月,第二部分将通过网络仪表板和相关可视化,以及HELK与Spark、Graphframes和Jupyter notebooks的集成,探索网络的方面。
天哪,还有更多好东西要来,我等不及了。 干杯……直到下次。