windows中常见后门持久化方法总结
0x01. shift后门
在windows中有一些辅助功能,能在用户未登录系统之前可以通过组合键来启动它,类似的辅助功能有:
- C:\Windows\System32\sethc.exe 粘滞键,启动快捷键:按五次shift键
- C:\Windows\System32\utilman.exe 设置中心,启动快捷键:Windows+U键
在低版本的windows中,我们可以直接把sethc.exe替换成我们的后门程序,下面我们把sethc.exe替换为calc.exe
0x02.映像劫持
和shift后门差不多,只不过在低版本的windows中,可以简单地替换程序,但是在高版本的windows版本中替换的文件受到了系统的保护,所以这里我们要使用另外一个知识点:映像劫持–也被称为”IFEO”(Image File Execution Options)简单来说就是当目标程序被映像劫持时,当我们启动目标程序时,启动的是劫持后的程序而不是原来的程序
Image File Execution Options(其实应该称为”image Hijack”。)是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定。由于这个项主要是用来调试程序用的,对一般用户意义不大。默认是只有管理员和local system有权读写修改。PS:来自百度百科
在注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Option下添加一个项utilman.exe,然后在utilman.exe这个项中添加debugger键,键值为我们恶意程序的路径,如下图
0x03. 注册表自启动项
MSF的Persistence模块利用的就是写注册表自启动项来实现的,一般自启动项是这两个键:Run和RunOnce,两者的区别如下:
Run:该项下的键值即为开机启动项,每一次随着开机而启动。
RunOnce:RunOnce和Run差不多,唯一的区别就是RunOnce的键值只作用一次,执行完毕后就会自动删除
常见注册表启动项键的位置:
用户级
1 | \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run |
系统级
1 | \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run |
执行结果
0x04. 定时任务
windows下定时任务的命令有两个分别是:at和schtasks,他们两者主要区别是at命令在win7、08等高版本的windows中是不能将任务在前台执行的,也就是只会打开一个后台进程,而schtasks是将定时的任务在前台执行
at的一些参数
1 | AT [\\computername] time [/INTERACTIVE] |
执行效果:
schtasks一些参数:
1 | schtasks /create /tn TaskName /tr TaskRun /sc schedule [/mo modifier] [/d day] [/m month[,month...] [/i IdleTime] [/st StartTime] [/sd StartDate] [/ed EndDate] [/s computer [/u [domain\]user /p password]] [/ru {[Domain\]User | "System"} [/rp Password]] /? |
schtasks的执行如下:
0x05. 用户登陆初始化
Userinit的作用是用户在进行登陆初始化设置时,WinLogon进程会执行指定的login scripts,所以我们可以修改它的键值来添加我们要执行的程序,注册表路径为:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit,我们添加一个我们启动的程序,多个程序用逗号隔开
效果如下:
0x06. Logon Scripts
Logon Scripts优先于av先执行,我们可以利用这一点来绕过av的敏感操作拦截
注册表路径为:HKEY_CURRENT_USER\Environment,创建一个键为:UserInitMprLogonScript,其键值为我们要启动的程序路径
0x07. 屏幕保护程序
在对方开启屏幕保护的情况下,我们可以修改屏保程序为我们的恶意程序从而达到后门持久化的目的
其中屏幕保护的配置存储在注册表中,其位置为:HKEY_CURRENT_USER\Control Panel\Desktop,关键键值如下:
- SCRNSAVE.EXE - 默认屏幕保护程序,我们可以把这个键值改为我们的恶意程序
- ScreenSaveActive - 1表示屏幕保护是启动状态,0表示表示屏幕保护是关闭状态
- ScreenSaverTimeout - 指定屏幕保护程序启动前系统的空闲事件,单位为秒,默认为900(15分钟)
10秒后触发屏幕保护程序