Mimikatz: Как заглянуть в память Windows и почему это должен знать каждый админ
Представьте, что пароли от всех учетных записей на Windows-сервере лежат в одном месте, и их можно просто прийти и забрать. Звучит как сценарий фильма про хакеров, но на самом деле это ближе к реальности, чем кажется. И сегодня мы поговорим об инструменте, который наглядно это демонстрирует — легендарном Mimikatz.
На GitHub он скромно описан как "небольшая утилита для игр с безопасностью Windows". Но за этой фразой скрывается один из самых известных и мощных инструментов в арсенале специалистов по кибербезопасности. Изначально его автор, Бенжамен Делпи (известный как gentilkiwi), создал проект, чтобы попрактиковаться в C и изучить внутренности Windows. А в итоге получился инструмент, который изменил правила игры в аудитах безопасности и пентестах.
Давайте разберемся, что же такого особенного в Mimikatz и почему с ним стоит познакомиться не только атакующим, но и, в первую очередь, защищающимся.
Что такое Mimikatz и зачем он нужен?
Если коротко, Mimikatz — это инструмент, который умеет извлекать учетные данные из памяти операционной системы Windows. Он работает с процессом LSASS (Local Security Authority Subsystem Service), где Windows хранит кэшированные пароли, хэши, PIN-коды и Kerberos-тикеты.
Зачем это нужно?
- Для пентестеров (Red Team): Это основной инструмент для пост-эксплуатации. Получив доступ к одной машине, можно с помощью Mimikatz извлечь учетные данные и двинуться дальше по сети (это называется "горизонтальное перемещение").
- Для системных администраторов и инженеров по безопасности (Blue Team): Mimikatz — это как лакмусовая бумажка. Он позволяет проверить, насколько хорошо защищена ваша инфраструктура. Запустив его в тестовой среде, вы своими глазами увидите, какие секреты можно достать из памяти, и поймете, какие защитные механизмы нужно внедрить.
- Для разработчиков и исследователей: Это блестящий пример реверс-инжиниринга и глубокой работы с внутренними API Windows.
Ключевые возможности: магия в командной строке
Mimikatz — это консольная утилита с модульной структурой. Вы вводите команды, и она творит чудеса. Вот несколько ее самых известных трюков.
1. Извлечение паролей в открытом виде
Это, пожалуй, самая знаменитая функция. Одна команда — и вы видите пароли пользователей, которые залогинены в системе.
privilege::debug
sekurlsa::logonpasswords
Первая команда, privilege::debug, запрашивает у системы повышенные привилегии. Это необходимо для доступа к памяти других процессов, в нашем случае — к LSASS. А вторая, sekurlsa::logonpasswords, делает основную работу: парсит память LSASS и выводит все, что найдет — от NTLM-хэшей до паролей в открытом виде, если система это позволяет.
Authentication Id : 0 ; 515764 (00000000:0007deb4)
Session : Interactive from 2
User Name : Gentil Kiwi
Domain : vm-w7-ult-x
msv :
[00000003] Primary
* Username : Gentil Kiwi
* Domain : vm-w7-ult-x
* NTLM : cc36cf7a8514893efccd332446158b1a
* Password : waza1234/
Видеть пароль в поле Password — это всегда шок для неподготовленного администратора. И это отличный повод задуматься о мерах защиты.
2. Атаки Pass-the-Hash и Pass-the-Ticket
Что если пароль в открытом виде получить не удалось, но есть его NTLM-хэш? Не беда! В Windows для аутентификации часто достаточно и хэша. Атака "Pass-the-Hash" (PtH) позволяет использовать этот хэш для доступа к другим машинам в сети от имени пользователя, даже не зная его пароля.
sekurlsa::pth /user:Administrator /domain:corpnet /ntlm:f193d757b4d487ab7e5a3743f038f713 /run:cmd
Эта команда откроет новую консоль от имени пользователя Administrator, используя его NTLM-хэш. Аналогично работает и атака "Pass-the-Ticket" (PtT), но уже с использованием Kerberos-тикетов, которые Mimikatz тоже умеет извлекать и подставлять.
3. Создание "Золотых билетов" (Golden Tickets)
Это высший пилотаж в мире атак на Active Directory. Если злоумышленник смог получить хэш учетной записи krbtgt (это специальная служебная учетка контроллера домена), он может с помощью Mimikatz создать "золотой билет" — Kerberos-тикет, который дает права администратора домена на любой машине в сети на долгое время.
kerberos::golden /admin:hacker /domain:chocolate.local /sid:S-1-5-21... /krbtgt:310b64... /ticket:golden.kirbi
Такой билет — это, по сути, ключ от всего домена. Обнаружить его использование крайне сложно, и он позволяет атакующему оставаться в системе незамеченным очень долго.
Как это работает под капотом?
Mimikatz написан на C и активно использует недокументированные функции Windows API для прямого доступа к памяти процессов. Автор проделал колоссальную работу по реверс-инжинирингу механизмов аутентификации Windows.
Для сборки проекта понадобится Visual Studio (версии 2010-2013 упоминаются в README, но сообщество поддерживает и более новые). Интересно, что проект даже имеет опциональный драйвер, который позволяет работать на еще более низком уровне.
Проект активно поддерживается и развивается, о чем говорит его статус на AppVeyor:
Выводы: бояться или изучать?
Mimikatz — это не просто "хакерская утилита". Это мощный диагностический и исследовательский инструмент. Он как скальпель хирурга: в руках преступника опасен, а в руках специалиста — спасает жизни (в нашем случае — корпоративные сети).
Кому стоит обратить на него внимание?
- Системным администраторам: Чтобы понять, какие слабые места есть в вашей конфигурации Windows и Active Directory. Запустите Mimikatz в лаборатории и посмотрите, что он сможет извлечь. Возможно, после этого вы сразу включите LSA Protection (режим RunAsPPL) и внедрите Microsoft LAPS.
- Специалистам по ИБ: Это must-have инструмент для понимания современных векторов атак и построения эффективной защиты.
- Всем, кто интересуется внутренним устройством Windows: Исходный код Mimikatz — это бесценный источник знаний о том, как на самом деле работают механизмы безопасности в самой популярной десктопной ОС.
Автор в конце README пишет: "Это личная разработка, пожалуйста, уважайте ее философию и не используйте во зло!". И это лучший совет. Не бойтесь этого инструмента — изучите его, чтобы понять, от чего и как нужно защищаться в современном IT-мире.
