Статья [Post Exploitation] — Проброс портов без доступа к роутеру или чем опасен UPnP IGD
gushmazuko
Введение
Здравствуйте жители и гости CodeBy! Хочу сделать маленький обзор одной утилиты для работы с UPnP IGD и продемонстрировать как злоумышленник может использовать этот протокол в своих целях (точнее один из возможных сценариев). Полагаю как вы уже знаете UPnP (Universal Plug and Play) — это набор сетевых протоколов упрощающих настройку сетевых устройств в локальной сети. Одним из них и является IGD (Internet Gateway Device Protocol) — протокол для динамического проброса портов в сетях NAT . Наверное вы подумали что проблема затрагивает только IPv4. Но нет, не смотря на то что в IP шестой версии нету «преобразования сетевых адресов» и каждое устройство в сети получает публичный адрес, во второй версии стандарта UPnP IGD для него нашлось решение — Pinhole . Он задает инструкцию межсетевому экрану для разрешения трафика через определенные порты по определенным протоколам к определенным сетевым адресам.
Основная часть
Допустим мы имеем доступ к компьютеру жертвы под управлением Windows 10 и заполучили привилегии администратора.
Поищем работающий сервис UPnP IGD в нашей сети и проверим его состояние. (В смысле в сети жертвы )
Такие программы как Skype, uTorrent и даже WhatsApp активно пользуются этим сервисом. Впрочем в нашей ситуации мы видим проброшенный порт программой uTorrent.
Давайте к делу
Скрытно от нашей жертвы создадим пользователи удаленного управления , такой пользователь не виден на экране входа.
Проброс порта 3389 (Windows RDP), скати мы можем задать время жизни редиректа, если ничего не указывать редирект будет статичным. В UPnP IGD V2 максимально допустимый срок это 7 дней.
По умолчанию обычный Windows не позволяет одновременно работать более чем одному пользователю, поэтому исправим это недоразумение. Скачаем файл C:\Windows\System32\termsrv.dll себе на комп.
Открываем файл в hexeditor , меняем 39 81 3C 06 00 00 0F 84 7F 2C 01 00 на B8 00 01 00 00 89 81 38 06 00 00 90
Теперь осталось создать пользователя с единственной группой «Remote Desktop Users» и включить саму службу RDP.
Профит
На этом все подошло к концу и наша жертва готова не много поделиться с нами со своими ресурсами. Подключаемся к его публичному адресу и попадаем на компьютер в локальной сети.
Можно подключиться прямо с Kali Linux, для этого необходимо выключить защитный механизм NLA (Network Level Authentication) в Windows. Делается следующей командой:
Как пробросить порты без роутера
Технология Universal Plug and Play (UPnP) является удобным способом обеспечения любой сетевой программы, которой необходимо пробросить порты без необходимости настройки «маппинга» на веб-интерфейсе маршрутизатора. Но далеко не все программы имеют встроенную поддержку UPnP. К сожалению, некоторые программы, которые требуют перенаправление портов, не поддерживают UPnP. В этих случаях нам поможет UPnP Portmapper. Поговорим об её установке, настройке и использовании.
Главная цель UPnP Portmapper — это забота о переадресации портов для приложения без настройки проброса на маршрутизаторе. Но если Вы хотите настроить вручную все тонкости проброса портов, то Вам придётся войти в веб-интерфейс своего маршрутизатора и изменить правила переадресации портов. Если по каким-то причинам Вы не можете зайти на маршрутизатор, то эта статья о получении доступа к роутеру поможет обновить учетные данные к нему.
Но часто возникают ситуации, когда необходимо выполнить перенаправление портов, а настраивать маршрутизатор нежелательно. Например, если Вы находитесь в общественном месте или у друзей в гостях, то просто запустите UPnP Portmapper и активируйте предварительно установленные правила.
Сразу оговорюсь, что роутер и маршрутизатор я буду считать одним и тем же устройством. Разделять их на два разных вида в рамках этой статьи не имеет смысла. Но это не значит, что на самом деле они являются одним и тем же устройством. Это далеко не так.
Установка UPnP PortMapper
UPnP PortMapper целиком написан на Java, так что Вам нужен бесплатный пакет Java Runtime Environment, скачать который можно с официального сайта. После установки Java скачиваем UPnP PortMapper, например из GitHub.
Надо отметить, что UPnP PortMapper прекрасно работает также и на Mac OS X и различных Linux.
UPnP PortMapper обменивается данными с маршрутизатором по протоколам UPnP, так что Ваш маршрутизатор должен поддержить эту технологию и она должна быть включена. Впрочем, беспокоиться не о чем, все современные роутеры поддерживают UPnP, которая по умолчанию уже включена на маршрутизаторе.
Для запуска Portmapper, дважды щелкните на файле JAR.
Или запустите файл в командной строке.
Перенаправление портов с помощью UPnP PortMapper
Чтобы приступить к работе, нажмите кнопку Connect в UPnP Port Mapper. Если при этом Вы увидите всплывающее окно брандмауэра Windows, нажмите кнопку Разрешить доступ.
Если UPnP Portmapper сообщает Вам в поле Log messages, что он не может найти маршрутизатор.
Значит настройка UPnP выключена на самом маршрутизаторе. Нужно зайти в веб-интерфейс маршрутизатора и включить UPnP.
После нажатия кнопки Connect произойдет подключение к маршрутизатору и Вы увидите список сопоставлений портов UPnP в верхней панели (этот список будет пустым по умолчанию), а также внешний IP-адрес маршрутизатора в сети Интернет и его IP-адрес в вашей локальной сети.
Для создания нового перенаправления портов, нажмите кнопку Create.
Введите описание для правила переадресации и укажите список из одного или нескольких портов для пересылки. Вы можете указать диапазон портов c помощью кнопки Add port range.
Кроме того, можно указать конкретный удаленный хост. При вводе IP-адреса, трафик только с этого адреса будут пересылаться на Ваш компьютер от маршрутизатора. Для примера, Вы можете использовать эту функцию, чтобы разрешить только соединения от интернет-IP-адреса Вашего друга.
Галка Локальный хост по умолчанию установлена, она пересылает порты на адрес Вашего компьютер без необходимости перепроверять локальный IP-адрес Вашего компьютера. Если отключить галку, то можно использовать приложение для пересылки портов к нескольким различным компьютерам в сети.
После указания диапазона портов, они будут отображаться в пресете Ports. Сохраняете выбранный диапазон, выберите предустановку и нажимаете кнопку Use, чтобы активировать выбранный диапазон портов.
При нажатии на кнопку Use Portmapper переадресует порты на маршрутизатор, Увидеть подготовленную настройку можно в пресете Port mappings.
Удалить сопоставления портов можно, выделив строку в таблице и нажав кнопку Delete.
Проделанные настройки для проброса портов будут сохранены на маршрутизаторе, пока его кэш с данными UPnP не будет очищен. В зависимости от Вашего маршрутизатора, это может произойти, например, когда маршрутизатор будет перезагружен. Если Вы откроете UPnP Port Mapper в следующий раз и нажмите кнопку Connect, Вы увидите Ваши активные сопоставления портов.
Вам также необходимо повторно применить настройки отображения портов, если локальный IP-адрес Вашего компьютера изменился.
С UPnP PortMapper, Вы сможете быстро и легко применить настройки перенаправления портов в любой сети с маршрутизатором, который поддерживает UPnP. Это удобно, если Вы используете ноутбук вне дома и Вам необходимо осуществить проброс портов для игр, серверов или других задач.
Проброс портов и настройка роутера для внешнего доступа
Домашний роутер обычно не дает возможности добраться из внешнего Интернета до компьютеров во внутренней сети. Это правильно — хакерские атаки рассчитаны на известные уязвимости компьютера, так что роутер является дополнительным препятствием. Однако бывают случаи, когда доступ к роутеру и его локальным ресурсам из «внешнего мира» становится необходим. О том, в каких случаях бывает нужен доступ извне, и как его безопасно настроить — эта статья.
Зачем открывать доступ извне?
Доступ «снаружи» нужен не только в экзотических случаях вроде открытия игрового сервера или запуска сайта на домашнем компьютере. Гораздо чаще приходится «открывать порт» для многопользовательской игры, а это — как раз предоставление внешнему пользователю (серверу игры) доступа к внутренней сети (порт компьютера). Если необходимо удаленно подключиться и настроить компьютер или роутер, скачать файл-другой из домашней сети, находясь в командировке, или посмотреть видео с подключенных к домашней сети IP-камер — нужно настроить доступ.
Цвета и формы IP-адресов
Прежде чем разбираться, как открыть доступ к своим ресурсам, следует понять, как вообще происходит соединение в сети Интернет. В качестве простой аналогии можно сравнить IP-адрес с почтовым адресом. Вы можете послать письмо на определенный адрес, задать в нем какой-то вопрос и вам придет ответ на обратный адрес. Так работает браузер, так вы посещаете те или иные сайты.
Но люди общаются словами, а компьютеры привыкли к цифрам. Поэтому любой запрос к сайту сначала обрабатывается DNS-сервером, который выдает настоящий IP-адрес.
Допустим теперь, что кто-то хочет написать письмо вам. Причем не в ответ, а самостоятельно. Не проблема, если у вас статический белый адрес — при подключении сегодня, завтра, через месяц и год он не поменяется. Кто угодно, откуда угодно, зная этот адрес, может написать вам письмо и получите его именно вы. Это как почтовый адрес родового поместья или фамильного дома, откуда вы не уедете. Получить такой адрес у провайдера можно только за отдельную и регулярную плату. Но и с удаленным доступом проблем меньше — достаточно запомнить выданный IP.
Обычно провайдер выдает белый динамический адрес — какой-нибудь из незанятых. Это похоже на ежедневный заезд в гостиницу, когда номер вам выдается случайно. Здесь с письмом будут проблемы: получить его можете вы или другой постоялец — гарантий нет. В таком случае выручит DDNS — динамический DNS.
Самый печальный, но весьма распространенный в последнее время вариант — серый динамический адрес: вы живете в общежитии и делите один-единственный почтовый адрес с еще сотней (а то и тысячей) жильцов. Сами вы письма писать еще можете, и до адресата они дойдут. А вот письмо, написанное на ваш почтовый адрес, попадет коменданту общежития (провайдеру), и, скорее всего, не пойдет дальше мусорной корзины.
Сам по себе «серый» адрес проблемой не является — в конце концов, у всех подключенных к вашему роутеру устройств адрес именно что «серый» — и это не мешает им пользоваться Интернетом. Проблема в том, что когда вам нужно чуть больше, чем просто доступ к Интернету, то настройки своего роутера вы поменять можете, а вот настройки роутера провайдера — нет. В случае с серым динамическим адресом спасет только VPN.
Кто я, где я, какого я цвета?
С терминологией разобрались, осталось понять, какой именно адрес у вас. У большинства провайдеров фиксированный адрес стоит денег, так что если у вас не подключена услуга «статический IP-адрес», то он наверняка динамический. А вот белый он или серый гусь — это нужно проверить. Для начала надо узнать внешний IP-адрес роутера в его веб-интерфейсе и сравнить с тем адресом, под которым вас «видят» в Интернете.
В админ-панели роутера свой IP можно найти на вкладках «Информация о системе», «Статистика», «Карта сети», «Состояние» и т. п. Где-то там нужно искать WAN IP.
Если адрес начинается с «10.», или с «192.168.», то он определенно «серый» — большинство способов открытия доступа работать не будет и остается только VPN.
Если же адрес выглядит по-другому, надо посмотреть на него «снаружи» с помощью одного из сервисов, показывающих ваш IP-адрес, например, http://myip.ru/.
Если адрес, показанный на сайте, совпадает с тем, что вы увидели в веб-интерфейсе, то у вас честный «белый» адрес и доступ из «большого мира» не вызовет особых затруднений — остается только настроить «пробросы» на роутере и подключить DDNS.
Что такое порты и зачем их бросать?
Порт — это пронумерованное виртуальное «устройство», предназначенное для передачи данных по сети. Каждая сетевая программа использует для установления связи отдельный порт или группу портов. К примеру, браузеры используют TCP-порт 80 для незашифрованного трафика (http) и 443 для зашифрованного (https).
Проброс порта — это специальное правило в роутере, которое разрешает все обращения извне к определенному порту и передает эти обращения на конкретное устройство во внутренней сети.
Необходимость «проброса» портов обычно возникает при желании сыграть по сети в какую-нибудь игру с компьютера, подключенного к роутеру. Впрочем, это не единственная причина — «проброс» потребуется при любой необходимости получить «извне» доступ к какому-нибудь конкретному устройству в вашей локальной сети.
Разрешать к компьютеру вообще все подключения, то есть пробрасывать на него весь диапазон портов — плохая идея, это небезопасно. Поэтому роутеры просто игнорируют обращения к любым портам «извне». А «пробросы» — специальные исключения, маршруты трафика с конкретных портов на конкретные порты определенных устройств.
Игровые порты: что, куда бросаем?
Какой порт открыть — зависит от конкретного программного обеспечения. Некоторые программы требуют проброса нескольких портов, другим — достаточно одного.
У разных игр требования тоже отличаются — в одни можно играть даже с «серого» адреса, другие без проброса портов потеряют часть своих возможностей (например, вы не будете слышать голоса союзников в кооперативной игре), третьи вообще откажутся работать.
Например, чтобы сыграть по сети в «Destiny 2», нужно пробросить UDP-порт 3074 до вашей «плойки», или UDP-порт 1200 на Xbox. А вот до ПК потребуется пробросить уже два UDP-порта: 3074 и 3097.
В следующей таблице приведены некоторые игры и используемые ими порты на ПК:

