Positive Technologies

Поиск следов атак в сетевом трафике. Часть 2

Скачать в PDF

Поиск следов атак в сетевом трафике. Часть 2

Скачать в PDF

Содержание

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

Это вторая часть исследования. Первая часть доступна здесь.

Анализируем подключения к командным серверам

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

Выявляем использование туннелей

Злоумышленники могут передавать вредоносный код внутри туннеля, установленного с использованием распространенного протокола, например DNS, SMTP, ICMP. Есть два подхода к выявлению туннелей: выявление признаков самого туннеля или индикаторов использования конкретной утилиты для его создания. В первом случае нужно знать, какие особенности в сетевом трафике указывают на наличие туннеля для каждого протокола. К примеру, для протокола DNS аномалией являются большие размеры TXT-записей. Признаком ICMP-туннеля может служить размер пакетов Echo Request и Echo Response: он лишь незначительно изменяется в зависимости от ОС, поэтому если пакет заметно больше обычного, это говорит об аномалии. Косвенным признаком может стать увеличение ICMP-трафика: обычно в сети его мало, а при передаче большого количества данных через туннель будет заметный всплеск.

Чаще всего для обмена данными с командным центром или доступа к каким-либо внешним ресурсам злоумышленники используют широко распространенные протоколы прикладного уровня — HTTP, HTTPS, DNS; это помогает скрыть нелегитимный трафик в общем потоке. Поэтому в первую очередь необходимо уметь определять используемые протоколы передачи данных и разбирать их для извлечения данных.

Второй подход — обнаружение отдельных утилит. Например, использование инструментов ICMPTX и ICMPSH видно по особенностям ICMP-пакетов.

Рисунок 1. DNS-туннель
Рисунок 1. DNS-туннель

Ловим вредоносные скрипты

В последнее время в атаках все чаще применяются скриптовые языки программирования. Перед тем как выполнить скрипт, его нужно передать на целевой узел. Это может быть не только файл скрипта с понятным для интерпретаторов расширением (.ps1, .vbs, .bat или др.) или макрос внутри офисного документа. Преступники часто прибегают к другим методам, которые позволяют не оставлять лишних следов на узле. Тело скрипта может передаваться по сети, например, в виде ответа веб-сервера внутри HTML-кода, TXT-записи в DNS-ответе, закодированной строчки с командами на исполнение, передаваемой по протоколу WMI.

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

Рисунок 2. Код утилиты JSRat, передаваемый в ответе веб-сервера
Рисунок 2. Код утилиты JSRat, передаваемый в ответе веб-сервера

Борьба с обфускацией

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

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

Как правило, вредоносные программы используют те или иные методы кодирования информации. Наиболее распространенными являются Base-подобные кодировки, чаще всего это Base64. К примеру, ответ от агента Cobalt Strike содержит данные внутри POST-запроса, закодированные стандартной кодировкой Base64. При исследовании сетевого трафика нужно определять использование (как минимум) Base64 и применять правила анализа уже к декодированному содержимому.

Рисунок 3. Передача данных в кодировке Base64
Рисунок 3. Передача данных в кодировке Base64
Рисунок 4. Декодирование исполняемого файла
Рисунок 4. Декодирование исполняемого файла

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

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

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

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

Как выявить атаку, если трафик зашифрован

Есть разные подходы к детектированию подозрительной активности в шифрованном трафике. Можно, например, расшифровывать трафик посредством атаки типа «человек посередине», однако использование нестандартных протоколов, а также SSL pinning (аутентификация клиента по сертификату при установлении SSL-соединения) вносят ограничения на применение активных методов анализа.

С другой стороны, существуют пассивные методы анализа; например, признаки вредоносной активности в зашифрованном трафике могут быть обнаружены через побочные каналы. Одним из таких методов является анализ длин пакетов и порядка их следования (bit.ly/2USvWu2) с учетом закономерностей, выявленных аналитиками при исследовании определенных инструментов. Алгоритм работы вредоносной программы определен заранее. Агент на зараженном узле должен сообщить командному серверу свой идентификатор, наименование системы, в какой он запущен, и другую служебную информацию. Все это составляет внутренний протокол, или алгоритм взаимодействия клиента и сервера. И поскольку любой протокол заранее фиксирован, это зацепка для аналитика.

Итак, при заражении узла программа должна сообщить краткую информацию о нем. Такая информация при шифровании формирует пакеты определенной длины. Можно установить такие правила анализа длин запросов клиента и ответов сервера, чтобы однозначно идентифицировать определенное семейство ВПО. Точная длина начальных пакетов может варьироваться, но при задании достаточно узких рамок можно добиться баланса между true positive и false positive.

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

Исследуем хакерский инструментарий

В большинстве своем киберпреступники используют уже готовые фреймворки, поэтому при поиске подозрительного трафика важно знать особенности, характерные для различных инструментов. Так, среди APT-группировок популярен фреймворк Koadic, который передает полезную нагрузку в виде ответа веб-сервера внутри HTML-кода. Сама полезная нагрузка при этом зашифрована, а к расшифровщику применены различные техники обфускации кода, в том числе случайные имена пользовательских функций, их аргументов и переменных. Зашифрованный скрипт дополнительно закодирован. Для обхода средств обнаружения вторжений (IDS) авторы скрывают имя функции, используемой для выполнения расшифрованного скрипта.

Рисунок 5. Обфускация полезной нагрузки в Koadic
Рисунок 5. Обфускация полезной нагрузки в Koadic

Ниже представлен ответ от агента Koadic командному серверу. Часть служебной информации, например тип исполненного задания, создатели хранят в собственных HTTP-заголовках. Идентификаторы сессии и задания задаются случайным образом, а путь к библиотеке mshtml обфусцирован, чтобы обойти сигнатуры IDS, но вид URI все равно является одним из индикаторов, по которому можно узнать Koadic.

Рисунок 6. Запрос, свидетельствующий об использовании Koadic
Рисунок 6. Запрос, свидетельствующий об использовании Koadic

Опишем несколько подходов, которые помогают выявить шифрованное соединение с использованием Meterpeter из состава фреймворка Metasploit.

Долгое время хорошо работало правило детектирования шелла Meterpreter reverse_https, которое анализировало SSL-сертификат, с которым устанавливалось защищенное соединение. В сертификате, сгенерированном с помощью Metasploit, поля issuer и subject содержат идентичные наборы из шести relative distinguished name (RDN), расположенных в фиксированном порядке.

Рисунок 7. Содержимое полей issuer и subject
Рисунок 7. Содержимое полей issuer и subject

Метод, основанный на выявлении сертификата, подходит для обнаружения простых вариантов шеллов с параметрами по умолчанию. Но в Metasploit есть возможность использовать сертификаты, созданные через другие утилиты, или имитировать сертификат легитимного ресурса (bit.ly/2XloRDJ). По результатам исследований специалисты PT Expert Security Center пришли к выводу, что на данный момент самый оптимальный подход — детектирование, основанное на длинах пакетов зашифрованного трафика.

Другим примером детектирования служит обнаружение работы Meterpreter reverse_tcp. В начале соединения происходит отправка пакета определенной длины, внутри которого передается публичный ключ RSA-2048. Такой пакет дополнительно защищен шифром гаммирования (XOR), однако из-за малой длины гаммы в структуре пакета можно выявить повторяющиеся части. На рисунке ниже выделены подобные фрагменты, а также сам зашифрованный ключ.

Рисунок 8. Передача публичного ключа при установке соединения через Meterpreter reverse_tcp
Рисунок 8. Передача публичного ключа при установке соединения через Meterpreter reverse_tcp

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

Рисунок 9. Расшифровка публичного ключа
Рисунок 9. Расшифровка публичного ключа

Для фреймворка Cobalt Strike также были выявлены неизменные паттерны, связанные с особенностями используемого SSL-сертификата, которые позволяют обнаружить скрытую коммуникацию.

Заключение

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

Анализ сетевого трафика может служить дополнением к уже существующим средствам обнаружения атак. Копия сетевого трафика позволяет восстановить последовательность действий злоумышленников — проанализировать взаимодействия между узлами сети, подключения к внешним ресурсам, командным серверам и детально разобраться в произошедшем инциденте. Вместе с проверкой передаваемых по сети файлов в песочнице такой подход дает возможность обнаружить даже сложную APT-атаку.