开卷有益 · 不求甚解
C2 框架似乎不断涌现出简洁的功能和附加组件。我想创建一个实验室环境,我可以在其中试验上述实用程序,并了解每个工具的取证足迹是什么样的。这导致了“shellcompany.lan”,这是我用于工具测试和实验的红队范围环境。
在最初设计环境时,我想模拟一个小型企业网络,同时记录大量主机和网络数据。拥有一个带有已加入域的客户端的 Windows 域将为我提供在 C2 框架的任何操作之前发生的正常流量的基线,并让我更好地了解 Windows 环境。引入 pfSense 防火墙还允许调整网络流量。例如,通过3rd 方包[1]引入延迟或添加 IDS/IPS 规则。经过几次迭代,最终部署如下所示。
为此环境创建了四个新的 vSwitch。这包括 PWN-LAN、PWN-LAN-Monitor、PWN-WAN 和 PWN-WAN-Monitor。这些 vSwitch 中的每一个都位于同一个 VLAN 上。但是,两个特定的 vSwitch 启用了混杂模式,用于排除连接故障以及采用 IDS/IPS 解决方案。拥有两个独立的 vSwitch 还可以轻松地重新配置以在工具测试期间执行数据包捕获。
如果你用谷歌搜索“开源日志”,你会发现大量不同平台的资源。我已经为各种其他项目部署了一个 ELK 集群,并作为该项目的 SIEM 的核心。我建议大家查看官方文档[2]以开始自己的 ELK 部署。Elastic Co 还以Winlogbeat [3]和Auditbeat [4]的形式为 Windows 和 Linux 提供日志传送器. 这些实用程序与 Elastic Co 的 Filebeats 不同,因为它们专注于发送操作系统特定的安全日志(Windows 事件日志和 AuditD 日志)。这两个实用程序的安装简单且易于记录。真正的深度在于您如何配置实用程序以及它们发送的数据。
Filebeats 可以将数据直接发送到 Elasticsearch(通过摄取节点[5]),也可以先将数据发送到 Logstash 或其他消息代理。将数据发送到消息代理通常是为了在被摄取到 Elasticsearch 之前接收数据丰富。在某些情况下,它可以作为分散发送的客户端在摄取之前发送数据并防止“背压”问题的中心位置。下图显示了一种将 Logstash 引入 Winlogbeats 环境的极其简单的方法。
日志管道的设计是一个广泛的主题,很大程度上取决于核心基础设施预先存在的环境。给定测试范围,Winlogbeats 和 Filebeats 正在将数据发送到 Logstash。未经修改的 pfSense syslog 很难在 Kibana 中解析。如果从 pfSense 提取原始 syslog 数据,则会创建一个包含整个日志的消息字段,从而使其难以解析和搜索。下图显示了来自 pfSense 的未修改 syslog 数据的样子。
通过应用此[6] logstash 配置,解析所述数据变得更加容易,因为单个元素被分解为字段。
Winlogbeat 允许您指定 Windows 中要转发的事件日志。这本身可能很有用,但要真正深入了解主机上的操作,需要额外的资源。在我的场景中,我利用了 Microsoft Sysinternals 的实用程序Sysmon [7]。Sysmon(系统监视器)是一个 Windows 服务,它允许使用完整的命令行参数、哈希、DLL 的加载、网络连接等来捕获和记录进程创建。安装很容易通过:sysmon -accepteula -i -c custom-config.xml
。安装后在 shellcompany.lan 域中设置了一个功能更丰富的日志记录环境。
安装 Sysmon 后,您可以选择指定定义捕获内容的 XML 配置。一个很好的例子是SwiftOnSecurity 的 Sysmon 配置[8]。该实用程序开箱即用地捕获大量活动,并允许您通过观察机器上的活动来开始运行。我强烈建议您查看 XML 以进一步了解此配置的工作原理以及如何添加其他功能。
就像 Winlogbeat 一样,Auditbeats [9]专注于Auditd [10]生成的日志。Auditd 是一个 Linux 审计守护程序,它可以在访问文件、创建网络连接、用户登录等时详细登录...将您的 Linux 环境转换为 SIEM。Auditd 有各种开源规则集。这些规则集包括通用强化注意事项、特定合规性法规,甚至是与 STIG 的规则集合规性。在我的环境中,我正在利用可以在此处找到的规则集[11]。
Winlogbeats 和 Auditbeats 生成的日志会很快导致生成大量日志。为避免过度占用存储空间,请考虑应用 Elasticsearch索引生命周期策略[12]来确定何时清除、备份或翻转数据。如果您觉得从客户端捕获和发送的内容过多,请考虑修改 Sysmon/Auditbeats 配置。或者更好的是,构建专注于您想要的数据的仪表板。下面的索引生命周期策略会在 30 天后或索引增长到 50 GB 时触发。
很明显,如果我错误地配置了一个域,我完全了解我所做的操作。我想从域内发生的修改中删除,以便在环境中四处寻找时发现一些东西。在 Github 上搜索将引导您找到几个不同的 PowerShell 脚本来实现这一目标。我个人使用过 Secframe 的BadBlood [13]。BadBlood 创建组、用户、OU、更改文件权限等。该实用程序易于运行,并为您留下一个配置错误的环境。
SANS 最近发布了一个C2 框架 VM [14],其中预配置了几个 C2 框架。我不想仅仅为了预先配置 C2 框架而在我的实验室环境中引入新的 VM。相反,我编写了一个 Ansible 剧本来获取上述资源。Kali Up [15]包含多个角色去获取 C2 框架和其他工具,我发现自己和其他人在全新安装 Kali 后最终安装这些工具。
在最初建立日志转发后,您可以开始查询和聚合有关网络的数据点。但是,如果机器没有适当地时间同步,那么跨机器关联事件将是一场噩梦。不要忘记利用您的 NTP 服务器或默认为 UTC/GMT 或某些标准,以便在执行执行后分析时您的时间线正确排列。
随着从范围环境中开始摄取数据,开始创建仪表板和跟踪事件很容易。例如,下图显示了过去 X 小时或几周内的 DNS 趋势和热门查询。在相对静态的环境中,连接到 Internet 的新应用程序的添加将在环境中大量存在。虽然这可以很容易地过滤掉人造 C2 域,但它也会显示其他相当健谈的应用程序。虽然下面没有显示,但我发现聊天应用程序的一个很好的例子是 IDE。
每个日志转发代理都允许配置唯一名称。这最终成为 Elasticsearch 索引中的一个字段,它也可以作为轴心并允许更直接的查询。
使用 msfvenom 生成的有效负载进行快速日志测试,显示 SwiftOnSecurity Sysmon 配置捕获的详细信息。下图显示了与硬编码 IP(10.20.20.32 - Kali 机器)建立的初始网络连接。扩展有关此事件的文件,我们开始看到利用后的侦察事件。网络用户执行事件显示了生成 net.exe 的父进程 (a.exe) 以及围绕可执行文件的哈希值。
跟随“a.exe”作为父映像的踪迹,发现进一步的执行。下一位亲爱的读者,sysprep.exe 执行 a.exe 放到磁盘上的文件。
Sysprep.exe 作为一个更高完整性的进程运行,并且有在UAC 绕过[16]中使用的历史。
执行 sysprep.exe 后,二进制“tiPPTPTFbd.exe”作为高完整性进程生成并连接回 10.20.20.32。在“tiPPTPFTFdb.exe”执行期间产生了哈希值,并且可以对防御者进行进一步的分类。然而,现在攻击者可能在系统上拥有更高完整性的 shell……(我们做的剧透)。
上面的截图完美地捕捉到了我想要设置这个环境的原因。这种知名度不仅使我成为更好的红队队员,还使我成为更好的蓝队队员。通过了解系统上的操作。在周围,我不能推荐有一个家庭实验室。无论是一台机器还是十几台机器,拥有一个可以建造、破坏和恢复的操场都对我在这个领域有很大帮助。此外,如果您想了解有关 UAC 绕过的更多信息,DEF CON 25 上提供了一个关于 UAC 绕过[17]的优秀研讨会,我强烈建议您查看。
考虑这样一个场景:一个多产的 UAC 绕过/特权升级漏洞/等等……正在被使用,并且看不到补丁。通过修改 Sysmon 配置文件,您可以捕获与相关可执行文件的所有活动。下面的小片段演示了在建立网络连接时在我们的 Sysmon 配置中包含“binary-of-interest.exe”。
从蓝队成员的角度来看,了解奇怪的外观并能够过滤和基于数据点对处理大量 SIEM 数据至关重要。从红队的角度来看,确切地知道您的工具在主机上做什么可以洞察故障排除问题以及知道留下了哪些工件。
我在环境中缺少的一个重要元素是用于域信任攻击的附加域。这是我打算稍后介绍的东西。通过在安装 Winlogbeats 之前恢复到快照并添加 Splunk 转发器或不同的日志记录环境,这个小域还可以灵活地添加额外的日志记录平台。
感谢您抽出宝贵时间阅读本文,如果我完全遗漏了什么或者我应该研究什么以改善环境,请告诉我。
近期阅读文章
,质量尚可的,大部分较新,但也可能有老文章。开卷有益,不求甚解
,不需面面俱到,能学到一个小技巧就赚了。译文仅供参考
,具体内容表达以及含义, 以原文为准
(译文来自自动翻译)尽量阅读原文
。(点击原文跳转)每日早读
基本自动化发布(不定期删除),这是一项测试
最新动态: Follow Me
微信/微博:
red4blue
公众号/知乎:
blueteams