Взломать за 137 секунд


Затрагивая тему конечных целей тестирований на проникновение, можно отметить, что в преобладающем большинстве случаев ключевой целью атаки является получение максимальных привилегий в корневом домене Active Directory. Как ни крути, но большинство корпоративных сетей построено на решениях Microsoft и как следствие в качестве централизованного управления идентификаторами и механизмами авторизации к информационным активам используется Microsoft Active Directory. Обладая соответствующими привилегиями в каталоге становиться возможным использовать их для развития огромного числа всевозможных сценариев атак. Поэтому, как правило, после "захвата" домена пентест переходит в другие плоскости. Например, в плоскость технологического аудита или в сторону развития атаки в направлении смежных систем, напрямую не завязанных на Active Directory (коммуникационное оборудование, ERP и пр.).

Итак, как же можно максимально сократить время на реализацию успешной атаки в отношении каталога домена? Прям до 1 минуты? Я постараюсь раскрыть секрет успеха в данной публикации.

Ntlm relay: начало

Давным-давно, когда компьютеры были большими брррр... где-то я уже это говорил. В общем, все началось с того, что в компании Microsoft придумали не самый безопасный протокол сетевой аутентификации - LanManager. За ним последовало наследие в виде NTLM, который решал только часть недостатков своего предшественника. Впоследствии, накрутив более тяжелые криптографические алгоритмы, появился NTLMv2, который вместе со своими предшественниками перекантовал и до наших дней.

Но вернемся в прошлое. В 1996 году появляется первое исследование на тему фундаментальной уязвимости в протоколе NTLM, а через пять лет появляется и полноценный пруфф. Суть атаки хорошо проиллюстрирована на следующей картинке.


В 2008 году, под давлением появившихся к тому времени готовых к употреблению сплоитов (1, 2, 3), компания Microsoft все-таки решает устранить уязвимость, однако делает это как нельзя криво и вектор атаки перерождается в новое амплуа.


Кроме того, пресловутый патч ms08-068 никак не стесняет атакующего, который осуществляет атаку в отношении кластера. То есть, сценарий 2001 года частично проигрывается и сегодня.

Ntlm relay: сегодня

Несмотря на то, что сегодня атака NTLM Relay широко известна, реализованы концепты межпротокольного перенаправления (например, HTTP->SMB и наоборот), которые в свою очередь портированы в популярные инструменты пентестера (например, MSF), но при всем этом многообразии до 2012 года не хватало универсального "швейцарского ножа". Им стала сборка под названием ZackAttack.

ZackAttack – это фреймворк, который позволяет проводить атаки NTLM-relay на качественно новом уровне. Наибольшую ценность этого фреймворка представляет возможность многократного использования сессии авторизованного пользователя для доступа к любым (с ограничениями) сервисам, авторизация в которых базируется на протоколе NTLM. Другими, не менее ценными достоинствами ZackAttack является автоматизация сценариев атаки (например, создание нового пользователя в Active Directory и добавление его в группу администраторов домена), а также возможность взаимодействия с атакуемыми системами используя пониженные привилегии (отличные от привилегий администратора) поверх proxychains (см. видео). Но стоит озвучить и половник дегтя в банке с медом. Дело в том, что Zack Fasel писал свою балалайку на скорую руку, в следствии чего для эффективного использования текущей сборки ZackAttack требуется бубен, а взаимодействие с атакуемым узлом по протоколу SMB поверх proxychains очень быстро заканчивается на первом же бинарном файле (аналогичная ситуация наблюдается и с передачей паролей через RPC).


ЗЫ. Если кто желает пофиксить баги ZackAttack и допилить поддерживаемый функционал, welcome! -- >> @zfasel

Альтернатива Ntlm relay в режиме реального времени

Ранее я уже писал, что в случае использования аутентификации по протоколу NTLMv1 существует возможность восстановить NT-хеш за приемлемое время, что в перспективе позволяет проводить атаки типа pass-the-hash. Однако этот метод не работает в случае использования аутентификации по протоколу NTLMv2.

Автор Intercepter-NG взглянул на проблему гораздо шире и глубже. Он задал себе вопрос: "Зачем нам релеить авторизацию жертвы, если она сама прекрасно авторизуется на нужном ресурсе?! Нам всего лишь нужно встать посередине и проксировать соединение, дождаться пока Host_A авторизуется на Host_B, а затем взять контроль над сессией в свои руки!" (подробнее). Логика идеи представлена на картинке ниже.


Реализация данной атаки получила название SMB Hijacking и уже доступна для экспериментов в последней версии Intercepter-NG. Have fun!

8 комментариев :

  1. Красиво. Достойно. Неплохо было бы и на android версию Intercepter-NG включить SMB Hijacking.

    З.Ы. Автор Интерцептора давечи искал дизайнера, чтобы его творения выглядели хорошо. Может есть желающие ему помочь с этим? Контакты у него на страничке:)

    ОтветитьУдалить
    Ответы
    1. На андроид не обещаю, а в консольной версии со временем появится.

      ps: желающих нет и скорее всего не будет...как в анекдоте "тут всем все по!@#"

      Удалить
  2. Дима, а ты сам пробовал релеить на ldap для добавления юзера в AD ?
    У меня нервов не хватает ковыряться в этом лесопеде Зака. Если все же релеил и можешь повторить - сохрани pcap дамп, я бы глянул и возможно реализовал подобное. Тестировал разные ldap клиенты, но везде используется либо подпись либо полное шифрование. Поэтому нужен реальный семпл, показывающий в каком именно виде нужно формировать команды.

    ОтветитьУдалить
    Ответы
    1. угук, делал и помню, что раскрутить этот функционал без помощи wireshark не удалось( как найду время, пришлю pcap

      >> везде используется либо подпись

      на контроллерах домена по умолчанию используется подпись((

      Удалить
    2. я и удивился, просто Зак в своей презентухе черным по белому пишет, что для LDAP подпись по умолчанию не требуется.
      небольшую надежду вселяет тот факт, что AD позволяет авторизоваться плейнтекстом.

      ps: так заработало или нет ? и пришлось ли отключать в групповых политиках обязательный сайнинг?

      Удалить
    3. хм... этот момент я упустил. сегодня проверю

      Удалить
    4. Условия при которых не работает:
      - Уровень проверки подлинности Lan Manager - NTLM2, отказывать LM и NTLM (при этом во всех опциях ниже норм)
      - Требование цифровой подписи для LDAP-сервера - требуется цифровая подпись (в дефолтах установлено, как не требуется)

      ссылка на pcap - https://docs.google.com/file/d/0Bwv6HYj6-f9tWnFtYUR6dTluakk/edit?usp=sharing

      Удалить
    5. Спасибо, будет время поковыряю.
      Не работает при минимальном уровне NTLMv2 потому что скорее всего ты релеил жертву с XP или что-то аналогичное, где используется SMBv1 и естественно NTLMv1.
      Если релеить семерку, то это условие можно будет отбросить.

      Удалить