SETX COR_ENABLE_PROFILING =1 /M
SETX COR_PROFILER ={11111111-1111-1111-1111-111111111111} /M
这里变量后面少复制空格了
前言
当我们通过各种方法拿到一个服务器的权限的时候,我们下一步要做的就是后渗透
了,而后门持久化也是我们后渗透很重要的一部分,下面我来总结一下windows
下常见的后门持久化的方法
后门持久化
我的操作环境是:
- 无AV、管理员权限(提权、免杀等是后门持久化的铺垫,当然有的方法也并不是全部需要这些铺垫)
- 操作系统:
win7
,windows server 2008R2
,xp
shift后门
这个是比较老的方式了,这里简单讲一下,在windows中有一些辅助功能,能在用户未登录系统之前可以通过组合键来启动它,类似的辅助功能有:
C:\Windows\System32\sethc.exe
粘滞键,启动快捷键:按五次shift键C:\Windows\System32\utilman.exe
设置中心,启动快捷键:Windows+U键
在低版本的windows中,我们可以直接把setch.exe
替换成我们的后门程序,下面我们把setch.exe
替换为cmd.exe
映像劫持
这个和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
下添加一个项sethc.exe
,然后在sethc.exe
这个项中添加debugger
键,键值为我们恶意程序的路径,如下图
效果如下
注册表自启动项
MSF
的Persistence
模块利用的就是写注册表自启动项来实现的,一般自启动项是这两个键:Run
和RunOnce
,两者的区别如下
Run:该项下的键值即为开机启动项,每一次随着开机而启动。
RunOnce:RunOnce和Run差不多,唯一的区别就是RunOnce的键值只作用一次,执行完毕后就会自动删除
常见注册表启动项键的位置:
用户级
\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
系统级
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOnce
修改一下:
执行结果:
定时任务
windows下定时任务的命令有两个分别是:at
和schtasks
,他们两者主要区别是at
命令在win7
、08
等高版本的windows中是不能将任务在前台执行的,也就是只会打开一个后台进程,而schtasks
是将定时的任务在前台执行,下面我们逐个看看
at
的一些参数
AT [\\computername] time [/INTERACTIVE]
[ /EVERY:date[,...] | /NEXT:date[,...]] "command"
at
的执行如下:
schtasks
一些参数:
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
的执行如下:
用户登陆初始化
Userinit
的作用是用户在进行登陆初始化设置时,WinLogon
进程会执行指定的login scripts
,所以我们可以修改它的键值来添加我们要执行的程序
注册表路径为:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
,我们添加一个我们启动的程序,多个程序用逗号隔开
效果如下:
Logon Scripts
Logon Scripts
优先于av先执行,我们可以利用这一点来绕过av的敏感操作拦截
注册表路径为:HKEY_CURRENT_USER\Environment
,创建一个键为:UserInitMprLogonScript
,其键值为我们要启动的程序路径
效果如下:
屏幕保护程序
在对方开启屏幕保护的情况下,我们可以修改屏保程序为我们的恶意程序从而达到后门持久化的目的
其中屏幕保护的配置存储在注册表中,其位置为:HKEY_CURRENT_USER\Control Panel\Desktop
,关键键值如下:
SCRNSAVE.EXE
- 默认屏幕保护程序,我们可以把这个键值改为我们的恶意程序ScreenSaveActive
- 1表示屏幕保护是启动状态,0表示表示屏幕保护是关闭状态ScreenSaverTimeout
- 指定屏幕保护程序启动前系统的空闲事件,单位为秒,默认为900(15分钟)
设置如下:
效果图:
自启动服务
自启动服务一般是在电脑启动后在后台加载指定的服务程序,我们可以将exe
文件注册为服务,也可以将dll
文件注册为服务
为了方便起见我们可以直接用Metasploit
来注册一个服务
meterpreter > run metsvc -A
运行之后msf会在%TMP%
目录下创建一个随机名称的文件夹,然后在该文件夹里面生成三个文件:metsvc.dll
、metsvc-server.exe
、metsvc.exe