[翻译]通过AMSI和机器学习阻断Active Directory攻击和其他后渗透行为

# 通过AMSI和机器学习阻断Active Directory攻击和其他后渗透行为

> 原文来自：微软Defender ATP研究团队 翻译@Y4er
>
> 原文链接：https://www.microsoft.com/security/blog/2020/08/27/stopping-active-directory-attacks-and-other-post-exploitation-behavior-with-amsi-and-machine-learning/

当红队人员成功进入目标内网后，通常下一步是对网络进行信息收集，提权并横向移动以到达特定计算机，或尽可能的拿到更多机器权限。对于这些操作，攻击者通常会探查受影响网络的 Active Directory，该 Active Directory 管理域的身份验证和资源权限。攻击者利用枚举用户并与 Active Directory 进行交互来进行信息搜集，从而实现横向移动和特权升级。这是 Ryuk 等勒索软件中的常见的攻击手段。

这些后渗透的行为在很大程度上依赖于 PowerShell 和 WMI 之类的脚本引擎，因为这类脚本为攻击者提供了灵活性，并使他们能够像正常的人为活动一样融入企业防护设备。脚本是轻量级的，可以相对容易地进行伪装和混淆，并且可以通过命令行直接将其加载到内存中或在内存中直接与脚本引擎交互来实现无文件运行。

反恶意软件扫描接口（AMSI）通过公开脚本内容和行为来帮助安全软件检测此类恶意脚本。AMSI 与 Windows 10 以及 Office 365 VBA 上的脚本引擎集成在一起，以深入了解 PowerShell，WMI，VBScript，JavaScript 和 Office VBA 宏的执行。Microsoft Defender 高级威胁防护（ATP）中的行为阻止和遏制功能充分利用了 AMSI 对脚本的可见性，并利用机器学习和云提供的保护功能来检测和阻止恶意行为。在更广泛的协调防御中，由 AMSI 驱动的对端点上恶意脚本的检测有助于 Microsoft 威胁防护，它将来自 Microsoft Defender ATP 的信号和 Microsoft 365 安全产品组合中的其他解决方案相结合，以检测跨域攻击链。 

在端点上，性能优化的机器学习模型通过 AMSI 检查脚本内容和行为。当脚本运行并且检测到恶意或可疑行为时，将从内容中提取特征，包括专业特征，机器学习选择的特征以及模糊哈希。轻量级客户端机器学习模型会对内容进行推断。如果内容被分类为可疑，则将特征描述发送到云以进行实时全面分类。在云中，重量级机器学习模型会分析元数据，并使用其他特征（例如文件年龄，流行程度和其他的此类信息）来确定是否应阻止脚本。

这些由 AMSI 驱动的机器学习分类器对，每个脚本引擎一对，使 Microsoft Defender ATP 能够检测恶意行为并阻止利用后渗透技术和其他基于脚本的攻击，即使它们已经开始运行。在本文中，我们将讨论一些被 AMSI 机器学习阻止的域攻击示例，包括无文件落地。

