투명한 TCP 프록시 용 iptables


5

내 상황이야. 내 네트워크에는 iPad, TiVo 및 dd-wrt 라우터가 있고, iPad와 TiVo 사이의 drapir를 스니핑 / 암호 해독하는 데 사용하고 싶은 컴퓨터가 있습니다.

iPad에는 A)가 TiVo의 IP를 자동으로 발견하고 B)가 SSL을 통해 TiVo와 통신하는 앱이 있습니다. TiVo가 유선으로 연결되어 iPad가 내 Wi-Fi 네트워크에 연결되어 패킷이 내 dd-wrt 라우터를 통과한다는 것을 보장합니다. 나는 tcpdump로 그들을 냄새 맡을 수 있지만 암호화되어있다.

tcpcatcher를 사용하여 ssl 암호 해독 및 재 암호화로 man-in-the-middle을 시도하려고합니다. 나는 dd-wrt 라우터에서 간단한 iptable 규칙을 사용하여 ipad와 tivo 사이를 이동할 패킷을 전달 / 리다이렉트 / 냇 (nat)하여 투명한 http 프록 싱을 할 수있는 것처럼 생각합니다. 나는 이것을하기위한 올바른 규칙을 찾지 못했고 도움을 원합니다.


1
끝내주는 질문에 올랐다 - 당신이 시도한 것을 게시하고 지금까지 어떻게 작동하지 않았는 지 게시하십시오.
mbb

답변:


1

iptables로 리디렉션을 수행하면 다음과 같이 수행 할 수 있습니다.

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

이 표준 웹 프록시 서버로 리디렉션됩니다. 이 규칙은 TCP 프로토콜 포트 80에 대한 eth1 인터페이스로 들어오는 패킷과 IP 및 포트에 대한 DESTINATION NATTED 패킷에 대한 NAT 테이블 PREROUTING 체인에 배치됩니다.

그러나 트래픽이 리디렉션되면 엔드 포인트를 알지 못해도 원래 대상으로 되돌려 보내야합니다. 나는 당신이 그것을 성취하는 방법을 알고 싶어합니다.


1

여기에 좋은 것이있다. 지도 시간 이것을 성취하기 위해서. 기본적으로 프록시 서버에 DNAT 패킷을 보내고 라우터가 프록시 서버에서 응답을 얻은 다음 NAT를 실행 취소하도록 SNAT도해야합니다. 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을 대상으로하는 패킷을 프록시 서버로 리디렉션합니다 (실제로 인터넷의 웹 서버에 연결해야하므로 프록시 서버 자체의 패킷 제외). 두 번째 규칙은 보낼 때 리디렉션 된 패킷의 원본 주소를 변경합니다. 프록시 서버. (나는 앞으로의 체인이 이러한 패킷을 받았다고 가정하고있다. 그렇지 않다면 거기에 또 다른 규칙이 필요하다.)


1

당신은 내 tun2socks "TCP 잡기"부분에 대한 프로그램. 이 프로그램은 SOCKS 프록시를 통해 나가는 모든 TCP 연결을 전달하는 가상 TUN 네트워크 인터페이스를 만듭니다. Ipad의 연결을 tun2socks의 TUN 인터페이스로 전달하기 위해 라우팅 규칙 (ip 규칙)을 추가하면 tun2socks가이를 SOCKS5 프록시로 전달합니다. SOCKS 프록시에서 /에서 MITM 공격을 수행하는 것이 훨씬 쉬워야합니다.

이 접근법은 여러분의 입장에서 보면 iptables 리다이렉트 규칙과 유사하지만 SOCKS5 프로토콜 헤더에 존재할 연결의 실제 목적지를 알아내는 데는 특별한 조치를 취할 필요가 없습니다.

최신 정보 : Ipad에서 TUN 인터페이스로 패킷을 가져 오는 것은 실제로 생각보다 어렵습니다. 네가 라우터에 br0 브릿지 인터페이스 wlan0 (Ipad가있는 곳) 및 eth0 (티보가있는 곳). DD-WRT에 익숙하지 않아서 이름이 다를 수 있습니다. brctl show ).

이제 문제는 Ipad ( wlan0 ) ~ 티보 ( eth0 )는 라우팅되지 않지만 가교 된 (즉 스위치가하는 것과 동일한 것). 즉, IP 규칙을 추가하더라도 적어도 논리적으로 말하면 라우터를 통과하지 않기 때문에 중요하지 않습니다. 이를 해결하기 위해, Ipad에서 직접 MAC 주소로 향하는 것처럼 패킷을 리디렉션해야합니다. br0 티보의 MAC 주소가 아닌 eth0; 이렇게하면 커널이 IP 패킷을 들어오는 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를 의미하지는 않습니다 - ebtable에서 NAT는 IP 주소가 아닌 프레임의 MAC 주소를 변경하는 것을 의미합니다.

DD-WRT 용 tun2socks의 컴파일 된 버전을 얻을 수 있습니다. 이리 ; 잘하면 그것은 당신의 장치에서 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.