Некоторые приёмы исследования сети
Источник: Документация к программе Router Scan by Stas’M. Автор: Stas'M Corp. Соавторы: kolbak, Felis-Sapiens. Я (Алексей) добавил примеры скриптов для Linux.
Думаю, многие знакомы с программами Nmap, ZMap, Router Scan by Stas’M. Эти программы позволяют быстро сканировать большие диапазоны сетей, у этих программ есть своя специфика и богатый функционал. О каждой из них можно написать много статей или даже книг. Но в этой заметке мы рассмотрим приёмы исследования сети с помощью достаточно простых и весьма распространённых утилит, которые не нужно устанавливать — они присутствуют и в Windows и в Linux.
Данный раздел расскажет вам о том, что можно и нужно использовать дополнительные средства при исследовании сети. Это многократно увеличит шансы получения необходимых результатов. Ведь чтобы проникнуть в сторонние локальные сети требуется, как правило, приложить немалые усилия. Но обычно мы не задумываемся, что почти каждый из нас уже подключён как минимум к одной локальной сети — к локальной сети Интернет-провайдера.
Использование ping
Команду ping можно использовать для проверки отклика узлов, в частности, потенциальных шлюзов. Ниже предложен вариант bat-скрипта, проверяющего диапазон 10.0.0.0/8 на наличие шлюзов с последним октетом 1:
@echo off rem Включить отложенное расширение переменной среды (для локальных переменных) setlocal EnableDelayedExpansion rem Пробегаемся пингом по диапазону 10.0.0.0/8, проверяем шлюзы 10.x.x.1 for /l %%a in (0,1,255) do ( for /l %%b in (0,1,255) do ( ping -n 1 -w 100 10.%%a.%%b.1 | find "TTL" >nul if !errorlevel!==0 (echo 10.%%a.%%b.0/24)))
В данном скрипте запрос отправляется 1 раз для каждого узла, с таймаутом 100 мс. Если был получен отклик от узла, вывод команды ping обычно содержит подстроку TTL, которую мы как раз проверяем. В результате, в консоль будут выведены адреса сетей в формате10.x.x.0/24, шлюзы которых ответили на запрос.
В некоторых случаях есть смысл проверить также шлюзы с октетами 254 (если проверяем сети класса C). Далее приведён образец вывода команды на примере провайдера SpeedyLine:
C:\Users\user>pingin.bat 10.0.6.0/24 10.0.14.0/24 10.0.22.0/24 10.0.30.0/24 10.0.44.0/24 10.0.46.0/24 10.0.54.0/24 10.0.62.0/24 10.0.70.0/24 10.0.72.0/24 10.0.74.0/24 10.0.76.0/24 10.0.78.0/24 10.0.86.0/24 10.0.92.0/24 10.0.126.0/24 10.0.150.0/24 10.0.162.0/24 10.0.166.0/24 10.0.249.0/24 10.0.250.0/24 10.0.255.0/24 10.1.6.0/24 10.1.12.0/24 10.1.14.0/24 10.1.18.0/24 10.1.22.0/24 10.1.24.0/24 10.1.26.0/24 10.1.30.0/24 10.1.34.0/24 10.1.36.0/24 10.1.38.0/24 10.1.52.0/24 10.1.54.0/24 10.1.56.0/24 10.1.58.0/24 10.1.62.0/24 10.1.64.0/24 10.1.66.0/24 10.1.70.0/24 10.1.74.0/24 10.1.78.0/24 10.1.80.0/24 10.1.82.0/24 10.1.86.0/24 10.1.88.0/24 10.1.94.0/24 10.1.98.0/24 10.1.104.0/24 10.1.106.0/24 10.1.110.0/24 10.1.114.0/24 10.1.118.0/24 10.1.122.0/24 10.1.126.0/24 10.1.130.0/24 10.1.134.0/24 10.1.138.0/24 10.1.142.0/24 10.1.146.0/24 10.1.150.0/24 10.1.154.0/24 ^C^CЗавершить выполнение пакетного файла [Y(да)/N(нет)]? Y C:\Users\user>
Среднее время выполнения данного скрипта - от 5 до 10 минут, но в отдельных случаях может сильно отличаться. Выполнение скрипта было остановлено вручную, нажатием сочетания клавиш Ctrl+C.
По результатам можно заметить, что в большинстве случаев сети в списке появляются с интервалом в 8 октетов (по третьему октету), значит в действительности используются сети с маской /21.
Этот же самый скрипт под Linux:
#! /bin/bash for i in `seq 0 1 255` do echo 'Работаем с '10.$(($i)) for m in `seq 0 1 255` do ping 10.$(($i)).$(($m)).1 -c 1 -W 1 > /dev/null if [ $? -eq 0 ]; then echo 10.$(($i)).$(($m)).0/24 fi done done
Ускоренный вариант скрипта (ping заменена на fping)
#! /bin/bash for i in `seq 0 1 255` do echo 'Работаем с '10.$(($i)) t='' for m in `seq 0 1 255` do t=$t" "10.$(($i)).$(($m)).1 done fping -a $t done
Использование tracert (traceroute)
Команду tracert используют для проверки промежуточных узлов. Это может быть полезно для выявления внутренних сетей.
Рассмотрим использование данной команды на примере провайдера Digital Networks (MSM):
C:\Users\user>tracert 8.8.8.8 Трассировка маршрута к google-public-dns-a.google.com [8.8.8.8] с максимальным числом прыжков 30: 1 7 ms 6 ms 6 ms 192.168.1.1 2 9 ms 13 ms 49 ms vpnbsd5.msk1.ip.di-net.ru [213.219.200.234] 3 9 ms 14 ms 10 ms 213.219.200.225 4 14 ms 9 ms 11 ms vl-758.br1.msk1.ip.di-net.ru [213.248.3.70] 5 10 ms 13 ms 40 ms 89.208.23.215 6 10 ms 12 ms 8 ms 216.239.47.145 7 8 ms 8 ms 10 ms google-public-dns-a.google.com [8.8.8.8] Трассировка завершена. C:\Users\user>
Как можно видеть выше, трассировка до внешнего адреса не выявила узлов, относящихся ко внутренним сетям (не считая нашего маршрутизатора).
В этом случае нам повезло больше, мы обнаружили узлы внутренней сети 192.168.43.1, 10.26.176.33, 10.26.176.34 и 172.30.187.145:
Microsoft Windows [Version 10.0.10240] (c) Корпорация Майкрософт (Microsoft Corporation), 2015 г. Все права защищены. C:\WINDOWS\system32>tracert 8.8.8.8 Трассировка маршрута к google-public-dns-a.google.com [8.8.8.8] с максимальным числом прыжков 30: 1 2 ms 1 ms 1 ms 192.168.43.1 2 * * * Превышен интервал ожидания для запроса. 3 2106 ms 835 ms 683 ms 10.26.176.33 4 403 ms 78 ms 77 ms 10.26.176.34 5 799 ms 1353 ms 115 ms 172.30.187.145 6 42 ms 43 ms 44 ms 124.40.237.29 7 42 ms 42 ms 79 ms 124.40.237.14 8 50 ms 59 ms 51 ms 124.40.227.150 9 94 ms 128 ms 80 ms 72.14.222.146 10 430 ms 96 ms 122 ms 209.85.249.1 11 319 ms 78 ms 110 ms google-public-dns-a.google.com [8.8.8.8] Трассировка завершена. C:\WINDOWS\system32>
Попробуем выполнить трассировку некоторых внутренних узлов:
C:\Users\user>tracert 10.0.0.1 Трассировка маршрута к 10.0.0.1 с максимальным числом прыжков 30: 1 8 ms 8 ms 8 ms 192.168.1.1 2 30 ms 9 ms 8 ms 10.251.59.254 3 31 ms 22 ms 12 ms 10.251.1.66 4 7 ms 8 ms 10 ms 10.251.1.104 5 15 ms 15 ms 13 ms 10.251.1.115 6 16 ms 15 ms 12 ms 10.25.255.212 7 11 ms 12 ms 66 ms 10.25.255.203 8 * * * Превышен интервал ожидания для запроса. 9 * * * Превышен интервал ожидания для запроса. 10 ^C C:\Users\user>tracert -w 50 -d 10.250.10.1 Трассировка маршрута к 10.250.10.1 с максимальным числом прыжков 30 1 9 ms 7 ms 7 ms 192.168.1.1 2 8 ms 9 ms 8 ms 10.251.59.254 3 18 ms 7 ms 8 ms 10.251.1.66 4 10 ms 13 ms 7 ms 10.251.1.104 5 21 ms 14 ms 9 ms 10.251.1.115 6 11 ms 10 ms 10 ms 10.25.255.212 7 * * * Превышен интервал ожидания для запроса. 8 * * * Превышен интервал ожидания для запроса. 9 ^C C:\Users\user>tracert -w 50 -d 10.250.10.254 Трассировка маршрута к 10.250.10.254 с максимальным числом прыжков 30 1 7 ms 10 ms 6 ms 192.168.1.1 2 9 ms 9 ms 21 ms 10.251.59.254 3 8 ms 9 ms 7 ms 10.251.1.66 4 45 ms 14 ms 26 ms 10.251.1.104 5 9 ms 9 ms 9 ms 10.251.1.115 6 25 ms 12 ms 12 ms 10.250.10.254 Трассировка завершена. C:\Users\user>tracert -w 50 -d 10.14.0.1 Трассировка маршрута к 10.14.0.1 с максимальным числом прыжков 30 1 7 ms 6 ms 7 ms 192.168.1.1 2 13 ms 8 ms 13 ms 10.251.59.254 3 11 ms 11 ms 8 ms 10.251.1.66 4 67 ms * 7 ms 10.251.1.104 5 * * * Превышен интервал ожидания для запроса. 6 * * * Превышен интервал ожидания для запроса. 7 * * * Превышен интервал ожидания для запроса. 8 35 ms 14 ms 10 ms 10.89.252.22 9 8 ms 9 ms 11 ms 10.89.252.21 10 10.89.252.21 сообщает: Заданная сеть недоступна. Трассировка завершена. C:\Users\user>tracert -w 50 -d 10.37.0.1 Трассировка маршрута к 10.37.0.1 с максимальным числом прыжков 30 1 10 ms 9 ms 6 ms 192.168.1.1 2 * 11 ms 8 ms 10.251.59.254 3 20 ms 13 ms 8 ms 10.251.1.66 4 7 ms 8 ms 7 ms 10.251.1.104 5 * * * Превышен интервал ожидания для запроса. 6 * * * Превышен интервал ожидания для запроса. 7 * * * Превышен интервал ожидания для запроса. 8 * * * Превышен интервал ожидания для запроса. 9 9 ms 9 ms 11 ms 10.40.254.1 10 9 ms 9 ms 8 ms 10.37.0.1 Трассировка завершена. C:\Users\user>
А вот здесь нам уже открывается наглядная картина: маршрутизатор 192.168.1.1 подключён к двум сетям - внутренней 10.251.59.0/24 и внешней через VPN туннель.
Трассировка позволила выявить промежуточные внутренние сети:
10.251.59.0/24,
10.251.1.0/24,
10.25.255.0/24,
10.250.10.0/24,
10.89.252.0/24,
10.40.254.0/24,
и 10.37.0.0/24.
Рассмотрим также вывод команды на примере провайдера Onlime:
C:\Users\user>tracert 8.8.8.8 Трассировка маршрута к google-public-dns-a.google.com [8.8.8.8] с максимальным числом прыжков 30: 1 2 ms 2 ms 2 ms 192.168.199.1 2 4 ms 26 ms 6 ms 10.225.32.1 3 4 ms 3 ms 4 ms 192.168.126.122 4 5 ms 5 ms 5 ms 192.168.126.121 5 * * * Превышен интервал ожидания для запроса. 6 3 ms * 3 ms 192.168.124.41 7 7 ms 6 ms 5 ms 77.37.254.246 8 7 ms 6 ms 5 ms m9-cr01-be2.msk.ip.ncnet.ru [77.37.254.209] 9 4 ms 4 ms 4 ms 72.14.209.81 10 6 ms 5 ms 5 ms 216.239.47.141 11 6 ms 5 ms 6 ms google-public-dns-a.google.com [8.8.8.8] Трассировка завершена. C:\Users\user>
При трассировке внешнего IP адреса, сразу после маршрутизатора 192.168.199.1 подряд идут несколько внутренних адресов. Это означает, что провайдер выдал нам серый IP адрес в своей внутренней сети.
Трассировка позволила выявить промежуточные внутренние сети:
10.225.32.0/24,
192.168.126.0/24,
и 192.168.124.0/24.
Последующее сканирование при помощи Router Scan позволит уточнить используемую маску подсети, а также подсказать наличие соседних сетей, если конечно программой будут найдены соответствующие устройства.
Проверка промежуточных узлов (трассировка) в Linux осуществляется схожим образом, но команда пишется чуть по-другому - traceroute:
traceroute 8.8.8.8 traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets 1 192.168.1.1 (192.168.1.1) 0.500 ms 0.480 ms 0.650 ms 2 10.28.64.1 (10.28.64.1) 6.270 ms 8.946 ms 8.950 ms 3 10.87.245.9 (10.87.245.9) 23.944 ms 24.105 ms 12.612 ms 4 10.185.107.132 (10.185.107.132) 13.181 ms 13.181 ms 13.376 ms 5 10.185.107.9 (10.185.107.9) 13.376 ms 13.354 ms 21.512 ms 6 210-86-142-89.static.asianet.co.th (210.86.142.89) 14.634 ms 11.333 ms 13.264 ms 7 61-91-213-225.static.asianet.co.th (61.91.213.225) 10.547 ms 13.106 ms 13.120 ms 8 61-91-213-35.static.asianet.co.th (61.91.213.35) 13.320 ms 13.320 ms 12.881 ms 9 61-91-213-81.static.asianet.co.th (61.91.213.81) 13.301 ms 13.287 ms 13.460 ms 10 TIG-Net25-61.trueintergateway.com (122.144.25.61) 15.045 ms TIG-Net25-105.trueintergateway.com (122.144.25.105) 15.035 ms 23.294 ms 11 72.14.195.115 (72.14.195.115) 38.030 ms 38.218 ms 37.816 ms 12 209.85.242.246 (209.85.242.246) 37.324 ms 209.85.242.240 (209.85.242.240) 34.907 ms 209.85.242.246 (209.85.242.246) 33.272 ms 13 209.85.242.242 (209.85.242.242) 44.251 ms 44.507 ms 209.85.242.232 (209.85.242.232) 42.120 ms 14 64.233.174.109 (64.233.174.109) 42.758 ms 72.14.236.130 (72.14.236.130) 43.869 ms 64.233.174.109 (64.233.174.109) 43.843 ms 15 * * * 16 google-public-dns-a.google.com (8.8.8.8) 45.315 ms 44.736 ms 47.881 ms root@HackWare:~#
Использование nslookup
Рассмотрим пример получения IP адресов для провайдера MTU-Intel, используя команду nslookup.
C:\Users\user>nslookup Сервер по умолчанию: google-public-dns-a.google.com Address: 8.8.8.8 > www.mtu-net.ru Сервер: google-public-dns-a.google.com Address: 8.8.8.8 Не заслуживающий доверия ответ: Имя: www.mtu-net.ru Address: 62.118.255.3 <= IP адрес основного сайта > set q=MX > mtu-net.ru Сервер: google-public-dns-a.google.com Address: 8.8.8.8 Не заслуживающий доверия ответ: mtu-net.ru MX preference = 10, mail exchanger = mx.mtu-net.ru > mx.mtu-net.ru Сервер: google-public-dns-a.google.com Address: 8.8.8.8 mtu-net.ru primary name server = dns0.mtu.ru responsible mail addr = hostmaster.ns.mtu.ru serial = 200407085 refresh = 1800 (30 mins) retry = 1200 (20 mins) expire = 604800 (7 days) default TTL = 86400 (1 day) > set q=A > mx.mtu-net.ru Сервер: google-public-dns-a.google.com Address: 8.8.8.8 Не заслуживающий доверия ответ: Имя: mx.mtu-net.ru Address: 195.34.32.99 <= IP адрес почтового сервера > dns0.mtu.ru Сервер: google-public-dns-a.google.com Address: 8.8.8.8 Не заслуживающий доверия ответ: Имя: dns0.mtu.ru Address: 195.34.32.83 <= IP адрес одного из DNS > exit C:\Users\user>
Первый диапазон 62.118.254.0/23 принадлежит веб хостингу, и вероятно, его нет особого смысла сканировать. А вот второй диапазон 195.34.32.0/19 больше похож на провайдерский, возможно на нём удастся что-то найти.
В Linux использование команды идентично.
Связанные статьи:
- Трассировка сетевого маршрута (68.2%)
- Утилиты NirSoft для извлечения информации из Windows (62.8%)
- Как узнать локальные IP адреса провайдера (62.1%)
- Как пользоваться Kali Linux в WSL (подсистеме Windows для Linux): подборка лучших программ (ч. 1) (58.7%)
- Трассировка сетей со сложной топологией. Выявление NAT (54.3%)
- Инструкция по использованию Weevely: инструмента веб-мастера и пентестера (RANDOM - 0.2%)
Привет! Помоги, пожалуйста, разобраться. Мои знания достаточно поверхностные и фрагментированные в области сетевой топологии. Хочу просканировать роутеры в локальноой сети через Router Scan. Есть доступ к 3м роутерам, которые подключены к одному провайдеру. Когда я выполняю трассировку, выдает следующий результат:
1й роутер:
C:\Users\Windows 10 User>tracert -d yandex.ru
Трассировка маршрута к yandex.ru [5.255.255.55]
с максимальным числом прыжков 30:
1 3 ms 3 ms 3 ms 192.168.0.1
2 4 ms 3 ms 6 ms 192.168.79.254
3 6 ms 3 ms 5 ms 100.64.0.1
4 4 ms 4 ms 3 ms 193.151.240.0
5 27 ms 14 ms 13 ms 31.40.132.48
6 * * * Превышен интервал ожидания для запроса.
7 84 ms 82 ms 82 ms 178.34.176.182
8 * * 457 ms 87.250.239.205
9 * * * Превышен интервал ожидания для запроса.
10 87 ms 87 ms 90 ms 77.88.55.55
2й и 3й роутер:
C:\Users\Windows 10 User>tracert -d yandex.ru
Трассировка маршрута к yandex.ru [5.255.255.55]
с максимальным числом прыжков 30:
1 8 ms 6 ms 6 ms 192.168.0.1
2 162 ms 11 ms 22 ms 192.168.39.254
3 35 ms 28 ms 102 ms 100.64.0.1
4 4 ms 6 ms 4 ms 193.151.240.0
5 25 ms 25 ms 25 ms 31.40.132.48
6 * * * Превышен интервал ожидания для запроса.
7 71 ms 69 ms 69 ms 178.34.176.182
8 73 ms 75 ms 85 ms 93.158.172.17
10 87 ms 87 ms 90 ms 77.88.55.55
То есть, насколько я понял, провайдер использует 192.168.0.0/16 и 100.64.0.0/10.
Я просканировал диапазон 192.168.0.0/16 и нашел всего лишь 70 роутеров, причем моих 3х роутеров не было в списке найденных.
Диапазон 100.64.0.0/10 большой, я пытался сократить его по методу Вашей статьи "как ускорить исследование больших диапазонов сетей (на примере Router Scan)", но, то ли у меня руки кривые, или еще что-то - это особого результата не дало. Я ввел полученные айпишники в Router Scan - но ничего не нашло. Подскажи, пожалуйста, куда копать?