Руководство по эксплуатации Router Scan


Автор:Stas'M Corp.
Соавторы:kolbak
 Felis-Sapiens

Выражается благодарность участникам сообщества Router Scan
за помощь в составлении руководства!


Введение.


Терминология

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

Я старался описывать термины простым и понятным языком, не ленись прочитать! :)

• Процесс сканирования

Состояние программы, в котором происходит поиск и/или обработка одного и более устройств.

• Поток сканирования

Внутренний подпроцесс, который в данный момент обрабатывает какое-то одно устройство.

• Протокол TCP/IP

Транспортный протокол, с помощью которого происходит обмен данными с устройством.

Единственный протокол обмена данными, поддерживаемый Router Scan (не считая ICMP).

• Устройство, подключённое к сети

Router Scan работает с устройствами, к которым есть сетевой доступ по протоколу TCP/IP.

• IP адрес устройства

Чтобы подключиться к устройству, необходимо знать хотя бы его IP адрес.

Router Scan поддерживает IP версии 4. Каждый такой IP адрес состоит из 4-х чисел, в диапазоне от 0 до 255, разделённых точками - эти числа называются октетами. А также это означает, что IPv4 адрес состоит из 32 бит.

Пример: 192.168.0.1

IPv6 адреса программа пока не поддерживает.

• Классификация IP адресов

Каждый IP адрес можно классифицировать по разным признакам, описанным ниже:

1. Глобальный/локальный
- Интерфейс с глобальным IP адресом выходит в интернет напрямую без посредников, и к нему имеют возможность подключаться все, у кого есть интернет.
- Остальные IP адреса - локальные.

2. Белый/серый
- Это синонимы 1 пункта, определяются по возможности подключения извне.
- Белый IP адрес - это всегда глобальный адрес, серый - всегда локальный.
- Если доступа к интернету нет, то адрес нельзя классифицировать белым или серым.

3. Статический/динамический
- Статический IP присваивается узлу один раз, и не меняется до тех пор, пока клиент оплачивает свой тариф интернета вовремя.
- Динамический IP меняется при каждом подключении (или реже, например, раз в сутки), может изменяться в диапазоне одной сети, а может даже в нескольких.

4. Внешний IP адрес
- Под внешним IP адресом понимается адрес, от имени которого клиент пользуется интернетом. Если он совпадает с адресом интерфейса сетевого адаптера, то он - глобальный.

5. Внутренний IP адрес
- Это может быть серый IP адрес, выданный провайдером, либо адрес локальной сети клиента, который находится за маршрутизатором.

Примечания:
- Внешний адрес может быть динамическим и статическим. Он может быть серым или белым.
- Внутренний адрес также может быть либо динамическим, либо статическим. Но он всегда серый.

• Диапазон IP адресов

Диапазоны определяют, какой набор IP адресов будет просканирован.

Подробнее о том, как их задавать, можно прочитать ниже.

• TCP порт устройства

Router Scan работает с устройствами, у которых открыт веб интерфейс управления. Для подключения к нему необходимо знать его порт.

Порт - это число от 0 до 65535.

• Соединение с устройством

Когда известен IP адрес и порт устройства, с ним можно попытаться установить соединение. Для этого по протоколу TCP отправляется запрос SYN, и ожидается получение ответа SYN-ACK.

Разумеется, есть временной интервал, в течение которого ожидается получение ответа. Если ответ успел прийти за отведённое время - можно сказать, что порт открыт, и соединение установлено. В противном случае, о порте нельзя сказать ничего конкретного, просто произошёл таймаут соединения. Однако, можно сказать, что порт закрыт, если пришёл ответ RST, но программа этого не определяет за ненадобностью.

Подробнее об этом можно почитать на Википедии.

• Протокол HTTP

Прикладной протокол, работающий поверх протокола TCP, который используется для подключения к веб интерфейсу управления устройством. Является основным протоколом, используемым Router Scan для получения данных и результатов.

• Методы аутентификации HTTP

Протокол HTTP реализует в себе различные методы аутентификации. Все они преследуют одну цель - проверку подлинности пользователя, которая осуществляется при помощи имени и пароля.

Формально можно разделить устройства на два типа - те, которые используют аутентификацию на уровне протокола HTTP, - и другие, которые её не используют - в их число входят устройства, использующие HTTP формы для авторизации.

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

