comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

OpenVPN pivoting.

  • 0 Respuestas
  • 2156 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado morodog

  • *
  • Underc0der
  • Mensajes: 350
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
  • Skype: MorodoG
  • Twitter: m4r4d4g
« en: Abril 18, 2013, 12:26:22 pm »
Como todos sabéis, pivotar o pivoting es un método que consiste básicamente en utilizar un sistema bajo nuestro control como pasarela para atacar otros sistemas y redes, evadiendo así restricciones como las reglas de un firewall intermedio. Podríamos dividir esta técnica en dos grandes tipos:

- Proxy pivoting: se canaliza el tráfico a través de un payload en el equipo mediante el cual pivotaremos. Se limita a determinados puertos TCP y UDP.
- VPN pivoting: consiste en crear un túnel cifrado contra el equipo mediante el cual pivotaremos para enrutar todo el tráfico de red, por ejemplo para ejecutar un escaneo de vulnerabilidades a otros equipos de su red o de otras redes a las que tiene acceso.

En mi caso, por versatilidad, necesito esta última técnica. Podría utilizar la versión Pro de Metasploit o Cobalt Strike que son herramientas excelentes para VPN pivoting, aunque también lo son de pago, así que según está la economía me decanto por OpenVPN.

Os planteo el siguiente escenario:



Imaginad una topología con un servidor de monitorización con Nagios en la DMZ el cual, por su naturaleza, tiene habilitado además accesos a otros segmentos de red. Tengo el usuario root y ya accedo a la consola por SSH. Además, el firewall interno me permite acceder a otros puertos del servidor.

Si realizo un escaneo desde mi portátil obtengo los siguientes resultados:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
Nmap scan report for 192.168.2.50
Host is up (0.00s latency).
Not shown: 991 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
23/tcp   closed telnet
80/tcp   open   http
113/tcp  closed ident
161/tcp  closed snmp
1060/tcp open   polestar
2869/tcp open   icslap
8080/tcp open   http-proxy
8100/tcp open   xprint-server

Podría montar un túnel directamente sobre ssh, pero resultaría muy fácil meter la pata y perder la conexión con el servidor remoto, y no me gustaría tener que llamar al administrador de sistemas varias veces para que me reinicie el servidor ¬_¬ ... Así que utilizaré otro puerto abierto, por ejemplo el del telnet (por qué coño está abierto el puerto del telnet?).

Empezaré instalando OpenVPN. El servidor es Ubuntu así que esto es bastante trivial:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
sudo apt-get install openvpn
OpenVPN tiene dos modos de funcionamiento, uno basado en claves estáticas pre-compartidas y otro en SSL/TLS usando certificados y claves RSA. Aunque no tan seguro, usaré el primero por simplicidad. A continuación, genero la clave privada:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
openvpn --genkey --secret secret.key
Esta clave es simétrica, por lo que la tiene que tener tanto el servidor como el cliente, con lo cual, después de generarla la copiaré a mi portátil mediante SCP (con WinSCP puesto que mi SO es Windows 7) y la protegeré como oro en paño... por que no hace falta que os diga qué pasaría si un tercero se hiciera con ella...no?

El objetivo entonces es crear un túnel VPN punto a punto que se establecerá entre los interfaces virtuales (tun0) del servidor y mi portátil con una IP privada a cada extremo: 10.8.0.1 en el endpoint del servidor y 10.8.0.2 en el endpoint del cliente. Con el modo p2p (predeterminado) se establece una topología punto-a-punto en donde la dirección IP virtual del peer remoto de la interfaz tun del cliente siempre apunta a la dirección IP virtual local de la interfaz tun del servidor.

Creo el fichero /etc/openvpn/server.conf con la siguiente configuración:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
mode p2p
dev tun
port 23
proto tcp-server
ifconfig 10.8.0.1 10.8.0.2
secret secret.key
;user nobody
;group nobody

keepalive 10 60
ping-timer-rem
persist-tun
persist-key

comp-lzo

Como véis, todas las comunicaciones entre ambos puntos irán cifradas y se realizarán sobre el puerto 23/TCP, ya que el telnet está permitido en el firewall interno el cual dejará "fluir" el tráfico del túnel como si nada...

No olvidemos que es necesario habilitar en el servidor el reenvío de paquetes:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
echo 1 > /proc/sys/net/ipv4/ip_forward
Ni tampoco que tengo que enmascarar mi dirección IP para habilitar el tráfico de vuelta porque las redes a las que accederé no tienen porque conocer la ruta de vuelta si uso mi IP privada real. Y bueno, me da cierto anonimato:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
iptables -t nat -A POSTROUTING -s 10.8.0.2 -o eth0 -j MASQUERADE
Por último, sólo activaré el túnel bajo demanda por lo que elimino todos los scripts de inicio:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
update-rc.d -f openvpn remove
Y con esto he finalizado la configuración del servidor. Podré levantar el servicio OpenVPN con el comando 'openvpn --config /etc/openvpn/server.conf &' o crearme un cutre-script como el siguiente:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
#! /bin/sh
case "$1" in
        start)
                /bin/echo 1 > /proc/sys/net/ipv4/ip_forward
                /usr/sbin/openvpn --config /etc/openvpn/server.conf &
                /sbin/iptables -t nat -A POSTROUTING -s 10.8.0.2 -o eth0 -j MASQUERADE
            ;;
        stop)
                /bin/echo 0 > /proc/sys/net/ipv4/ip_forward
                /usr/bin/killall openvpn
                /sbin/iptables -t nat -F
                /sbin/iptables -t nat -X
           ;;
        *)
          echo "Uso: ovpn|start|stop"
          exit 1
          ;;
    esac


Como veis al levantar el túnel lo hará también el dispositivo virtual:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
ps -ef | grep openvpn
root      5976     1  0 12:39 ?        00:00:01 /usr/sbin/openvpn --config /etc/openvpn/server.conf

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.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:9523 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10414 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:1156752 (1.1 MB)  TX bytes:4833017 (4.8 MB)

Ahora sólo me queda configurar el cliente OpenVPN de mi portátil. Para ello creo el fichero pivoting.ovpn en C:\Program Files (x86)\OpenVPN\config con la siguiente configuración:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
mode p2p
remote 192.168.2.50
dev tun
port 23
proto tcp-client
ifconfig 10.8.0.2 10.8.0.1
secret "C:\\Program Files (x86)\\OpenVPN\\config\\secret.key"
comp-lzo
dhcp-option DNS 192.168.2.36
route-metric 15
route 192.168.3.0 255.255.255.0 10.8.0.1
verb

Fijaros que añado un DNS a mi elección y la ruta de la red de servidores (192.168.3.0/24) para que mi cliente Windows encamine correctamente los paquetes.

Para terminar compruebo que llego al interfaz virtual del tunel y a un equipo de la VLAN de servidores:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
C:\Users\vmotos>ping -n 1 10.8.0.1

Haciendo ping a 10.8.0.1 con 32 bytes de datos:
Respuesta desde 10.8.0.1: bytes=32 tiempo=1ms TTL=64

Estadísticas de ping para 10.8.0.1:
    Paquetes: enviados = 1, recibidos = 1, perdidos = 0
    (0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
    Mínimo = 1ms, Máximo = 1ms, Media = 1ms

C:\Users\vmotos>tracert 192.168.3.12
Traza a 10.20.16.12 sobre caminos de 30 saltos como máximo.

  1     1 ms     1 ms     1 ms  SERVIDOR [10.8.0.1]
  2     6 ms     2 ms     2 ms  192.168.2.1
  3     2 ms     2 ms     2 ms  192.168.3.12
 
Traza completa.

¡Y ya está! Ya estoy pivotando a través del servidor de monitorización mediante el túnel VPN.

Tened en cuenta que el servidor de este ejemplo lo gestiono lícitamente. Si comprometemos un servidor, obtenemos acceso como root y queremos utilizar openvpn para vpn pivoting, habrá que pensar también en utilizar algún rootkit u otras técnicas para ocultar al menos el interfaz virtual y el proceso.

Saludos.

FUENTE: hack players
« Última modificación: Agosto 08, 2014, 09:58:01 pm por Expermicid »

 

¿Te gustó el post? COMPARTILO!



Pivoting en ordenador comprometido para atacar ordenadores en su red privada

Iniciado por Xc0d3's

Respuestas: 0
Vistas: 1478
Último mensaje Agosto 21, 2017, 03:39:38 am
por Xc0d3's
¿ Qué es el pivoting ?

Iniciado por LionSec

Respuestas: 0
Vistas: 2049
Último mensaje Junio 06, 2015, 04:56:05 pm
por LionSec