Сканирование в режиме ожидания

Сканирование в режиме ожидания на открытом порту

Сканирование в режиме ожидания — это метод сканирования портов TCP для определения того, какие службы открыты на целевом компьютере [1], не оставляя следов, указывающих на себя. Это достигается с помощью подмены пакетов для имитации другого компьютера (называемого « зомби »), так что цель верит, что к ней обращается зомби. Цель будет реагировать по-разному в зависимости от того, открыт ли порт, что, в свою очередь, можно обнаружить, запросив зомби. [2]

Обзор

Это действие может быть выполнено с помощью обычных сетевых программных утилит, таких как nmap и hping . Атака заключается в отправке поддельных пакетов на определенную целевую машину в попытке найти отличительные характеристики другой зомби- машины. Атака является сложной, поскольку нет никакого взаимодействия между компьютером атакующего и целью: атакующий взаимодействует только с " зомби " компьютером.

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

Основная цель сканирования в режиме ожидания — «проверить состояние порта, оставаясь при этом полностью невидимым для целевого хоста». [4]

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

Обнаруженное Сальваторе Санфилиппо (также известным по его нику «Antirez») в 1998 году [5] , сканирование в режиме ожидания использовалось многими черными «хакерами» для скрытого определения открытых портов на целевом компьютере в ходе подготовки к атаке на него. Хотя изначально оно называлось « тупым сканированием » , термин «сканирование в режиме ожидания» был придуман в 1999 году после публикации доказательства концепции сканера 16-битного поля идентификации (IPID) под названием «idlescan » Филипе Алмейдой (он же LiquidK). [6] Этот тип сканирования также можно назвать сканированием зомби ; все эти наименования обусловлены природой одного из компьютеров, участвовавших в атаке.

Основы TCP/IP

Проектирование и работа Интернета основаны на наборе протоколов Интернета , обычно также называемом TCP/IP. IP является основным протоколом на уровне Интернета набора протоколов Интернета и имеет задачу доставки датаграмм от исходного хоста к хосту назначения исключительно на основе их адресов . Для этой цели IP определяет методы адресации и структуры для инкапсуляции датаграмм . Это протокол без установления соединения, основанный на передаче пакетов. Каждый пакет IP из заданного источника имеет идентификатор, который уникально идентифицирует датаграмму IP. [ необходимо разъяснение ]

TCP обеспечивает надежную, упорядоченную доставку потока байтов из программы на одном компьютере в другую программу на другом компьютере. TCP — это протокол, на который полагаются основные интернет-приложения, такие как Всемирная паутина , электронная почта и передача файлов. Каждое из этих приложений (веб-сервер, сервер электронной почты, FTP-сервер) называется сетевой службой . В этой системе сетевые службы идентифицируются с помощью двух компонентов: адреса хоста и номера порта. Существует 65536 отдельных и используемых номеров портов на хост. Большинство служб по умолчанию используют ограниченный диапазон номеров, и номер порта по умолчанию для службы используется почти всегда.

Некоторые сканеры портов сканируют только самые распространенные номера портов или порты, которые чаще всего ассоциируются с уязвимыми службами на данном хосте. См.: Список номеров портов TCP и UDP .

Результат сканирования порта обычно можно отнести к одной из трех категорий:

  • Открыто или принято : Хост отправил ответ, указывающий, что служба прослушивает порт.
  • Закрыт , отклонен или не прослушивается : Хост отправил ответ, указывающий, что соединения с портом будут отклонены.
  • Отфильтровано , удалено или заблокировано : От хоста не было ответа.

Открытые порты представляют собой две уязвимости, которых администраторам следует опасаться:

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

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

Базовая механика

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

Атакующий сначала должен просканировать хост с последовательным и предсказуемым порядковым номером (IPID). Последние версии Linux , Solaris , OpenBSD и Windows Vista не подходят в качестве зомби, поскольку IPID был реализован с помощью патчей [7] , которые рандомизировали IPID. [1] Компьютеры, выбранные для использования на этом этапе, известны как «зомби». [2]

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

Если порт целевого компьютера открыт, он примет соединение для службы, ответив зомби пакетом SYN/ACK.

Затем компьютер-зомби отправит пакет RST на целевой компьютер (чтобы сбросить соединение), поскольку изначально он не отправлял пакет SYN.

Так как зомби должен был отправить пакет RST, он увеличит свой IPID. Так злоумышленник узнает, открыт ли порт цели. Злоумышленник отправит зомби еще один пакет. Если IPID увеличится только на шаг, то злоумышленник узнает, что конкретный порт закрыт.

Метод предполагает, что у зомби нет других взаимодействий: если между первым взаимодействием злоумышленника с зомби и вторым взаимодействием будет отправлено какое-либо сообщение по другим причинам, кроме сообщения RST, произойдет ложное срабатывание .

Первый этап сканирования в режиме ожидания
Второй этап сканирования в режиме ожидания

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

Первый шаг в выполнении сканирования в режиме ожидания — найти подходящего зомби. Ему необходимо назначать пакеты IP ID инкрементно на глобальной основе (а не для каждого хоста, с которым он взаимодействует). Он должен быть в режиме ожидания (отсюда и название сканирования), так как посторонний трафик увеличит его последовательность IP ID, запутав логику сканирования. Чем меньше задержка между атакующим и зомби, а также между зомби и целью, тем быстрее будет выполняться сканирование. [8]
Обратите внимание, что когда порт открыт, IPID увеличиваются на 2. Последовательность следующая:
1. Атакующий к цели -> SYN, цель к зомби -> SYN/ACK, зомби к цели -> RST (IPID увеличивается на 1)
2. Теперь атакующий пытается проверить зомби на предмет результата. Атакующий к зомби -> SYN/ACK, зомби к атакующему -> RST (IPID увеличивается на 1)
Таким образом, в этом процессе IPID в конечном итоге увеличивается на 2.

При попытке сканирования в режиме ожидания инструменты (например, nmap) проверяют предлагаемый зомби и сообщают о любых проблемах с ним. Если один не работает, попробуйте другой. Достаточное количество хостов в Интернете уязвимо, поэтому найти кандидатов на зомби несложно. Обычный подход заключается в том, чтобы просто выполнить ping-сканирование какой-либо сети. Выбор сети рядом с исходным адресом или рядом с целью дает лучшие результаты. Вы можете попробовать сканирование в режиме ожидания, используя каждый доступный хост из результатов сканирования в режиме ожидания, пока не найдете тот, который работает. Как обычно, лучше всего спросить разрешения, прежде чем использовать чьи-то машины для неожиданных целей, таких как сканирование в режиме ожидания.

Простые сетевые устройства часто становятся отличными «зомби», поскольку они обычно не используются в полной мере (простаивают) и построены на основе простых сетевых стеков, которые уязвимы для обнаружения трафика по IP-идентификатору.

Хотя определение подходящего зомби требует некоторой первоначальной работы, вы можете продолжать повторно использовать хорошие. В качестве альтернативы, были некоторые исследования по использованию непреднамеренных публичных веб-сервисов в качестве хостов зомби для выполнения подобных холостых сканирований. Использование того, как некоторые из этих сервисов выполняют исходящие соединения при отправке пользовательских данных, может служить своего рода холостым сканированием для бедных. [9]

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

Метод hping для сканирования в режиме ожидания представляет собой пример более низкого уровня для того, как выполняется сканирование в режиме ожидания. В этом примере целевой хост (172.16.0.100) будет сканироваться с использованием неактивного хоста (172.16.0.105). Будут протестированы открытый и закрытый порты, чтобы увидеть, как разыгрывается каждый сценарий.

Сначала установите, что простаивающий хост на самом деле простаивает, отправьте пакеты с помощью hping2 и наблюдайте, как номера идентификаторов увеличиваются на единицу. Если номера идентификаторов увеличиваются хаотично, хост на самом деле не простаивает или имеет ОС, которая не имеет предсказуемого IP-идентификатора.

