VPNs concurrentes con OpenVPN
Ya sabéis que hace poco liberamos 4nonimizer, un script en bash que permite ocultar la IP con la que salimos a Internet usando un proveedor VPN que soporte OpenVPN. Inicialmente la herramienta levanta un único túnel pero, ¿por qué no levantar varios de forma concurrente?"
Imaginad la posibilidad de usar una "cadena de proveedores VPN", es decir, establecer una VPN teniendo previamente otra levantada, y así varias veces para ocultar la IP real detrás de varias "capas". O la posibilidad de distribuir tráfico paralelamente durante un escaneo de puertos multiplicando la rapidez y de paso facilitando la evasión de IDS/IPS. Por poner dos claros ejemplos...
Pues nada más fácil, simplemente hay que levantar cada uno de los túneles añadiendo cada ruta con una métrica diferente y pata ello sólo hay que especificarlo en cada fichero de configuración correspondiente del cliente openvpn (.ovpn).
El siguiente script levantará automáticamente tantos túneles VPN como indiquemos:
Sólo tenéis que copiarlo (multivpn.sh) al directorio donde tengáis los .ovpn (con 4nonimizer en '/opt/4nonimizer/vpn/proveedor') y copiará aleatoriamente algunos de estos ficheros al subdirectorio 'multivpn' para ejecutarlos después con el cliente openvpn y establecer los túneles uno tras otro:
Después de su ejecución podéis comprobar que los interfaces de túnel (tun0, tun1, tun2, etc.) han sido creados:
Y que las rutas han sido creadas con las métricas establecidas:
A partir de ahí lo que dictamine vuestra imaginación... por ejemplo, lanzar varios escaneos en paralelo con nmap simplemente especificando cada vez un interfaz distinto dentro de un loop:
nmap -sT -Pn -p$port_range -oX salida.xml $network -e tun$iface_number &
De esta manera podremos jugar como queramos como escanear cada rango de puertos de un mismo host desde ubicaciones geográficas diferentes, tal y como se muestra en la siguiente imagen (bmon) con 15 túneles simultáneamente:
¿Interesante verdad? Pues atentos porque pronto actualizaremos 4nonimizer con ésta y otras interesantes opciones :)
Imaginad la posibilidad de usar una "cadena de proveedores VPN", es decir, establecer una VPN teniendo previamente otra levantada, y así varias veces para ocultar la IP real detrás de varias "capas". O la posibilidad de distribuir tráfico paralelamente durante un escaneo de puertos multiplicando la rapidez y de paso facilitando la evasión de IDS/IPS. Por poner dos claros ejemplos...
Pues nada más fácil, simplemente hay que levantar cada uno de los túneles añadiendo cada ruta con una métrica diferente y pata ello sólo hay que especificarlo en cada fichero de configuración correspondiente del cliente openvpn (.ovpn).
El siguiente script levantará automáticamente tantos túneles VPN como indiquemos:
#!/bin/bash
cp pass.txt ./multivpn
rm ./multivpn/*.ovpn
echo introduce numero de vpns concurrentes
read novpns
# Copia 3 ficheros ovpn adicionales por si algún peer falla
novpns=$((novpns + 3))
currentnovpns=0
while [ $novpns != $currentnovpns ]
do
randomvpn=$(ls *.ovpn | shuf -n 1)
if [ ! -f ./multivpn/$randomvpn ]; then
cp $randomvpn ./multivpn/
echo "Copiado el fichero $randomvpn"
fi
currentnovpns=`ls -1 ./multivpn/*.ovpn 2>/dev/null | wc -l`
done
novpns=$((novpns - 3))
# levanta cada tunel con diferentes metricas
metric="20"
INT=$(ls /sys/class/net/ | grep -E '^eth|^en' | head -1)
GW=$(ip route show 0.0.0.0/0 dev $INT | cut -d\ -f3 | sort -u)
for file in $(ls ./multivpn/*.ovpn)
do
echo "route-metric $metric" >> $file
echo "route-nopull 1" >> $file
echo "route 0.0.0.0 0.0.0.0 vpn_gateway $metric" >> $file
metric=$((metric + 1))
done
cd multivpn
musthavetun=1
tries=1
for file in $(ls *.ovpn)
do
currenttun=$(ifconfig | grep tun | awk '{print $1}' | wc -l)
echo -en "\nNúmero de túneles levantados: $currenttun\n"
nohup openvpn $file 2>/dev/null &
echo "Levantando interfaz de túnel"
while [[ $currenttun -lt $musthavetun ]]
do
echo -en "."
tries=$((tries + 1))
sleep 1
currenttun=$(ifconfig | grep tun | awk '{print $1}' | wc -l)
if [ "$tries" = 30 ]
then
break
fi
done
route del default gw $GW $INT 2>/dev/null
route add default gw $GW $INT 2>/dev/null
sleep 3
if [ "$currenttun" = "$novpns" ]
then
break
else
musthavetun=$((musthavetun + 1))
echo "ok!"
fi
done
echo -e " todos los túneles levantados."
Sólo tenéis que copiarlo (multivpn.sh) al directorio donde tengáis los .ovpn (con 4nonimizer en '/opt/4nonimizer/vpn/proveedor') y copiará aleatoriamente algunos de estos ficheros al subdirectorio 'multivpn' para ejecutarlos después con el cliente openvpn y establecer los túneles uno tras otro:
# bash multivpn.sh
introduce numero de vpns concurrentes
4
Copiado el fichero VpnProvider.Singapore-Singapore-NO-TORRENTS-TCP.ovpn
Copiado el fichero
VpnProvider
.Denmark-Lyngby-TCP.ovpn
Copiado el fichero
VpnProvider
.USA-NewJersey-NO-TORRENTS-TCP.ovpn
Copiado el fichero
VpnProvider
.Turkey-Istanbul-UDP.ovpn
Copiado el fichero
VpnProvider
.Latvia-Riga-NO-TORRENTS-UDP.ovpn
Copiado el fichero
VpnProvider
.Singapore-Singapore-NO-TORRENTS-UDP.ovpn
Copiado el fichero
VpnProvider
.Tunisia-Tunis-UDP.ovpn
Número de túneles levantados: 0
Levantando interfaz de túnel
....ok!
Número de túneles levantados: 1
Levantando interfaz de túnel
....ok!
Número de túneles levantados: 2
Levantando interfaz de túnel
.......ok!
Número de túneles levantados: 3
Levantando interfaz de túnel
.... todos los túneles levantados.
Después de su ejecución podéis comprobar que los interfaces de túnel (tun0, tun1, tun2, etc.) han sido creados:
# ifconfig
eth0 Link encap:Ethernet HWaddr 50:7a:6d:f5:1a:12
inet addr:192.168.1.180 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:322235 errors:0 dropped:0 overruns:0 frame:0
TX packets:215243 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:149725996 (149.7 MB) TX bytes:17969308 (17.9 MB)
Interrupt:16 Memory:e1300000-e1320000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:1527 errors:0 dropped:0 overruns:0 frame:0
TX packets:1527 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:9467111 (9.4 MB) TX bytes:9467111 (9.4 MB)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.10 P-t-P:10.8.0.9 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:48000 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
tun1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.9.0.42 P-t-P:10.9.0.41 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:48000 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
tun2 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.6 P-t-P:10.8.0.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:48000 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
tun3 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.9.0.14 P-t-P:10.9.0.13 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:48000 Metric:1
RX packets:13 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:1312 (1.3 KB) TX bytes:0 (0.0 B)
Y que las rutas han sido creadas con las métricas establecidas:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 10.8.0.9 0.0.0.0 UG 20 0 0 tun0
0.0.0.0 10.9.0.41 0.0.0.0 UG 21 0 0 tun1
0.0.0.0 10.8.0.5 0.0.0.0 UG 22 0 0 tun2
0.0.0.0 10.9.0.13 0.0.0.0 UG 23 0 0 tun3
10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun2
10.8.0.9 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.9.0.13 0.0.0.0 255.255.255.255 UH 0 0 0 tun3
10.9.0.41 0.0.0.0 255.255.255.255 UH 0 0 0 tun1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
A partir de ahí lo que dictamine vuestra imaginación... por ejemplo, lanzar varios escaneos en paralelo con nmap simplemente especificando cada vez un interfaz distinto dentro de un loop:
nmap -sT -Pn -p$port_range -oX salida.xml $network -e tun$iface_number &
De esta manera podremos jugar como queramos como escanear cada rango de puertos de un mismo host desde ubicaciones geográficas diferentes, tal y como se muestra en la siguiente imagen (bmon) con 15 túneles simultáneamente:
¿Interesante verdad? Pues atentos porque pronto actualizaremos 4nonimizer con ésta y otras interesantes opciones :)
Via: www.hackplayers.com
VPNs concurrentes con OpenVPN
Reviewed by Zion3R
on
19:03
Rating: