Забираем почту без sms и регистрации

    Не прошло и месяца, как мы решили, что пора написать статьи по итогу наших выступлений на OFFZONE-2018. Первая статья будет исполнена по мотивам доклада с FastTrack «MS Exchange Relay attack without sms and registration».

    При проведении RedTeam использование фишинга является обязательным – можно построить великолепную защиту на периметре, но какой-нибудь пользователь поведется на фишинг и даст злоумышленнику возможность оказаться сразу внутри сети. Все прекрасно знают, что в основном для фишинга используют ссылки на сторонние сайты, по которым пользователю нужно перейти или документ с макросом. Службы безопасности под угрозой санкций «дрессируют» пользователей, говоря, что ни в коем случае нельзя нажимать на кнопочку «включить содержимое». И в принципе успех есть – пользователи на такого рода рассылки ведутся все реже. Но злоумышленники тоже не стоят на месте – фишинг становится все более интересным. От нас Заказчики также требуют каких-то интересных фишинговых рассылок. Да и мы сами заинтересованы в том, чтобы сотрудники Заказчика повелись на фишинг, и мы смогли им объяснить, на что следует обращать внимание при получении письма.

    Почему именно такие методы для фишинга?


    Многие компании используют MS Exchange в качестве корпоративного почтового сервера. Это удобно для компании, но также удобно и для злоумышленника. Злоумышленнику интересно отправлять с почты жертвы сообщения, а также скачивать какие-либо письма. Мы, как RedTeam, хотим полностью имитировать действия злоумышленника и нам интересно совершать с почтой такие же действия. Естественно, в нашем случае скачивание почты происходит не в полном объеме, и Заказчик об этом предварительно уведомляется. Ибо конфиденциальная информация, все дела.

    Для осуществления такого рода действий нам нужна почтовая сессия пользователя. Первое что нужно продумать – как такую сессию перехватить. Решили воспользоваться старым добрым NTLM Relay (т.к. в большинстве компаний до сих пор используется NTLM). Да, в случае Kerberos работать не будет – можно закрывать статью и дальше не читать.

    NTLM Relay известен давно и реализаций его также достаточно. Мы тоже не стали изобретать велосипед и взяли одну из реализаций с GitHub от Arno0x0x. Однако все оказалось не так просто и пришлось немного дописывать. А именно:

    • сделать, чтобы все работало со всеми современными версиями ОС Windows (не работало на win10 и win server2016);
    • сделать, чтобы работало с последним Impacket’ом;
    • добавить удобную систему логирования.

    Доработанную версию можно найти на нашем github.

    В качестве контейнера для доставки были выбраны документы Microsoft Office, так как они наиболее часто пересылаются по корпоративной почте, и пользователи их открывают. Причем было решено использовать вложенные документы (SubDocument), потому что это легальная операция с документом, и ни один антивирус не среагирует на такой файл. В качестве вложенной ссылки можно включать как smb, так и http-ресурсы. Подробнее будет рассмотрено далее.

    Как сформировать фишинговый документ?


    В качестве примера рассмотрим совершенно «чистый» документ mydoc3.docx, который является самым обычным документом Microsoft Word.



    Любой документ Microsoft Office является zip-архивом, состоящим из xml, которые в итоге и формируют ваш красивый документ. Для того, чтобы сделать вложенный документ, нам необходимо внести изменения в файлы с расширением .rels. В зависимости от версии MS Office изменения необходимо внести либо в document.xml.rels, либо в settings.xml.rels. В данной статье рассматривается Office 365, и изменения вносятся в settings.xml.rels.



    В качестве вложенного документа даем ссылку на ресурс, на котором находится этот самый вложенный документ. В нашем случае вложенный документ находится на smb-ресурсе \\127.0.0.1\subdoctest\



    Сохраняем изменения и открываем полученный документ. В случае успеха документ будет выглядеть следующим образом:



    Однако в таком виде он вызывает подозрения у пользователей. Надо его немножечко изменить и постараться скрыть ссылку при помощи применения различных стилей и белого цвета шрифта.



    В итоге получили совершенно не подозрительный документ, при открытии которого Word сам пойдет на ресурс за своей частью, которая прописана у него как вложенный документ.

    А куда все будет приходить?


    Стучаться документ будет на ваш сервер (собственно, на него ссылку и должны дать). Сервер может быть SMB-сервером или HTTP-сервером (смотри кейсы дальше). В данной статье рассматривается только пример отправки сообщения с почты пользователя, сессию которого мы перехватили.

    Для того, чтобы все запустить, достаточно минимального набора – последний Impacket, тулза MSExchangeRelay и Python2.7.
    Запускаем все командой:

    python MsExchangeRelay.py -v -t https://exchange_addr/ews/exchange.asmx -r sendMail -d "example@email.com" -s Hello -m sampleMsg.html -o out.txt

    exchange_addr – адрес exchange сервера Заказчика
    example@email.com – почтовый адрес на который вы хотите отправить сообщения с почты жертвы.
    -s Hello – тема письма
    -m sampleMsg.html – тело письма, которое хотите отправить
    -o out.txt – место куда пишутся логи.
    

    После запуска на сервере поднимаются SMB и HTTP сервера, которые ожидают подключения к ним.



    После успешного коннекта видно, с каким логином и с какого IP-адреса залогинился пользователь:



    Как теперь это применять?


    Применять такой способ можно на разных кейсах.

    Кейс 1. Внешний нарушитель, у Заказчика открыт исходящий 445 порт

    В таком случае можно использовать ссылку на smb-ресурс. Вся прелесть такой ссылки заключается в том, что ОС Windows не хочет лишний раз беспокоить пользователя, если сама может справиться. Соответственно, при открытии документа с ссылкой на smb-ресурс Windows сама отправляет доменные креды пользователя данному ресурсу. То есть для пользователя не происходит ничего. Пользователь открывает документ. И все. Подозрения не вызывает ничего. А у нас уже есть пользовательская почтовая сессия.
    Открытый порт 445, хоть и редко, но встречается до сих пор. Поэтому его тоже рассматриваем и оставляем.

    Кейс 2. Внутренний нарушитель


    Здесь мы также применяем ссылку на smb-ресурс. В случае удачного перехвата сессии на указанный почтовый адрес придет письмо, которое мы указали.

    Кейс 3. Внешний нарушитель и закрыт исходящий порт 445


    Можем использовать ссылку на HTTP-сервер. Однако в данном случае все будет не так прозрачно для пользователя. При открытии документа пользователь увидит стандартное окошко от Windows, в котором запрашивается логин и пароль пользователя. Момент, который может смутить пользователя – доменное имя evil_http_server – оно должно быть максимально похоже на доменное имя exchange сервера Заказчика.

    После того, как пользователь введет свои креды, мы получаем его сессию и отправляем письмо.







    Вместо заключения


    NTLMRelay можно оборачивать в разные контейнеры и придумывать совершенно разные подходы к фишингу пользователей. Пока жив NTLM – живы и такого рода атаки. Так что экспериментируйте!

    P.S. Спасибо организаторам OFFZONE-2018 за отличную конференцию!
    • +13
    • 3,6k
    • 1
    Поделиться публикацией
    Комментарии 1
      0
      Интересное было выступление, спасибо.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое