5

Вот моя ситуация. В моей сети есть iPad, TiVo и маршрутизатор dd-wrt, а также машина, которую я хотел бы использовать для перехвата / дешифрования трафика между iPad и TiVo.

В iPad есть приложение, которое A) автоматически обнаруживает IP для TiVo и B) говорит с TiVo через SSL. IPad находится в моей сети Wi-Fi, а TiVo подключен, что гарантирует прохождение пакетов через мой маршрутизатор dd-wrt; Я могу прослушать их с помощью tcpdump, но они зашифрованы.

Я хотел бы попытаться использовать tcpcatcher, чтобы попытаться сделать человека посередине с расшифровкой и повторным шифрованием ssl. Я бы предположил, что мог бы использовать некоторые простые правила iptable на маршрутизаторе dd-wrt для пересылки / перенаправления / nat пакетов, которые будут проходить между ipad и tivo, так же, как вы можете сделать это для прозрачного http-прокси Однако я не нашел правильных правил для этого и хотел бы получить некоторую помощь.

3 ответа3

1

Вот хороший учебник для достижения этой цели. По сути, вам нужно DNAT-пакеты на прокси-сервер, а также SNAT их, чтобы маршрутизатор получал ответы от прокси-сервера (а затем отменял NAT). Правила iptables должны выглядеть примерно так (при условии, что IP-адрес прокси-сервера равен 10.0.0.10):

iptables --table nat --append PREROUTING --in-interface eth0 --source !10.0.0.10 --protocol tcp --dport 80 --jump DNAT --to 10.0.0.10:3128
iptables --table nat --append POSTROUTING --out-interface eth0 --source 10.0.0.0/24 --destination 10.0.0.10 --jump MASQUERADE

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

1

Вы можете использовать мою программу tun2socks для части "TCP catching ". Эта программа создает виртуальный сетевой интерфейс TUN, который перенаправляет все исходящие соединения TCP через прокси-сервер SOCKS. Если вы добавите правило маршрутизации (правило ip) для пересылки соединения Ipad в интерфейс TUN tun2socks, tun2socks перешлет его на ваш прокси-сервер SOCKS5. Должно быть намного проще выполнять атаку MITM в / в качестве SOCKS-прокси.

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

ОБНОВЛЕНИЕ: получение пакетов с Ipad в интерфейс TUN на самом деле сложнее, чем кажется. Я предполагаю, что у вашего маршрутизатора есть мостовой интерфейс br0 который соединяет wlan0 (где находится Ipad) и eth0 (где находится Tivo). Обратите внимание, что я не очень знаком с DD-WRT, поэтому имена могут отличаться (проверьте с помощью brctl show).

Теперь проблема в том, что пакеты от Ipad (wlan0) до Tivo (eth0) не маршрутизируются, а соединяются (то же самое, что и коммутатор). Это означает, что даже если вы добавите IP-правила, они не будут иметь значения, потому что эти пакеты не будут проходить через маршрутизатор, по крайней мере, логически. Чтобы решить эту проблему, вы должны перенаправить пакеты с Ipad, как если бы они были направлены непосредственно на MAC-адрес br0 а не на MAC-адрес Tivo, который находится в eth0 ; это заставит ядро обрабатывать их как входящие IP-пакеты, надеясь, что они будут маршрутизироваться в соответствии с правилами ip и таблицей маршрутизации. Наконец, команда:

ebtables -t nat -A PREROUTING -i wlan0 -p ipv4 --ip-source <ip_of_ipad> --ip-destination <ip_of_tivo> --ip-protocol TCP -j dnat --to-destination <mac_of_br0>

Это добавляет правило ebtables, которое будет перенаправлять совпадающие пакеты, полученные на wlan0 непосредственно на br0 . Возможно, вам придется добавить больше условий здесь, если это ловит слишком много. Обратите внимание, что dnat не означает обычный (IP) NAT - в ebtables NAT означает изменение MAC-адреса кадров, а не IP-адреса.

Вы можете получить скомпилированную версию tun2socks для DD-WRT здесь ; надеюсь, это будет работать на вашем устройстве.

1

Выполнение перенаправления с помощью iptables может быть выполнено следующим образом:

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.1:3128

Это стандартное веб-перенаправление на прокси-сервер. Правило помещается в цепочку PREROUTING таблицы NAT для пакетов, поступающих на интерфейс eth1 для порта 80 протокола tcp и НАЗНАЧЕНИЕ NATTED для ip и порта.

Однако, как только трафик будет перенаправлен, вам придется вернуть его в исходное место назначения без ведома конечной точки. Мне было бы интересно узнать, как вы этого достигнете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .