Cybereason GSOC团队分析人员分析了一种利用Notepad++插件在机器上规避安全机制并实现持久化的特定技术。本文将详细描述如何重现此攻击并实施检测和预防机制。
关键点:
插件的流行导致攻击面增加:Notepad++ 是一种非常流行的工具,几乎可以安装在所有与 IT 相关的环境中。
Notepad++已经被攻击者滥用: APT组织,如StrongPity,已被观察到利用 Notepad++ 在受害者的计算机上部署后门。
高级插件功能:Notepad++ 具有高级插件机制,威胁参与者可以利用该机制进行持久化和安全规避。
Notepad++ 中没有校验过程:没有观察到本地安装插件的校验过程,允许具有本地管理员权限的威胁参与者在加载过程中注入他们自己的恶意DLL。
1. 介绍
Notepad++是一个非常受欢迎的 Notepad 替代品和代码编辑器,由Don Ho创建和维护。此应用程序支持多种编码语言以及自动化许多 IT 和开发相关任务的插件。
插件是简单的模块,可以从社区维护的批准列表中安装或使用 C# 等语言自定义构建。这些插件存储在%PROGRAMFILES%\\Notepad++\\plugins\\目录中。
使用开源项目Notepad++ Plugin Pack,一位名叫RastaMouse的安全研究人员演示了如何构建一个可用作持久性机制的恶意插件。插件包是 Visual Studio 的 .NET 包,它提供了构建插件的基本模板:
图1:notepad++插件包模板
威胁参与者可以使用这种技术绕过安全机制并在受害者机器上实现持久性。
众所周知,APT 组织StrongPity利用带有恶意可执行文件的合法 Notepad++安装程序,允许它在机器重新启动后持续存在。该后门可以让威胁行为者在机器上安装键盘记录器,并与 C2 服务器通信以发送该软件的输出。
StrongPity APT 组织(也称为 APT-C-41 和 PROMETHIUM),于 2012 年首次被披露,并采用与上述相同的策略,即为特定用户使用的合法软件添加后门。
2. 技术分析
Cybereason GSOC分析人员分析了 Notepad++ 插件加载机制,并基于此构建了一个攻击场景。
2.1 攻击场景
当在 Notepad++ 中按下某键时,可以滥用SCI_ADDTEXT API 来触发自定义 Notepad++ 命令。使用C#,创建一个 DLL,它将在 Notepad++ 内按下任意键时首先运行 PowerShell 命令。
在本文的攻击场景中,PowerShell 命令将执行Meterpreter有效负载。将其设置为仅运行一次,以确保C2 可用性不会因多次连接尝试而受到影响:
图2:嵌入恶意 DLL 的PowerShell 命令
* 注意 - Meterpreter shell 将继承启动 Notepad++ 的用户的权限。如果受害者以管理员身份打开应用程序(例如,他们正在更改Host文件),那么这里的 shell 将拥有相同的权限。
使用本地管理员权限,将编译好的 DLL 放到相应的文件夹中:
图3:恶意 DLL 放入插件目录
2.2 POWERSHELL执行
正如预期的那样,当 Notepad++ 加载并输入一个字母时,PowerShell 执行并建立了Meterpreter 会话:
图4:(受害者角度)一旦按键,PowerShell 就会执行配置的恶意负载
图5:(攻击者角度)建立 Meterpreter 会话
图6:(攻击者角度)来自 Meterpreter 会话的shell命令
2.3 权限提升
为了测试和演示继承权限的行为差异,尝试在作为普通用户执行的 Meterpreter 会话中运行GetSystem模块:
图7:(攻击者角度)普通用户权限下提权尝试失败
接下来,以“管理员”身份运行 Notepad++ 并重新运行有效负载。这次能够通过GetSystem模块升级到 SYSTEM权限:
图8:(攻击者角度)成功升级到SYSTEM
3. 检测与预防
3.1 检测与狩猎能力
恶意操作是由于 Meterpreter 有效负载产生的。当分析人员在 Metasploit 中运行“shell”模块时,它创建了一个cmd.exe的子进程,并为whoami.exe和calc.exe创建了额外的子进程。从 PowerShell 到分析人员的命令和控制服务器的网络连接也是可见的:
图9:(防御者角度)Cybereason 防御平台中的进程树 –加载的模块创建了 PowerShell.exe 的子进程
在notepad++.exe进程中搜索加载的模块时,能够识别出加载的恶意 DLL:
图10:(防御者角度)按名称搜索加载的恶意模块
没有观察到其他有用的文件元数据或指标可以帮助检测这种攻击。
3.2 逆向工程
静态分析工具能够提取用于构建二进制文件的编译时间、架构和编程语言等指标。
图11:编译时间戳
图12:64 位架构
图13:用 C# 编写的 Microsoft .NET 可执行文件
由于这是一个 C#/.NET 二进制文件,而C#/.NET 二进制文件编译为所谓的 Microsoft 中间语言 ( MSIL ),用于 C/C++ 二进制文件的标准静态分析工具将无法提取插件包或嵌入式 PowerShell命令对特定函数的引用信息。
代码中包含的元数据允许分析人员使用DNSpy反编译这个可执行文件。分析人员能够将二进制文件几乎完全反编译回源代码,从而使分析人员能够提取入侵指标 (IOC),例如 Base64 编码的PowerShell 命令中的命令和控制 (C2) IP 地址:
图14:反编译的源代码
图15:在Cyberchef中解码 Base64 后的 PowerShell 命令
4. 建议
启用反恶意软件功能。
为您的组织机构识别合法的 Notepad++ 插件,以便能够将它们从检测中排除。
监控在%PROGRAMFILES%\\Notepad++
\\plugins\\目录中创建的任何偏离您接受的基线的新文件。
监控Notepad++异常子进程,特别注意shell类型的进程。
附录 攻击指标
可执行文件 | Npp_Persistence_Plugin.dll - SHA256: 90BC7FA90705148D8FFEEF9C3D55F349611905D3F7A4AD17B956CD7EE7A208AF |
参考链接:https://www.cybereason.com/blog/threat-analysis-report-abusing-notepad-plugins-for-evasion-and-persistence
编辑|崔孟娇
审校|何双泽、金矢
本文为CNTIC编译整理,不代表本公众号观点,转载请保留出处与链接。
声明:本文来自国家网络威胁情报共享开放平台,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。