一、介绍
2017年早些时候,世界得知了Equifax在9月初报道的大规模入侵事件。网络攻击链将这种攻击的最终阶段划分为目标行动。不幸的是,Equifax没有及时检测到这一活动,以遏制或防止数据丢失。任何组织都不能凌驾于法律之上,特别是在违法方面;然而,未能从这个例子中吸取教训只会为下一次灾难性的破坏铺平道路。
二、为什么PowerShell ?
PowerShell几乎在攻击的每个阶段都迅速成为对手的实际工具。Windows占据了近75%的市场份额,难怪PowerShell的使用率如此之高。当时间是至关重要的时候,当你已经准备好使用所有工具时,为什么还要带着你自己的工具去玩游戏呢?从版本5开始,从管理员和攻击者的角度来看,特性和功能都令人难以置信。已知对手使用的一种技术是数据自动泄露。使用PowerShell,编写这种类型的泄露脚本很容易;然而,从哪里开始寻找这样的东西呢?
三、制定搜索:自动数据泄露(Windows环境)
首先利用观察到的技术来形成你的假设。MITRE有一个优秀的资源,称为对抗性战术技术和常识(简称ATT&CK)。在这个战术矩阵中包含了一系列攻击者用来达到目标的技术。每个类别中都有解释、示例、缓解和检测建议。不要再寻找一个杰出的资源,开始制定狩猎假说!
1. 你在找什么?(假设)
假设:
PowerShell在我的环境中用于自动数据泄露。
寻找
HTTP用户代理字符串中的异常,如PowerShell一致性和重复出现的HTTP PUT方法
关于目标MITRE ATT&CK:
自动泄露数据例子恶意软件:
TINYTYPHON
2. 调查(数据)
数据集:
要识别网络上行为不端的PowerShell,请查看(有些比较容易检查):
Netflow (-flow*一般数据)
频率和任何模式的PUT方法包捕获代理日志
防火墙日志(如果记录HTTP头信息)
不是必需的,但是将会非常有价值:
Sysmon EDR日志
PowerShell记录日志的Windows事件日志
3.发现模式和lOCs(技术)
在Sqrrl平台中识别信标和exfil警报,分析信标流量的频率(图2)分析相应的exfil警报。是一样的吗?
4. 通知并丰富分析
包含PowerShell的目标IP地址和用户代理字符串可用于帮助识别可能正在从环境中窃取数据的其他主机。
将这些lOCs输入到Sqrrl、IDS、SIEM或EDR系统中的风险触发器中,以自动化未来的检测或响应。
基于部分直觉,部分MITRE参考,一个可行的假设已经创建。与六步事件处理过程的准备阶段类似,为猎人建立可用的资源可以节省时间。现在是时候去打猎了!
四、网络数据
网络数据是开始在环境中寻找奇怪事物的最容易的地方之一;然而,加密或缺乏可见性可能会破坏您的基于网络的搜索。所有网络流量都有一个来源。换句话说,在您可能看到的通信流的另一端,主机上正在执行一个进程。在大多数情况下,网络是一种很好的方式,可以让你知道应该把更多的注意力放在哪里,或者需要检查哪些主机。在过滤的情况下尤其如此。
1、PowerShell用户代理字符串
某些PowerShell操作应该在其他操作中脱颖而出。一个不太正常的行为是看到PowerShell发出web请求,或者更糟,通过HTTP上传数据。作为一个简单的起点,可以利用的第一个技术是搜索用户代理(UA)字符串,这些字符串与默认的PowerShell UA对齐。在图1中可以看到默认设置。这是一个良好的开端,但并非万无一失。从3.0版本开始,有一个选项可以很容易地更改默认的UA来隐藏它的身份。

2、频率分析
由于user-agent本身并不是一个可靠的指示器,因此可以使用频率分析(FA)来帮助可视化自动数据泄漏。频率分析以其最简单的形式说明了一组特定方法出现的频率以及它们是否重复出现。在这种情况下,HTTP PUT方法的一致和定期使用是缩小搜索范围的主要指标。
3、POST vs PUT
那么,为什么不搜索POST数据呢,教授?这两者之间有一个明显的区别。根据RESTFul API,“POST可用于在资源集合下添加子资源。“PUT is used”用于修改已经是资源集合一部分的单个资源。“令人困惑,是的,但在我简单的头脑中,PUT更多
上传整个文件的同义词(想想云文件托管提供商)。
把这些知识运用到狩猎中,会发现一些有趣的结果。在这种情况下,我们可以从一个可疑的PowerShell用户代理(图2)开始我们的搜索,此时我们可以转向连接和检测,如图3所示。利用FA结合信标和过滤警报,可以很容易地缩小不正常的流量。图2展示了一致的流量。


