The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project

Как ускорить исследование больших диапазонов сетей (на примере Router Scan) Life-Hack [Жизнь-Взлом]/ХакингOctober 27, 2020

BlackPope

Местный
Регистрация
27.04.2020
Сообщения
242
Реакции
35
Предположим, я хочу просканировать роутеры в подсети 100.64.0.0/10. Если просто ввести этот диапазон в Router Scan и начать сканирование, то это займёт несколько суток.



Примечание: Router Scan в плане поиска уязвимых роутеров прекрасно работает в Linux через Wine, но если вы используете Router Scan на Windows, то вы можете использовать приведённые ниже команды в WSL — они прекрасно там будут работать.

Основная идея быстрого сканирования — пинговать с высоким уровнем параллелизма:

sudo nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 -oX nmap_output.xml 100.64.0.0/10

Значение опций:
  • -sn: не сканировать порты, только пинговать хост
  • -PE: определяет, жив ли хост через эхо ICMP
  • -n: не преобразует IP-адреса в доменные имена.
  • --min-hostgroup 1024: Регулирует размер групп для параллельного сканирования. Минимальная группировка установлена на 1024 IP-адреса. В Nmap есть возможность осуществлять сканирование портов или сканирование с целью определения версии нескольких хостов параллельно. Это происходит путём разделения целевого IP пространства на группы, а затем сканирования одной группы за раз. В общем случае целесообразно использовать большие группы. Недостатком является то, что вы не можете узнать информацию о каком-либо хосте, пока не закончится сканирование всей группы. Таким образом, если Nmap начнёт сканирование группы из 50-ти хостов, то пользователь не будет получать никакой информации, пока не будет завершено сканирование всех 50-ти хостов. По умолчанию Nmap использует компромиссный подход к решению этой проблемы. Сначала производится сканирование небольших групп из 5-ти хостов, поэтому первые результаты приходят быстро, затем размер группы постепенно увеличивается до максимального — 1024. Точные значения по умолчанию зависят от заданных опций. Для большей эффективности Nmap использует группы больших размеров для UDP сканирования и для некоторых типов TCP сканирования портов.
  • --min-parallelism 1024: Регулирует распараллеливание запросов. Этот параметр очень важен. Чтобы в полной мере использовать системные и сетевые ресурсы, мы устанавливаем количество проверок на не менее чем 1024. Эти опции регулируют общее количество запросов для группы хостов. Эта опция используется при сканировании портов и при обнаружении хостов. По умолчанию Nmap высчитывает степень параллельности основываясь на производительности сети. Если пакеты теряются, то Nmap использует меньшее количество запросов. Количество запросов медленно увеличивается по мере того, как сеть продолжает нормально работать. Эти опции устанавливают минимальную и максимальную границы для этой переменной. По умолчанию параллелизм устанавливается в 1, если сеть работает плохо, и может достигать нескольких сотен при идеальных условиях.
  • -oX nmap_output.xml: Вывести результат в формате XML, имя файла — nmap_output.xml
По окончании сканирования вы можете проанализировать XML-документ, чтобы узнать, какие IP-адреса активны.

Nmap done: 4012855 IP addresses (140507 hosts up) scanned in 2590.61 seconds
Raw packets sent: 7897197 (221.122MB) | Rcvd: 160371 (6.456MB)




Просканировано 4012855 адресов за 2590 секунд — это 43 минуты. Найдено 140507 хостов онлайн.

Теперь извлечём все IP адресов, которые онлайн (статус «up») и сохраним их в файле hosts.txt:

grep -A 2 'up' nmap_output.xml | grep -E -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' > hosts.txt

Теперь запускаем ещё одно сканирование nmap: мы возьмём все хосты, которые онлайн, и проверим, есть ли там открытые порты 80, 443, 8080, 1080.

sudo nmap -v -PE -n --min-hostgroup 1024 --min-parallelism 1024 -p 80,443,8080,1080 --open -iL hosts.txt -oX nmap_routers.xml

Результат:

Nmap done: 140509 IP addresses (121710 hosts up) scanned in 1044.75 seconds
Raw packets sent: 1100582 (45.478MB) | Rcvd: 208169 (8.408MB)




Сканирование завершилось ещё быстрее — за 17 минут. Здесь хорошо виден недостаток этого метода: из ранее определённых как работающие 140509 хостов, онлайн оказались 121710. Из-за особенностей быстрого сканирования, часть пакетов потерялась и мы не узнали, что хосты в сети.

Извлечём IP адреса, которые онлайн, из файла, полученного в результате второго сканирования:

grep -A 2 'up' nmap_routers.xml | grep -E -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' > routers.txt

Посчитаем количество хостов, у которых открыт хотя бы один из интересующих нас портов:

cat routers.txt | wc -l

У меня получилось 3409.

IP адреса из файла routers.txt я загрузил в Router Scan. Сканирование заняло 18 минут, всего было найдено 1870 уязвимых роутеров.



Из них 1135 оказались ранее неизвестными.



Получилось, что я затратил чуть более часа (43+17+18 минут) вместо того, чтобы ждать результатов сканирования несколько суток. Такой прирост эффективности стоил потраченных усилий.
 
Верх