翻译自:https://pentestlab.blog/2023/03/07/persistence-event-log-online-help/
事件查看器是 Microsoft Windows 的一个组件,用于显示与应用程序、安全性、系统和安装事件相关的信息。尽管该事件查看器主要用于管理员对窗口错误进行故障排除,但也可以在红队操作期间用作持久性的形式。为了帮助管理员通过 Web 检索特定事件 ID 的直接信息,Microsoft 嵌入了称为事件日志联机帮助的功能。
事件日志联机帮助将用户重定向到 Microsoft URL,并从以下注册表位置进行控制。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Event Viewer
如果已获得本地管理员访问权限,则可以修改三个注册表项,以便在用户单击事件日志联机帮助后执行任意有效负载。这些键可以在下面找到:
- 微软重定向程序
- MicrosoftRedirectionProgramCommandLineParameters
- 微软重定向网址
一个非常简单的概念证明是触发一个消息框。
#include <windows.h>
#pragma comment (lib, "user32.lib")
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
MessageBox(NULL, "pentestlab.blog", "Pentestlab", MB_OK);
return 0;
}
上面的代码可以使用MinGW编译以生成可执行文件。
x86_64-w64-mingw32-g++ -O2 messagebox.cpp -o messagebox.exe -I/usr/share/mingw-w64/include/ -s -ffunction-sections -fdata-sections -Wno-write-strings
-fno-exceptions -fmerge-all-constants -static-libstdc++ -static-libgcc -fpermissive
注册表项“MicrosoftRedirectionProgram”可以修改以包含已编译的可执行文件的位置。单击事件日志联机帮助将显示消息框,指示代码已执行。
事件日志联机帮助 – 消息框
以类似的方式,“msfvenom”可用于生成有效载荷。
msfvenom – 有效载荷生成
修改下面的注册表项以映射到以前生成的有效负载在磁盘上的位置将执行有效负载。
微软重定向计划 – 注册表项
单击“事件日志联机帮助”时,将建立连接。
事件日志联机帮助 – 计量器
第二个注册表项“MicrosoftRedirectionProgramCommandLineParameters”允许用户修改数据值以执行命令。一个非常常见的陆地二进制文件,如“regsvr32”,可以用来执行无文件有效载荷。
Microsoft Redirection Program Command Line Parameters
Once the Event Log Online Help is clicked the command will be executed and a communication channel will established.
Meterpreter – regsvr32
The last registry key is the “MicrosoftRedirectionURL” which by default it points out to a Microsoft location. The registry value could be changed to point either to a malicious URL or to a payload which is dropped on the disk.
微软重定向网址
在上述所有方案中,将创建以下条件:
- 父进程 (mmc.exe) – > 子进程(有效负载)
MMC – 父进程
EDR 应该标记 mmc 何时尝试生成不受信任的进程。此外,监视上述注册表项的更改可能会产生检测机会。由于需要访问Windows图形界面,并且考虑到普通用户通常不会打开事件查看器并单击Windows事件日志联机帮助,因此这种技术不太可能普及。但是,在假定的违规或恶意内部方案中,它可以用作通过 C2 通道维护活动连接的简单方法。