基于链接和警报的观察:信标也可能是用于从环境中提取数据的相同流量。现在是时候看看主机!
五、自动数据泄露(Windows主机环境)
1. 你在找什么?(假设)
PowerShell在我的环境中用于自动数据泄露。
寻找:
•HTTP用户代理字符串中的异常,如PowerShell
•一致的和重复发生的HTTP PUT方法
•powershell处理相关的网络连接
•与网络连接相关的PowerShell进程的父进程(和进程链):目标上的操作
MITRE ATT&CK:恶意软件自动化数据泄露例子:TINYTYPHON
2. 调查(数据)
要识别主机上行为不端的PowerShell,请参见:
•edr日志
•sysmon
•PowerShell的windows事件日志
•powershell记录日志
3.发现模式和lOCs(技术)
•在Sqrrl平台上识别信标和exfil警报
•分析与信标和exfil警报的IP地址匹配的进程
•检查违规流程的流程链
4. 通知并丰富分析
包含PowerShell的目标IP地址和用户代理字符串可用于帮助识别可能正在从环境中窃取数据的其他主机。
此外,使用EDR或流程级日志,可以将md5或行为(执行PowerShell的调度任务)添加到Sqrrl、SIEM或EDR系统中的风险触发器中,以自动化未来的检测或响应。
六、网络的发现
网络指示器指出了两个需要研究的领域:信标/exfil IP地址。在本例中,地址是相同的。此外,只观察到一个主机连接到这个IP地址,这很容易将我们(猎人们)指向源,或者至少非常接近。如果你仍然感到不确定,以下是目前已知的:

那么需要什么来继续我们的搜寻呢?狩猎矩阵是一个可以在整个狩猎过程中指导你和你的团队的参考。在分析过程中,它充当地图或目标——经常引用它来最小化狩猎范围渐变(HSC)。
七、问题中的主机
在这种情况下,环境是准备好的。在开始搜索之前,每个主机都使用Microsoft的Sysmon和详细的主机日志进行了设置。由于这个事实,可以使用基于流程的事件的搜索功能。如果没有Sysmon,在没有EDR系统的情况下,在进程上进行搜索的能力将非常困难。对于没有EDR系统的组织,另一种方法是启用PowerShell日志记录,并特别地启用文本日志记录,以获得最大的可见性。
文字记录为猎人创造了奇迹;但是,在可能经常使用PowerShell的系统上,应该对设置进行全面测试,以确保没有负面影响。整个过程如下图所示。


在Sysmon日志中搜索网络连接是一种快速确定流量来源的技术。由于exfil/beacon IP是已知的,使用主机并在Sysmon中进行搜索将产生如图6所示的结果。
这项研究得出了积极的结果。检查日志条目时,映像(或进程名)被标识为powershell.exe。这进一步证实了我们对PowerShell行为不端的怀疑。
八、过程链
查找源的下一步是确定过程链。这是由一个:一个EDR系统,如碳黑响应,使这项技术的工作很容易,或两个:手动审查。对于Sysmon,这是一个相对简单但乏味的工作。我们试图完成的是识别创建网络连接的过程。这可以通过过滤事件ID 1上的日志来实现,这是一个进程创建。过滤后,在原始搜索中标识的ProcessGUID上进行搜索将帮助我们更接近源。

使用ProcessGUID,搜索这个引用将得到实际建立网络连接的进程。

另一个有趣的条目是命令行,它指向一个PowerShell脚本。有趣的是,使用执行旁路标志调用脚本,可以轻松地绕过为PowerShell设置的任何执行策略(更不用说有趣的脚本名称了)。此外,这里还有ParentProcessGUID,它是链中的下一层或下一个进程。Sysmon最棒的一点是,这个信息也包含在日志条目中。ParentCommandLine指向svchost.exe -k netsvc -s调度。这表明脚本是在调度中调用的。作为一个猎人,下一个要查看的区域是任务调度程序和PowerShell记录日志。


现在有两件事是已知的:将脚本设置为自动循环运行,设置作业的用户是mateo。“我们丢失数据了吗?”答案是肯定的。在本例中,记录日志显示web请求失败的原因是exfil服务器上的501错误。
在这一点上,下一步将是查看用户mateo,看看是否有其他的横向移动尝试/成功,并检查脚本。在您的组织拥有SOC或恶意软件分析团队的情况下,这可能是传递这些信息以帮助进行分析的关键时刻,允许猎人继续追踪对手。进一步研究这些可以帮助建立额外的IOCs或警报,可以用来建立检测功能。
结论
在本例中,检查了主机是否存在不适当的PowerShell使用。从第一篇文章中获得的网络指示器被用作跟踪可疑主机的起点。利用Sysmon和细粒度PowerShell日志记录等资源有助于全面了解系统上发生了什么。环境必须提前准备好这种类型的数据,这对任何安全团队来说都是一个重要的提醒。利用发现的东西,发展探测能力或进行进一步的分析,可以帮助防御者抵御住陆地上的敌人