Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
go-http-proxy-to-socks — CLI-MITM-Proxy, der SOCKS4/SOCKS5 in HTTP/HTTPS/HTTP2/HTTP3-Proxy mit transparenter TCP/UDP-Umleitung, ARP/NDP/DNS-Spoofing, Traffic-Sniffing und Paketerfassung umwandelt. Reines Go, kein libpcap. | Kitploit
Tools/GitHubGitHub/shadowy-pycoder/go-http-proxy-to-socks
Paket-Sniffing & AnalyseWeb-Proxys & AbfangenIDS/IPS-UmgehungNetzwerksicherheitPenetrationstestsDienstprogramme & FrameworksDNS-FuzzingRed TeamingDNS-Analyse

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHubshadowy-pycoder/go-http-proxy-to-socks

go-http-proxy-to-socks

CLI-MITM-Proxy, der SOCKS4/SOCKS5 in HTTP/HTTPS/HTTP2/HTTP3-Proxy mit transparenter TCP/UDP-Umleitung, ARP/NDP/DNS-Spoofing, Traffic-Sniffing und Paketerfassung umwandelt. Reines Go, kein libpcap.

Repository anzeigen
693vor 1 MonatVon Kitploit geprüft

GoHPTS - Transparenter HTTP(S)- und TCP/UDP-Proxy für SOCKS4/SOCKS5-Proxy (Kette) geschrieben in Go

License: GPL v3 Go Reference GitHub go.mod Go version AUR Version AUR Last Modified AUR Maintainer Docker Pulls GitHub Release GitHub Downloads (all assets, all releases) GitHub Downloads (all assets, latest release)

GoHPTS - Farbbeispiel

Inhaltsverzeichnis

  • Einleitung
  • Funktionen
  • Installation
  • Verwendung
    • Konfiguration über CLI-Flags
    • Konfiguration über YAML-Datei
  • Transparenter Proxy
    • redirect (über NAT und SO_ORIGINAL_DST)
    • Automatische Konfiguration für den Redirect-Modus
    • tproxy (über MANGLE und IP_TRANSPARENT)
    • Automatische Konfiguration für den Tproxy-Modus
    • UDP-Unterstützung
    • Android-Unterstützung
    • YAML-Konfiguration
  • Datenverkehrssniffing
    • JSON-Format
    • Farbiges Format
  • HTTP2- und HTTP3-Unterstützung
    • Beispiel-Setup mit selbstsigniertem Zertifikat
    • Verbindung testen
    • Verbindung in einem Browser testen
  • IPv4- und IPv6-Unterstützung
  • ARP-Spoofing
  • NDP-Spoofing
  • DNS-Spoofing
  • Paketerfassung
  • Netzwerk-Namespaces
    • Playground-Setup
    • Anwendungsbeispiele
  • Gemischter Server
  • Links
  • Mitwirken
  • Lizenz

Einleitung

[Zurück]

Das CLI-Tool GoHPTS ist eine Brücke zwischen HTTP-Clients und einem SOCKS5-Proxy-Server oder mehreren Servern (Kette). Es lauscht lokal als HTTP-Proxy, nimmt standardmäßige HTTP- oder HTTPS-Anfragen (über CONNECT) entgegen und leitet die Verbindung über einen SOCKS5-Proxy weiter. Inspiriert von http-proxy-to-socks und Proxychains

Möglicher Anwendungsfall: Sie müssen über Postman eine Verbindung zu einer externen API herstellen, diese API ist jedoch nur über einen entfernten Server verfügbar. Die folgenden Befehle helfen Ihnen, eine solche Aufgabe auszuführen:

SOCKS5-Proxy-Server über ssh erstellen:```shell ssh -D 1080 -Nf

root@kitploit:~
HTTP-zu-SOCKS5-Verbindung mit `gohpts` erstellen```shell
gohpts -s :1080 -l :8080

Specify http server in proxy configuration of Postman

Features

[Back]

  • Proxy-Chain-Funktionalität
    Unterstützt strict, dynamic, random, round_robin Ketten von SOCKS4/SOCKS5-Proxys

  • Transparenter Proxy
    Unterstützt redirect (SO_ORIGINAL_DST) und tproxy (IP_TRANSPARENT) Modi

  • IPv4- und IPv6-Unterstützung
    Funktioniert in den Modi IPv4-only, IPv6-only oder dual stack

  • Transparenter Proxy für TCP und UDP
    tproxy und tlocal (IP_TRANSPARENT) verarbeiten TCP- und UDP-Verkehr

  • Datenverkehrssniffing
    Der Proxy kann HTTP-Header, TLS-Handshake, DNS-Nachrichten und mehr analysieren

  • ARP-Spoofing
    Gesamte Subnetze mittels ARP-Spoofing proxieren

Installation

[Back]

  • Arch Linux/CachyOS/EndeavourOS ```shell yay -S gohpts
    root@kitploit:~

Oder mit paru: ```shell paru -S gohpts

root@kitploit:~
- Laden Sie die Binärdatei für Ihre Plattform von der Seite [Releases](https://github.com/shadowy-pycoder/go-http-proxy-to-socks/releases) herunter:  ```shell
GOHPTS_RELEASE=v1.15.5; wget -v https://github.com/shadowy-pycoder/go-http-proxy-to-socks/releases/download/$GOHPTS_RELEASE/gohpts-$GOHPTS_RELEASE-linux-amd64.tar.gz -O gohpts && tar xvzf gohpts && mv -f gohpts-$GOHPTS_RELEASE-linux-amd64 gohpts && ./gohpts -h
  • Installieren mit dem go install Befehl (erfordert Go 1.26 oder neuer): ```shell CGO_ENABLED=0 go install -ldflags "-s -w" -trimpath github.com/shadowy-pycoder/go-http-proxy-to-socks/cmd/gohpts@latest
    root@kitploit:~

Dies wird die gohpts-Binärdatei in Ihr $GOPATH/bin-Verzeichnis installieren.

  • Aus dem Quellcode erstellen: ```shell git clone https://github.com/shadowy-pycoder/go-http-proxy-to-socks.git cd go-http-proxy-to-socks make build ./bin/gohpts
    root@kitploit:~
  • In Docker ausführen: ```shell docker run -it --privileged --network host -v "$PWD/gohpts.yaml:/config.yaml" shadowypycoder/gohpts:latest -f config.yaml
    root@kitploit:~

Verwendung

[Zurück]```shell gohpts -h


/ | | | | | __ _ / ____| | | __ ___ | || | |) | | | | (__ | | |_ |/ _ | __ | / | | _
| |__| | (
) | | | | | | | ) | _|_/|| ||| || |___/

GoHPTS: HTTP(S) Proxy to SOCKS4/SOCKS5 proxy by shadowy-pycoder GitHub: https://github.com/shadowy-pycoder/go-http-proxy-to-socks Codeberg: https://codeberg.org/shadowy-pycoder/go-http-proxy-to-socks

Usage: gohpts [OPTIONS] OPTIONS: General: -h Show this help message and exit -v Show version and build information -D Run as a daemon (provide -logfile to see logs) -I Display list of network interfaces and exit -f Path to proxy configuration file in YAML format

Proxy: -l Address of HTTP proxy server (Default: "127.0.0.1:8080" for IPv4, "[::1]:8080" for IPv6) -s Address of SOCKS proxy server (Default: "127.0.0.1:1080" for IPv4 "[::1]:1080" for IPv6) -c Path to certificate PEM encoded file -k Path to private key PEM encoded file -U User for HTTP proxy (basic auth). This flag invokes prompt for password (not echoed to terminal) -u User for SOCKS proxy authentication. This flag invokes prompt for password (not echoed to terminal) -i Bind proxy to specific network interface (either by interface name or index) -4 Force IPv4 stack for TCP and UDP (Default: dual stack) -6 Force IPv6 stack for TCP and UDP (Default: dual stack) -socks4 Use SOCKS4/SOCKS4a protocol for upstream proxy and mixed server (default: SOCKS5/SOCKS5h) -nohttp Disable HTTP proxy server -nosocks Disable SOCKS upstream proxy -dns Use custom DNS server (Example: "8.8.8.8" or "2001:4860:4860::8888") -mixed Accept SOCKS connections on HTTP proxy server address

Logs: -d Show logs in DEBUG mode -j Show logs in JSON format -logfile Log file path (Default: stdout) -nocolor Disable colored output for logs (no effect if -j flag specified) -pprof Address of pprof server with profiling data

Sniffing: -sniff Enable traffic sniffing for HTTP and TLS -snifflog Sniffed traffic log file path (Default: the same as -logfile) -body Collect request and response body for HTTP traffic (credentials, tokens, etc)

TProxy: -T Address of transparent proxy server -Tu Address of transparent UDP proxy server -M Transparent proxy mode: (redirect, tproxy, tlocal) -w Number of instances of transparent proxy server (Default: number of CPU cores) -wu Number of instances of transparent UDP proxy server (Default: number of CPU cores) -auto Automatically setup iptables and kernel parameters for transparent proxy (requires elevated privileges) -mark Set mark for each packet sent through transparent proxy (Default: redirect 0, tproxy 100, tlocal 100) -P Comma separated list of ports to ignore when proxying traffic (Example: "22,80,443,9092") -dump Dump iptables rules and other system settings generated by -auto flag

Spoofing: -arpspoof Enable ARP spoof proxy for selected targets (Example: "targets 10.0.0.1,10.0.0.5-10,192.168.1.*,192.168.10.0/24;fullduplex false;debug true;interval 10s") -ndpspoof Enable NDP spoof proxy for selected targets (Example: "ra true;na true;targets fe80::3a1c:7bff:fe22:91a4;fullduplex false;debug true;interval 10s")

Packet Capture: -pcap Enable packet capture (Example: "promisc true;expr ip proto tcp;snaplen 65535;timeout 10s;packet_count 100;packet_buffer 8192;exts txt,pcap,pcapng")

