Статья затрагивает вопросы связи с сервером злоумышленника и эксфильтрации данных с машины жертвы. Наличие такой связи является жизненно важной частью большинства кампаний. Для установления надежной связи существует ICMP-туннелирование, которое позволяет передавать данные с машины жертвы на сервер злоумышленника.
По мере роста угроз кибербезопасности, менялся и ландшафт средств обеспечения безопасности. От брандмауэров, систем обнаружения и предотвращения вторжений (IDS & IPS) и систем управления информационной безопасностью и событиями безопасности (SIEM) до аналитики поведения пользователей и объектов (UEBA), анализа протоколов с отслеживанием состояния и стеганографии — мониторинг трафика становится все более жестким, и злоумышленники вынуждены найти новые способы остаться незамеченными.
Одним из основных методов запутывания трафика является туннелирование протокола. При туннелировании протокола вместо явной отправки пакетов данных по выбранному протоколу (например, TCP) злоумышленник будет инкапсулировать пакеты в другой протокол. Такое поведение помогает скрывать вредоносный трафик внутри, казалось бы, безобидных форм связи, способствуя уклонению от обнаружения. Кроме того, туннелирование протокола можно использовать для шифрования данных и маскировки личности злоумышленника.
Помимо создания скрытого канала с С2-сервером и вывода данных между двумя машинами, туннелирование протокола также можно использовать для обхода авторизации на портале для платного Wi-Fi. Во многих случаях системы порталов блокируют большую часть TCP- и UDP-трафика к/от незарегистрированных хостов, но разрешают другие протоколы, такие как ICMP, DNS и т. д. Хакер может использовать это, туннелируя свой трафик внутри пакетов разрешенного протокола.
Расширяя традиционное туннелирование протоколов, киберпреступник может использовать протоколы, не относящиеся к прикладному уровню, которые менее подвержены мониторингу на наличие злонамеренных действий.
ICMP
Одной из распространенных форм туннелирования протоколов, не относящихся к прикладному уровню, является ICMP-туннелирование.
Internet Control Message Protocol (ICMP) — это протокол сетевого уровня OSI (3 уровень), используемый для обнаружения и контроля проблем маршрутизации в сети. Когда сетевые устройства обнаруживают определенные ошибки, они создают ICMP-пакеты для информирования конечных точек об ошибках.
Например, когда в сети возникает маршрутная петля (routing loops), IP-пакеты будут бесконечно циркулировать по петле, и в конечном итоге их значение TTL упадет до нуля. В этот момент последний маршрутизатор, получивший пакет, отправит ICMP-сообщение «Время истекло: TTL истек при передаче» на исходный IP-адрес пакета.
ICMP-сообщения также можно использовать для управления маршрутизацией. Например, если конечная точка отправляет пакет по неэффективному маршруту, маршрутизаторы на пути могут обнаружить это поведение и отправить ICMP-пакет «Redirect Message», который предложит лучший маршрут для использования в следующий раз.
В целом, ICMP-протокол не реализован на конечных машинах, за исключением двух известных инструментов:
ICMP-туннелирование
Приведём в пример, как ping использует echo-пакеты ICMP для проверки доступности хоста в сети. Пингующий хост отправляет echo-пакет с некоторыми данными на принимающий хост. Затем пингуемый хост ответит echo-ответом, содержащим те же данные. Стоит отметить, что при «пинговании» данные могут быть произвольными.
Злоумышленники могут использовать ICMP-туннелирование для сокрытия вредоносного поведения в сети. Вместо того, чтобы явно связываться с машиной по выбранному протоколу, каждый пакет будет вставлен в пакет «echo» или «echo reply». Коммуникационный поток теперь будет представлять собой серию операций «ping», а не, например, TCP-соединение.
Почему это проблемаICMP предназначен для обнаружения и контроля сетевых проблем, поэтому его способность устанавливать канал данных между двумя машинами часто упускается из виду. Более того, поскольку ICMP является важной, хорошо зарекомендовавшей себя частью набора протоколов Интернета и протоколом, не относящимся к прикладному уровню, предприятия с меньшей вероятностью будут следить за ним так тщательно, как за обычными подозреваемыми в краже данных — HTTP, HTTPS, TCP, IMAP и т. д.
Кроме того, смягчение последствий не является тривиальным, поскольку во многих случаях функции ICMP невозможно полностью отключить без существенного влияния на работу пользователя.
Существует несколько общих наборов инструментов для ICMP-туннелирования и каждый из них предоставляет немного разные функции.
ICMPSH
Icmpsh — это простой набор инструментов для запуска обратных оболочек на компьютерах с Windows. Он состоит из клиента, написанного на C и работающего только на компьютерах с Windows, и POSIX-совместимого сервера, доступного на C, Python и Perl.
Некоторые из примечательных особенностей icmpsh:
Ptunnel
ptunnel предназначен для обфускации и туннелирования TCP-трафика. При выполнении клиент ptunnel будет туннелировать TCP через ICMP на назначенный сервер ptunnel. Сервер будет действовать как прокси и будет пересылать TCP-пакеты в их фактическое место назначения и обратно. Этот инструментарий может работать только на POSIX-совместимых ОС.
Некоторые из особенностей ptunnel:
Icmptunnel
Icmptunnel имеет похожую на ptunnel архитектуру, но в отличие от ptunnel он может туннелировать любой IP-трафик. Кроме того, Icmptunnel туннелирует все IP-пакеты клиента, а не только один сеанс, порт и т. д. Эти функции делают инструмент полезным для обхода порталов аутентификации Wi-Fi, но менее полезным для скоординированных кибератак. И клиент, и сервер должны быть совместимы с POSIX.
Некоторые из примечательных особенностей icmptunnel:
В этой демонстрации мы будем использовать icmpsh для туннелирования сеанса обратной оболочки между атакующей машиной на Kali Linux и машиной-жертвой на Windows 10.
Мы выбрали icmpsh, потому что этот инструмент портативен и не требует прав администратора для запуска на машине жертвы.
Демонстрационная схема. Злоумышленник 192.168.68.113, жертва 192.168.68.115
Шаг 1. Отключение echo-ответов ядра
Перед запуском icmpsh нам нужно запретить ядру отвечать на эхо-запросы ICMP. Большинство инструментов ICMP-туннелирования реализуют механизмы для синхронизации потока данных между двумя машинами, и ответы ядра могут привести к неожиданным результатам.
Чтобы отключить ping-ответы ядра, мы добавили в файл «/etc/sysctl.conf» следующую строку: «net.ipv4.icmp_echo_ignore_all=1».
Шаг 2 — Запуск сервера и клиента Icmpsh
Сначала мы запустим сервер icmpsh на нашей машине с Kali Linux. Этот инструмент очень прост в использовании и требует всего два аргумента: IP-адреса злоумышленника и жертвы.
Наша машина ожидает ping-запросов от нашей жертвы (IP 192.168.68.115). Теперь мы можем запустить клиент, который представляет собой исполняемый файл, загруженный с GitHub. Вот его аргументы:
Наша машина Kali находится по IP-адресу 192.168.68.113, поэтому это последняя команда:
Запуск icmpsh-клиента на компьютере с Windows 10.
На атакующей стороне мы начинаем получать данные по SSH:
Icmpsh-сервер, отображающий выходные данные клиентской оболочки
Шаг 3 – Выполнение команд оболочки
Теперь, когда все настроено, у нас есть работающая обратная оболочка (reverse shell) на нашем сервере Kali. Например, мы можем ввести «systeminfo» для сбора информации об устройстве жертвы:
При проверке сетевого трафика между двумя машинами мы видим большое количество ICMP-пакетов:
Обширный ICMP-трафик между злоумышленником и жертвой, перехваченный Wireshark после запуска обратной оболочки
Поскольку icmpsh не шифрует данные, мы можем видеть текст оболочки, внедренный внутрь дейтаграмм:
Вывод обратного командного интерпретатора в виде открытого текста (отмечен синим), замаскированный внутри ICMP-пакета.
В целом, ICMP-трафик невозможно заблокировать полностью, поэтому меры по смягчению последствий должны быть сосредоточены на минимизации рисков с помощью мер обнаружения сети и конечных точек.
В продуктах сетевой защиты различных поставщиков реализованы интеллектуальные эвристики и алгоритмы машинного обучения для обнаружения и предотвращения ICMP-туннелирования. Некоторые общие шаблоны туннелирования, которые могут быть обнаружены:
Кроме того, в дополнение к традиционным методам обнаружения, которые основаны на централизованном анализе трафика через брандмауэры, IPS-системы и т. д., некоторые продукты могут обнаруживать и предотвращать попытки туннелирования непосредственно на конечных точках без необходимости в назначенных сетевых устройствах.
5778 К? Пф! У нас градус знаний зашкаливает!