[root@localhost hping2-rc3]# ./hping2  -S 172 .16.0.105 HPING 172.16.0.105 (eth0 172.16.0.105): S set, 40 заголовков + 0 байт данных len=46 ip=172.16.0.105 ttl=128 id=1371 sport=0 flags=RA seq=0 win=0 rtt=0.3 мс len=46 ip=172.16.0.105 ttl=128 id=1372 sport=0 flags=RA seq=1 win=0 rtt=0.2 мс len=46 ip=172.16.0.105 ttl=128 id=1373 sport=0 flags=RA seq=2 win=0 rtt=0,3 мс len=46 ip=172.16.0.105 ttl=128 id=1374 sport=0 flags=RA seq=3 win=0 rtt=0,2 мс len=46 ip=172.16.0.105 ttl=128 id=1375 sport=0 flags=RA seq=4 win=0 rtt=0,2 мс len=46 ip= 172.16.0.105 ttl=128 id=1376 sport=0 flags=RA seq=5 win=0 rtt=0,2 мс len= 46 ip=172.16.0.105 ttl=128 id=1377 sport=0 flags=RA seq=6 win=0 rtt=0,2 мс len=46 ip=172.16.0.105 ttl=128 id=1378 sport=0 флаги=RA seq=7 win=0 rtt=0,2 мс len=46 ip=172.16.0.105 ttl=128 id=1379 sport=0 флаги=RA seq=8 win=0 rtt=0,4 мс 

Отправьте поддельный SYN-пакет на целевой хост на порт, который, как вы ожидаете, открыт. В этом случае тестируется порт 22 (ssh).

# 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 заголовков + 0 байтов данных       --- 172.16.0.100 статистика hping --- 1 переданный пакет, 0 полученных пакетов, 100% потеря пакетов туда и обратно мин/ср/макс = 0,0/0,0/0,0 мс

Так как мы подделали пакет, мы не получили ответа, и hping сообщает о 100% потере пакетов. Целевой хост ответил напрямую простаивающему хосту пакетом syn/ack. Теперь проверьте простаивающий хост, чтобы увидеть, увеличился ли номер идентификатора.

# hping2  -S 172 .16.0.105 -p 445 -c 1     HPING 172.16.0.105 (eth0 172.16.0.105): S set, 40 заголовков + 0 байт данных len=46 ip=172.16.0.105 ttl=128 DF id=1381 sport=445 flags=SA seq=0 win=64320 rtt=0.3 мс--- 172.16.0.105 статистика hping --- 1 передано пакетов, 1 получено пакетов, 0% потерь пакетов туда и обратно мин/ср/макс = 0,3/0,3/0,3 мс

Обратите внимание, что идентификатор хоста прокси увеличился с id=1379 до id=1381. 1380 был использован, когда бездействующий хост ответил на пакет syn/ack целевого хоста первым пакетом.

Пройдите через те же процессы снова, проверяя порт, который, вероятно, закрыт. Здесь мы тестируем порт 23 (telnet).

# 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 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 DF id=1382 sport=445 flags=SA seq=0 win=64320 rtt=2.1 мс                     --- 172.16.0.105 статистика hping --- 1 пакет отправлен, 1 пакет получен, 0% потерь пакетов туда и обратно мин/ср/макс = 2,1/2,1/2,1 мс HPING 172.16.0.100 (eth0 172.16.0.100): набор S, 40 заголовков + 0 байт данных--- 172.16.0.100 статистика hping --- 1 передано пакетов, 0 полученных пакетов, 100% потеря пакетов туда и обратно мин/ср/макс = 0,0/0,0/0,0 мс HPING 172.16.0.105 (eth0 172.16.0.105): S set, 40 заголовков + 0 байт данных len=46 ip=172.16.0.105 ttl=128 DF id=1383 sport=445 flags=SA seq=0 win=64320 rtt=0,3 мс--- 172.16.0.105 статистика hping --- 1 передано пакетов, 1 получено пакетов, 0% потерь пакетов туда и обратно мин/ср/макс = 0,3/0,3/0,3 мс

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

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

Первое, что должен сделать пользователь, — найти подходящего зомби в локальной сети :

Выполнение сканирования портов и идентификации ОС (опция -O в nmap) в сети-кандидате на зомби, а не просто сканирование ping, помогает выбрать хорошего зомби. Пока включен подробный режим (-v), обнаружение ОС обычно определяет метод генерации последовательности IP-идентификаторов и выводит строку типа «Генерация последовательности IP-идентификаторов: Инкрементная». Если тип указан как Инкрементный или Сломанный инкрементный с прямым порядком байтов, машина является хорошим кандидатом на зомби. Это все еще не гарантирует, что это сработает, так как Solaris и некоторые другие системы создают новую последовательность IP-идентификаторов для каждого хоста, с которым они взаимодействуют. Хост также может быть слишком занят. Обнаружение ОС и список открытых портов также могут помочь в идентификации систем, которые, вероятно, будут простаивать.