Но, если вы затрудняетесь визуально определить тип аутентификации, можно изучить HTTP заголовки ответа устройства, а конкретно заголовок WWW-Authenticate - именно он указывает на использование аутентификации на уровне протокола.

Для подбора пароля к таким устройствам Router Scan использует словари пар логин/пароль. Программой поддерживаются два метода аутентификации на уровне протокола:

- Basic - базовая аутентификация, имя пользователя и пароль обрабатываются обратимым шифром и отправляются в заголовках (подробнее).
- Digest - дайджест аутентификация, данные для входа необратимо хешируются алгоритмом MD5 и отправляются в заголовках (подробнее).

Для остальных устройств, не использующих эти методы, перебор по словарям не поддерживается (за исключением некоторых моделей, для которых была добавлена поддержка словаря Form аутентификации). Но можно воспользоваться функцией Use credentials в главном окне программы, которая проверяет пару логин/пароль независимо от метода аутентификации.

• Веб интерфейс устройства

Специальная программа, которая работает на устройстве, и предоставляет возможность его настройки, используя протокол HTTP.

Веб интерфейс использует один или несколько портов, при помощи которых он устанавливает связь с оператором устройства. Обычно веб интерфейсы используют стандартные порты, такие как 80, 8080 и 1080.


Подсказки и пояснения по работе с программой

Данная информация скорее всего будет вам полезна, если вы хотите получать успешные результаты при сканировании.

• Поиск нужных IP диапазонов

Обычно возникает вопрос как правильно задать диапазоны IP адресов для сканирования, чтобы в результаты попали интересующие точки доступа. Вот несколько простых советов:

1. Если у вас есть стационарный интернет, и вы хотите «потестировать безопасность» окружающих Wi-Fi сетей, начните со своего диапазона. Узнать свой IP можно, например, зайдя на сайт 2IP. Далее см. п.2.

Примечание: Если у провайдера есть внутренняя сеть, стоит просканировать сперва её (разумеется, для этого нужно быть подключённым к ней). Определить наличие внутренней городской сети и возможные диапазоны адресов могут помочь команды ping и tracert (traceroute в Linux). Пробуйте пинговать и трассировать адреса внутренних сетей - 192.168.0.1 (если совпадает с адресом вашего маршрутизатора, замените 3-ий октет на другой), 172.16.0.1, 10.0.0.1, 100.64.0.1, и другие (подробнее на Википедии). Также есть смысл сделать трассировку до какого-либо внешнего адреса, например 8.8.8.8, поскольку на пути к нему также могут встретиться внутренние сети. Примеры можно посмотреть в разделе утилит.

2. Чтобы определить диапазон, к которому принадлежит IP, провайдера и прочую информацию, можно воспользоваться одним из интернет-сервисов (например, популярен 2IP Whois), либо воспользоваться первоисточником – RIPE Database Query.

3. Если провайдер небольшой, посмотрите IP адреса серверов, на котором хостятся его сайты, почтовые серверы и пр. Пример можно посмотреть в пункте 3 раздела утилит. Далее см. п.2.

4. Если в радиусе видимости есть открытые / с известным паролем Wi-Fi сети – подключитесь к ним и посмотрите их внешние IP адреса (также есть смысл проверить через них доступ ко внутренним сетям - п.1). Далее см. п.2.

5. Воспользуйтесь поиском Google, Яндекс, и другими для определения диапазонов для вашего города и/или провайдера. Как вариант, наберите запрос %Город% IP адреса или %Город% IP диапазоны или %Город% IP подсети. Также есть сайты для поиска IP диапазонов по городам: для России и Украины – IpGeoBase.ru. Узнать все диапазоны провайдера – Hurricane Electric BGP Toolkit. Ещё некоторые ссылки можно найти на форуме.

6. Посмотрите ближайшие точки доступа на карте, используя базу точек доступа 3WiFi. Найдите их в поиске – там будет выведена информация о диапазоне IP (при наличии таковой в базе). Также можно воспользоваться поиском диапазонов по местоположению, используя этот же сервис.

• Синтаксис IP диапазонов

Router Scan поддерживает несколько типов диапазонов:

1. Единичный IP адрес - всего один адрес в строке.

Пример: 192.168.1.1

2. Обычный диапазон - указываются начальный и конечный адреса, разделённые дефисом (минусом).

Пример: 192.168.10.1-192.168.10.254
- Будет просканировано 254 адреса.
Пример: 192.168.200.30-192.168.200.39
- Будет просканировано 10 адресов.

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

Пример: 10.10.10.0/24
- Первые 24 бита адреса не меняются, остаётся 32 - 24 = 8 свободных бит.
- Будет просканировано 28 = 256 адресов.
Пример: 172.16.0.0/12
- Первые 12 бит адреса не меняются, остаётся 32 - 12 = 20 свободных бит.
- Будет просканировано 220 = 1048576 адресов.

Подробнее о таких диапазонах можно почитать на Википедии.

4. Октетный диапазон в стиле Nmap - отдельные октеты IP адреса могут быть заданы в виде диапазонов через дефис, или в виде перечисления через запятую.

Пример: 10.0.0.1-254
- Будет просканировано 254 адреса, от 10.0.0.1 до 10.0.0.254.
Пример: 10.0.2,4.1
- Будет просканировано 2 адреса, 10.0.2.1 и 10.0.4.1.

Можно разобрать пример посложнее:
Пример: 192.168.0-10,100,199.1,254

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

Первый октет = 192, второй = 168 - просто фиксированные октеты.
Третий = 0-10,100,199 - здесь у нас сначала диапазон от 0 до 10, а затем перечисление 100 и 199.
Четвёртый = 1,254 - всего два числа 1 и 254.

Теперь, имея эту информацию, можно понять, какие адреса будут просканированы. По очереди собираем октеты в адреса от последнего октета:
1) 192.168.0.1
2) 192.168.0.254
3) 192.168.1.1
4) 192.168.1.254
5) 192.168.2.1
6) 192.168.2.254
   ...
19) 192.168.9.1
20) 192.168.9.254
21) 192.168.10.1
22) 192.168.10.254
23) 192.168.100.1
24) 192.168.100.254
25) 192.168.199.1
26) 192.168.199.254
- Будет просканировано 26 адресов.

Многие одинаковые диапазоны можно представить в разных типах, например:

а) [192.168.0.0-192.168.0.255] и [192.168.0.0/24]
б) [192.168.10.1-192.168.10.1] и [192.168.10.1/32], и просто [192.168.10.1]
в) [192.168.10.1-254] и [192.168.10.1-192.168.10.254]

Программа будет автоматически приводить подобные диапазоны к одному виду. Диапазоны типа а) с фиксированной маской сети будут преобразованы в тип IP/маска, диапазоны типа б) будут преобразованы в единичные IP адреса.

Вот только диапазоны типа в) преобразованы не будут, поскольку программа пока не умеет сравнивать октетные диапазоны с остальными.

• Провайдеры Wi-Fi геолокации

Средства геолокации, использующие спутниковую навигацию (такие как GPS и ГЛОНАСС), иногда бывают недоступны, особенно внутри закрытого помещения. При этом беспроводные точки доступа сейчас можно обнаружить практически повсюду. В результате этого появились провайдеры геолокации по точкам доступа.

У каждого провайдера Wi-Fi геолокации есть своя база данных точек доступа. Как правило, это список BSSID (MAC адресов точек) с привязкой к физическим координатам - широте и долготе. Связь с провайдерами геолокации осуществляется через интернет. Таким образом, когда пользователь желает определить своё местоположение на карте, но спутников навигации поблизости нет, он отправляет провайдеру геолокации список видимых сетей, состоящий из MAC адресов точек доступа с уровнями сигнала каждой из них. Таким образом, используя алгоритм триангуляции, можно рассчитать с некоторой точностью местоположение пользователя.

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

Программой поддерживаются несколько различных провайдеров геолокации. Полный список можно посмотреть в настройках программы.

• База данных 3WiFi

3WiFi - это свободная база точек доступа (с открытым исходным кодом под лицензией Apache 2.0), разработанная сообществом Router Scan при участии Stas'M Corp.

Она хранит данные точек доступа, которые были получены в результате сканирований Router Scan. Все данные загружаются в базу добровольно - либо через веб сайт, либо напрямую из Router Scan.

База данных 3WiFi используется сообществом Router Scan для поиска точек доступа, для исследования новых уязвимостей в беспроводных маршрутизаторах, для выявления ранее неизвестных алгоритмов генерации WPS пин-кодов, для обнаружения очагов массового поражения маршрутизаторов (таких как подмена SSID имени, DNS серверов, и подобных), и во многих других целях.

Также база 3WiFi используется Stas'M Corp. для наблюдения, определения и исправления ошибок и неточностей результатов сканирования в реальном времени.

