滥用Notepad++插件实现规避和持久化
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 防御平台中的进程树