Конференция DEFCON 20. Захват за 60 секунд: от гостевой учётной записи до администратора домена Windows. Часть 1
Хорошо то, что мы можем войти в локальную сеть, подделав DNS. А как насчёт социальной инженерии, учитывающей предпочтения и склонности пользователей? Пентестеры знают, что в IE можно поместить теги файлов-изображений, например, формата .jpg, для сетевого пути UNC, и тогда IE будет передавать это обратно Windows и автоматически подключатся к сетевой папке, пытаясь получить запрашиваемое изображение или что-то еще, например, JavaScript, iFrame и т.д. Так что на сегодня в IE имеется автоматическая аутентификация.
То же самое можно проделать в Firefox и Chrome, хотя люди считают, что эти браузеры более защищены. На этом скриншоте приведена консоль ошибок Firefox, в которой сообщается, что браузер не может загрузить этот файл картинки из общей сети, так как политика безопасности предотвращает загрузку файлов, которых нет в контексте безопасности браузера. Интересной особенностью нашего инструмента является то, что браузеры Firefox и Chrome можно заставить загружать файлы, просто посылая HTTP заголовки для принудительной загрузки Content-Type: application/force-download и затем открывать эти файлы из папки Temp или прямо с рабочего стола. Таким образом, мы выставили контекст безопасности файлов и активировали автоматическую аутентификацию в общем SMB, так что теперь можете заставить пользователей аутентифицироваться на вашем мошенническом сервере.
Но что делать, если они не кликают «загрузить файл» или не открывают его из папки Temp? В таком случае можно сделать так, чтобы пользователи автоматически аутентифицировались просто при просмотре HTML страницы в браузере. Для этого к Firefox и Chrome нужно подключить плагины. Моё внимание привлёк плагин, QuickTime, который часто устанавливается пользователями по умолчанию. Я знаю, что существуют десятки разных плагинов, но чаще всего вы встречаете людей с iTunes на своих «Айфонах» и установленным QuickTime. Я прошёлся по списку возможностей QuickTime и задумался, как мне прикрутить его к своему мошенническому сетевому серверу, чтобы заставить людей аутентифицироваться, введя свой логин и пароль.
Мы немного подумали и решили, что можно вставить плейлист в сетевой путь UNC, и тогда пользователи будут автоматически аутентифицироваться и обходить локальный контекст безопасности. Нам нужно ещё немного поработать над двумя другими плагинами, но пока что QuickTime отлично справляется с поставленной нами задачей.
Ещё один способ принудить людей к автоматической аутентификации на нашем сервере – это электронные письма. Некоторые люди знают, что в Outlook можно использовать HTML email, или электронные письма по HTML –шаблону. Если у нас имеется общий сетевой ресурс, то внутрь такого письма можно вставить , и если пользователь откроет это письмо, то произойдет автоматическое подключение к данному ресурсу и его аутентификация.
Для наших целей можно использовать файлы в формате .docs. Любой документ можно использовать так же, как вставленное в UNC изображение или HTML-файл, открытие которого вызовет автоматическое подключение к общему сетевому ресурсу.
Не стоит забывать о файле desktop.ini. Об этом не слишком известно, но вы можете сгенерировать этот файл для установки таких ресурсов рабочего стола, как иконки и обои, и разместить его в «расшаренной» папке. При этом опять-таки, система будет автоматически подключаться для получения этих иконок и «логиниться» с помощью актуальной учётной записи пользователя.
Точно также можно изменить параметры файла ярлыка с расширением .lnk, чтобы автоматически подсоединяться к ресурсу.
Итак, наш инструмент быстро и легко автоматически создаёт эти файлы .ini или HTML.
Последнее, о чём я хочу рассказать – это MITM, или «человек посередине». Вы можете перенаправить запросы NTLM-аутентификации или внедрить HTML контент в станицы, так как инструмент этого не делает, и таким образом помочь ему выполнить свою работу. Вот таким образом можно заставить клиентов подключиться к мошенническому серверу, чтобы осуществить NTLM Relay. Существуют и другие инструменты, позволяющие совершать NTLM Relay по протоколу SMB или HTTP и заставлять пользователей аутентифицироваться для вас.
Ещё одно крутое свойство Squirtle это возможность сделать его отправной точкой для создания запросов API, где вы можете использовать любой написанный вами инструмент, чтобы получить сообщения Типа 2 и 3. Сообщение Тип 3 – это последний запрос аутентификации, для его получения вы должны отправить API сообщение Тип 2 и получить его обратно. Я быстро написал такой API, который позволяет вам использовать любой набор инструментов, какой захотите, вы можете изменить исходный код и использовать мошеннические серверы для подключения и так далее.
Однако если вы пентестер или тестируете пользователей, то вам нужны некоторые взаимосвязи, обратное взаимодействие. Поэтому наш инструмент включает в себя набор правил. Я уже говорил, что все существующие инструменты отсылают пользователей к одному источнику, и мы должны определить, кто же эти пользователи. Я хотел сделать это в один клик, чтобы, как я уже сказал, можно было бы получить полномочия администратора домена за 60 секунд.
Я вписал в наше приложение правила, основанные на том, что пользователи принадлежат группам, а цели принадлежат группам целей.
Как только мы выяснили, что пользователь принадлежит к какой-то группе и может получить доступ к чему-то при автоматическом подключении, нам не надо заставлять его подключаться, ждать и надеяться, что он вернется. Мы установили простое правило, позже я покажу его в пользовательском интерфейсе, что если пользователь входит в группу Х, используется определённый модуль Y для совершения действия Z по отношению к целевым группам T. Через пару секунд я продемонстрирую, как это работает.
Правила также заключаются в незамедлительной проверке запросов API, проверке общих правил, и повторении этого до тех пор, пока не наступит тайм-аут. Как только наступит тайм-аут, нужно ответить статичным вызовом и удерживать состояние аутентификации, не позволяя пользователю отсоединиться.
Мы можем использовать SMB для подключения к SMB, HTTP для подключения к HTTP, HTTP для подключения к SMB и так далее, осуществляя NTLM Relaying. Проблема состоит в том, что люди практически не используют множество других протоколов, поэтому я решил присмотреться к таким протоколам, как LDAP и MSSQL.
О LDAP я расскажу чуть позже, а пока замечу, что MSSQL – крутая вещь, потому что мы можем заполучить базу данных, можем получить доступ к данным, и это потрясающе.
Поскольку мы имеем дело с клиентами, то хотим, чтобы действия совершались автоматически сразу после того, как мы подсоединились. Поэтому мы перечислили пользователей и группы с помощью Metasploit, который был представлен на конференции BlackHat в этом году. Таким образом, как пентестер я получил доступ к общим файлам, получил возможность выполнять команды и завладел информацией о целевых пользователях и целевых группах, не имея полномочий администратора. Однако при всём этом я не могу подключиться к контроллерам домена. Причина в том, что по умолчанию большинство контроллеров домена имеет SMB подпись. Для тех, кто не знаком с подписыванием SMB, скажу, что это механизм обеспечения безопасности протокола SMB, также называемый подписями безопасности. Он использует оригинальный NTLM-хеш для подписи сеанса и подписывает каждый пакет, и если подписи нет, он вас отключает. Таким образом, по умолчанию мы не можем применить NTLM Relaying к контроллеру домена. Это меня разозлило, поэтому я решил узнать, как легко и быстро добраться до этого контроллера. Вернёмся на пару слайдов назад.
Оказалось, что в контроллере домена LDAP включен по умолчанию, что позволяет использовать NTLM-аутентификацию, и это здорово. Но мы не могли изменить пароль, потому что, как правило, изменение пароля или добавление пользователя требует SSL и SSL включен в LDAP, если у домена имеется сертификат СА. Что мы сделали – это вписали в свой инструмент, что вы можете изменять пароли пользователей, исключать и добавлять пользователей, перечислять домены, извлекать активные хеши пользователей из памяти, авторизоваться в контроле домена и делать прочие крутые вещи. Здорово то, что можно без SSL и прочего добавлять пользователей в группы, так что в качестве пентестера вы сможете взять и подключить аккаунты других пользователей, добавить их в группу администраторов домена, если получили полномочия администратора, и так далее и тому подобное.
Вернёмся к SMB. Во время своего 4-х часового перелёта сюда из Чикаго я додумался до использования SMB SOCKS-прокси в наших целях. Тот, кто в курсе, знает, что этот протокол позволяет приложениям взаимодействовать через сетевой экран, который блокирует прямое подключение, используя промежуточный сервер, к которому могут подключаться оба клиента. То есть SOCKS-прокси пересылает чистые данные одного клиента другому и обратно. Таким образом, этот прокси может заменять NTLM-пакеты ретранслированными данными.
С помощью HTTP мы можем связать SharePoint -сервера внутренних веб-сайтов. Некоторые люди считают, что с NTLM не будет никаких проблем, потому что вы находитесь во внутренней сети, но как быть с внешними сетями? Там тоже иногда имеются сервера SharePoint, но не слишком часто. Я подумал о том, что многие организации открыты для внешнего доступа, поддерживает NTLM и позволяют обмениваться веб-сервисами. Для тех, кто не знаком с веб-службами Exchange (EWS) скажу, что они являются своего рода HTTP API, которые обычно расположены на том же сервере, что и веб-почта Outlook Web Access. По умолчанию они используют метод аутентификации HTTP Negotiate, который поддерживает NTLM, так что мы можем сделать внешнюю HTTP ретрансляцию к сервису, находящемуся в EWS.
Это вызывает беспокойство, потому что извне можно получить доступ к переписке, контактам, календарю событий и установить собственные правила для электронной почты, используя точки подключения HotSpot. Можно добраться до EWS — сервера через интернет, если у них отсутствуют правила файрвола для исходящих соединений, не позволяющих подсоединиться к мошенническому SMB-серверу и автоматически получить аутентификацию. И всё это возможно благодаря тому, что у каждого имеется мобильный телефон, подключённый к сервисам EWS и синхронизирующийся с ними.
А теперь мне нужно выпить, потому что в этом месте я хотел начать демо. Итак, на этом слайде показано, как выглядит графический интерфейс пользователя моего приложения ZackAttack, я прокручу страницу чуть ниже, чтобы вы увидели настройки действий, целей, целевых групп и групп пользователей.
Так можно получить представление о его функциональности и о том, насколько он может быть мощным. Прямо сейчас запущен мошеннический HTTP сервер, мошеннический SMB сервер и управляющий HTTP сервер. Далее на слайде показано, в каких группах состоят пользователи.
Здесь показано, кто и когда подсоединился к сети, так что можно проследить, кто из пользователей подключился повторно.
Справа красным цветом показываются системные аккаунты и аккаунты существующих пользователей, откуда в один клик можно перечислить цели через SMB, получить почту с Exchange Web Services, использовать командную оболочку, если вы являетесь администратором сессии, получить доступ к общим файлам, к SharePoint и так далее.
Как я уже говорил, мы можем создавать правила и можем добавлять пользователей в группы автоматическим перечислением или создавая группы вручную, например, создав группу под названием «moo».
Что-то у меня не получается, как я уже сказал, боги демо меня не любят. Придется вернуться назад и кое-что подправить в программе.
Извините, ребята, но это всего лишь альфа-релиз, я написал этот код в одиночку за 3 недели. Сейчас я добавлю группу под названием «yar», теперь вы видите, что внизу появились обе эти группы, в которые добавлен выбранный пользователь.
Как я сказал, мы также можем перечислить различные группы пользователей из контроллера домена, это вкладка «UserGroups», и создать правила для автоматической аутентификации, используя вкладку «Attack Rules» — «Правила атаки».
Вы видите здесь пользователей только что созданной группы Yar, которых можно подключить к Exchange Web Services для определённых целей целевых групп, и здесь также можно добавить любой IP-адрес, например, 10.1.10.250 к целевой группе.
Как только от кого-то из группы пользователей поступает запрос аутентификации, мы автоматически подключаемся к EWS и вытаскиваем все письма из папки «Входящие», из папки «Черновики», мы можем легко добавить другую папку, скажем, папку «Отправленные».
Самое хорошее в этом инструменте то, что после аутентификации сессия удерживается открытой на протяжении всего подключения к мошенническому серверу и совершения всех этих действий. Таким образом, нам не нужно заново аутентифицироваться, чтобы получать входящие письма.
Так как мы имеем 30 запросов, поступающих от системы, мы можем для начала установить около 30 правил и затем выполнять самые различные действия в этом конкретном соединении. Как я сказал, мы можем повторить все эти действия для всех пользователей и всех целей данного соединения или для конкретных целей.
Одновременно с этим мы можем генерировать полезную нагрузку, щелкнув по вкладке «Auth Payloads». Отсюда можно создавать HTML –файлы для определения ОC пользователя и использовать один из 3-х методов принуждения браузера к автоматической аутентификации.
Здесь можно создавать desktop.ini для загрузки файлов в общие папки и использовать генератор файлов для инъекции UNC Path в xml .doc файл, создавать файлы ярлыков .lnk и архивные Zip-файлы, точно так же, как автоматически создавать почтовые XTML –файлы. Всё это делается максимально просто с помощью Firesheep и NTLM Relaying.
Наконец, через вкладку Results+Logs мой инструмент отслеживает пользовательские хеши, как он делал это перед статической аутентификацией, и таким образом, вы можете попытаться взломать пароли.
Итак, это была демонстрация возможностей ZackAttack. Так как же нам от этого защититься? Защита заключается в ограничении поверхности атаки.
У каждого свои методы защиты против атак такого рода. Люди предлагают использовать NTLM версии 2. Мой инструмент поддерживает эту версию, но нет никаких существенных отличий между версией 2 и версией 1.
Можно установить файрвол на исходящий порт 445, что защитит вас от чьей-либо рассылки мошеннической полезной нагрузки, принуждающей к автоматической аутентификации. Однако это никак не защитит от проникновения через мобильные устройства.
Можно настроить групповые политики ограничения использования программ GPO в Windows 7 для ограничения целей NTLM-аутентификации. Все утверждают, что лучшим решением является Kerberos. Однако проблема состоит в том, что организации потребуется всё переключить на Kerberos, и это не будет работать, потому что существует множество вещей, которые не поддерживают Kerberos. Другое дело, что если вы включите Kerberos, то вообще не сможете поддерживать NTLM, то же самое касается подписывания, потому что для тех, кого вы не знаете, потребуется подписывание каждого пакета хешем оригинального пароля. Подписывание LDAP, SMB-подписи, расширенная HTTP-аутентификация – это всё не поддерживается «Цербером», поэтому люди заблуждаются, думая, что подписи решат все проблемы. Если вы внедрите обязательность подписей, это может вывести из строя множество вещей.
Поэтому, защищая организацию, вы должны соблюдать некий баланс. Если вы конечный пользователь, то обычно не беспокоитесь о таких вещах, но если вы системный администратор корпорации, наибольшей проблемой для вас будет необходимость отказаться от использования NTLM.
Так как Windows 8 и Windows 2012 всё еще по умолчанию поддерживает NTLM, потребуется некоторое время, чтобы отказаться от этого и перейти к использованию Kerberos, и я надеюсь, что мой инструмент в этом поможет. Он будет опубликован во вторник 31 июля, как только я вернусь домой, на сайте zfasel.com/tools. Он также имеется на DVD–диске этой конференции, так же, как и мои слайды. Если вы захотите сказать мне, насколько дерьмовым было моё выступление и моё демо, присылайте письма на адрес электронной почты dc20@zfasel.com или ищите в «Твиттере» мой ник @zfasel.
Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps до весны бесплатно при оплате на срок от полугода, заказать можно тут.
Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249 в Нидерландах и США! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?
Хорошо то, что мы можем войти в локальную сеть, подделав DNS. А как насчёт социальной инженерии, учитывающей предпочтения и склонности пользователей? Пентестеры знают, что в IE можно поместить теги файлов-изображений, например, формата .jpg, для сетевого пути UNC, и тогда IE будет передавать это обратно Windows и автоматически подключатся к сетевой папке, пытаясь получить запрашиваемое изображение или что-то еще, например, JavaScript, iFrame и т.д. Так что на сегодня в IE имеется автоматическая аутентификация.
То же самое можно проделать в Firefox и Chrome, хотя люди считают, что эти браузеры более защищены. На этом скриншоте приведена консоль ошибок Firefox, в которой сообщается, что браузер не может загрузить этот файл картинки из общей сети, так как политика безопасности предотвращает загрузку файлов, которых нет в контексте безопасности браузера. Интересной особенностью нашего инструмента является то, что браузеры Firefox и Chrome можно заставить загружать файлы, просто посылая HTTP заголовки для принудительной загрузки Content-Type: application/force-download и затем открывать эти файлы из папки Temp или прямо с рабочего стола. Таким образом, мы выставили контекст безопасности файлов и активировали автоматическую аутентификацию в общем SMB, так что теперь можете заставить пользователей аутентифицироваться на вашем мошенническом сервере.
Но что делать, если они не кликают «загрузить файл» или не открывают его из папки Temp? В таком случае можно сделать так, чтобы пользователи автоматически аутентифицировались просто при просмотре HTML страницы в браузере. Для этого к Firefox и Chrome нужно подключить плагины. Моё внимание привлёк плагин, QuickTime, который часто устанавливается пользователями по умолчанию. Я знаю, что существуют десятки разных плагинов, но чаще всего вы встречаете людей с iTunes на своих «Айфонах» и установленным QuickTime. Я прошёлся по списку возможностей QuickTime и задумался, как мне прикрутить его к своему мошенническому сетевому серверу, чтобы заставить людей аутентифицироваться, введя свой логин и пароль.
Мы немного подумали и решили, что можно вставить плейлист в сетевой путь UNC, и тогда пользователи будут автоматически аутентифицироваться и обходить локальный контекст безопасности. Нам нужно ещё немного поработать над двумя другими плагинами, но пока что QuickTime отлично справляется с поставленной нами задачей.
Ещё один способ принудить людей к автоматической аутентификации на нашем сервере – это электронные письма. Некоторые люди знают, что в Outlook можно использовать HTML email, или электронные письма по HTML –шаблону. Если у нас имеется общий сетевой ресурс, то внутрь такого письма можно вставить , и если пользователь откроет это письмо, то произойдет автоматическое подключение к данному ресурсу и его аутентификация.
Для наших целей можно использовать файлы в формате .docs. Любой документ можно использовать так же, как вставленное в UNC изображение или HTML-файл, открытие которого вызовет автоматическое подключение к общему сетевому ресурсу.
Не стоит забывать о файле desktop.ini. Об этом не слишком известно, но вы можете сгенерировать этот файл для установки таких ресурсов рабочего стола, как иконки и обои, и разместить его в «расшаренной» папке. При этом опять-таки, система будет автоматически подключаться для получения этих иконок и «логиниться» с помощью актуальной учётной записи пользователя.
Точно также можно изменить параметры файла ярлыка с расширением .lnk, чтобы автоматически подсоединяться к ресурсу.
Итак, наш инструмент быстро и легко автоматически создаёт эти файлы .ini или HTML.
Последнее, о чём я хочу рассказать – это MITM, или «человек посередине». Вы можете перенаправить запросы NTLM-аутентификации или внедрить HTML контент в станицы, так как инструмент этого не делает, и таким образом помочь ему выполнить свою работу. Вот таким образом можно заставить клиентов подключиться к мошенническому серверу, чтобы осуществить NTLM Relay. Существуют и другие инструменты, позволяющие совершать NTLM Relay по протоколу SMB или HTTP и заставлять пользователей аутентифицироваться для вас.
Ещё одно крутое свойство Squirtle это возможность сделать его отправной точкой для создания запросов API, где вы можете использовать любой написанный вами инструмент, чтобы получить сообщения Типа 2 и 3. Сообщение Тип 3 – это последний запрос аутентификации, для его получения вы должны отправить API сообщение Тип 2 и получить его обратно. Я быстро написал такой API, который позволяет вам использовать любой набор инструментов, какой захотите, вы можете изменить исходный код и использовать мошеннические серверы для подключения и так далее.
Однако если вы пентестер или тестируете пользователей, то вам нужны некоторые взаимосвязи, обратное взаимодействие. Поэтому наш инструмент включает в себя набор правил. Я уже говорил, что все существующие инструменты отсылают пользователей к одному источнику, и мы должны определить, кто же эти пользователи. Я хотел сделать это в один клик, чтобы, как я уже сказал, можно было бы получить полномочия администратора домена за 60 секунд.
Я вписал в наше приложение правила, основанные на том, что пользователи принадлежат группам, а цели принадлежат группам целей.
Как только мы выяснили, что пользователь принадлежит к какой-то группе и может получить доступ к чему-то при автоматическом подключении, нам не надо заставлять его подключаться, ждать и надеяться, что он вернется. Мы установили простое правило, позже я покажу его в пользовательском интерфейсе, что если пользователь входит в группу Х, используется определённый модуль Y для совершения действия Z по отношению к целевым группам T. Через пару секунд я продемонстрирую, как это работает.
Правила также заключаются в незамедлительной проверке запросов API, проверке общих правил, и повторении этого до тех пор, пока не наступит тайм-аут. Как только наступит тайм-аут, нужно ответить статичным вызовом и удерживать состояние аутентификации, не позволяя пользователю отсоединиться.
Мы можем использовать SMB для подключения к SMB, HTTP для подключения к HTTP, HTTP для подключения к SMB и так далее, осуществляя NTLM Relaying. Проблема состоит в том, что люди практически не используют множество других протоколов, поэтому я решил присмотреться к таким протоколам, как LDAP и MSSQL.
О LDAP я расскажу чуть позже, а пока замечу, что MSSQL – крутая вещь, потому что мы можем заполучить базу данных, можем получить доступ к данным, и это потрясающе.
Поскольку мы имеем дело с клиентами, то хотим, чтобы действия совершались автоматически сразу после того, как мы подсоединились. Поэтому мы перечислили пользователей и группы с помощью Metasploit, который был представлен на конференции BlackHat в этом году. Таким образом, как пентестер я получил доступ к общим файлам, получил возможность выполнять команды и завладел информацией о целевых пользователях и целевых группах, не имея полномочий администратора. Однако при всём этом я не могу подключиться к контроллерам домена. Причина в том, что по умолчанию большинство контроллеров домена имеет SMB подпись. Для тех, кто не знаком с подписыванием SMB, скажу, что это механизм обеспечения безопасности протокола SMB, также называемый подписями безопасности. Он использует оригинальный NTLM-хеш для подписи сеанса и подписывает каждый пакет, и если подписи нет, он вас отключает. Таким образом, по умолчанию мы не можем применить NTLM Relaying к контроллеру домена. Это меня разозлило, поэтому я решил узнать, как легко и быстро добраться до этого контроллера. Вернёмся на пару слайдов назад.
Оказалось, что в контроллере домена LDAP включен по умолчанию, что позволяет использовать NTLM-аутентификацию, и это здорово. Но мы не могли изменить пароль, потому что, как правило, изменение пароля или добавление пользователя требует SSL и SSL включен в LDAP, если у домена имеется сертификат СА. Что мы сделали – это вписали в свой инструмент, что вы можете изменять пароли пользователей, исключать и добавлять пользователей, перечислять домены, извлекать активные хеши пользователей из памяти, авторизоваться в контроле домена и делать прочие крутые вещи. Здорово то, что можно без SSL и прочего добавлять пользователей в группы, так что в качестве пентестера вы сможете взять и подключить аккаунты других пользователей, добавить их в группу администраторов домена, если получили полномочия администратора, и так далее и тому подобное.
Вернёмся к SMB. Во время своего 4-х часового перелёта сюда из Чикаго я додумался до использования SMB SOCKS-прокси в наших целях. Тот, кто в курсе, знает, что этот протокол позволяет приложениям взаимодействовать через сетевой экран, который блокирует прямое подключение, используя промежуточный сервер, к которому могут подключаться оба клиента. То есть SOCKS-прокси пересылает чистые данные одного клиента другому и обратно. Таким образом, этот прокси может заменять NTLM-пакеты ретранслированными данными.
С помощью HTTP мы можем связать SharePoint -сервера внутренних веб-сайтов. Некоторые люди считают, что с NTLM не будет никаких проблем, потому что вы находитесь во внутренней сети, но как быть с внешними сетями? Там тоже иногда имеются сервера SharePoint, но не слишком часто. Я подумал о том, что многие организации открыты для внешнего доступа, поддерживает NTLM и позволяют обмениваться веб-сервисами. Для тех, кто не знаком с веб-службами Exchange (EWS) скажу, что они являются своего рода HTTP API, которые обычно расположены на том же сервере, что и веб-почта Outlook Web Access. По умолчанию они используют метод аутентификации HTTP Negotiate, который поддерживает NTLM, так что мы можем сделать внешнюю HTTP ретрансляцию к сервису, находящемуся в EWS.
Это вызывает беспокойство, потому что извне можно получить доступ к переписке, контактам, календарю событий и установить собственные правила для электронной почты, используя точки подключения HotSpot. Можно добраться до EWS — сервера через интернет, если у них отсутствуют правила файрвола для исходящих соединений, не позволяющих подсоединиться к мошенническому SMB-серверу и автоматически получить аутентификацию. И всё это возможно благодаря тому, что у каждого имеется мобильный телефон, подключённый к сервисам EWS и синхронизирующийся с ними.
А теперь мне нужно выпить, потому что в этом месте я хотел начать демо. Итак, на этом слайде показано, как выглядит графический интерфейс пользователя моего приложения ZackAttack, я прокручу страницу чуть ниже, чтобы вы увидели настройки действий, целей, целевых групп и групп пользователей.
Так можно получить представление о его функциональности и о том, насколько он может быть мощным. Прямо сейчас запущен мошеннический HTTP сервер, мошеннический SMB сервер и управляющий HTTP сервер. Далее на слайде показано, в каких группах состоят пользователи.
Здесь показано, кто и когда подсоединился к сети, так что можно проследить, кто из пользователей подключился повторно.
Справа красным цветом показываются системные аккаунты и аккаунты существующих пользователей, откуда в один клик можно перечислить цели через SMB, получить почту с Exchange Web Services, использовать командную оболочку, если вы являетесь администратором сессии, получить доступ к общим файлам, к SharePoint и так далее.
Как я уже говорил, мы можем создавать правила и можем добавлять пользователей в группы автоматическим перечислением или создавая группы вручную, например, создав группу под названием «moo».
Что-то у меня не получается, как я уже сказал, боги демо меня не любят. Придется вернуться назад и кое-что подправить в программе.
Извините, ребята, но это всего лишь альфа-релиз, я написал этот код в одиночку за 3 недели. Сейчас я добавлю группу под названием «yar», теперь вы видите, что внизу появились обе эти группы, в которые добавлен выбранный пользователь.
Как я сказал, мы также можем перечислить различные группы пользователей из контроллера домена, это вкладка «UserGroups», и создать правила для автоматической аутентификации, используя вкладку «Attack Rules» — «Правила атаки».
Вы видите здесь пользователей только что созданной группы Yar, которых можно подключить к Exchange Web Services для определённых целей целевых групп, и здесь также можно добавить любой IP-адрес, например, 10.1.10.250 к целевой группе.
Как только от кого-то из группы пользователей поступает запрос аутентификации, мы автоматически подключаемся к EWS и вытаскиваем все письма из папки «Входящие», из папки «Черновики», мы можем легко добавить другую папку, скажем, папку «Отправленные».
Самое хорошее в этом инструменте то, что после аутентификации сессия удерживается открытой на протяжении всего подключения к мошенническому серверу и совершения всех этих действий. Таким образом, нам не нужно заново аутентифицироваться, чтобы получать входящие письма.
Так как мы имеем 30 запросов, поступающих от системы, мы можем для начала установить около 30 правил и затем выполнять самые различные действия в этом конкретном соединении. Как я сказал, мы можем повторить все эти действия для всех пользователей и всех целей данного соединения или для конкретных целей.
Одновременно с этим мы можем генерировать полезную нагрузку, щелкнув по вкладке «Auth Payloads». Отсюда можно создавать HTML –файлы для определения ОC пользователя и использовать один из 3-х методов принуждения браузера к автоматической аутентификации.
Здесь можно создавать desktop.ini для загрузки файлов в общие папки и использовать генератор файлов для инъекции UNC Path в xml .doc файл, создавать файлы ярлыков .lnk и архивные Zip-файлы, точно так же, как автоматически создавать почтовые XTML –файлы. Всё это делается максимально просто с помощью Firesheep и NTLM Relaying.
Наконец, через вкладку Results+Logs мой инструмент отслеживает пользовательские хеши, как он делал это перед статической аутентификацией, и таким образом, вы можете попытаться взломать пароли.
Итак, это была демонстрация возможностей ZackAttack. Так как же нам от этого защититься? Защита заключается в ограничении поверхности атаки.
У каждого свои методы защиты против атак такого рода. Люди предлагают использовать NTLM версии 2. Мой инструмент поддерживает эту версию, но нет никаких существенных отличий между версией 2 и версией 1.
Можно установить файрвол на исходящий порт 445, что защитит вас от чьей-либо рассылки мошеннической полезной нагрузки, принуждающей к автоматической аутентификации. Однако это никак не защитит от проникновения через мобильные устройства.
Можно настроить групповые политики ограничения использования программ GPO в Windows 7 для ограничения целей NTLM-аутентификации. Все утверждают, что лучшим решением является Kerberos. Однако проблема состоит в том, что организации потребуется всё переключить на Kerberos, и это не будет работать, потому что существует множество вещей, которые не поддерживают Kerberos. Другое дело, что если вы включите Kerberos, то вообще не сможете поддерживать NTLM, то же самое касается подписывания, потому что для тех, кого вы не знаете, потребуется подписывание каждого пакета хешем оригинального пароля. Подписывание LDAP, SMB-подписи, расширенная HTTP-аутентификация – это всё не поддерживается «Цербером», поэтому люди заблуждаются, думая, что подписи решат все проблемы. Если вы внедрите обязательность подписей, это может вывести из строя множество вещей.
Поэтому, защищая организацию, вы должны соблюдать некий баланс. Если вы конечный пользователь, то обычно не беспокоитесь о таких вещах, но если вы системный администратор корпорации, наибольшей проблемой для вас будет необходимость отказаться от использования NTLM.
Так как Windows 8 и Windows 2012 всё еще по умолчанию поддерживает NTLM, потребуется некоторое время, чтобы отказаться от этого и перейти к использованию Kerberos, и я надеюсь, что мой инструмент в этом поможет. Он будет опубликован во вторник 31 июля, как только я вернусь домой, на сайте zfasel.com/tools. Он также имеется на DVD–диске этой конференции, так же, как и мои слайды. Если вы захотите сказать мне, насколько дерьмовым было моё выступление и моё демо, присылайте письма на адрес электронной почты dc20@zfasel.com или ищите в «Твиттере» мой ник @zfasel.
Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps до весны бесплатно при оплате на срок от полугода, заказать можно тут.
Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249 в Нидерландах и США! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?