Веб сайт 3WiFi предоставляет уникальные услуги, которые могут быть полезны членам сообщества:
- Просмотр точек доступа на карте
- Поиск точек доступа по BSSID или имени
- Поиск IP диапазонов по местоположению
- Определение модели устройства по MAC адресу
- Статистика по различным параметрам беспроводных сетей

Адрес официальной базы 3WiFi: http://3wifi.stascorp.com/


Использование вспомогательных утилит

Один Router Scan - хорошо, а со вспомогательными утилитами - лучше!

Данный раздел расскажет вам о том, что можно и нужно использовать дополнительные средства при исследовании сети. Это многократно увеличит шансы получения необходимых результатов.

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

Команду ping можно использовать для проверки отклика узлов, в частности, потенциальных шлюзов. Ниже предложен вариант bat-скрипта, проверяющего диапазон 10.0.0.0/8 на наличие шлюзов с последним октетом 1:

В данном скрипте запрос отправляется 1 раз для каждого узла, с таймаутом 100 мс. Если был получен отклик от узла, вывод команды ping обычно содержит подстроку TTL, которую мы как раз проверяем. В результате, в консоль будут выведены адреса сетей в формате 10.x.x.0/24, шлюзы которых ответили на запрос.

В некоторых случаях есть смысл проверить также шлюзы с последним октетом 254 (если проверяем сети класса C). Далее приведён образец вывода команды на примере провайдера SpeedyLine:

Среднее время выполнения данного скрипта - от 5 до 10 минут, но в отдельных случаях может сильно отличаться. Выполнение скрипта было остановлено вручную, нажатием сочетания клавиш Ctrl+C.

По результатам можно заметить, что в большинстве случаев сети в списке появляются с интервалом в 8 октетов (по третьему октету), значит в действительности используются сети с маской /21.

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

Команду tracert используют для проверки промежуточных узлов. Это может быть полезно для выявления внутренних сетей.

Рассмотрим использование данной команды на примере провайдера Digital Networks (MSM):

Как можно видеть выше, трассировка до внешнего адреса не выявила узлов, относящихся ко внутренним сетям (не считая нашего маршрутизатора). Попробуем выполнить трассировку некоторых внутренних узлов:

А вот здесь нам уже открывается наглядная картина: маршрутизатор 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:

При трассировке внешнего IP адреса, сразу после маршрутизатора 192.168.199.1 подряд идут несколько внутренних адресов. Это означает, что провайдер выдал нам серый IP адрес в своей внутренней сети.

Трассировка позволила выявить промежуточные внутренние сети:
10.225.32.0/24,
192.168.126.0/24,
и 192.168.124.0/24.

Последующее сканирование при помощи Router Scan позволит уточнить используемую маску подсети, а также подсказать наличие соседних сетей, если конечно программой будут найдены соответствующие устройства.

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

Рассмотрим пример получения IP адресов для провайдера MTU-Intel, используя команду nslookup.

Первый диапазон 62.118.254.0/23 принадлежит веб хостингу, и вероятно, его нет особого смысла сканировать. А вот второй диапазон 195.34.32.0/19 больше похож на провайдерский, возможно на нём удастся что-то найти.


Поддержка и помощь в разработке

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

• Обратная связь

Вы можете связаться со мной через комментарии на странице проекта, через систему личных сообщений, или через форму обратной связи.

У нас также есть сообщества в социальных сетях, ссылки на них есть на той же странице обратой связи.

Если у вас есть желание следить за процессом разработки и участвовать в бета тестированиях программы, присоединяйтесь к сообществу Router Scan - у нас есть официальная тема на форуме Античат.

• Добавление новых возможностей

Перед отправкой запроса на добавление функционала, чётко опишите, какую практическую пользу он принесёт, а также, как вы себе его представляете и как собираетесь использовать. Необходимо также задуматься о том, понадобится ли данный функционал другим пользователям программы. Помните, что предлагаемый функционал не должен противоречить концепциям программы - ознакомьтесь с пунктами FAQ.

Если вы полностью продумали свою идею, с учётом вышесказанного, пишите нам.

• Добавление новых устройств в поддержку

Исходя из основного назначения программы, в поддержку добавляются устройства, из которых можно получить информацию о беспроводной сети. В их число входят:

1. Беспроводные маршрутизаторы, которые организуют беспроводную локальную сеть.
2. Точки доступа, которые предоставляют беспроводной доступ к существующим сетям.
3. Другие беспроводные устройства (повторители, камеры, и пр.), которые работают в режиме клиента, подключаясь к существующим беспроводным сетям.

