Как обойти NAT?

Есть белый IP адрес выданный провайдером и локальная сеть за NAT-ом.
На маршрутизаторе проброшен порт 1234 на порт 1234 компьютера 192.168.1.10
Как, подключиться к порту 4321 компьютера 192.168.1.10 при условии, что на это порт на маршрутизаторе ничего не проброшено? (Фаервола нет)

Здесь парень говорит про то, что это возможно, вскользь упоминая про мануальную маршрутизацию.
youtu.be/B-dlhkWBNuA?t=15m50s
О чем он?
  • Вопрос задан
  • 9876 просмотров
Решения вопроса 1
@throughtheether
human after all
Я про то, что есть мануальная форма маршрутизации. Иными словами если у вас есть какой-то сервер который находится за вашим натом и вы считаете, что к нему никак не пробиться извне потому что вы не настроили проброс портов. Вы ошибаетесь я пробьюсь к нему. Поскольку у вас есть внешний NAT...
... маршрутизация по меткам позволяет добросить пакет до вашего сервера.
Одна история удивительнее другой, особенно про мануальную маршрутизацию и маршрутизацию по меткам (что это?).

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

Как, подключиться к порту 4321 компьютера 192.168.1.10
Это возможно в следующем случае. Клиент 192.168.1.10 устанавливает соединение с веб-сервером 2.2.2.2, используя порт 4321 со своей стороны (так получилось, совпадение). На натирующем устройстве с глобально маршрутизируемым адресом 1.1.1.1 создается трансляция вида (192.168.1.10,tcp,4321)->(1.1.1.1, tcp, 31337). Веб-сервер видит клиента с адресом 1.1.1.1, портом источника 31337, шлет ему данные (сегменты внутри пакетов), которые после натирования фактически направляются клиенту 192.168.1.10, tcp-порт 4321. Далее, если есть злоумышленник 3.3.3.3, которому очень надо послать tcp-сегмент (внутри Ip-пакета) клиенту 192.168.1.10 на порт 4321, то он указывает статический маршрут (см. Я про то, что есть мануальная форма маршрутизации) до 192.168.1.10/32 (длина префикса не важна, по моему мнению) через 1.1.1.1, и ему лишь остается угадать/подобрать, на какой tcp-порт слать сегмент, чтобы он правильно снатировался. Если 3.3.3.3 и 2.2.2.2 взаимодействуют (обмениваются информацией), он пошлет на 31337 порт. Если нет - то логичнее слать равномерно на все порты и надеяться на удачу.

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

Кроме того, немного неясны вводные. Если на порту 4321 висит уязвимый сервис и вы хотите эксплуатировать эту уязвимость, то вышеописанную схему вряд ли получится реализовать, если только этот сервис не будет слать данные (байты внутри сегментов внутри пакетов) в интернет. Потому что если он не будет этого делать, то и трансляции на NAT не возникнет. Если только у NAT нет багов или у вас нет агента за этим же NAT, который, подделывая адреса, добьется создания трансляции (UPnP как вариант). Как видите, вариаций множество.

TL;DR: Nat is not a security feature.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
ifaustrue
@ifaustrue
Пишу интересное в теллеграмм канале @cooladmin
Снаружи никак. Это же явная атака на сеть =)
Ссылка не открылась, не могу прокомментировать. Возможно он про UPnP когда комп добавляет правила NAT сам в маршрутизатор, но опять же это только внутри сети.
Ответ написан
DobroFenix
@DobroFenix
Собстно в чем проблема?
VPN с белым ip на клиенте.
Ответ написан
Комментировать
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Ну если на компе за NAT-ом есть троян - то проще простого, достаточно в STUN-сервер с него сходить и дальше по p2p общаться.
Или UDP Hole Punching использовать.

Вообще же в теории можно создать такой TCP пакет, который будет распакован на роутере и отправлен на нужный адрес на нужный порт внутри сети. Другой вопрос в том, где найти такой роутер, который не будет проверять/фильтровать tcp-сессию на предмет существования. Такие роутеры перестали производить году эдак в 2007м.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы