Как получить сетевой доступ к Windows от имени другого пользователя не зная пароля
Сегодня я покажу на примере детали атаки под названием Pass-the-Hash, выполняемой на Windows инфраструктуру. Возможно проведения атаки обусловлена тем, что при сетевом взаимодействии аутентификация производится не по паролю, а по хешу – то есть по сети передаётся именно хеш, что с одной стороны даёт безопасность – ведь пароль остаётся в секрете, а с другой стороны позволяет выполнить какие-то действия от имени произвольного пользователя не зная его пароля, а просто передав его настоящий хеш.
Что потребуется для атаки Pass-the-Hash?
Программное средство – mimikatz, весьма уникальная в своём роде утилита.
Она в исходном своём виде успешно детектируется антивирусами как хакерский софт.
- не удивляйтесь, если вдруг программка пропадёт из привычного места (см. карантин антивируса).
- просто так бездумно проводить атаки на чужие защищённые системы не выйдет (атака захлебнётся на подходе). Поэтому подготовим свой стенд без антивирусника.
Потребуется валидный логин и NTLM-хеш. Топология у нас выглядит вот так:
Описание стенда
- Сервер развёрнут на Windows Server 2012 R2 Standard, в прочем это не имеет большого значения, атака будет возможна и на версиях младше и старше.
- Рабочая станция введена в домен.
- В домене имеется глобальный пользователь “admin” с паролем 1qaz@WSX, но мы этого как будто бы не знаем.
- В домене создан общедоступный сетевой ресурс, на который разрешён доступ admin, остальные не могут даже просматривать каталог.
И предположим, что нам (по какой-то причине) известен NTLM-хеш пользователя admin. Как его получить? Способов несколько:
- Похацкали рабочую станцию и вытащили с неё дамп процесса lsass.exe, из которого вытащили хешированный (да и не только) пароль аутентифицированного доменного пользователя.
- Выкачали NTDS и распарсили его при помощи crackmapexec.
- Провели атаку прослушивания трафика через Responder.
Да мало ли как ещё.. способов много. Итак, знаем хеш, логин. Попробуем получить доступ к шаре:
Атака Pass-the-Hash
На атакующей системе запустим mimikatz с правами администратора и выполним две команды в его интерактивной среде:
# privilege::debug — это получение привилегий, позволяющих вторгаться в память других процессов (например lsass.exe)
# sekurlsa::pth /user:admin /domain:LITLADMIN.RU /ntlm:хеш /run:cmd.exe
После предыдущих действий у нас запустится процесс cmd.exe, с токеном пользователя LITLADMIN.RU\admin и от его имени мы без проблем можем подключить сетевой диск на ранее недоступную сетевую папку и посмотреть её содержимое.
Мы могли бы точно так же запустить не cmd.exe, а процесс explorer и работать в проводнике от имени удалённого пользователя без знания его пароля.
Особенно это приятно, когда мы выяснили, что admin входит в группу доменных администраторов :). Вот такие вот дела.