Для удобства просмотра результатов сканирования, в поддержку также добавляются другие устройства с веб интерфейсами, такие как проводные маршрутизаторы и камеры. Но эти устройства имеют меньший приоритет при добавлении в поддержку по понятным причинам.

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

Если устройство недоступно извне, вам потребуется снять "слепок" веб интерфейса устройства - содержимое его страниц с HTTP заголовками. Также имеет смысл делать слепок, если есть большая вероятность того, что устройство сменит свой адрес или выключится. Для снятия слепка веб интерфейса можно использовать способы, предложенные ниже. Файл слепка можно отправить мне, используя один из способов обратной связи. Используйте файлообменник для прикрепления ссылки на файл.

Вы также можете предложить конкретную модель устройства для добавления, не имея при этом его адреса или слепка. Но для этого вам будет необходимо найти его, используя поиск по "интернету вещей". Я принимаю ссылки на результаты поиска Shodan и Base64, и другие (если есть).

• Создание слепка веб интерфейса

Для создания образа веб интерфейса какого-либо устройства, можно воспользоваться программой Charles Proxy. Вот краткая инструкция по его использованию:

1. Установите и запустите Charles.
2. Убедитесь, что он перехватывает запросы вашего интернет браузера. Для этого зайдите на любой HTTP сайт, например, по ссылке выше.
3. После успешной проверки, зайдите в веб интерфейс устройства, используя этот же браузер. Если устройство использует протокол HTTPS, потребуется включить перехват SSL в настройках Charles, предварительно установив его корневой сертификат.
4. Если авторизация на устройстве уже была выполнена, необходимо выйти из устройства и выполнить авторизацию заново.
4. Пройдитесь по страницам устройства - по тем, на которых есть необходимая информация, собираемая Router Scan.
5. Если вы затрудняетесь определить, какие страницы содержат такую информацию, пройдитесь по всем доступным страницам.
6. Скачайте файл конфигурации устройства, если есть такая возможность.
7. Если всё проделано успешно, страницы и файлы будут в дереве запросов Charles.
8. Удалите из дерева картинки и стили отображения - они зачастую не содержат полезной информации, и удаление значительно облегчит вес файла сессии.
9. Очистите дерево запросов Charles от лишних сайтов, не имеющих отношения к веб интерфейсу устройства.
10. Сохраните сессию в файл с расширением .chls, используя кнопку сохранения (в виде дискеты).

На этом создание слепка веб интерфейса завершено.

Программа имеет бесплатную пробную версию, в которой есть ограничение по работе - 30 минут с начала запуска. По истечению этого времени Charles закрывается, без сохранения собранных данных. Поэтому необходимо успеть создать слепок устройства за 30 минут.

Помимо Charles, вы можете проделать то же самое, используя Wireshark, за исключением устройств, использующих HTTPS. Полученные пакеты сохраняются в файл .cap формата tcpdump.

Также есть второй более простой способ, реализованный в самом Router Scan - логирование TCP пакетов. Но у него есть свои недостатки, в сравнении с методом, описанным в данной секции.

• Отладочная запись TCP запросов/ответов

Router Scan предоставляет возможность записи TCP пакетов (запросов и ответов) в файл. Эту функцию можно использовать в следующих случаях:

1. Когда нет возможности создать полноценный слепок веб интерфейса.
2. Если устройство уже поддерживается, но какие-то данные не были получены, или с ошибками.
3. Для дальнейшего поиска подобных устройств в Shodan по их заголовкам.
4. Для составления правил фильтрации по заголовкам.

Включите TCP логирование и пересканируйте устройство - в папке программы появится поддиректория с текущей датой. В ней будет лог файл с расширением .bin, содержащий TCP пакеты в исходном виде.

У данного способа есть некоторые недостатки:
1. Создаётся не полный образ веб интерфейса, а только тех запросов, которые были отправлены программой.
2. Данную функцию нет смысла использовать, если устройство использует HTTPS - все пакеты в файле будут зашифрованы, без возможности их расшифровать.

• Материальная помощь

Учитывая, что проект разрабатывается на чистом энтузиазме, мы будем рады денежным пожертвованиям в любом размере. Ознакомиться со способами переводов можно на официальном сайте, в блоке "Пожертвование / Donate" справа.


Читайте далее: Главное окно программы