![该图显示了使用AMSI检测恶意脚本的端点和云中的成对机器学习模型](https://www.microsoft.com/security/blog/wp-content/uploads/2020/08/fig1-pair-of-AMSI-machine-learning-models.png)

<center>图1.客户端和云中的一对AMSI机器学习模型</center>

## 拦截 BloodHound

BloodHound 是一种流行的开源工具，用于枚举和可视化 Active Directory 域，并且被红队和攻击者用作后渗透工具。该工具会生成一个允许使用域设备，用户主动登录到设备以及资源及其所有权限的图表。攻击者可以通过接管其他用户帐户或将自己添加到具有高特权的组中，或寻求横向移动路径以达到其目标特权，来发现和滥用弱权限配置，以进行特权升级。攻击者（包括 Ryuk 等勒索软件的开发者）都使用 BloodHound 作为攻击的一部分。

BloodHound 使用了称为 **SharpHound** 的组件来枚举域并收集各种类别的数据：本地管理员收集，组成员身份收集，会话收集，对象属性收集，ACL收集和信任收集。然后，通常在计划下一步的过程中，将这些枚举进行过滤，以供攻击者可视化和分析。SharpHound 执行域枚举，并正式发布为无文件落地的PowerShell内存版本和基于exe的可执行文件。如果 PowerShell 在网络上处于活动状态，那么确定其无文件变种至关重要。

![SharpHound摄取器的代码段](https://www.microsoft.com/security/blog/wp-content/uploads/2020/08/fig2-SharpHound-ingeestor-code.png)

<center>图2. SharpHound 摄取器代码片段</center>

当 SharpHound 无文件的 PowerShell 在内存中运行时，无论是渗透测试人员还是攻击者，AMSI都会看到其执行缓冲区。客户端上的机器学习模型使该缓冲区处于优先状态，并将其发送到云以进行最终分类。

![SharpHound摄取器的代码段显示了特征化的细节](https://www.microsoft.com/security/blog/wp-content/uploads/2020/08/fig3-Featurized-SharpHound-ingestor-code.png)

<center>图3.示例化的SharpHound摄取器代码</center>

云中的对应机器学习模型会分析元数据，整合其他信号并返回结论。实时检测到恶意脚本并在端点上将其停止：

![用于检测SharpHound的Microsoft Defender防病毒警报的屏幕快照](https://www.microsoft.com/security/blog/wp-content/uploads/2020/08/fig4-Microsoft-Defender-Antivirus-detection-Sharphound.png)

<center>图4. SharpHound的Microsoft Defender防病毒检测</center>

检测到的错误被报告到 Microsoft Defender 安全中心，SOC分析人员可以在其中使用Microsoft Defender ATP的丰富工具来调查和响应攻击：

![Microsoft Defender安全中心的屏幕截图，显示了对SharpHound的检测](https://www.microsoft.com/security/blog/wp-content/uploads/2020/08/fig5a-Microsoft-Defender-Security-Center-alert-SharpHound.png)

<center>图5. Microsoft Defender安全中心警报显示检测到SharpHound</center>

AI已经学会了自动识别和阻止这些攻击，并且将继续适应和学习我们观察到的新攻击方法，从而提供这种保护。

## Stopping Kerberoasting

像BloodHound攻击一样，Kerberoasting是一种红队用于窃取凭据的技术。Kerberoasting攻击滥用Kerberos票证授予服务（TGS）来获取帐户访问权限，该帐户通常针对域帐户进行横向移动。

Kerberos攻击涉及扫描Active Directory环境以生成具有Kerberos服务主体名称（SPN）的用户帐户列表。攻击者请求这些SPN将Kerberos服务票证授予这些帐户，然后使用Mimikatz等各种工具将票证从内存中转储，然后对其进行抽取以对票证的加密段进行脱机暴力破解。如果成功，攻击者可以识别与帐户关联的密码，然后将其用于远程登录计算机或访问资源。

导致散列提取的所有Kerberoasing攻击步骤都可以使用单个PowerShell（*Invoke-Kerberoast.ps1*）完成，并且已集成到流行的利用后框架中，例如 **PowerSploit** 和 **Empire**：

![img](https://www.microsoft.com/security/blog/wp-content/uploads/2020/08/Fig6a-Command-line-to-downloan-run-Kerberoasting.png)

<center>图6.用于下载和执行Kerberoasting以提取用户密码哈希的单个命令行</center>

![Kerberoasting的代码段](https://www.microsoft.com/security/blog/wp-content/uploads/2020/08/Fig7-Kerberoasting-code.png)

<center>图7. Kerberoasting代码</center>

由于AMSI对PowerShell脚本具有可见性，因此在运行*Invoke-Kerberoast.ps1*时，AMSI 允许在运行时检查PowerShell的内容。此缓冲区由客户端机器学习模型进行特征化和分析，然后发送到云以进行实时ML分类。

![显示出完美细节的Kerberoasting代码段](https://www.microsoft.com/security/blog/wp-content/uploads/2020/08/Fig8-Featurized-Kerberoasing-code.png)

<center>图8.示例化的Kerberoasting代码</center>

Microsoft Defender ATP发出检测*Invoke-Kerberoast.ps1*的警报：

![img](https://www.microsoft.com/security/blog/wp-content/uploads/2020/08/Fig9-Microsoft-Defender-ATP-alert-Kerberoasting.png)

<center>图9. Microsoft Defender安全中心警报，显示检测到**Invoke-Kerberoast.ps1</center>

## 训练机器学习模型

为了确保持续高质量地检测威胁，每个脚本引擎使用实时保护数据和威胁调查对AMSI机器学习模型进行了训练。

功能化是机器学习模型做出关于内容是恶意的还是良性的智能决策的关键。对于基于行为的脚本日志，我们提取脚本使用的库、COM对象和函数名称的集合。学习脚本内容中最重要的功能的方法是，通过对脚本或行为日志中的字符进行字符编码，然后结合具有L1正则化功能修整的半异步随机双坐标上升（SA-SDCA）算法来学习和部署最重要的功能字符ngram功能。

除了用于训练客户端模型的相同功能之外，用于训练云模式的其他复杂功能还包括模糊哈希，聚类哈希，部分哈希等。此外，云模型还可以访问其他信息，例如文件年龄，流行程度，全局文件信息，信誉等，这使云模型可以做出更准确的决策来进行阻止。

## 结论：广泛的知名度为AI驱动的保护提供了信息

在整个Microsoft中，人工智能和机器学习保护技术利用Microsoft在各种表面上的广泛可见性来识别新的和未知的威胁。Microsoft威胁防护使用这些机器学习驱动的防护来检测跨端点，电子邮件和数据，身份和应用程序的威胁。

在终结点计算机上，Microsoft Defender ATP使用多个下一代保护引擎来检测各种威胁。这些引擎之一利用来自AMSI的见解以及客户端和云中的成对机器学习模型协同工作，以检测并阻止执行后的恶意脚本。

这些AMSI模型对（每个脚本引擎一对）是Microsoft Defender ATP中基于行为的阻止和遏制功能的一部分，该功能旨在检测和阻止威胁，即使它们已经开始运行。在运行时，威胁是暴露的，无法隐藏在加密或混淆之后。复杂的威胁可以通过执行前防御进行防御，这为实例增加了另一层保护。

![该图显示了客户端和云中不同的下一代保护引擎](https://www.microsoft.com/security/blog/wp-content/uploads/2020/08/Fig10-Microsoft-Defender-ATP-next-generation-protection-engines.png)

<center>图10. Microsoft Defender ATP下一代保护引擎</center>

在此博客文章中，我们展示了基于行为的机器学习保护对于检测和阻止后渗透恶意脚本（包括无文件）的利用，以及基于BloodHound的攻击和基于Kerberoasting的攻击而言，这对基于机器学习的AMSI驱动的至关重要。通过AMSI，脚本内容和行为得以公开，从而使Microsoft Defender ATP能够阻止侦察活动并阻止攻击的进行。

要了解有关基于行为的阻止和遏制的更多信息，请阅读以下博客文章：

- 在难以捉摸的威胁的紧追中：基于AI的基于行为的阻止阻止了攻击的轨迹 

  https://www.microsoft.com/security/blog/2019/10/08/in-hot-pursuit-of-elusive-threats-ai-driven-behavior-based-blocking-stops-attacks-in-their-tracks/

- Behavioral blocking and containment: Transforming optics into protection

  https://www.microsoft.com/security/blog/2020/03/09/behavioral-blocking-and-containment-transforming-optics-into-protection/



微软Defender ATP研究团队：Ankit Garg and Geoff McDonald



## 参考链接


1. Ryuk等勒索软件 https://www.microsoft.com/security/blog/2020/03/05/human-operated-ransomware-attacks-a-preventable-disaster/
2. 反恶意软件扫描接口（AMSI）https://docs.microsoft.com/windows/desktop/amsi/antimalware-scan-interface-portal
3. Office 365 VBA  https://www.microsoft.com/security/blog/2018/09/12/office-vba-amsi-parting-the-veil-on-malicious-macros/
4. 跨域攻击链  https://www.microsoft.com/security/blog/2020/07/29/inside-microsoft-threat-protection-solving-cross-domain-security-incidents-through-the-power-of-correlation-analytics/
5. SharpHound https://github.com/BloodHoundAD/SharpHound3
6. 无文件落地SharpHound.ps1  https://github.com/BloodHoundAD/BloodHound/blob/master/Ingestors/SharpHound.ps1
7. PowerSploit  https://powersploit.readthedocs.io/en/latest/Recon/Invoke-Kerberoast/
8. Empire  https://github.com/EmpireProject/Empire/blob/master/data/module_source/credentials/Invoke-Kerberoast.ps1