
ICMP-, DNS- und NTP-Tunneling-Tool zur Umgehung der Zensur, mit HMAC-Integritätsschutz und MSS-Clamping für effiziente Websitzungen über restriktive Netzwerke.
fraud-bridge hilft dabei, restriktive Zensurumgebungen zu umgehen, die direkte TCP- oder UDP-Verbindungen blockieren, indem es ICMP-, NTP- oder DNS-Tunnel (über IPv4 oder IPv6) einrichtet.
Es patcht automatisch die TCP-MSS-Option, um einen nicht fragmentierten Paketstrom zu erreichen (bekannt als MSS-Clamping), um eine Leistung zu erzielen, die die Nutzung von Websitzungen über die Brücke ermöglicht.
Es verwendet MD5, um den Tunnel (HMAC-)integritätsgeschützt vor böswillig eingeschleusten TCP-Paketen zu schützen. Wenn Sie Privatsphäre benötigen, müssen Sie selbst eine Verschlüsselung verwenden. Es wird davon ausgegangen, dass Sie sowieso SSH über den Tunnel nutzen. Entweder direkt oder mit der SSH-Proxy-Option, wenn Sie HTTP tunneln müssen.
Beim DNS-Tunneln verwendet fraud-bridge EDNS0-Erweiterungsheader, um so viele Bytes wie möglich in die TXT-Antwort zu packen.
fraud-bridge enthält auch einige andere Techniken, um mit bestimmten bind-Einschränkungen umzugehen, z. B. Kontingente/Begrenzungen.
Sie können es auch verwenden, um ohne Patches volle Roaming-/Mobilitätsunterstützung in Ihre SSH-Sitzungen zu bekommen.
Sobald Sie den Tunnel eingerichtet haben, möchten Sie vielleicht lesen, wie Sie Ihren Messenger über den Tunnel zum Laufen bringen.
Beachten Sie auch, dass c->skills die vollständige Kette von Zensurfuck-Ausrüstung bereitstellt, an der Sie interessiert sein könnten: crash und psc
Führen Sie einfach make unter Linux aus.
Die Verwendung ist wie folgt:
fraud-bridge -- https://github.com/stealth/fraud-bridge
Usage: fraud-bridge <-k key> [-R IP] [-L IP] [-pP port] [-iIuUnN] [-s sz]
[-E sz] [-d dev] [-D domain] [-S usec] [-X user] [-r dir] [-t type] [-v]
-k -- HMAC key to protect tunnel packets
-R -- IP or IPv6 addr of (outside) peer when started inside
-L -- local IP addr to bind to if started outside (can be omitted)
-p -- remote port when in DNS/NTP mode (default: 53/123)
-P -- local port when in DNS/NTP mode (outside default: 53/123)
-i -- use ICMP tunnel
-I -- use ICMPv6 tunnel
-u -- use DNS tunnel over IP
-U -- use DNS tunnel over IPv6
-n -- use NTP4 tunnel over IP
-N -- use NTP4 tunnel over IPv6
-E -- set EDNS0 size (default: 1024)
-s -- set MSS size (default: 1024)
-d -- tunnel device to use (default: tun1)
-D -- DNS domain to use when DNS tunneling
-S -- usec slowdown for DNS ping (default: 5000)
-X -- user to run as (default: nobody)
-r -- chroot directory (default: /var/empty)
-t -- override ICMP/ICMP6 type (usually no need to change)
-v -- enable verbose mode
Einige Definitionen: Innen bezieht sich auf den Rechner innerhalb des zensierten Netzwerks, höchstwahrscheinlich Ihren Laptop/PC. Außen bezieht sich auf einen VPS oder Rechner außerhalb des zensierten Netzwerks, also das, was die Leute "freies Internet" nennen.
Nach dem Start öffnet fraud-bridge einen Punkt-zu-Punkt-Tunnel: 1.2.3.4 <-> 1.2.3.5
Dann müssen Sie inside.sh auf der Innenseite und outside.sh auf der Außenseite starten.
Sieht so aus:
On outside end of tunnel (e.g. a server at the internet):
And inside:
als Beispiel für einen DNS-Tunnel mit einem lokalen 127.0.0.1 named, der läuft, und dem Außen-Peer bei 192.168.2.222. Wie gesagt, der äußere Teil des Tunnels kann (und muss tatsächlich) vorher gestartet werden und wartet dann nur darauf, dass der Peer den Tunnel öffnet. Beispiel-Zonendateien sind enthalten, wenn Sie mit Ihren eigenen bind-Einrichtungen experimentieren möchten. Für den Betrieb von ITW-Tunneln sind sie nicht notwendig.
Das Standard-Tunnelgerät ist tun1. Achten Sie darauf, nicht mehrere Instanzen von fraud-bridge gleichzeitig oder andere Tunnelsoftware auszuführen, die dieses Tunnelgerät verwendet. Nach jedem Kill/Neustart des fraud-bridge-Daemons müssen Sie die Inside/Outside-Skripte an dem jeweiligen Ende erneut ausführen, an dem Sie es neu gestartet haben.
Der Parameter -L außen kann (sollte) weggelassen werden. In realen Setups enthält der Parameter -R auf der Innenseite die IP- oder IP6-Adresse des Außenservers, oder wenn DNS-Rekursion verwendet wird, die IP-Adresse des DNS-Servers Ihres Providers oder des öffentlichen rekursiven DNS-Resolvers. Wenn Sie keinen eigenen DNS-Server haben, können Sie DNS-Tunneling weiterhin verwenden, indem Sie Ihre VPS-IP als -R-Parameter auf der Innenseite und einen beliebigen (aber denselben) -D-Domain-Parameter auf beiden Enden verwenden, der für ein Zensurregime legitim aussieht, z.B. -D blah.gov.
Bevor Sie DNS-Tunneling versuchen, sollten Sie höchstwahrscheinlich ICMP- oder NTP-Tunneling ausprobieren. Wenn Sie chroot-Warnungen im Syslog sehen, können Sie sie ignorieren oder gültige Argumente für -r angeben.
Sie können dann ssh -D 1234 1.2.3.5 verwenden, um eine SSH-Verbindung zu 192.168.2.222 im obigen Beispiel zu erhalten und den SOCKS5-Proxy auf Port :1234 für Ihre Webbrowser-Sitzung zu verwenden, die dann über den Tunnel läuft.
Sie können das auch mit ICMP: -i und ICMP über IPv6: -I oder DNS über UDP über IPv6: -U oder NTP über UDP: -n oder NTP über UDP/IPv6: -N tun.
Es ist auch möglich, die Tunnelart (DNS zu ICMP oder ICMP zu NTP) jenseits Ihrer SSH-Verbindung zu wechseln oder zu einer anderen lokalen IP zu wechseln (z.B. von WLAN zu 5G), da der TCP-Status im lokalen und entfernten Kernel und nicht in der Bridge gehalten wird. Dies ermöglicht volle SSH-Roaming-/Mobilitätsunterstützung ohne Patches an SSH.
Im ausführlichen Modus lässt fraud-bridge stdout offen, um Fehler oder Meldungen zu melden, daher müssen Sie es in einem screen ausführen oder die Ausgabe nach /dev/null umleiten, wenn es im (ausführlichen) Hintergrund laufen soll. Behalten Sie das im Hinterkopf, da Sie die Inside/Outside-Skripte nach dem Aufruf von fraud-bridge starten müssen. Wenn Sie nicht -v verwenden, geht es in den Hintergrund und protokolliert Fehler im Syslog.
Stellen Sie vor der Verwendung von ICMP-Tunneln sicher, dass Sie die Firewall-Regeln Ihres Kabelmodems lockern, um die Antwortpakete von Ihrem entfernten Peer zu empfangen. fraud-bridge funktioniert hinter NAT, muss aber letztendlich die Antwortpakete empfangen. Bei Verwendung von ICMP-Tunneln und wenn ICMP-Echos blockiert sind, können Sie den Typ-Parameter über -t setzen. Verwenden Sie zum Beispiel -t 13 innen und -t 14 außen, um Zeitstempel-Anfrage/Antwort-Paare zu erhalten.
Beim DNS-Tunneln verwendet fraud-bridge EDNS0-Erweiterungsheader, um so viele Bytes wie möglich in die TXT-Antwort zu packen. In meinen Tests produziert es, da es versucht, auf alle Timing-Pakete zu antworten, keine Logs in einer bind9-Systemlogdatei. Wenn Sie EDNS0 (-E) ändern, müssen Sie dies an beiden Enden mit demselben Wert tun. (Da innen dem Nameserver die maximale UDP-Nutzlastgröße angekündigt wird und der Außenendpunkt den MSS aus dem mit -E angegebenen Wert berechnet.)
Bei Verwendung von NTP-Tunneln blockieren einige Anbieter mit CGN große NTP-Pakete (nur bei IPv4). Bei einem gängigen deutschen ISP wurden alle NTP-Pakete > 256 Bytes blockiert. Daher müssen Sie den MSS entsprechend setzen, um kleinere Pakete zu erhalten, wie -s 100, damit der TCP-Stack die Segmente in kleineren Größen sendet.
Da fraud-bridge einen PtP-Tunnel öffnet, kann es den IP-Header von den übertragenen Paketen entfernen und an jedem Ende neu synthetisieren. Bei ICMP-Tunneln haben Sie also nur einen Overhead von 8 (ICMP) + 16 (HMAC) Bytes, was akzeptabel ist. DNS-Tunneling hat bei direkter Durchführung dank MSS-Clamping immer noch gute Latenz und Bandbreite. Bei indirektem Tunneln über öffentliche DNS-Resolver sind die Standardwerte gut genug für eine vernünftige Sitzung, aber natürlich ist ICMP-Tunneling vorzuziehen, wann immer möglich.
Durch die Verwendung von ssh -D [0.0.0.0]:1234 1.2.3.5 können Sie einen lokalen SOCKS-Proxy auf Ihrem Rechner Port 1234 (innen) einrichten und ihn über WLAN in Ihrer Nachbarschaft für zensurfreie Websitzungen verteilen.
Sie können auch einen lokalen tor auf der Außenbox einrichten, der einen SOCKS-Port auf 127.0.0.1:9150 anbietet, wie Sie es normalerweise tun, und dann ssh -L 9150:127.0.0.1:9150 1.2.3.5 verwenden, um diesen Außenport an Ihre Innenmaschine weiterzuleiten, um die Außen-tor-Einrichtung lokal exakt zu spiegeln und als tor-SOCKS-Port über WLAN an Ihre Benutzer zu verteilen. Auf diese Weise müssen wir keine pluggbaren Transports implementieren und Sie können tor weiterhin wie gewohnt verwenden. Dasselbe funktioniert auch mit crash- oder psc-Sitzungen oder jedem anderen Tunnelmechanismus.
Der Parameter -S hat einen vernünftigen Standardwert für die DNS-Timer-Pakete, die in konstantem Intervall an den Server gesendet werden müssen. Niedrigere Werte ergeben eine bessere Tunnel-Latenz, können aber den rekursiven DNS-Server überlasten und mehr Rauschen erzeugen.
stolz gesponsert von: