Как обнаружить атаки, которые невидимы?

07.10.2019 | Ровнов Павел
Want create site? Find Free WordPress Themes and plugins.

В сети каждой организации можно встретить сервисы информационной безопасности из «джентельменского набора»: межсетевой экран (FW), антивирус (AV), систему предотвращения вторжений (IPS), – которые запускаются на периметре сети, на периметре ЦОД и на хостах. В некоторых случаях эти сервисы дополняются инспекцией подозрительных файлов в песочнице (Sandbox).

Во время работы над одним из наших проектов мы решили оценить эффективность данных сервисов на практике, а именно, попытаться атаковать сеть, которая защищена сервисами из «джентельменского набора»  и посмотреть, как эта атака будет обнаружена. Результат был неутешительный: злоумышленник организовал плацдарм внутри сети, добрался до интересующих его данных и выгрузил их за пределы сети. Историю нашей атаки и как в итоге мы решили усилить механизмы противодействия скрытным атакам, я расскажу в данной статье.

Тестовая атака состояла из двух этапов: 1) проникновение внутрь периметра сети и организация плацдарма 2) продвижение по сети, поиск, установление контроля над данными и их выгрузка за периметр сети.

Этап 1. Проникновение внутрь периметра сети

Поскольку задача первого этапа состояла в организации плацдарма, мы приняли решение «зайти» через рабочую станцию пользователя, используя в качестве вектора для атаки канал электронной почты. Для удаленного контроля над рабочей станцией планировалось использовать всем известную платформу Metasploit (как сервер C&C) и вредоносный код Meterpreter (как Remote Access Tool, или RAT). Для того чтобы обойти антивирус RAT передавался в закодированном виде в составе скрипта PowerShell, а в момент запуска на хосте-жертве скрипт PowerShell распаковывал вредоносный код в память и исполнял его. Поскольку скрипт PowerShell выглядел бы подозрительно в качестве почтового вложения, он был упакован в веб-страничку HTA (HTML Application) и запускался при запуске HTA.

В силу используемых механизмов скрытия вредоносной нагрузки электронное письмо, как ожидалось, прошло сигнатурный анализ антивируса, который был в составе почтового шлюза. После этого почтовый шлюз направил почтовое вложение на проверку в Sandbox. Антивирус в составе Sandbox также не обнаружил вредоносный код, но механизм запуска PowerShell из HTA классифицировался песочницей как подозрительный, и письмо блокировалось. Для обхода детектирования мы предприняли способ уклонения, который состоит в анализе контекста исполнения файла. Код веб-странички HTA мы дополнили скриптом JavaScript с такой логикой: если язык ОС, в которой запускается веб-страница HTA, не русский, то скрипт PowerShell не выполнять. Поскольку песочницей использовались образы виртуальных машин из поставки производителя, единственным языком ОС был английский, и такой простой трюк помог доставить вредоносный файл пользователю.

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

Этап 2. Продвижение по сети, поиск и выгрузка данных

Для сохранения скрытности при продвижении по сети мы избегали использования вредоносных программ, где это было возможно, отдавая предпочтение инструментам администрирования сети, как, например, Remote Desktop, WMI и PowerShell. Таким образом, атака могла оставаться ниже радаров «джентельменского набора» сервисов безопасности, расположенных на периметре ЦОД или на серверах.

Исследуя захваченную рабочую станцию пользователя, мы нашли ярлык для подключения по RDP к одному из серверов в ЦОД. Удачно то, что профиль подключения использовал сохраненные учетные данные пользователя, благодаря чему был получен доступ на сервер в ЦОД. Средствами модуля Meterpreter Incognito из памяти сервера были восстановлены сессионные ключи, которые позволяли запускать процессы от лица администратора сервера, который также имел полномочие администратора домена. С использованием ключей была создана новая учетная запись администратора домена, и, соответственно, был получен контроль над доменной инфраструктурой.

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

Почему существующие средства защиты пропустили атаку?

Первая причина в том, что проверки выполняются сигнатурными механизмами, которые с одной стороны обладают точностью (обнаруживают то, что совпадает с сигнатурой), но не обладают нужной чувствительностью: злоумышленнику достаточно изменить 1 бит вредоносного файла и сигнатура рискует не распознать известный вредоносный экземпляр. Sandbox хоть и использует анализ поведения однако принципиально не изменяет общий подход: для обнаружения применяются предустановленные шаблоны подозрительного поведения, которые выполняют ту же роль, что и сигнатуры для антивируса. И злоумышленник, зная о применяемых средствах защиты информации, видоизменяет вредоносные файлы таким образом, чтобы имеющиеся сигнатуры не смогли детектировать файл как вредоносный.

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

Обсудим идеи, с использованием которых, предположительно, можно обнаружить такие скрытные атаки как, например, атака из нашего теста.

Идея 1: Обнаружение атак, которые «пробили» периметр

По статистике между началом атаки и ее обнаружением проходит в среднем 175 дней (источник: Mandiant M-Trends 2018). Поскольку выполнение вредоносного кода для пробития периметра занимает какие-то секунды, все 175 дней атака развивается внутри сети. По этой причине требуется направить усилия на обнаружение атаки, или, точнее, ее следов, в предположении, что злоумышленник «пробил» периметр.

Обнаруживать атаку мы решили посредством инспекции информационных потоков в сети и вот почему:

  • Действия злоумышленника внутри периметра сети включают разведку, продвижение по сети, взаимодействие с серверами C&C, и поэтому неизбежно будут сгенерированы сетевые потоки, по которым атаку можно обнаружить
  • Для защиты актива достаточно направить копию сетевого трафика для анализа на сенсор, что не требует модификации информационных активов, как, например, при подходе с установкой агентов

Идея 2: Усилить механизмы обнаружения математическими методами анализа данных

Если взглянуть на тревожное сообщения любой системы IPS или AV, мы увидим, что в этом сообщении фигурирует имя эксплуатируемой уязвимости или вредоносного экземпляра. Получается, что для успешного обнаружения атаки и IPS, и AV должны знать об уязвимости или вирусном семействе еще до того, как вредоносное ПО атакует нашу сеть. Иначе, если сведений об атаке нет, как это, к примеру, бывает в случае принципиально новой атаки (zero-day) или, что чаще, при модификации известного вредоносного экземпляра, атака не обнаруживается и не блокируется.

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

Приведу пример решения задачи классификации средствами алгоритма машинного обучения с учителем: 1) на вход алгоритму машинного обучения подается массив данных, который состоит из пар <набор признаков, маркер> 2) создается модель, которая выражает «закономерность», существующую между наборами признаков и поставленными им в соответствие маркерами 3) на основе модели алгоритм  сопоставляет какому-то новому набору признаков маркер.

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

  • Алгоритм машинного обучения с учителем random forest применяется для обнаружения С&C: анализируя признаки HTTP заголовков, алгоритм классифицирует запросы как относящиеся к управлению хостом
  • Алгоритм машинного обучения без учителя K-means позволяет моделировать поведение пользователей в сети, регистрируя атаки как отклонение от нормы
  • Байесовские сети используются для вычисления вероятности того, что атака имеет место при наблюдаемой цепочке событий, что позволяет динамически назначать приоритет событиям, которые генерирует IDS

Первое срабатывание системы относилось к стадии продвижения по сети. Если интерпретировать это событие, то оно состоит в использовании одной из функций удаленного выполнения кода, которая выполнялась от лица новой (созданной злоумышленником) учетной вместе с ранее не встречавшейся комбинацией имен хостов (источник и назначение) и идентификатора RPC UUID.

Второе срабатывание IDS состояло в обнаружении выгрузки данных за пределы сети. В данном случае выполнялась передача большого объема данных на хост за пределами организации, что было классифицировано как аномалия с точки зрения изученного поведения в сети.

Были также и ложные срабатывания: трафик TeamViewer был классифицирован как поведение External Remote Access. Хоть TeamViewer в принципе мог использоваться злоумышленником для удаленного управления хостом, в нашем случае использование данного приложения не было связано с атакой.

В результате 2 шага атаки (продвижение по сети, выгрузка данных) были обнаружены при этом сами способы проникновения внутрь периметра сети, или инструменты, которые использовал злоумышленник, не принципиальны для этого результата. И при условии автоматизированного реагирования на события атака может быть блокирована еще до того, как будет нанесен ущерб (пример сценария реагирования: запросить через API системы IDS сведения об инциденте, после чего сконфигурировать на коммутаторе ACL, блокируя скомпрометированные хосты).

Что в  итоге? Если допускать, что активы сети стали целью злоумышленника, «джентельменский набор» сервисов вряд ли обнаружит и заблокирует такую атаку. Смогут ли алгоритмы машинного обучения помочь? В тесте алгоритмы сработали, но, конечно, хотелось бы посмотреть на результаты — боевой ситуации. Планирую поделиться этими результатами в новых статьях. Оставайтесь на связи!

Did you find apk for android? You can find new Free Android Games and apps.
Комментариев пока нет
Добавить комментарий