Namespaces: -in-netns Name or path of network namespace for inbound listeners (Default: default namespace) -out-netns Name or path of network namespace for outbound connections (Default: default namespace)

root@kitploit:~
### Konfiguration über CLI-Flags

[[Zurück]](#table-of-contents)```shell
gohpts -s 1080 -l 8080 -d -j

Ausgabe:```shell {"level":"info","time":"2025-05-28T06:15:18+00:00","message":"SOCKS5 Proxy: :1080"} {"level":"info","time":"2025-05-28T06:15:18+00:00","message":"HTTP Proxy: :8080"} {"level":"debug","time":"2025-05-28T06:15:22+00:00","message":"HTTP/1.1 - CONNECT - www.google.com:443"}

root@kitploit:~
Benutzername und Passwort für den SOCKS5-Proxy-Server angeben:```shell
gohpts -s 1080 -l 8080 -d -j -u user
SOCKS5 Password: #you will be prompted for password input here

Benutzername und Passwort für den HTTP-Proxyserver angeben:```shell gohpts -s 1080 -l 8080 -d -j -U user HTTP Password: #you will be prompted for password input here

root@kitploit:~
Wenn sowohl `-u` als auch `-U` vorhanden sind, werden Sie zweimal zur Eingabe aufgefordert

HTTP-Proxy über TLS-Verbindung ausführen```shell
gohpts -s 1080 -l 8080 -c "path/to/certificate" -k "path/to/private/key"

Führen Sie den Proxy als Daemon aus (eine Logdatei wird für die Protokollausgabe benötigt, sonst sehen Sie nichts)```shell gohpts -D -logfile /tmp/gohpts.log

root@kitploit:~
INPUT:```shell
# output
gohpts pid: <pid>
  1. Multi-Source-Reporting: Kombinieren Sie die Ergebnisse mehrerer Censys-Abfragen und geben Sie die Ergebnisse in einer einzigen CSV-Datei zurück (nützlich, wenn Sie nach mehreren Arten von Angriffen auf Ihre Infrastruktur suchen).
  2. NEU TLS-Scan: Finden von Host-Header-Injection-Schwachstellen in TLS-Verbindungen, über IP-Adressen, Domainnamen und HTTP-Header-Hosts hinweg. Sehr leistungsstark!```shell

kill the process

kill #or kill $(pidof gohpts)

root@kitploit:~
`-u` und `-U` funktionieren im Daemon-Modus nicht (und daher auch keine Authentifizierung), aber Sie können eine Konfigurationsdatei bereitstellen (siehe unten)

### Konfiguration über YAML-Datei

[[Zurück]](#table-of-contents)

Konfigurationsdateien sind nützlich, wenn Sie Ihren Proxy vorkonfigurieren möchten, ohne zu sehr mit der CLI herumspielen zu müssen, oder einfach mehrere Profile für verschiedene Anforderungen haben möchten.

HTTP-Proxy im SOCKS5-Proxy-Chain-Modus ausführen (Server-Einstellungen über YAML-Konfigurationsdatei angeben)```shell
gohpts -f "~/gohtps.yaml" -d -j

Konfigurationsbeispiel:```yaml

bind proxy to specific network interface (either by interface name or index)

interface: "eth0" # if specified, overrides http server IP address disable_http: false # disable http proxy (default: false) disable_socks: false # disable upstream socks proxy (default: false)

if ipv4 and ipv6 are both false or both true, dual stack is assumed

ipv4: false # this must be enabled for arpspoof (default: false) ipv6: false # this must be enabled for ndpspoof (default: false) socks4: false # use SOCKS4/SOCKS4a protocol (tcp only protocol, no udp tproxy or http3 possible) (default: false) dns: 8.8.8.8 # custom DNS server (used in direct dialer, namespaces, spoofing)

http_server: address: 127.0.0.1:8080

username and password for adding basic authentication (comment out to disable auth)

username: username password: password

list of socks5 proxy

if proxy_chain is disabled, uses first server in a list as upstream

proxy_list:

  • address: 127.0.0.1:1080
  • address: 127.0.0.1:1081
  • address: :1082 # empty host means localhost

proxy_chain: enabled: false

Explanations for chains taken from /etc/proxychains4.conf

strict - Each connection will be done via chained proxies

all proxies chained in the order as they appear in the list

all proxies must be online to play in chain

dynamic - Each connection will be done via chained proxies

all proxies chained in the order as they appear in the list

at least one proxy must be online to play in chain

(dead proxies are skipped)

random - Each connection will be done via random proxy

(or proxy chain, see chain_len) from the list.

this option is good to test your IDS :)

round_robin - Each connection will be done via chained proxies

of chain_len length

all proxies chained in the order as they appear in the list

at least one proxy must be online to play in chain

(dead proxies are skipped).

the start of the current proxy chain is the proxy after the last

proxy in the previously invoked proxy chain.

if the end of the proxy chain is reached while looking for proxies

start at the beginning again.

These semantics are not guaranteed in a multithreaded environment.

type: strict # dynamic, strict, random, round_robin length: 2 # maximum number of proxy in a chain (works only for random chain and round_robin chain)

logging: debug: true json: false

defaults to standard output

#logfile: /tmp/gohpts.log

use colored output in logs (no effect if json enabled)

nocolor: false

profiling data

pprof: 127.0.0.1:8081

root@kitploit:~
Sie können fast alle Einstellungen, die in der Konfigurationsdatei angegeben sind, durch die entsprechenden CLI flags überschreiben:```shell
gohpts -l :6969 -f "~/gohtps.yaml" -nocolor

Proxy übernimmt alle Einstellungen, die in ~/gohpts.yaml festgelegt sind, startet jedoch einen HTTP-Server auf 127.0.0.1:6969 anstelle von 127.0.0.1:8080 und deaktiviert außerdem die farbige Ausgabe in den Logs.

Einige Einstellungen (z. B. proxy_chain und DNS-Filter) können nur über eine Datei konfiguriert werden.

Die vollständige Version der Konfiguration finden Sie hier: example_gohpts.yaml

Weitere Informationen zu Proxy-Ketten finden Sie auf Proxychains Github

Transparenter Proxy

[Back]

Auch bekannt als intercepting proxy, inline proxy oder forced proxy, fängt ein transparenter Proxy die normale Kommunikation auf Anwendungsebene ab, ohne dass eine spezielle Client-Konfiguration erforderlich ist. Clients müssen nicht über die Existenz des Proxys informiert sein. Ein transparenter Proxy befindet sich normalerweise zwischen dem Client und dem Internet, wobei der Proxy einige der Funktionen eines Gateways oder Routers übernimmt.

-- Aus Wiki

Diese Funktion ist nur unter Linux-Systemen und Android (arm64) verfügbar und erfordert zusätzliche Einrichtung (iptables, IP-Route usw.)

Das -T address-Flag gibt die Adresse des transparenten Proxyservers an.

Es gibt drei Modi: redirect, tproxy und tlocal (wie tproxy, fängt aber auch lokalen Datenverkehr ab), die mit dem Flag -M angegeben werden können.

redirect (über NAT und SO_ORIGINAL_DST)

[Back]

In diesem Modus erfolgt das Proxying mit der iptables-nat-Tabelle und dem REDIRECT-Ziel. Die Adresse des eingehenden Pakets wird auf die Adresse des laufenden redirect-transparenten Proxys geändert, aber es enthält auch das ursprüngliche Ziel, das mit getsockopt(SO_ORIGINAL_DST) abgerufen werden kann.

Um GoHPTS in diesem Modus auszuführen, verwenden Sie das Flag -T mit -M redirect

Beispiel

[Back]```shell

run the proxy

gohpts -s 1080 -T 1090 -M redirect -d

root@kitploit:~
---

### 🏆 Funktionen

- 🌐 **Webbasiert** – Funktioniert direkt im Browser über [Bash Web Hosting](https://bash.ws/) (keine Installation erforderlich).
- 🛍️ **Quellcode verfügbar** – Vollständig quelloffen unter der [MIT-Lizenz](https://github.com/shadowy-pycoder/go-http-proxy-to-socks/blob/HEAD/LICENSE).
- 🐧 **Linux & macOS** – Kompatibel mit `bash`, `zsh` und standardmäßigen Befehlszeilenwerkzeugen.
- ⚙️ **Anpassbar** – Funktionen nach Bedarf ändern oder erweitern.
- 📡 **Verfügbare Endpunkte**:
  - `https://bash.ws/id` – Neue Tracking-ID abrufen.
  - `https://bash.ws/dns/<id>` – Gibt ein Tracking-Pixel zurück (1x1 transparentes GIF).
  - `https://bash.ws/code` – Zeigt den Payload-Code (Inhalt dieses Repositorys) an.
- 🔒 **Verschlüsselte ID-Übertragung** – Tracking-IDs werden in der Abfragezeichenfolge gesendet (HTTPS).```shell
# run socks5 server on 127.0.0.1:1080
ssh remote -D 1080 -Nf

Richten Sie Ihr Betriebssystem ein:```shell

commands below require elevated privileges (you can run it with sudo -i)

#enable ip forwarding sysctl -w net.ipv4.ip_forward=1

create GOHPTS nat chain

iptables -t nat -N GOHPTS

set no redirection rules for local, http proxy, ssh and redirect proxy itself

iptables -t nat -A GOHPTS -d 127.0.0.0/8 -j RETURN iptables -t nat -A GOHPTS -p tcp --dport 8080 -j RETURN iptables -t nat -A GOHPTS -p tcp --dport 1090 -j RETURN iptables -t nat -A GOHPTS -p tcp --dport 22 -j RETURN

redirect traffic to transparent proxy

iptables -t nat -A GOHPTS -p tcp -j REDIRECT --to-ports 1090

setup prerouting by adding our proxy

iptables -t nat -A PREROUTING -p tcp -j GOHPTS

intercept local traffic for testing

iptables -t nat -A OUTPUT -p tcp -j GOHPTS

root@kitploit:~
Testverbindung:```shell
#traffic should be redirected via 127.0.0.1:1090
curl http://example.com
  • Endpunktschutz (Antiviren- und EDR-Lösungen) - Generiert synthetische Malware-, Phishing- und Ransomware-Angriffe, um die Erkennungsfähigkeiten, Alarmierungsgenauigkeit und Reaktionsmechanismen zu testen.
  • Sicherheitsüberwachung (SIEM, SOAR, UEBA, Netzwerk-Traffic-Analyse) - Erstellt eine Vielzahl von sicherheitsrelevanten Ereignissen und protokolliert sie über mehrere Kanäle, von Systemprotokollen bis hin zu Netzwerkströmen, um die Ereignissammlung, Korrelations-Engine und Workflow-Automatisierung zu bewerten.
  • Bedrohungsaufklärung (Threat Intelligence Platforms) - Generiert synthetische Threat-Intelligence-Daten, einschließlich IoCs, TTPs und Bedrohungsakteur-Profile, um die Datenerfassung, Anreicherung und Verbreitung zu validieren.
  • Sicherheitsautomatisierung (SOAR-Plattformen, benutzerdefinierte Skripte, Runbooks) - Ermöglicht wiederholbare Sicherheitstests durch Simulation verschiedener Arten von Playbooks, Automatisierung von Routineaufgaben und Testen von Reaktionsstrategien gegen ein breites Spektrum von Sicherheitsvorfällen.
  • Schulung von Sicherheitsteams - Bietet eine realistische, isolierte Umgebung mit mehreren gleichzeitigen Sicherheitsvorfällen, sodass Teams das Erkennen, Untersuchen und Reagieren auf Bedrohungen wie Ransomware-Ausbrüche, Laterale Bewegungen und Datenexfiltration üben können.
  • Testen von Sicherheitsprodukten - Bietet eine Möglichkeit, Sicherheitsprodukte zu vergleichen, indem eine konsistente Basis synthetischer Angriffe bereitgestellt wird, um sicherzustellen, dass Produkte anhand einer standardisierten Reihe von realistischen Bedrohungsszenarien bewertet werden.
  • Compliance-Tests - Validiert, ob Sicherheitskontrollen und -prozesse die gesetzlichen Anforderungen erfüllen, wie etwa PCI DSS, HIPAA und SOC 2, indem Analysten die Fähigkeiten des Systems zur Erkennung und Reaktion auf Sicherheitsvorfälle dokumentieren können.
  • Forschung und Entwicklung - Unterstützt Sicherheitsforschung durch die Bereitstellung einer Plattform zum Testen neuer Erkennungsmethoden, zur Bewertung von Machine-Learning-Modellen und zur Erforschung neuartiger Angriffstechniken ohne Risiko für Produktionssysteme.```shell #traffic should be redirected via 127.0.0.1:8080 curl --proxy http://127.0.0.1:8080 http://example.com
root@kitploit:~
Alles rückgängig machen:```shell
sysctl -w net.ipv4.ip_forward=0
iptables -t nat -D PREROUTING -p tcp -j GOHPTS
iptables -t nat -D OUTPUT -p tcp -j GOHPTS
iptables -t nat -F GOHPTS
iptables -t nat -X GOHPTS

Auto configuration for redirect mode

[Back]

Um Ihr System automatisch zu konfigurieren, führen Sie den folgenden Befehl aus:```shell sudo env PATH=$PATH gohpts -d -T 8888 -M redirect -auto

root@kitploit:~
Bitte beachten Sie, dass die automatische Konfiguration `sudo` erfordert und sehr allgemein ist, was möglicherweise nicht Ihren Anforderungen entspricht. Sie können optional `-mark <value>` angeben, um mögliche Proxy-Loops zu verhindern.```shell
sudo env PATH=$PATH gohpts -d -T 8888 -M redirect -auto -mark 100

tproxy (via MANGLE and IP_TRANSPARENT)

[Back]

In diesem Modus erfolgt das Proxying mit der mangle-Tabelle von iptables und dem TPROXY-Ziel. Der transparente Proxy sieht die Zieladresse unverändert, sie wird nicht vom Kernel umgeschrieben. Damit dies funktioniert, bindet der Proxy mit der Socket-Option IP_TRANSPARENT, iptables fängt den Datenverkehr mit dem TPROXY-Ziel ab, und Routing-Regeln weisen markierte Pakete an, zum lokalen Proxy zu gehen, ohne ihre ursprüngliche Zieladresse zu ändern.

Dieser Modus erfordert erhöhte Privilegien, um GoHPTS auszuführen. Sie können dies tun, indem Sie den folgenden Befehl ausführen:```shell sudo setcap 'cap_net_admin+ep' ~/go/bin/gohpts

root@kitploit:~
Um `GoHPTS` in diesem Modus auszuführen, verwenden Sie das Flag `-T` mit `-M tproxy`

### Beispiel

[[Zurück]](#table-of-contents)```shell
# run the proxy
gohpts -s 1080 -T 0.0.0.0:1090 -M tproxy -d

Entwicklung

Von allen, die mit den Codebasen, Issue-Trackern, Chat-Räumen und Mailinglisten des AppConfig-Projekts interagieren, wird erwartet, dass sie den Verhaltenskodex befolgen.

  1. Klone das App-Einstellungs-Repository, füge die Authentifizierung hinzu und forke es
  2. Erstelle einen neuen Branch für Änderungen
  3. Nimm Änderungen am App-Konfigurations-Repository vor
  4. Passe die Konfigurationseinstellungen an deine Domains an
  5. Erstelle die Änderungen mit Atmoic-Operator
  6. Teste die Änderungen, um sicherzustellen, dass sie wie erwartet funktionieren
  7. Reiche einen Pull-Request im Haupt-Repository ein

Community

  • Atomic Operator Docs
  • Atomic-Operator Community on Discord```shell

run socks5 server on 127.0.0.1:1080

ssh remote -D 1080 -Nf

root@kitploit:~
Richten Sie Ihr Betriebssystem ein:```shell
ip netns add ns-client
ip link add dev veth0 type veth peer name veth1 netns ns-client
ip addr add 10.0.0.1/24 dev veth0
ip link set dev veth0 up
ip netns exec ns-client ip addr add 10.0.0.2/24 dev veth1
ip netns exec ns-client ip link set dev lo up
ip netns exec ns-client ip link set dev veth1 up
ip netns exec ns-client ip route add default via 10.0.0.1
sysctl -w net.ipv4.ip_forward=1

iptables -t mangle -A PREROUTING -i veth0 -p tcp -j TPROXY --on-port 1090 --tproxy-mark 0x1/0x1

ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100

Verbindung testen:```shell ip netns exec ns-client curl http://1.1.1.1

root@kitploit:~
Alles rückgängig machen:```shell
sysctl -w net.ipv4.ip_forward=0
iptables -t mangle -F
ip rule del fwmark 1 lookup 100
ip route flush table 100
ip netns del ns-client

Automatische Konfiguration für den tproxy Modus

[Zurück]

Um Ihr System automatisch zu konfigurieren, führen Sie den folgenden Befehl aus (z.B. auf einer separaten VM):```shell ssh remote -D 1080 -Nf sudo env PATH=$PATH gohpts -d -T 8888 -M tproxy -auto -mark 100

root@kitploit:~
Führen Sie Folgendes auf Ihrem Host aus:```shell
ip route show default > /tmp/default-route.txt

ip route add 0.0.0.0/1 via 192.168.0.1 # change with ip of your VM
ip route add 128.0.0.0/1 via 192.168.0.1

Verbindung testen:```shell curl http://example.com #check logs on your VM

root@kitploit:~
Alles rückgängig machen:```shell
ip route del 0.0.0.0/1 via 192.168.0.1 2>/dev/null || true
ip route del 128.0.0.0/1 via 192.168.0.1 2>/dev/null || true

if [[ -f /tmp/default-route.txt ]]; then
    eval $(awk '{print "ip route add "$0}' /tmp/default-route.txt)
    rm -f /tmp/default-route.txt
else
    echo "Something went wrong"
fi

UDP-Unterstützung

[Back]

GoHPTS hat UDP-Unterstützung, die in den Modi tproxy und tlocal aktiviert werden kann. Damit dieses Setup funktioniert, müssen Sie eine Verbindung zu einem socks5-Server herstellen, der UDP-Verbindungen bedienen kann (UDP ASSOCIATE). Beispielsweise können Sie https://github.com/wzshiming/socks5 verwenden, um einen UDP-fähigen socks5-Server auf einem entfernten oder lokalen Rechner bereitzustellen. Sobald Sie den Server zum Verbinden haben, führen Sie den folgenden Befehl aus:```shell sudo env PATH=$PATH gohpts -s remote -Tu :8989 -M tproxy -auto -mark 100 -d

root@kitploit:~
Dieser Befehl konfiguriert Ihr Betriebssystem und richtet den Server auf der Adresse `0.0.0.0:8989` ein.

Zum lokalen Testen können Sie den UDP-transparenten Proxy mit dem Flag `-arpspoof` kombinieren. Beispiel:

1. Richten Sie eine VM auf Ihrem System mit einer beliebigen Linux-Distribution ein, die `tproxy` unterstützt (z. B. Kali Linux).
2. Aktivieren Sie das `bridged` Netzwerk, damit die VM auf Ihren Hostrechner zugreifen kann.
3. Verschieben Sie die `gohpts`-Binärdatei auf die VM (z. B. per `ssh`) oder bauen Sie sie dort, falls das Betriebssystem/die Architektur anders ist.
4. Führen Sie auf Ihrer VM den folgenden Befehl aus:```shell
# Do not forget to replace <socks5 server> and <your host> with actual addresses
sudo ./gohpts -s <socks5 server> -T 8888 -Tu :8989 -M tproxy -sniff -body -auto -mark 100 -d -arpspoof "targets <your host>;fullduplex true;debug false"
  1. Überprüfen Sie die Verbindung auf Ihrem Host-Rechner, der Datenverkehr sollte über die Kali-Maschine laufen.

Android-Unterstützung

[Back]

Transparenter Proxy kann auf Android-Geräten (arm64) mit Root-Zugriff aktiviert werden. Sie können Termux installieren und dort GoHPTS als CLI-Tool ausführen:```shell

you need to root your device first

pkg install tsu iproute2

Android support added in v1.10.2

GOHPTS_RELEASE=v1.10.2; wget -v https://github.com/shadowy-pycoder/go-http-proxy-to-socks/releases/download/$GOHPTS_RELEASE/gohpts-$GOHPTS_RELEASE-android-arm64.tar.gz -O gohpts && tar xvzf gohpts && mv -f gohpts-$GOHPTS_RELEASE-android-arm64 gohpts && ./gohpts -h

use your phone as router for LAN devices redirecting their traffic to remote socks5 server

sudo ./gohpts -s remote -T 8888 -Tu :8989 -M tproxy -sniff -body -auto -mark 100 -d -arpspoof "fullduplex true;debug false"

root@kitploit:~
### YAML-Konfiguration

[[Zurück]](#table-of-contents)```yaml
transparent_proxy:
  tcp:
    enabled: true
    address: 0.0.0.0:8888
    # number of instances of transparent proxy server (Default: number of CPU cores)
    workers: 1
  udp:
    enabled: true
    address: 0.0.0.0:8889
    # number of instances of transparent UDP proxy server (Default: number of CPU cores)
    workers: 1
  mode: "tproxy" # available modes are "redirect", "tproxy" and "tlocal" (udp requires tproxy or tlocal mode)
  # automatically setup iptables and kernel parameters for transparent proxy (requires elevated privileges)
  auto: true
  # dump iptables rules and other system settings generated by auto setting
  dump_rules: false
  # list of ports to ignore when proxying traffic (Example: [22,80,443,9092])
  ignored_ports: []
  # set mark for each packet sent through transparent proxy (Default: redirect 0, tproxy 100, tlocal 100)
  mark: 100

Netzwerkverkehr abhören

[Back]

MrGopher

Der GoHPTS-Proxy ermöglicht es, den Verkehr, der durch den Dienst läuft, zu erfassen und zu überwachen. Dieser Vorgang wird als traffic sniffing, packet sniffing oder einfach sniffing bezeichnet. Insbesondere versucht der Proxy zu identifizieren, ob es sich um Klartext- (HTTP) oder TLS-Verkehr handelt, und nach erfolgter Identifizierung parst er die Metadaten der Anfrage/Antwort und schreibt sie in eine Datei oder auf die Konsole. Im Fall des GoHTPS-Proxys sehen geparste Metadaten wie folgt aus (TLS-Handshake):

JSON-Format

[Back]```json [ { "connection": { "tproxy_mode": "redirect", "src_local": "127.0.0.1:8888", "src_remote": "192.168.0.107:51142", "dst_local": "127.0.0.1:56256", "dst_remote": "127.0.0.1:1080", "original_dst": "216.58.209.206:443" } }, { "tls_request": { "sni": "www.youtube.com", "type": "Client hello (1)", "version": "TLS 1.2 (0x0303)", "session_id": "2670a6779b4346e5e84d46890ad2aaf7a53b08adcfe0c9f6868c2d9882242e39", "cipher_suites": [ "TLS_AES_128_GCM_SHA256 (0x1301)", "TLS_CHACHA20_POLY1305_SHA256 (0x1303)", "TLS_AES_256_GCM_SHA384 (0x1302)", "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)", "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)", "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca9)", "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8)", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)", "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)", "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)", "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)", "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)", "TLS_RSA_WITH_AES_128_GCM_SHA256 (0x9c)", "TLS_RSA_WITH_AES_256_GCM_SHA384 (0x9d)", "TLS_RSA_WITH_AES_128_CBC_SHA (0x2f)", "TLS_RSA_WITH_AES_256_CBC_SHA (0x35)" ], "extensions": [ "server_name (0)", "extended_master_secret (23)", "renegotiation_info (65281)", "supported_groups (10)", "ec_point_formats (11)", "session_ticket (35)", "application_layer_protocol_negotiation (16)", "status_request (5)", "delegated_credential (34)", "signed_certificate_timestamp (18)", "key_share (51)", "supported_versions (43)", "signature_algorithms (13)", "psk_key_exchange_modes (45)", "record_size_limit (28)", "compress_certificate (27)", "encrypted_client_hello (65037)" ], "alpn": ["h2", "http/1.1"] } }, { "tls_response": { "type": "Server hello (2)", "version": "TLS 1.2 (0x0303)", "session_id": "2670a6779b4346e5e84d46890ad2aaf7a53b08adcfe0c9f6868c2d9882242e39", "cipher_suite": "TLS_AES_128_GCM_SHA256 (0x1301)", "extensions": ["key_share (51)", "supported_versions (43)"], "supported_version": "TLS 1.3 (0x0304)" } } ]

root@kitploit:~
Und HTTP-Anfrage mit curl:```json
[
  {
    "connection": {
      "tproxy_mode": "redirect",
      "src_local": "127.0.0.1:8888",
      "src_remote": "192.168.0.107:45736",
      "dst_local": "127.0.0.1:37640",
      "dst_remote": "127.0.0.1:1080",
      "original_dst": "96.7.128.198:80"
    }
  },
  {
    "http_request": {
      "host": "example.com",
      "uri": "/",
      "method": "GET",
      "proto": "HTTP/1.1",
      "header": {
        "Accept": ["*/*"],
        "My": ["Header"],
        "User-Agent": ["curl/7.81.0"]
      }
    }
  },
  {
    "http_response": {
      "proto": "HTTP/1.1",
      "status": "200 OK",
      "content-length": 1256,
      "header": {
        "Cache-Control": ["max-age=2880"],
        "Connection": ["keep-alive"],
        "Content-Length": ["1256"],
        "Content-Type": ["text/html"],
        "Date": ["Tue, 17 Jun 2025 14:43:24 GMT"],
        "Etag": ["\"84238dfc8092e5d9c0dac8ef93371a07:1736799080.121134\""],
        "Last-Modified": ["Mon, 13 Jan 2025 20:11:20 GMT"]
      }
    }
  }
]

Die Verwendung ist so einfach wie das Angeben des -sniff-Flags zusammen mit den regulären Flags.```shell gohpts -d -T 8888 -M redirect -sniff -j

root@kitploit:~
Sie können auch eine Datei angeben, in die der abgefangene Verkehr geschrieben werden soll:```shell
gohpts -sniff -snifflog ~/sniff.log -j

Farbiges Format

[Zurück]

Sie können ein Beispiel der farbigen Ausgabe im obigen Bild sehen. In diesem Modus versucht GoHPTS, wichtige Informationen wie TLS-Handshake, HTTP-Metadaten, etwas, das wie Logins/Passwörter oder verschiedene Arten von Authentifizierungs- und geheimen Token aussieht, hervorzuheben. Die Ausgabe ist im Vergleich zu JSON eingeschränkt, aber für Menschen viel einfacher zu lesen.

Um GoHPTS in diesem Modus auszuführen, verwenden Sie die folgenden Flags:```shell gohpts -sniff -body

root@kitploit:~
Sie können Sniffing mit dem transparenten Modus kombinieren:```shell
./gohpts -T 8888 -M redirect -sniff -body

Um Farben zu deaktivieren, fügen Sie -nocolor hinzu:```shell gohpts -sniff -body -nocolor

root@kitploit:~
## HTTP2- und HTTP3-Unterstützung

[[Zurück]](#table-of-contents)

Der `GoHPTS`-Proxy verarbeitet HTTP/1.1-, HTTP/2- und HTTP/3-Anfragen über dieselbe Serveradresse und dasselbe TLS-Zertifikat. Dies ermöglicht es Clients, automatisch das beste verfügbare Protokoll auszuwählen, ohne die Konfiguration zu ändern. Das TLS-Zertifikat kann auf verschiedene Weise bezogen werden: Cloud-Anbieter (Google, AWS, Cloudflare), kostenloses Zertifikat von Let's Encrypt, oder Sie können ein selbstsigniertes Zertifikat mit `openssl` (Linux/macOS) oder `New-SelfSignedCertificate` (Windows) erstellen.

### Beispielsetup mit selbstsigniertem Zertifikat

[[Zurück]](#table-of-contents)

- Erstellen Sie die Dateien `key.pem` und `cert.pem`:  ```shell
  openssl req -x509 -newkey rsa:2048 \
  -keyout key.pem \
  -out cert.pem \
  -sha256 \
  -days 365 \
  -nodes \
  -subj "/C=XX/ST=StateName/L=CityName/O=CompanyName/OU=CompanySectionName/CN=127.0.0.1" \
  -addext "subjectAltName=IP:127.0.0.1"
  • Vorbereiten eines socks5-Servers mit UDP ASSOCIATE-Unterstützung ```shell git clone https://github.com/wzshiming/socks5.git && cd socks5 go build -o socks5_server ./cmd/socks5/main.go ./socks5_server -a 0.0.0.0:1080
    root@kitploit:~
  • Öffnen Sie ein weiteres Terminal und installieren Sie GoHPTS proxy: ```shell go install github.com/shadowy-pycoder/go-http-proxy-to-socks/cmd/gohpts@latest
    root@kitploit:~

Sie können andere Methoden verwenden, die im Abschnitt Installation beschrieben sind.

  • Schließlich:

    1. Erstellen Sie eine minimale Konfiguration für Ihren Proxy ```yaml

    gohpts_config.yaml

    http_server: address: 127.0.0.1:8080 cert_file: ./cert.pem key_file: ./key.pem

    proxy_list:

    • address: 127.0.0.1:1080

    logging: debug: true

    sniffing: enabled: true body: true

    root@kitploit:~

Proxy ausführen: ```shell gohpts -f ./gohpts_config.yaml

root@kitploit:~
2. Oder wenn Sie Befehlszeilenargumente bevorzugen:  ```shell
gohpts -l :8080 -s 1080 -c ./cert.pem -k ./key.pem -d -sniff -body

Sie sollten so etwas sehen: ```shell [15:20:32] INF SOCKS5 Proxy: 127.0.0.1:1080 [15:20:32] INF HTTPS Proxy: 127.0.0.1:8080 [15:20:32] INF HTTP3 Proxy (QUIC): 127.0.0.1:8080

root@kitploit:~
### Testverbindung

[[Back]](#table-of-contents)

- Für HTTP/2-Proxy-Server kannst du `curl` verwenden:  ```shell
  curl -Nvk --http2 --proxy-insecure --proxy-http2 --proxy https://localhost:8080 "https://stream.wikimedia.org/v2/stream/recentchange"

Drücke Ctrl+C, um den laufenden Stream zu stoppen.

  • Für HTTP/3 ist es anders, da (zum Zeitpunkt der Erstellung) curl keinen HTTP3-Proxy unterstützt, also werde ich meinen eigenen Client verwenden, den ich zu Testzwecken erstellt habe.

    Lade das Simple HTTP3 to SOCKS5 proxy example herunter und installiere es: ```shell git clone https://github.com/shadowy-pycoder/http3-socks-proxy.git && cd http3-socks-proxy make

    root@kitploit:~

Führen Sie den folgenden Befehl aus: ```shell ./bin/client -a 127.0.0.1:8080 www.google.com

root@kitploit:~
Sie sollten einiges an Kauderwelsch sehen, das einer HTML-Seite ähnelt.

Gehen Sie zum Terminal-Tab mit dem `GoHPTS`-Proxy und überprüfen Sie die Logs. Sie sollten dort alle Ihre Anfragen sehen.

### Verbindung in einem Browser testen

[[Back]](#table-of-contents)

- Erstellen Sie ein ordnungsgemäßes selbstsigniertes Zertifikat für den Browser:  ```shell
git clone https://github.com/shadowy-pycoder/go-http-proxy-to-socks.git
cd go-http-proxy-to-socks
cp ./resources/makecert.sh makecert.sh && chmod +x makecert.sh
./makecert.sh

Weitere Informationen finden Sie hier: Creating a browser trusted, self signed, SSL certificate

  • Fügen Sie das neu erstellte rootCA.crt dem Systemvertrauensspeicher hinzu:
    1. Debian/Ubuntu: ```shell sudo cp rootCA.crt /usr/local/share/ca-certificates/rootCA.crt sudo update-ca-certificates
    root@kitploit:~
  1. Arch Linux/CachyOS/EndeavourOS: ```shell sudo trust anchor rootCA.crt
root@kitploit:~
- Führen Sie den Proxy mit `server.crt` und `server.key` aus:  ```shell
gohpts -l :8080 -s 1080 -c ./server.crt -k ./server.key -d -sniff -body
  • Starten Sie den Browser und gehen Sie zu einer beliebigen Website: ```shell chromium --proxy-server="https://127.0.0.1:8080"
    root@kitploit:~

IPv4- und IPv6-Unterstützung

[Back]

In Bezug auf die Netzwerkschichthandhabung kann GoHPTS in drei Modi betrieben werden: dual stack, IPv4-only und IPv6-only. Der Benutzer kann den Modus durch die Angabe der Flags -4 und -6 steuern. Wenn eines der Flags gesetzt ist, startet der Proxy im entsprechenden Modus; wenn beide Flags vorhanden oder beide weggelassen sind, wird dual stack angenommen. Bitte beachten Sie, dass in den "only"-Modi nur IP-Adressen der jeweiligen Version erlaubt sind, alle Domains (wenn möglich) in die spezifische IP-Version aufgelöst werden, alle Listening-Adressen die Verwendung derselben Version erfordern usw.

Um den IPv4-only-Modus zu aktivieren, fügen Sie einfach das Flag -4 hinzu:```shell sudo ./gohpts -sniff -body -d -4

root@kitploit:~
Um den Proxy im IPv4-Modus zu testen, können Sie jede Linux-VM verwenden:

1. Auf Ihrer virtuellen Maschine:```shell
# add your host machine as gateway for VM
export GATEWAY="<host IPv4 address>"
ip route add 0.0.0.0/1 via "$GATEWAY"
ip route add 128.0.0.0/1 via "$GATEWAY"
  1. Auf Ihrem Host:```shell

run proxy on your host

sudo ./gohpts -T 8888 -Tu 8889 -M tproxy -sniff -body -auto -d -4

root@kitploit:~
3. Besuchen Sie eine beliebige Website auf Ihrer virtuellen Maschine und sehen Sie den Datenverkehr in den Proxy-Protokollen

Um den `IPv6-only`-Modus zu aktivieren, fügen Sie einfach das Flag `-6` hinzu, zum Beispiel bei Verwendung mit transparentem Proxy:```shell
sudo ./gohpts -T 8888 -M redirect -sniff -body -auto -mark 100 -d -6

Damit dies funktioniert, müssen Ihr ISP und der entfernte Socks5-Proxy aktive IPv6-Unterstützung haben. Sie können https://test-ipv6.com/ besuchen, um herauszufinden, ob Sie auf IPv6-Adressen zugreifen können. Um den Proxy im IPv6-Modus zu testen, können Sie jede Linux-VM verwenden:

  1. Auf Ihrer virtuellen Maschine:```shell

add your host machine as gateway IPv6 for VM

export GATEWAY6="" ip -6 route add ::/1 via "$GATEWAY6" dev eth0 ip -6 route add 8000::/1 via "$GATEWAY6" dev eth0

root@kitploit:~
2. Auf Ihrem Host:```shell
# run proxy on your host
sudo ./gohpts -T 8888 -Tu 8889 -M tproxy -sniff -body -auto -d -6
  1. Besuche eine beliebige Website auf Ihrer virtuellen Maschine und sehen Sie den Traffic in den Proxy-Protokollen

ARP spoofing

[Back]

GoHPTS verfügt über einen integrierten ARP-Spoofer, mit dem alle TCP-kommunizierenden Geräte in Ihrem LAN gezwungen werden können, den Proxy-Server für die Internetverbindung zu nutzen. Dies wird durch Hinzufügen des Flags -arpspoof mit einigen Parametern, getrennt durch Semikolon, erreicht.

Beispiel:```shell ssh remote -D 1080 -Nf sudo env PATH=$PATH gohpts -d -T 8888 -M tproxy -sniff -body -auto -mark 100 -arpspoof "targets 192.168.10.0/24;fullduplex true;debug true"

root@kitploit:~
Der Proxy scannt nach Geräten im Subnetz `192.168.10.0/24` und sendet ihnen ARP-Pakete, um sich als Gateway auszugeben. Wenn `fullduplex` true ist, sendet der Proxy auch ARP-Pakete an das Gateway, um ihm vorzutäuschen, dass unser Proxy jede IP im Subnetz besitzt.

Nachdem der Proxy mit `Ctrl+C` gestoppt wurde, wird er automatisch alle Ziele enttarnen.

`GoHPTS` kann auch mit Tools wie [Bettercap](https://github.com/bettercap/bettercap) verwendet werden, um ARP-gespoofte Datenverkehr zu proxen.

Führen Sie den Proxy aus:```shell
ssh remote -D 1080 -Nf
sudo env PATH=$PATH gohpts -d -T 8888 -M tproxy -sniff -body -auto -mark 100

Führen Sie bettercap mit diesem Befehl aus (siehe Dokumentation):```shell sudo bettercap -eval "net.probe on;net.recon on;set arp.spoof.fullduplex true;arp.spoof on"

root@kitploit:~
Überprüfen Sie die Proxy-Protokolle auf Datenverkehr von anderen Geräten aus Ihrem LAN

Weitere Informationen zu den arpspoof-Optionen finden Sie unter `gohpts -h` und [https://github.com/shadowy-pycoder/arpspoof](https://github.com/shadowy-pycoder/arpspoof)

## NDP spoofing

[[Back]](#table-of-contents)

`GoHPTS` verfügt über eine integrierte Funktion zur Durchführung von NDP-Spoofing in IPv6-Netzwerken mit Router Advertisement (RA)- und Neighbor Advertisement (NA)-Paketen. Es enthält außerdem die RDNSS-Option in RA-Paketen, um den Host als IPv6-Nameserver für betroffene Clients zu setzen. In Kombination mit dem transparenten Proxy-Modus (TCP/UDP) ermöglicht NDP-Spoofing `gohpts`, Datenverkehr für Clients in lokalen Netzwerken zu proxieren. Wie bei [ARP-Spoofing](#arp-spoofing) können Sie NDP-Spoof-Optionen mit dem einzelnen `-ndpspoof`-Flag festlegen:

Beispiel:```shell
sudo env PATH=$PATH gohpts -d -T 8888 -M tproxy -sniff -body -auto -mark 100 -ndpspoof "ra true;na true;targets fe80::3a1c:7bff:fe22:91a4;fullduplex false;debug true"

Für weitere Informationen über ndpspoof-Optionen siehe gohpts -h und https://github.com/shadowy-pycoder/ndpspoof

Bitte beachten Sie, dass einige Optionen wie rdnss, gateway, interface automatisch von gohpts selbst gesetzt werden, um ordnungsgemäß als Proxy zu funktionieren.

Da gohpts alle Verbindungen über einen vorgeschalteten SOCKS5-Server proxyt, benötigen Sie einen funktionierenden Server mit IPv4/IPv6- und TCP/UDP-Unterstützung. Offensichtlich sollte auch ein entferntes System (z.B. VPS) eine funktionierende IPv6-Konnektivität haben. Selbstverständlich sollte die Maschine, auf der gohpts läuft, Teil eines Netzwerks mit IPv6-Unterstützung sein.

Beispiel-Setup für korrektes NDP-Spoofing:

  1. Verbinden Sie sich mit dem VPS```shell ssh [email protected]
root@kitploit:~
2. Abhängigkeiten installieren```shell
GO_VERSION=$(curl 'https://go.dev/VERSION?m=text' | head -n1)
cd ~/Downloads/ && wget https://go.dev/dl/$GO_VERSION.linux-amd64.tar.gz
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf $GO_VERSION.linux-amd64.tar.gz
  1. Richten Sie den SOCKS5-Server ein (stellen Sie sicher, dass Firewall-Regeln die verwendeten Ports nicht blockieren)```shell git clone https://github.com/wzshiming/socks5.git && cd socks5 go build -o ./bin/socks5_server ./cmd/socks5/*.go ./bin/socks5_server -a :3000
root@kitploit:~
4. Gehen Sie zurück zu Ihrem Host-Rechner und installieren Sie `gohpts` (siehe [Installation](#installation))

5. Führen Sie `gohtps` aus:```shell
gohpts -s 203.0.113.10:3000 -T 8888 -Tu 8889 -M tproxy -sniff -body -auto -mark 100 -arpspoof "fullduplex true;debug true" -ndpspoof "ra true;debug true" -4 -6 -d
  1. Nehmen Sie ein anderes Gerät (Handy, Tablet usw.) und verbinden Sie es mit demselben Netzwerk. Versuchen Sie, auf das Internet zuzugreifen und prüfen Sie, ob auf Ihrem Host-Rechner etwas Datenverkehr erscheint. Überprüfen Sie die öffentliche IP-Adresse mit einem Online-Tool (sie sollte in diesem Fall Ihrer VPS-Adresse 203.0.113.10 oder der globalen IPv6-Adresse entsprechen).

  2. Stoppen Sie den Proxy mit Strg+C

  3. Profit!

DNS-Spoofing

[Zurück]

Um DNS-Filter zu erzwingen und Ziele durch Ändern von DNS-Einträgen zu spoofen, sollte der Host, auf dem GoHPTS läuft, zum Standard-Gateway für LAN-Geräte werden. Dazu führen Sie einfach den transparenten Proxy mit aktiviertem UDP aus und führen auch ARP/NDP-Spoofing durch, damit die Ziele Ihren DNS-Server verwenden.

Von GoHPTS erstellte DNS-Antworten sehen aus wie normale Pakete vom Router oder von vertrauenswürdigen DNS-Servern (Google, Cloudflare), sodass Clients ihren Cache mit dem aktualisieren, was Sie ihnen vorgeben. Beachten Sie jedoch, dass dies nur für „standardmäßigen“ unverschlüsselten DNS-Verkehr funktioniert (DOT/DOH werden nicht gefiltert oder gespooft).

DNS-Filter und Domains zum Spoofing können im Abschnitt dns_filter der YAML-Konfigurationsdatei konfiguriert werden. Alle Listen akzeptieren URLs, Dateipfade und Einträge ähnlich denen, die normalerweise in der Hosts-Datei zu finden sind, siehe https://en.wikipedia.org/wiki/Hosts_(file).

Beispiel:```yaml

dns filters require udp transparent proxy and arpspoof/ndpspoof

filters accept hosts like entries (use either links, file paths or just plain comma separated lists

dns_filter: enabled: true whitelist: ["/tmp/whitelisted_domains.txt", "example.com", "*.google.com"] # ip is optional, domains can start with *. to match all subdomains blacklist: ["https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"] blacklist_all: false # block all non whitelisted domains spooflist: ["127.0.0.1 example.com"] # ip address is required here

root@kitploit:~
Anwendungsfälle:

- Werbe- und Tracker-Blocker für alle LAN-Geräte
- Kindersicherung durch Blockieren bestimmter Website-Kategorien
- Blockieren bekannter Phishing- und Malware-Domains
- Verkehrsumleitung zur Analyse
- Erfassung von Anmeldeinformationen durch Umleitung
- Verkehrs-Hijacking und -Manipulation (Einschleusen von Werbung, Skripten, Tracking)
- Überwachung und Profilerstellung

Minimale Konfiguration für dieses Setup:```yaml
# gohpts_dns_spoof.yaml
proxy_list:
  - address: 127.0.0.1:1080 # point to socks5 server supporting TCP/UDP

sniffing:
  enabled: true
  body: true

transparent_proxy:
  tcp:
    enabled: true
    address: 0.0.0.0:8888
  udp:
    enabled: true
    address: 0.0.0.0:8889
  mode: "tproxy"
  auto: true

arpspoof:
  enabled: true
  settings: "fullduplex 1;debug 1;interval 1s"

dns_filter:
  enabled: true
  whitelist: []
  blacklist: [
      "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts",
    ] # list of domains to filter
  blacklist_all: true
  # all requests for example.com will be redirected to 0.0.0.0 address
  spooflist: ["0.0.0.0 example.com"]

Ausführen:```shell sudo ./gohpts -f ./gohpts_dns_spoof.yaml

root@kitploit:~
Weitere Informationen finden Sie hier: [https://en.wikipedia.org/wiki/DNS_spoofing](https://en.wikipedia.org/wiki/DNS_spoofing)

## Paket-Capture

[[Zurück]](#table-of-contents)

Der Datenverkehr kann in pcap-, pcapng- oder benutzerdefinierte txt-Formate erfasst und später mit Tools wie Wireshark, tcpdump und vielen anderen analysiert werden.

Stellen Sie zunächst sicher, dass die ausführbare Datei `GoHPTS` über erhöhte Berechtigungen verfügt, um Rohpakete erfassen zu können. Sie haben zwei Möglichkeiten:

- Führen Sie einmal `sudo setcap cap_net_raw+ep ~/go/bin/gohpts` aus, um dem Proxy Zugriff auf Rohdatenverkehr zu gewähren
- Führen Sie den Proxy mit `sudo` aus, wenn Sie das Flag `-pcap` in der CLI oder `pcap.enabled` in der Dateikonfiguration angeben müssen.

Konfigurieren Sie den Proxy über die CLI:```shell
gohpts -pcap "promisc true;timeout 10s;exts txt,pcap,pcapng"

Konfigurationsdatei:```yaml pcap: enabled: true settings: "promisc true;expr ip proto tcp;snaplen 65535;timeout 10s;packet_count 100;packet_buffer 8192;exts txt,pcap,pcapng"

root@kitploit:~
Diese Befehle erzeugen drei Packet-Capture-Dateien mit entsprechenden Formaten, die später von verschiedenen Tools analysiert werden können.

Weitere Informationen zu pcap-Optionen finden Sie unter `gohpts -h` und [https://github.com/shadowy-pycoder/mshark](https://github.com/shadowy-pycoder/mshark)

## Netzwerk-Namespaces

[[Zurück]](#table-of-contents)

Standardmäßig läuft der `GoHPTS`-Proxy innerhalb eines einzigen Netzwerk-Namespace, aber dies kann überschrieben werden. Listening-Sockets (z. B. HTTP-Server oder transparenter Proxy-Server) und ausgehende Sockets (Socks-Proxy oder direkter Dialer), die von `GoHPTS` erstellt werden, können mit Linux/Android [network_namespaces (7)](https://man7.org/linux/man-pages/man7/network_namespaces.7.html) isoliert werden. Beim Starten des Proxy-Prozesses können Benutzer die Flags `-in-netns` (Listener) und `-out-netns` (Dialer) mit dem Namen oder Pfad zum Netzwerk-Namespace angeben, um zu steuern, in welcher isolierten Umgebung Sockets erstellt werden sollen. Wenn Sie entweder Listener oder Dialer im aktuellen (Standard-)Namespace erstellen möchten, lassen Sie das Flag einfach weg. Um den Host-Namespace explizit anzugeben, können Sie den Pfad `/proc/1/ns/net` verwenden – dies ermöglicht dem Proxy, die System-Nameserver korrekt zu identifizieren.

`GoHPTS` unterstützt die [ip-netns (8)](https://man7.org/linux/man-pages/man8/ip-netns.8.html)-Konvention zur Bereitstellung der Netzwerkkonfiguration über Dateien im Verzeichnis `/etc/netns/NAME/`. Um also benutzerdefinierte Nameserver für den Netzwerk-Namespace `ns1` anzugeben, gehen Sie wie folgt vor:```shell
sudo mkdir -p /etc/netns/ns1
sudo tee /etc/netns/ns1/resolv.conf << EOF
nameserver 8.8.8.8
nameserver 2001:4860:4860:0:0:0:0:8888
EOF

Wenn keine Konfiguration gefunden wird, werden die Google DNS-Server zur Auflösung von Domainnamen verwendet.

Wenn auf Ihrem System systemd-resolved.service (8) aktiviert ist, sollten Sie es vorübergehend deaktivieren, wenn Sie Abfragen über benutzerdefinierte Netzwerk-Namespaces durchführen:```shell sudo ip netns exec ns1 unshare --mount bash -c ' mount --bind /dev/null /run/systemd/resolve/io.systemd.Resolve curl -Nvk https://example.com'

root@kitploit:~
Oder machen Sie es für eine bestimmte Shell-Instanz persistent:```shell
sudo ip netns exec ns1 unshare --mount bash -c '
    mount --bind /dev/null /run/systemd/resolve/io.systemd.Resolve
    exec bash --login'

Playground setup

[Back]

  • socks5-Server mit UDP-ASSOCIATE-Unterstützung ausführen ```shell git clone https://github.com/wzshiming/socks5.git && cd socks5 go build -o socks5_server ./cmd/socks5/main.go ./socks5_server -a 0.0.0.0:1080
    root@kitploit:~
  • Herunterladen und installieren Sie das Einfaches HTTP3-zu-SOCKS5-Proxy-Beispiel: ```shell git clone https://github.com/shadowy-pycoder/http3-socks-proxy.git cd http3-socks-proxy make
    root@kitploit:~
  • Klone das Repo und kompiliere es ```shell git clone https://github.com/shadowy-pycoder/go-http-proxy-to-socks.git cd go-http-proxy-to-socks make
    root@kitploit:~
  • Erstellen Sie die Dateien key.pem und cert.pem: ```shell openssl req -x509 -newkey rsa:2048
    -keyout key.pem
    -out cert.pem
    -sha256
    -days 365
    -nodes
    -subj "/C=XX/ST=StateName/L=CityName/O=CompanyName/OU=CompanySectionName/CN=127.0.0.1"
    -addext "subjectAltName=IP:127.0.0.1"
    root@kitploit:~
  • Erstellen Sie einen Netzwerk-Namespace ns1 und konfigurieren Sie das veth-Netzwerk ```shell sudo ip netns add ns1 sudo ip link add dev veth0 type veth peer name veth1 netns ns1 sudo ip addr add 10.0.0.1/24 dev veth0 sudo ip -6 addr add fd12:3456:789a::1/64 dev veth0 sudo ip link set dev veth0 up sudo ip netns exec ns1 ip addr add 10.0.0.2/24 dev veth1 sudo ip netns exec ns1 ip -6 addr add fd12:3456:789a::2/64 dev veth1 sudo ip netns exec ns1 ip link set dev lo up sudo ip netns exec ns1 ip link set dev veth1 up

Anwendungsbeispiele

[Back]

  1. HTTP Proxy - Proxy-Listener in ns1 (keine Standardroute, kein Internetzugang), ausgehende Sockets auf dem Host

    Proxy ausführen: ```shell sudo ./bin/gohpts -s 0.0.0.0:1080 -l :8083 -4 -6 -d -sniff -body -in-netns ns1

    root@kitploit:~

Anfrage via ns1 stellen ```shell sudo ip netns exec ns1 curl -Nv --proxy http://127.0.0.1:8083 https://example.com

root@kitploit:~
Anfrage sollte erfolgreich sein

2. **HTTP2-Proxy - Proxy-Listener in `ns1` (keine Standardroute, kein Internetzugriff), ausgehende Sockets auf dem Host**

Proxy ausführen:   ```shell
sudo ./bin/gohpts -s 0.0.0.0:1080 -l :8083 -4 -6 -d -sniff -body -in-netns ns1 -c ./cert.pem -k ./key.pem

Stelle Anfrage über ns1 ```shell sudo ip netns exec ns1 curl -Nvk --http2 --proxy-insecure --proxy-http2 --proxy https://127.0.0.1:8083 https://example.com

root@kitploit:~
Anfrage sollte erfolgreich sein

3. **HTTP3-Proxy - Proxy-Listener in `ns1` (keine Standardroute, kein Internetzugang), ausgehende Sockets auf dem Host**

Proxy ausführen:   ```shell
sudo ./bin/gohpts -s 0.0.0.0:1080 -l :8083 -4 -6 -d -sniff -body -in-netns ns1 -c ./cert.pem -k ./key.pem

Anfrage über ns1 ```shell sudo ip netns exec ns1 ./http3-socks-proxy/bin/client -a 127.0.0.1:8083 www.google.com

root@kitploit:~
Anfrage sollte erfolgreich sein

4. **Redirect transparent proxy (`-M redirect`) - Proxy-Listener in `ns1` (Standardroute, kein Internetzugriff), ausgehende Sockets auf dem Host**

Proxy ausführen:   ```shell
sudo ./bin/gohpts -s 0.0.0.0:1080 -l :8083 -4 -6 -d -sniff -body -in-netns ns1 -nohttp -M redirect -T :8888 -auto

Sende Anfrage via ns1 ```shell sudo ip netns exec ns1 curl -Nv https://example.com

root@kitploit:~
Anfrage sollte fehlschlagen

Füge Standardroute zu `ns1` hinzu   ```shell
sudo ip netns exec ns1 ip route add default via 10.0.0.1
sudo ip netns exec ns1 ip -6 route add default via fd12:3456:789a::1

Versuche es erneut ```shell sudo ip netns exec ns1 curl -Nv https://example.com

root@kitploit:~
Jetzt sollte die Anfrage erfolgreich sein

5. **HTTP-Proxy - Proxy-Listener auf dem Host, ausgehende Sockets in `ns1` (Standardroute, Internetzugang)**

NAT-Regeln hinzufügen, damit `ns1` über `wlan0` eine Verbindung zum Internet herstellen kann   ```shell
sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o wlan0 -j MASQUERADE
sudo ip6tables -t nat -A POSTROUTING -s fd12:3456:789a::/64 -o wlan0 -j MASQUERADE

Proxy ausführen: ``` sudo ./bin/gohpts -s :1080 -l :8083 -4 -6 -d -sniff -body -out-netns ns1 -i wlan0

root@kitploit:~
Anfrage über Host stellen   ```shell
curl -Nv --proxy http://$WLAN_IP:8083 https://example.com

Anfrage sollte erfolgreich sein

  1. HTTP3-Proxy - Proxy-Listener auf dem Host, ausgehende Sockets in ns1 (Standardroute, Internetzugang)

    Proxy ausführen: ``` sudo ./bin/gohpts -s :1080 -l :8083 -4 -6 -d -sniff -body -out-netns ns1 -i wlan0 -c ./cert.pem -k ./key.pem

    root@kitploit:~

Stelle Anfrage via Host ```shell ./http3-socks-proxy/bin/client -a $WLAN_IP:8083 www.google.com

root@kitploit:~
Request should succeed

7. **Weiterleitung transparenter Proxy - Proxy-Listener auf dem Host, ausgehende Sockets in `ns1` (Standardroute, Internetzugang)**

Proxy ausführen (`-auto` funktioniert bei mir nicht mit lokalem Socks5-Server, daher verwende ich einen entfernten):   ```
sudo ./bin/gohpts -s <remote> -4 -6 -d -sniff -body -out-netns ns1 -nohttp -M redirect -T :8888 -auto

Anfrage über Host senden ```shell curl -Nv https://example.com

root@kitploit:~
Anfrage sollte erfolgreich sein

8. **HTTP-Proxy - LAN (`ns2` (Proxy-Listener), `ns3`, `ns4`), ausgehende Sockets in `ns1` (Standardroute, Internetzugriff)**

LAN erstellen   ```shell
sudo ip link add br0 type bridge
sudo ip addr add 10.0.1.1/24 dev br0
sudo ip -6 addr add fd12:3456:789b::1/64 dev br0
sudo ip link set br0 up

sudo ip netns add ns2
sudo ip link add veth2 type veth peer name veth3 netns ns2
sudo ip link set veth2 master br0
sudo ip link set veth2 up
sudo ip netns exec ns2 ip addr add 10.0.1.2/24 dev veth3
sudo ip netns exec ns2 ip -6 addr add fd12:3456:789b::2/64 dev veth3
sudo ip netns exec ns2 ip link set lo up
sudo ip netns exec ns2 ip link set veth3 up
sudo ip netns exec ns2 ip route add default via 10.0.1.1
sudo ip netns exec ns2 ip -6 route add default via fd12:3456:789b::1

sudo ip netns add ns3
sudo ip link add veth4 type veth peer name veth5 netns ns3
sudo ip link set veth4 master br0
sudo ip link set veth4 up
sudo ip netns exec ns3 ip addr add 10.0.1.3/24 dev veth5
sudo ip netns exec ns3 ip -6 addr add fd12:3456:789b::3/64 dev veth5
sudo ip netns exec ns3 ip link set lo up
sudo ip netns exec ns3 ip link set veth5 up
sudo ip netns exec ns3 ip route add default via 10.0.1.1
sudo ip netns exec ns3 ip -6 route add default via fd12:3456:789b::1

sudo ip netns add ns4
sudo ip link add veth6 type veth peer name veth7 netns ns4
sudo ip link set veth6 master br0
sudo ip link set veth6 up
sudo ip netns exec ns4 ip addr add 10.0.1.4/24 dev veth7
sudo ip netns exec ns4 ip -6 addr add fd12:3456:789b::4/64 dev veth7
sudo ip netns exec ns4 ip link set lo up
sudo ip netns exec ns4 ip link set veth7 up
sudo ip netns exec ns4 ip route add default via 10.0.1.1
sudo ip netns exec ns4 ip -6 route add default via fd12:3456:789b::1

Proxy ausführen: ``` sudo ./bin/gohpts -s $WLAN_IP:1080 -l 0.0.0.0:8083 -4 -6 -d -sniff -body -in-netns ns2 -out-netns ns1

root@kitploit:~
Anfragen stellen   ```shell
curl -Nv --proxy http://10.0.1.2:8083 http://example.com
sudo ip netns exec ns2 curl -Nv --proxy http://10.0.1.2:8083 https://example.com
sudo ip netns exec ns3 curl -Nv --proxy http://10.0.1.2:8083 https://example.com
sudo ip netns exec ns4 curl -Nv --proxy http://10.0.1.2:8083 https://example.com

Alle Anfragen sollten erfolgreich sein.

  1. HTTP3-Proxy - LAN (ns2 (Proxy-Listener), ns3, ns4), ausgehende Sockets in ns1 (Standardroute, Internetzugang)

    Proxy ausführen: ``` sudo ./bin/gohpts -s $WLAN_IP:1080 -l 0.0.0.0:8083 -4 -6 -d -sniff -body -in-netns ns2 -out-netns ns1 -c ./cert.pem -k ./key.pem

    root@kitploit:~

Anfragen stellen ```shell ./http3-socks-proxy/bin/client -a 10.0.1.2:8083 www.google.com sudo ip netns exec ns2 ./http3-socks-proxy/bin/client -a 10.0.1.2:8083 www.google.com sudo ip netns exec ns3 ./http3-socks-proxy/bin/client -a 10.0.1.2:8083 www.google.com sudo ip netns exec ns4 ./http3-socks-proxy/bin/client -a 10.0.1.2:8083 www.google.com

root@kitploit:~
Alle Anfragen sollten erfolgreich sein

10. **Transparenter Proxy mit Umleitung - LAN (`ns2` (Proxy-Listener), `ns3`, `ns4`), ausgehende Sockets in `ns1` (Standardroute, Internetzugang)**

 Proxy ausführen:

 ```shell
 sudo ./bin/gohpts -s $WLAN_IP:1080 -4 -6 -d -sniff -body -in-netns ns2 -out-netns ns1 -nohttp -M redirect -T :8888 -auto
 ```

 Anfragen stellen

 ```shell
 sudo ip netns exec ns2 curl -Nv https://example.com
 ```

 Für `ns3` und `ns4` schlägt die Anfrage fehl

11. **Transparenter Proxy mit `IP_TRANSPARENT` (ARP/NDP-Spoofing aktiviert) LAN (`ns2` (Proxy-Listener), `ns3`, `ns4`), ausgehende Sockets in `ns1` (Standardroute, Internetzugang)**

 Proxy ausführen:

 ```shell
 sudo ./bin/gohpts -s $WLAN_IP:1080 -4 -6 -d -sniff -body -in-netns ns2 -out-netns ns1 -nohttp -M tproxy -T :8888 -auto -arpspoof "fullduplex 1;debug 1;interval 1s" -ndpspoof "ra true;interval 10s;debug 1"
 ```

 Nun sollten die vorherigen Anfragen auf `ns3` und `ns4` funktionieren

 ```
 sudo ip netns exec ns3 curl -Nv https://example.com
 sudo ip netns exec ns4 curl -Nv https://example.com
 ```

12. **HTTP3-Proxy - Proxy-Listener in `ns1`, ausgehende Sockets auf dem Host, Flag `-nosocks`**

 Proxy ausführen:

 ```shell
 sudo ./bin/gohpts -l 0.0.0.0:8083 -4 -6 -d -sniff -body -in-netns ns1 -c ./cert.pem -k ./key.pem -nosocks
 ```

 Anfrage stellen

 ```shell
 ./http3-socks-proxy/bin/client -a 10.0.0.2:8083 www.google.com
 ```

 Anfrage sollte erfolgreich sein

13. **HTTP3-Proxy - Proxy-Listener auf dem Host, ausgehende Sockets in `ns1`, Flag `-nosocks`**

 Proxy ausführen:

 ```shell
 sudo ./bin/gohpts -l 0.0.0.0:8083 -4 -6 -d -sniff -body -out-netns ns1 -c ./cert.pem -k ./key.pem -nosocks
 ```

 Anfrage stellen

 ```shell
 ./http3-socks-proxy/bin/client -a 127.0.0.1:8083 www.google.com
 ```

 Anfrage sollte fehlschlagen

 Regeln zur `FORWARD`-Kette hinzufügen

 ```shell
 sudo iptables -A FORWARD -i wlan0 -o veth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
 sudo iptables -A FORWARD -i veth0 -o wlan0 -j ACCEPT

 sudo ip6tables -A FORWARD -i veth0 -j ACCEPT
 sudo ip6tables -A FORWARD -o veth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
 ```

 Anfrage stellen

 ```shell
 ./http3-socks-proxy/bin/client -a 127.0.0.1:8083 www.google.com
 ```

 Anfrage sollte erfolgreich sein

## Gemischter Server

[[Zurück]](#table-of-contents)

`GoHPTS` kann so konfiguriert werden, dass es auf demselben Adressbereich wie der HTTP-Server auf SOCKS-Verbindungen hört. Fügen Sie einfach das Flag `-mixed` hinzu, um einen zusätzlichen SOCKS-Server zu starten. Dadurch fungiert `GoHPTS` nicht nur als `HTTP-zu-SOCKS`-Proxy, sondern auch als `SOCKS-zu-SOCKS`-Proxy. Der lokale SOCKS5-Server unterstützt den Befehl `UDP ASSOCIATE`, sodass Benutzer technisch gesehen UDP-Datagramme mit diesem gemischten Server senden können.

Proxy ausführen:```shell
gohpts -s :1080 -l :8080 -mixed

Testverbindung:```shell curl -Nv --proxy socks5://127.0.0.1:8080 "https://example.com"

root@kitploit:~
Oder deaktivieren Sie den vorgeschalteten SOCKS-Proxy und verbinden Sie direkt, indem Sie `-nosocks` hinzufügen:```shell
gohpts -l :8080 -mixed -nosocks

Verbindung testen:```shell curl -Nv --proxy socks5://127.0.0.1:8080 "https://example.com"

root@kitploit:~
Fügen Sie das Flag `-socks4` hinzu, um stattdessen das SOCKS4-Protokoll zu verwenden:```shell
# :1080 should be a socks4 server
gohpts -s :1080 -l :8080 -mixed -socks4

Verbindung testen:```shell curl -Nv --proxy socks4://127.0.0.1:8080 "https://example.com"

root@kitploit:~
## Links

[[Back]](#table-of-contents)

Erfahre mehr über transparente Proxys unter den folgenden Links:

- [Transparent-Proxy-Unterstützung im Linux-Kernel](https://docs.kernel.org/networking/tproxy.html)
- [Transparent-Proxy-Tutorial von Gost](https://latest.gost.run/en/tutorials/redirect/)
- [Einfaches tproxy-Beispiel](https://github.com/FarFetchd/simple_tproxy_example)
- [Golang TProxy](https://github.com/KatelynHaworth/go-tproxy)
- [Transparent-Proxy-Implementierung mit eBPF und Go](https://medium.com/all-things-ebpf/building-a-transparent-proxy-with-ebpf-50a012237e76)
- [https://github.com/heiher/hev-socks5-tproxy](https://github.com/heiher/hev-socks5-tproxy)

  `socks5`-Proxy mit `UDP ASSOCIATE`-Unterstützung:

- [https://github.com/wzshiming/socks5](https://github.com/wzshiming/socks5)
- [https://github.com/things-go/go-socks5](https://github.com/things-go/go-socks5)
- [https://github.com/0990/socks5](https://github.com/0990/socks5)
- [https://github.com/dizda/fast-socks5](https://github.com/dizda/fast-socks5)
- [https://github.com/semigodking/redsocks](https://github.com/semigodking/redsocks)
- [https://github.com/ginuerzh/gost](https://github.com/ginuerzh/gost)

IPv4/IPv6-Netzwerksicherheit:

- [https://caster0x00.com/legless/](https://caster0x00.com/legless/)
- [https://caster0x00.com/intercept/](https://caster0x00.com/intercept/)
- [https://www.prosec-networks.com/en/blog/ipv6-mitm/](https://www.prosec-networks.com/en/blog/ipv6-mitm/)

## Mitwirken

[[Back]](#table-of-contents)

Bist du Entwickler?

- Forke das Repository
- Erstelle deinen Feature-Branch: `git switch -c my-new-feature`
- Commite deine Änderungen: `git commit -am 'Add some feature'`
- Pushe auf den Branch: `git push origin my-new-feature`
- Reiche einen Pull-Request ein

## Lizenz

[[Back]](#table-of-contents)

GPLv3
Tool herunterladen
  • NDP-Spoofing
    Proxyt IPv6-Verbindungen mittels Router/Neighbor Advertisement und RDNSS-Injektionen.

  • DNS-Spoofing
    Leitet Clients mittels Manipulation von DNS-Einträgen auf beliebige Domains um

  • Paketerfassung
    Erfasst Verkehr in txt/pcap/pcapng-Dateien und analysieren mit Wireshark

  • DNS-Leak-Schutz
    DNS-Auflösung erfolgt serverseitig auf dem SOCKS5-Proxy.

  • CONNECT-Methoden-Unterstützung
    Unterstützt HTTP-CONNECT-Tunneling, wodurch HTTPS und andere TCP-basierte Protokolle ermöglicht werden.

  • HTTP2/HTTP3-Unterstützung
    Unterstützt modernen HTTP/2- und HTTP/3-Transport, was effiziente multiplexierte Verbindungen über TLS 1.3 ermöglicht

  • Unterstützung von Netzwerk-Namespaces
    Unterstützt benutzerdefinierte Linux-Netzwerk-Namespaces für Lauschsockets und ausgehende Verbindungen

  • Unterstützung von Trailer-Headern
    Verarbeitet HTTP-Trailer-Header

  • Chunked Transfer Encoding
    Verarbeitet chunked und Streaming-Antworten

  • SOCKS5-Authentifizierungsunterstützung
    Unterstützt Benutzername/Passwort-Authentifizierung für SOCKS5-Proxys.

  • HTTP-Authentifizierungsunterstützung
    Unterstützt Benutzername/Passwort-Authentifizierung für HTTP-Proxy-Server.

  • Leichtgewichtig und schnell
    Konzipiert mit minimalem Overhead und effizienter Anfrageverarbeitung.

  • Plattformübergreifend
    Kompatibel mit allen gängigen Betriebssystemen.

  • root@kitploit:~
  • Ermitteln Sie die IP-Adresse von wlan0, um eine Verbindung zum lokalen socks5 herstellen zu können. ```shell WLAN_IP=$(ip -4 -c=never route get 8.8.8.8 | awk '{print $7}' | tr -d '\n')
    root@kitploit:~