Атака на устройства в локальной сети через уязвимый роутер


Если получен доступ к роутеру, можно ли получить доступ к устройствам в локальной сети? Чтобы ответить на этот вопрос, давайте разберёмся, как работает домашняя локальная сеть.

Как работает домашняя локальная сеть

В домашней локальной сети основой является роутер — довольно сложное сетевое устройство. Это устройство обеспечивает работу локальной сети. При подключении нового устройства к локальной сети роутера, он с помощью протокола DHCP присваивает новому устройству IP адрес. В качестве диапазона IP адресов в домашних сетях обычно используются 192.168.1.0/24, 192.168.0.0/24 или 192.168.100.0/24.

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

Возможно вы уже слышали про NAT и даже знаете, что эта технология позволяет Интернет-провайдеру использовать один единственный внешний (белый) IP адрес для всех или для множества его клиентов. Но NAT используется не только на уровне провайдера Интернет услуг, но и уже в вашем роутере. Рассмотрим NAT чуть подробнее.

NAT

NAT — это технология, которая позволяет множеству устройств выходить в Интернет используя один и тот же IP адрес. Кстати, в вашей локальной сети, в которой имеется роутер, уже применяется NAT — именно благодаря этому все ваши устройства могут выходить в Глобальную сеть и не нужно каждому из них иметь внешний IP.

Как вы понимаете, это часто используемая технология. Возможно, вы много лет ею пользуетесь, даже не зная про неё. Она действительно приносит очень много пользы, но у неё есть недостаток — она позволяет делать подключения «в одну сторону». То есть если ваш компьютер инициализировал подключение к Интернету, то он отправит его роутеру, роутер сделает две вещи: 1) запомнит, что запрос пришёл с определённого устройства и 2) отправить этот запрос в Интернет. Когда придёт ответ, роутер всё ещё «помнит», что этот запрос был сделан для определённого устройства в локальной сети, и отправит ответ именно этому устройству. И так происходит каждый раз.

Но вот если на роутер придёт новый HTTP запрос из Глобальной сети (не ответ на запрос, а именно новый запрос), то роутер банально не знает, для кого в локальной сети он предназначен (если не настроена переадресация портов). Поэтому с этим поступившим запросом роутер ничего не делает (источник).

Можно ли получить доступ к компьютеру в локальной сети, если есть доступ к роутеру?

Вроде бы, ответ очевиден — технология NAT не даёт такой возможности в принципе: подключение к локальным устройствам, у которых нет белого IP, а есть только локальный IP вида 192.168.0.*, невозможен.

Но я начал с того, что роутер это весьма сложное сетевое устройство. И это устройство поддерживает множество функций по настройке сети, в частности оно поддерживает:

  • настройку статичных IP адресов для устройств в локальной сети минуя протокол DHCP
  • Forwarding портов

Forwarding портов

Forwarding, который ещё называют «переадресацией» портов, «проброской портов», «перенаправлением портов» или «Port mapping» (сопоставление портов) позволяет делать очень замечательную вещь — с его помощью устройства за NAT, то есть устройство в локальной сети, имеющее локальный IP адрес, могут стать доступными глобально. Правила могут быть настроены весьма гибко, можно сделать пересылку нескольких портов на один, или с одного на несколько, или несколько на несколько и так далее. Но для наших целей больше всего интересно следующее правило, которое словами можно выразить так:

Запрос, который пришёл на порт роутера 22 перенаправить на порт 22 устройства с IP адресом 192.168.0.5.

Номера портов необязательно должны быть одинаковыми, поэтому правило может быть таким:

Запрос, который пришёл на порт роутера 50080 перенаправить на порт 80 устройства с IP адресом 192.168.0.5.

В результате мы получим доступ к порту 80 (его обычно прослушивает веб-сервер) устройства в локальной сети 192.168.0.5.

Это означает, что мы можем получить доступ к любому открытому порту и запущенному на нём службе в локальной сети! Это может быть веб-сервер, SSH, FTP, сетевые протоколы Windows и т.д.

Просмотр устройств локальной сети. Настройка статических адресов в локальной сети

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

Рассмотрим пример. В локальной сети провайдера есть роутер с IP адресом 100.69.64.23 к которому получен административный доступ.

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

  • на странице статуса роутера
  • на странице настройки DHCP
  • на странице статуса LAN (локальной сети)

Например, на этом роутере информация собрана на странице DHCP Clients List:


