Idle scan

Idle scan — это метод сканирования портов TCP (Transmission Control Protocol), предназначенный для определения открытых портов на целевом компьютере без оставления следов, ведущих обратно к инициатору сканирования[1]. Такой подход достигается с помощью подмены IP-адреса — атакующий имитирует другой компьютер, называемый «зомби», чтобы целевая система считала, что обращение идёт от этого посредника. Различные реакции целевой машины позволяют, анализируя состояние зомби, сделать вывод о статусе интересующего порта[2].

Общее описание

Idle scan может выполняться с помощью сетевых утилит типа nmap и hping. Атака включает отправку поддельных пакетов на целевую машину с целью выявления определённых характеристик поведения другого компьютера — «зомби». Уникальность метода в том, что между атакующим и жертвой нет никакой прямой связи: взаимодействие осуществляется только между атакующим и «зомби».

Этот эксплойт может использоваться как для сканирования портов, так и для изучения доверительных отношений по IP между компьютерами. При этом различия в реакции целевой системы можно выявлять, используя разных «зомби» — с разными привилегиями или сетевыми параметрами[3].

Главная задача idle scan — «проверить набор портов и сохранить полную незаметность для целевой системы»[4].

Происхождение

Метод idle scan был открыт в 1998 году Сальваторе Санфилиппо[5]. Приём быстро получил распространение у «чёрных хакеров» для скрытого обнаружения открытых портов перед атакой. Изначально атака называлась dumb scan («глупое сканирование»), но после публикации proof of concept-утилиты idlescan (сканер 16-битного IPID) Филипе Алмейдой в 1999 году прижился термин idle scan[6]. Иногда такую атаку называют zombie scan («сканирование с зомби»), что связано с ролью посредника в процедуре.

Основы TCP/IP

Архитектура Интернета строится на стекe протоколов TCP/IP. Протокол IP — основной на сетевом уровне: он отвечает за доставку датаграмм от исходного хоста к получателю по IP-адресу. Для этого определены специальные методы адресации и структуры инкапсуляции, а протокол носит безсоединительный характер. Каждый IP-пакет снабжён уникальным идентификатором (IPID), который отличает его от других пакетов источника.

TCP реализует надёжную порядочную доставку потока байт между программами на разных машинах. Крупнейшие приложения интернета World Wide Web, электронная почта, файловый обмен, используют TCP. Сервис на хосте определяется парой: адрес и номер порта, всего — 65536 на узел, хотя большинство служб используют ограниченный диапазон стандартных портов.

Некоторые сканеры исследуют только самые распространённые и потенциально уязвимые порты (см. Список портов TCP и UDP).

Результаты сканирования обычно делят на три класса:

  • Открыт (Open/Accepted): сервис на порту отвечает.
  • Закрыт (Closed/Denied/Not Listening): порт недоступен, подключение отвергается.
  • Фильтруется (Filtered/Dropped/Blocked): нет ответа от хоста.

Открытые порты таят две основные угрозы:

  1. Уязвимости и нестабильность программы-сервиса (открытые порты).
  2. Уязвимости и проблемы ОС хоста (открытые и закрытые порты).

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

Основные принципы работы

Idle scan эксплуатирует предсказуемость поля идентификатора IP-пакета (IPID) из заголовка IPv4: стандартно IPID каждого нового пакета увеличивается на фиксированное значение, обычно на 1. Таким образом, сравнив значения этого поля для двух запросов, можно судить о количестве отправленных между ними пакетов.

Сначала злоумышленник ищет хост с последовательной и предсказуемой генерацией IPID. Большинство современных ОС - Linux, Solaris, OpenBSD, Windows Vista, не подходят для роли «зомби» — там применяются патчи[7], случайным образом меняющие IPID[1]. Поэтому на эту роль выбирают компьютер, поведение которого максимально простое и предсказуемое[2].

Далее атакующий отправляет SYN-пакет на целевой порт, подделывая IP-адрес отправителя так, чтобы им был выбранный «зомби». Если порт на цели открыт, система отвечает SYN/ACK-пакетом зомби-компьютеру. Не понимая этого соединения, зомби отправляет в ответ RST-пакет для сброса сессии — тем самым увеличивая свой счётчик IPID.

Для обнаружения таких изменений атакующий снова обращается к зомби и замеряет величину IPID. Если она увеличилась (например, на 2), значит интересующий порт был открыт; если только на 1 — вероятно, порт закрыт. Метод предполагает, что в период сканирования зомби не занят другой активностью; иначе возможны ложные срабатывания.

Поиск хоста-зомби

Первый этап атаки — подобрать подходящий зомби. Требуется, чтобы система увеличивала IPID глобально, а не по отдельным хостам. Зомби должен быть «пассивным» (idle) — внешняя активность приведёт к перескокам IPID и искажению результатов. Чем ниже задержка между участниками, тем быстрее проходит сканирование[8].

Стоит помнить, что при открытом порте счётчик IPID увеличивается на 2:

1. Атакующий — цель: SYN;

2. Цель — зомби: SYN/ACK;

3. Зомби — цель: RST (IPID +1);

Далее атакующий отправляет SYN/ACK к зомби и тот отвечает RST (IPID +1). Общий прирост IPID за цикл — 2.

При попытке idle scan инструмент (например, nmap) тестирует кандидата на роль зомби и сообщает о возможных проблемах. Если хост не подходит — пробуют следующий. Таких устройств достаточно, особенно простых сетевых устройств с минимальным софтом. Хороших зомби можно использовать повторно. Иногда для этих целей удаётся задействовать сторонние публичные сервисы, вызывающие исходящие соединения после пользовательских действий, что может имитировать работу пассивного зомби[9].

