HELK与APTSimulator的攻防对决:第一部分
女士们先生们,让我们迎来本次的主打节目……HELK与APTSimulator的生死对决!已故的伟大的Randy “Macho Man” Savage曾用他独特的方式说过许多话,但“在疯狂的王国中,期待意想不到的事情!”可能成为我们本月和下月的toolsmith主题。天哪,我仿佛回到了多年前的大学时光。:-) HELK就是这么带劲。是的,我知道HELK是Hunting ELK堆栈,但它让我想起了绿巨人,然后我又想到了绿巨人与APTSimulator的狂野对决,Randy Savage那经典沙哑的声音在我脑海中响起:“绿巨人之狂就像撒哈拉沙漠中的一粒沙子,而疯狂才是王道。”亲爱的读者,这就是你们作者脑海中三秒甚至更短时间的一瞥,一个确定奇怪的地方。但唉,这就是我们如何想出这个绝妙展示的。
在这个角落,来自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进行了一些全面的模拟,使你的系统在以下场景下看起来被入侵:
- POCs:端点检测代理/漏洞评估工具
- 测试你的安全监控检测能力
- 测试你的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
这里有几个注意事项。 从其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,检查、检查、检查和检查。 那么启用来宾用户账户并将其添加到本地管理员组呢?图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个可视化。默认情况下,这些相当基本,但你可以通过子桶快速增加价值。例如,我选择了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笔记本的集成。
天哪,还有更多好东西要来,我等不及了。 干杯……直到下次。