Некоторые приёмы исследования сети

Источник: Документация к программе 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:

root@HackWare:~# 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 использование команды идентично.

Рекомендуемые статьи:

Добавить комментарий

Ваш e-mail не будет опубликован.