Данный роутер показывает всего лишь MAC-адрес и локальный IP адрес устройств. Многие роутеры кроме этой информации также показывают, является ли это мобильным устройством или настольным компьютером. Поскольку здесь такой информации нет, то мне нужно самостоятельно догадаться о типе устройства на основе его производителя. Производителя устройства можно узнать по MAC адресу на этом сервисе: https://suip.biz/ru/?act=mac

Например, для MAC 00:80:92:c4:6a:f9 найдена следующая информация:

008092     (base 16)		Silex Technology, Inc.
				2-3-1 Hikaridai,
				Kyoto    619-0237
				JP

Меня не интересуют мобильные телефоны и планшеты — как правило, на них все порты закрыты. Меня интересуют ноутбуки и настольные компьютеры, поскольку на них могут быть запущены службы, которые прослушивают порты.

Из всех устройств самыми интересными мне показались следующие

	00:80:92:c4:6a:f9	192.168.1.3
	a0:f9:e0:28:02:16	192.168.1.2

Причина в следующем:

  • их MAC-адреса, вроде бы, не принадлежат производителям мобильных телефонов
  • их IP адреса являются самыми первыми — то есть к роутеру весьма вероятно вначале подключаются проводные устройства, а затем устройства по Wi-Fi
  • эти устройства отсутствуют в списке беспроводных клиентов:

Если атака планируется длительной, то определённым устройствам можно присвоить статичные IP адреса. Дело в том, что проброска портов настраивается относительно IP адреса. А целевое устройство через некоторое время может сменить IP адрес на произвольный. Если это случиться, то правила переадресации портов будут работать — просто теперь они будут отправлять пакеты другому устройству, которое заняло этот IP адрес.


Чтобы этого избежать можно привязать IP к MAC-адресу  — мне ещё не встречались роутеры, которые не умеют этого делать. Настройка выполняется достаточно просто.

Настройка переадресации портов

В зависимости от модели роутера эта вкладка может называться

  • Forwarding
  • Port Forwarding
  • Port mapping
  • Переадресация портов
  • другие варианты

Например, на рассматриваемом роутере эту вкладку я нашёл по пути Application → Port Forwarding:

Всего портов 1-65535 и роутеры позволяют делать переадресацию диапазонов, то есть 65 тысяч портов не придётся настраивать по одному.

Но есть очень важное замечание — мы не можем настроить переадресацию того порта, на котором работает веб-сервер роутера. То есть если роутер открывается на 80 порту, то этот порт должен стать исключением. Иначе произойдёт следующее: ни мы, ни даже владелец роутера больше не сможем попасть в панель администрирования роутера пока не будут сброшены настройки на заводские.

Обратите внимание, что некоторые роутеры работают не на 80, а на 8080 или 443 порте.


Итак, если веб-интерфейс роутера работает на 80 порту и мы хотим получить доступ к локальным ресурсам устройства с IP 192.168.1.2, то нам нужно установить следующие три правила:

  • Переадресацию портов 1-79 на 1-79 порты адреса 192.168.1.2
  • Переадресацию портов 81-65534 на 81-65534 порты адреса 192.168.1.2
  • Переадресацию порта 65535 на 80 порт адреса 192.168.1.2

Первые два правила с диапазонами (надеюсь) очевидны. Третьим правилом мы перенаправляем запросы, пришедшие на порт 65535, на 80 порт локального компьютера, поскольку там может быть веб-сервер или что-то другое интересное.

Начнём с того, что сделаем контрольный замер, какие именно порты открыты:

sudo nmap 100.69.64.23

Эта команда покажет открытые порты на роутере:

Добавляем первое правило:

Второе:

Третье:

Получаем:

Заново сканируем порты:

sudo nmap 100.69.64.23


Констатируем — нас постигла неудача. 80-й порт — это порт самого роутера, а на устройстве с IP 192.168.1.2 просканированные порты закрыты.

Не отчаиваемся — переделываю все правила на переадресацию портов на IP 192.168.1.3:

И опять сканируем порты:

sudo nmap 100.69.64.23

Поясню, хотя команда Nmap одна и та же, но на самом деле в предыдущий раз мы сканировали порты устройства в локальной сети с IP 192.168.1.2. А последняя команда уже сканирует порты на 192.168.1.3.

А вот здесь нам повезло:

Starting Nmap 7.80 ( https://nmap.org ) at 2019-09-29 09:08 MSK
Nmap scan report for 100.69.64.23
Host is up (0.017s latency).
Not shown: 993 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
23/tcp   open  telnet
80/tcp   open  http
443/tcp  open  https
515/tcp  open  printer
631/tcp  open  ipp
9100/tcp open  jetdirect

Nmap done: 1 IP address (1 host up) scanned in 5.83 seconds

Напомню, что все эти порты, кроме 80, открыты на устройстве, у которого даже нет белого IP адреса, у него IP адрес 192.168.1.3.

А как проверить 80 порт на 192.168.1.3? Делаем это так:

sudo nmap -p 65535 100.69.64.23

Порт оказался закрыт.

Чтобы собрать информацию об отрытых портах, изучим их баннеры:

sudo nmap -sV --script=banner 100.69.64.23

Получаем:

PORT     STATE SERVICE    VERSION
21/tcp   open  ftp        Brother/HP printer ftpd 1.13
| banner: 220 FTP print service:V-1.13/Use the network password for the I
|_D if updating.
23/tcp   open  telnet     Brother/HP printer telnetd
|_banner: \x1B[2J\x1B[1;1f
80/tcp   open  http       GoAhead WebServer 2.5.0 (PeerSec MatrixSSL 3.4.2)
|_http-server-header: GoAhead-Webs/2.5.0 PeerSec-MatrixSSL/3.4.2-OPEN
443/tcp  open  ssl/http   Debut embedded httpd 1.20 (Brother/HP printer http admin)
515/tcp  open  printer
631/tcp  open  ipp?
9100/tcp open  jetdirect?
Service Info: Device: printer

Не очень интересно — видимо, это всё функции связанные с принтером.

Чтобы подключиться к HTTPS порту, достаточно открыть ссылку в веб-браузере: https://100.69.64.23:443

А там мы видим интерфейс многофункционального устройства (принтер-копер-сканер) MFC-J5910DW:

Ещё раз для тех, кто потерялся, это устройство с IP адресом 192.168.1.3!

Также я сумел подключиться к FTP:

Заключение

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

Другие варианты атак:

  • подмена DNS на сервера злоумышленника и манипуляция трафиком на основе поддельных DNS ответов (подвержены все роутеры) (см. Применение фальшивого DNS)
  • перенаправление трафика с помощью VPN канала на оборудование злоумышленника (подвержены только более продвинутые модели с поддержкой VPN) (см. Применение фальшивого VPN (атака человек-посередине+обход HSTS))
  • доступ к медиа носителям, подключённым к роутеру (подвержены только модели с такой функциональностью)

Рекомендуется Вам:

2 комментария to Атака на устройства в локальной сети через уязвимый роутер

  1. Максим:

    В целом понял, но откуда 81-65534, 1-79, 65535-65535 и 80-80

    • Alexey:

      Мы не можем настроить правило «переадресовать все порты» (1-65535 на 1-65535) — после подобного правила мы больше не сможем зайти в настройки роутера. Получится следующее: мы делаем запрос на 80-й порт роутера чтобы открыть панель управления, а роутер в соответствии с правилом «переадресовать все порты» переадресует его на какое-то локальное устройство — всё, панель управления роутера для нас (как и вообще для всех до сброса настроек) больше недоступна.

      Все остальные порты можно перенаправлять, поэтому добавляем правила:

      • переадресация 1-79 на 1-79
      • переадресация 81-65534 на 81-65534

      В общем, это все возможные порты, кроме 80 и 65535. Почему мы не трогаем 80-й порт, я уже объяснил. Но зачем мы ещё исключили и 65535?

      Дело в том, что с показанными настройками (исключён из переадресации 80-й порт) мы не можем посмотреть, что там на 80-ом порте интересующего нас устройства в локальной сети. А ведь 80-й порт это один из самых часто используемых и самых перспективных портов. Поэтому, чтобы получить на него доступ, мы добавляем ещё одно правило:

      • переадресация 65535 на 80

      В результате, мы делаем запрос на 65535, но получаем ответ с 80-го порта устройства в локальной сети.

      Если веб-интерфейс панели управления роутером на другом порте (например, 8080 или 1080), то соответственно исключаем этот порт, иначе в настройки роутера мы больше не попадём). В этом случае порт 65535 нужно использовать для проброски соответствующего исключённого порта (например, 8080 или 1080).

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *