Ligolo-ng, pivoting avanzado de la mano de Go

Ligolo-ng, pivoting avançat de la mà de Go

Celia Catalán


Molt bones, durant aquest lliurament, parlarem d'una eina que facilita molt la temàtica dels túnels. No us perdeu en ell! .

Ligolo-ng és una eina simple, lleugera i ràpida que permet als pentester establir túnels des d'una connexió TCP/TLS inversa utilitzant una interfície virtual “tun” (sense necessitat de SOCKS). A diferència de Chisel o altres eines, amb Ligolo-ng no necessitem fer ús de SOCKS, sinó que mitjançant interfícies virtuals aixecarem un túnel (al més pur estil VPN).

Gràcies a això, podrem córrer eines com Nmap sense haver de fer servir proxychains, per la qual cosa les tasques de pivoting es tornen més senzilles i ràpides, ja que un dels avantatges de Ligolo-ng és una significativa millora en el rendiment de les connexions davant ús de SOCKS. Tindrem connexions més ràpides i estables. 

A continuació, us detallem com fer servir aquesta eina correctament:

Get-ready

Agent – Màquina víctima

Proxy – Màquina atacant

En primer lloc, descarregarem al nostre directori de treball els binaris que necessitarem. Us deixem el repositori oficial de Ligolo-ng:  .
 
Tenim la possibilitat de descarregar el codi font o el binari ja compilat, per comoditat en aquest cas, descarregarem tant el binari de l'agent com el del proxy en funció dels sistemes operatius que emprarem (en el nostre cas Linux):

En cas d'optar per descarregar el codi font (GO), farem servir les següents ordres per compilar-lo:

Linux:


Windows: 


Configurar Ligolo-ng:

Ligolo-ng es basa en una interfície virtual a través de la qual s'establirà un túnel entre la màquina víctima i l'atacant, és per això que caldrà aixecar primerament la interfície “tun” sobre la qual es recolza Ligolo-ng:



Consultem les opcions que ens ofereix el proxy:




On se'ns presenta les diferents opcions de certificats TLS que disposem:

  • Autocert: El servidor intermediari automàticament sol·licitarà un certificat usant Lets encrypt. Aquesta opció requereix accessibilitat al port 80.
  • Certfile / -keyfile: Si volem fer servir els nostres propis certificats.
  • Selfcert: Generarà automàticament un certificat autosignat. Aquesta opció és la menys recomanada en termes de seguretat, però si treballem en un laboratori aïllat o en un entorn de proves, és una opció vàlida.
  • Tun : En cas d'haver escollit un altre nom per a la interfície.
  • Laddr La interfície d'escolta per defecte 0.0.0.0:11601, per definir una altra interfície ho indicarem mitjançant aquesta ordre.
Llancem el proxy amb la configuració per defecte, valent-nos de certificats autosignats per al xifratge de la connexió

A la màquina atacant:


A la màquina víctima:


Ja tindríem la sessió creada:


Ara seleccionem al proxy (màquina atacant) la sessió que acabem de crear:


Sempre haurem d'indicar sobre quina sessió volem treballar. Un cop aixecada la sessió podem dur a terme diferents accions:


Des del propi proxy podrem consultar les interfícies de xarxa que hi ha aixecades a l'agent (víctima) mitjançant l'ordre ifconfig:


Per poder arribar a aquesta nova xarxa (192.168.1.0/24) haurem d'indicar a la nostra màquina atacant que redirigeixi el trànsit amb destinació 192.168.1.0/24 a través del túnel Ligolo que acabem de crear. Per això afegim la següent ruta estàtica a la taula de routing de la màquina atacant: 


I finalment iniciem el túnel: 



Us mostro al següent diagrama el realitzat fins aquí:


I ara passem a comprovar que arribem a la nova subxarxa (192.168.1.0/24) a través de la interfície eth1 de la víctima:


Enllaç pont

Els agents permeten escoltar en ports prestats, de manera que tot el trànsit entrant cap a aquests ports sigui redirigit directament a la màquina atacant. 

Des del proxy (atacant) i sobre la mateixa sessió que teníem establerta, vam aixecar un listener a l'agent (víctima): 



Qualsevol trànsit entrant a la màquina víctima amb destinació al port 1234, serà redirigit a la màquina atacant al port 4321. Això és molt útil quan hem d'executar un reverse payload cap a la màquina atacant o descarregar fitxers a la víctima des d'un servidor HTTP allotjat a la màquina atacant. 



Avancem quedant així, un exemple d'una reverse shell seria aquest:


Podem gestionar cadascun dels listener aixecats mitjançant listener_list i listener_stop/start.


Pivotant entre diverses màquines

Si volem pivotar entre diverses màquines, podem crear tantes sessions com vulguem recolzant-nos dels listener, de manera que a cada màquina hi hagi un listener escoltat en un port establert que ens redirigeixi a la màquina anterior de salt i així successivament, fins arribar al port 11601 (per defecte) de la màquina atacant on proxy-ligolo està escoltant peticions de nous agents (víctimes).

Exemple: des de la xarxa 192.168.1.0/24 (on es troba la màquina de salt) aixequem l'agent (víctima 2) cap al listener de la màquina intermèdia (víctima 1) que ens redirigirà directament al proxy-ligol (atacant).

1. Configurem el listener a la màquina de salt (192.168.1.147) des de la màquina atacant:


2. A la nova màquina víctima llancem l'agent (víctima 2) cap al listener de la màquina de salt intermèdia (192.168.1.147:11601):


3. La connexió serà redirigida al proxy-ligol. S'estableix una nova sessió que permetrà accedir a noves subxarxes:


Concloent amb aquesta pràctica hem realitzat aquest exercici:

Fins aquí hem arribat! Esperem que hagi estat interessant i útil per a tothom!
A volar, perdó, a pivotar!!!! 

Alejandro Auñón, Offensive Security Senior Analyst at Zerolynx.
Tornar al bloc

Deixa un comentari

Tingueu en compte que els comentaris s'han d'aprovar abans que es publiquin.