Использование hping

Сканирование idle scan через программу hping на низком уровне позволяет на практике увидеть механику метода. Предположим, цель — 172.16.0.100, зомби — 172.16.0.105. Проверяются открытый и закрытый порты.

Сначала проверяют, что зомби действительно «пассивен»:

[root@localhost hping2-rc3]# ./hping2 -S 172.16.0.105
HPING 172.16.0.105 (eth0 172.16.0.105): S set, 40 headers + 0 data bytes
len=46 ip=172.16.0.105 ttl=128 id=1371 sport=0 flags=RA seq=0 win=0 rtt=0.3 ms
...

ID пакетов должны меняться строго по порядку. Если меняются хаотично — зомби не подходит.

Далее отправляют SYN с подменным IP (порт 22):

# hping2 —spoof 172.16.0.105 -S 172.16.0.100 -p 22 -c 1
HPING 172.16.0.100 (eth0 172.16.0.100): S set, 40 headers + 0 data bytes
--- 172.16.0.100 hping statistic ---
1 packets transmitted, 0 packets received, 100% packet loss
...

Ответа нет (100% потерь) — целевой узел ответил напрямую зомби, а не атакующему.

Проверяем ID зомби:

# hping2 -S 172.16.0.105 -p 445 -c 1
len=46 ip=172.16.0.105 ttl=128 DF id=1381 sport=445 flags=SA ...

ID увеличился на 2 — один был использован на ответ цели.

Повторяем процедуру для закрытого порта (23):

# hping2 -S 172.16.0.105 -p 445 -c 1; hping2 —spoof 172.16.0.105 -S 172.16.0.100 -p 23 -c 1; hping2 -S 172.16.0.105 -p 445 -c 1
...

Теперь ID увеличился только на 1 — пакет ответа цели не спровоцировал действия зомби, т. е. порт закрыт.

Использование nmap

Первое действие — подбор зомби в локальной сети:

nmap -v -O -sS 192.168.1.0/24

Это сканирование диапазона адресов с определением операционных систем и поведением IPID. Если выведена строка «IP ID Sequence Generation: Incremental», хост годен как зомби. Не все ОС подходят: некоторые, как Solaris, создают отдельный IPID для каждого удалённого узла; перегруженные системы также не подходят.

Другой подход — запуск NSE-скрипта ipidseq, который автоматически классифицирует генерацию IPID у целевых хостов.

Когда подобран зомби, выполняют собственно idle scan, подставляя нужные адреса:

nmap -P0 -p <порт> -sI <IP зомби> <цель>

Изображения выше показывают оба этапа успешного сканирования.

Эффективность

Несмотря на то, что современные ОС всё чаще защищены от подобного использования[1], ряд популярных систем по-прежнему уязвимы, благодаря чему idle scan остаётся эффективным. После завершения успешной атаки в системе жертвы не остаётся следов IP-адреса атакующего, ни в журналах фаервола, ни в журналах систем обнаружения вторжений. Эта техника также позволяет обойти фаервол, если используется «зомби», имеющий больший уровень доверия на целевом сервере[10].

Примечания

  1. 1 2 3 Erikson, Jon. HACKING: The Art of Exploitation. — San Francisco : NoStarch Press, 1977. — P. 264. — ISBN 1-59327-144-1.
  2. 1 2 What is Idle Scan? (амер. англ.). ICterra Information and Communication Technologies (1 февраля 2017). Дата обращения: 9 сентября 2020. Архивировано 26 октября 2020 года.
  3. Son, Do Introduction to Idle/Zombie Scanning • Penetration Testing (амер. англ.). Penetration Testing (1 декабря 2017). Дата обращения: 9 сентября 2020. Архивировано 12 июня 2024 года.
  4. Trapickin, Roman (сентябрь 2015). “Who Is Scanning the Internet?” (PDF). Semantic Scholar [англ.]. S2CID 55929767. Архивировано из оригинала (PDF) 2019-02-20. Дата обращения 2020-09-09. Используется устаревший параметр |url-status= (справка); Проверьте дату в |date= (справка на английском)
  5. Sanfilippo, Salvatore new tcp scan method (18 декабря 1998). Дата обращения: 28 сентября 2010. Архивировано 14 мая 2004 года.
  6. Filipe Almeida (aka LiquidK). idlescan (ip.id portscanner) (3 декабря 1999). Дата обращения: 9 ноября 2010. Архивировано 16 августа 2025 года.
  7. Sanfilippo, Salvatore predictable ip->id patch (26 октября 1999). Дата обращения: 28 сентября 2010. Архивировано 22 апреля 2008 года.
  8. Gordon “Fyodor” Lyon. Nmap Network Scanning. Гл. 5. Техники и алгоритмы сканирования портов. Insecure.Com LLC (2010). Дата обращения: 28 сентября 2010. Архивировано 4 октября 2025 года.
  9. Martin “olemoudi” Obiols. Zombie Scans using Unintended Public Services. (Almost) No Tech Hacking Blog (2011). Дата обращения: 16 марта 2011. Архивировано 20 марта 2011 года.
  10. Gordon “Fyodor” Lyon. Nmap Network Scanning. Гл. 15. Руководство по Nmap. Insecure.Com LLC (2010). Дата обращения: 28 сентября 2010. Архивировано 26 ноября 2005 года.

Литература

  • Erikson, Jon. HACKING: The Art of Exploitation : [англ.]. — San Francisco : NoStarch Press, 1977. — P. 264. — ISBN 1-59327-144-1.

Ссылки