Другой подход к выявлению кандидатов на зомби — запуск скрипта ipidseq NSE против хоста. Этот скрипт проверяет хост, чтобы классифицировать его метод генерации IP ID, а затем выводит классификацию IP ID, как это делает обнаружение ОС. Как и большинство скриптов NSE, ipidseq.nse может быть запущен против многих хостов параллельно, что делает его еще одним хорошим выбором при сканировании целых сетей в поисках подходящих хостов.

nmap -v -O -sS 192.168.1.0/24

Это говорит nmap сделать ping sweep и показать все хосты, которые находятся в указанном диапазоне IP. Как только вы нашли зомби, следующим шагом вы должны отправить поддельные пакеты:

nmap -P0 -p <port> -sI <zombie IP> <target IP>

Сопоставление изображений демонстрирует оба этих этапа в успешном сценарии.

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

Хотя многие операционные системы теперь защищены от использования в этой атаке, некоторые популярные системы все еще уязвимы; [1] делая сканирование в режиме ожидания все еще очень эффективным. После успешного завершения сканирования на брандмауэре цели или в журнале системы обнаружения вторжений не остается никаких следов IP-адреса атакующего . Еще одна полезная возможность — это возможность обойти брандмауэр, поскольку вы сканируете цель с компьютера зомби, [10] который может иметь больше прав, чем атакующий.

Смотрите также

Примечания

  1. ^ abc Эриксон, Джон (1977). ВЗЛОМЫВАНИЕ искусства эксплуатации . Сан-Франциско: NoStarch Press. стр. 264. ISBN 1-59327-144-1.
  2. ^ ab "Что такое Idle Scan? | ICterra Information and Communication Technologies". 2017-02-01 . Получено 2020-09-09 .
  3. ^ Сон, До (2017-12-01). "Введение в сканирование Idle/Zombie • Тестирование на проникновение". Тестирование на проникновение . Получено 2020-09-09 .
  4. ^ Трапикин, Роман (сентябрь 2015 г.). «Кто сканирует Интернет?» (PDF) . Semantic Scholar . S2CID  55929767. Архивировано (PDF) из оригинала 20.02.2019 . Получено 9 сентября 2020 г. .
  5. ^ Санфилиппо, Сальваторе (1998-12-18). "новый метод сканирования TCP" . Получено 2010-09-28 .
  6. ^ Filipe Almeida (aka LiquidK) (1999-12-03). "idlescan (ip.id portscanner)" . Получено 2010-11-09 .
  7. ^ Санфилиппо, Сальваторе (1999-10-26). "predictable ip->id patch" . Получено 2010-09-28 .
  8. ^ Гордон «Федор» Лион (2010). «Сетевое сканирование Nmap Глава 5. Методы и алгоритмы сканирования портов». Insecure.Com LLC . Получено 28.09.2010 .
  9. ^ Мартин «olemoudi» Обиолс (2011). «Сканирование зомби с использованием непреднамеренных общественных служб». Блог (почти) No Tech Hacking. Архивировано из оригинала 20.03.2011 . Получено 16.03.2011 .
  10. ^ Гордон «Федор» Лион (2010). «Сетевое сканирование Nmap Глава 15. Справочное руководство Nmap». Insecure.Com LLC . Получено 28.09.2010 .
  • Insecure.org/nmap/idlescan — подробная статья о сканировании в режиме ожидания
  • Insecure.org — Официальный сайт Nmap
  • Hping.org Архивировано 12.03.2007 на Wayback Machine - Официальный сайт Hping
  • nmap.online-domain-tools.com — онлайн-сканер Nmap
  • Techtarget.com — статья о сканировании в режиме ожидания
  • Seclists.org — оригинальное сообщение об ошибке
  • Блог ANTH - Сканирование в режиме ожидания с использованием общедоступных служб
Взято с "https://en.wikipedia.org/w/index.php?title=Idle_scan&oldid=1271658485"