HELK与APTSimulator对抗实战:第一部分

本文详细介绍了如何使用HELK(Hunting ELK)堆栈与APTSimulator进行对抗演练,包括安装配置、日志收集、威胁检测及可视化分析,帮助蓝队提升安全监控与检测能力。

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系统上,我运行了:

1
2
3
git clone https://github.com/Cyb3rWard0g/HELK.git
cd HELK/
sudo ./helk_install.sh

在提供的三个安装选项中(从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,你将运行:

1
2
./winlogbeat -c winlogbeat.yml -e
./winlogbeat setup -e

你肯定也想在目标主机上设置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的集成,探索网络的方面。

天哪,还有更多好东西要来,我等不及了。 干杯……直到下次。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计