HE

Unitat 6: Persistència, escalada i pivotatge

.

Persistència, escalada i pivotatge

Totes les pràctiques d'este curs es realitzaran baix:

  • ⚖️ Un marc legal i ètic
  • 🔒 Entorn aïllat
  • 🧪 Controlat
  • 📜 Amb permís
  • 🎓 Fins educatius / professionals

Tècniques persistència

Les tècniques de persistència fan referència als mètodes que un atacant utilitza per mantenir l’accés a un sistema durant el temps, fins i tot després de reinicis, canvis de credencials o intents de neteja. Tot açò, sense tindre que realitzar tot el procés d'explotació inicial cada vegada.

Eines C&C (C2)

MITRE defineix les accions de comanda i control (C2), com a tècniques per a comunicar-se amb els sistemes abans compromesos i evitar ser detectats.

  • Utilitzar protocols de comunicació habituals
  • Utilitzar / infectar mitjans extraibles
  • Emprar encriptació i ofuscació

Alguns frameworks C2 ..

  1. Cobalt Strike
  2. Covenant
  3. Empire
  4. Havoc
  5. ibombshell
  6. Silver
  7. Villain

Mòduls postexplotació. Metasploit

    Recopilació d'informació local
  1. post/multi/recon/local_exploit_suggester
  2. post/multi/gather/env
  3. post/multi/gather/firefox_creds
  4. post/multi/gather/ssh_creds
  5. post/multi/gather/checkvm
  6. post/windows/gather/credentials/credential_collector
  7. post/windows/gather/enum_applications
  8. post/windows/gather/enum_shares
    Manteniment d'accés
  1. exploit/windows/local/persistence
  2. Escalada de privilegis
  3. pivotatge en la xarxa

Creació de malware

msfvenom

Forma part del framework de metasploit, pero funciona de manera independent

ZipExec

Desenvolupat com a PoC de que es possible executar binaris emmagatzemats en fitxers ZIP comprimits amb contrasenya, evitant així els antivirus, que no poden comprovar el contingut del fitxer

Escalada privilegis en Linux

Enumeració local en Linux

Enumeració Manual

hostname
uname -a 
ifconfig   o  ip a 
netstat -tpln
/etc/hosts   i  sites-available 
/proc 
ps -ef --forest
crontab -l    i   /etc/crontab 
id    history   env    sudo -l   
find / -type f -perm 0777 2>/dev/null
find / -type f -name ".*"
find / -type f -readable     find / -type d -readable
find / -type f -writable     find / -type d -writable
find / -perm a=x 
find / -type f -perm -u=s 
find / -type f -perm  -g=s     

Enumeració automàtica

LinPEAS (WinPEAS )

Linux Smart Enumeration

Linux Exploit Suggester

Escalada amb el kernel

    Algunes vulnerabilitats històriques del kernel de Linux
  • Dirty COW
  • Dirty Pipe
  • Sudo Baron Samedit
  • OverlayFS
  • PwnKit
  • CVE-2022-47939 sobre ksmbd
  • i més....

Escalada amb sudo

Que és sudo

sudo (superuser do) és una eina que permet a usuaris normals executar comandes amb privilegis elevats (normalment com a root), de manera controlada i auditada.

És el mètode recomanat per a administració segura a Linux.

El fitxer sudoers defineix: Qui pot usar sudo, Quines comandes , Com (amb o sense contrasenya), Com a quin usuari

📍 Ubicació habitual: /etc/sudoers

⚠️ No s’ha d’editar mai directament amb editors normals.

visudo és l’eina segura per editar el fitxer sudoers.

Exemple de linea de sudoers

usuari_o_grup hosts = (usuari_execució:grup_execució) opcions comandes
alice ALL=(ALL) ALL 

Què vol dir?
alice → l’usuari
ALL → des de qualsevol host
(ALL) → pot executar com a qualsevol usuari (normalment root) . (root:root) especificant usuario i grup
ALL → pot executar qualsevol comanda , o posar una comanda concreta

usuari alice o grup %admin

Com saber quins binaris estan autoritzats

sudo -l

i a continuació , si hi ha algun comando permés, buscar la forma de explotar-lo, en GTFOBINS, per a linux

Per executar un comando amb un altre usuari

sudo -u nomusu nomcomando

Escalada amb SUID/SGID

El bit SUID Set-User-ID és un mecanisme de permisos de Linux/Unix que permet que un programa s’execute amb els privilegis del propietari del fitxer, i no amb els de l’usuari que l’executa.

Com identificar-lo

-rwsr-xr-x 

Com trobar fitxers amb este bit

find / -perm -u=s -type f 2>/dev/null
find / -perm -4000 2>/dev/null        
find / -type f -perm -4000 2>/dev/null
find / -user root -perm -4000 2>/dev/null
find / -perm -4000 -exec ls -l {} \; 2>/dev/null     

El bit SGID Set Group ID és un permís especial de Linux/Unix que fa que un fitxer o directori herete el grup, en lloc d’utilitzar el grup de l’usuari que l’executa o crea fitxers. És molt semblant al setuid, però actua sobre el grup.

El SGID pot aplicar-se a: 1. Fitxers executables 2. Directoris. I el seu comportament canvia segons el cas.

SGID en fitxers executables

Quan un executable té SGID activat: El programa s’executa amb els privilegis del grup propietari

SGID en directoris (ús molt habitual)

Quan un directori té SGID: Tots els fitxers creats dins hereten el grup del directori

Com identificar-lo

-rwxr-sr-x  

Com trobar fitxers amb este bit

find / -perm -g=s -type f 2>/dev/null
find / -perm -2000 2>/dev/null
find / -type f -perm -2000 2>/dev/null
find / -user root -perm -2000 2>/dev/null
find / -perm -2000 -exec ls -l {} \; 2>/dev/null     

🧷 El Sticky Bit és un permís especial de Linux/Unix que s’utilitza principalment en directoris per evitar que els usuaris esborren o modifiquen fitxers que no són seus, encara que tinguin permisos d’escriptura al directori. És un mecanisme clau de seguretat multiusuari.

Quan el Sticky Bit està activat en un directori: Només poden esborrar o renombrar un fitxer: 1. el propietari del fitxer 2. el propietari del directori 3. o root

Com identificar-lo

drwxrwxrwt  

🧮 Valor numèric del Sticky Bit: 1000

Escalada

Conieixent este mecanisme es podrà fer una escalada de privilegis local a través d'estos binaris, de forma similar a la explicada en sudo. La web GTFOBins també te informació sobre com utilitzar els binaris mal configurats.

Escalada amb tasques programades

Les tasques programades amb cron permeten executar comandes o scripts automàticament a Linux/Unix segons un horari definit. És una eina fonamental d’administració de sistemes, però també rellevant en seguretat i auditoria.

⏰ Què és cron?

cron és un dimoni del sistema que: S’executa en segon pla, Llegeix fitxers de configuració (crontabs), Llança tasques a hores, dates o intervals concrets: 👉 Ideal per a backups, manteniment, monitoratge i automatització.

📄 Què és un crontab?

Un crontab és un fitxer que conté les tasques programades. Cada usuari pot tenir el seu propi crontab, i també n’hi ha de sistema.

Crontab d'usuari

S'edita amb crontab -e

Crontab de sistema

Ubicacions habituals:
/etc/crontab
/etc/cron.d/
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/        

Alguns problemes comuns que permeteixen l'explotació:

  • Permisos d'escriptura en l'scrip
  • Variable d'entorn PATH
  • Si el PATH conté la ruta al home primer que la ruta dels binaris, es podrà colocar en home un script maliciós amb el mateix nom del comando que s'execute en la tasca programada
  • Ús de comodins o "wildcards"

Escalada amb serveis

Si s'identifica un servei (com per exemple MySql) executant-se com a root, es podrien crear comandes des de dins de MySql, llançar-les, i estes seran executades amb permisos de root

Escalada amb NFS (Network File System)

NFS permet compartir directoris entre sistemes Unix/Linux a través de la xarxa, de manera que un client pot muntar un directori remot com si fos local. És molt útil, però perillós si està mal configurat.

⚠️ Per què NFS pot provocar escalada de privilegis?

NFS confia en els UID i GID del sistema client. Això vol dir que: Si el client diu “sóc root”, el servidor pot creure-s’ho si no s’apliquen restriccions adequades. Aquí és on apareix el risc.

Què s’avalua en una auditoria o pentest ?

  1. Quins directoris s’exporten
  2. Qui hi pot accedir
  3. Si existeixen restriccions d’usuari
  4. Si els directoris són utilitzats pel sistema
  5. Si hi ha controls addicionals

🛡️ Bones pràctiques de seguretat amb NFS

  1. Activar sempre root squashing
  2. Exportar només el necessari
  3. Limitar per IP o xarxa
  4. Evitar exportar directoris crítics
  5. Usar permisos estrictes
  6. Monitorar l’ús del servei
  7. Considerar alternatives més segures si cal

Escalada de privilegis en Windows

Enumeració local

Manualment es torna prou complicat, però hi ha moltes eines que faciliten el procés.

  1. WinPEAS
  2. JAWS
  3. SeatBelt
  4. SharpUP
  5. Metasploit Local Exploit Suggester
  6. Windows Exploit Suggester - Next Generation

Existeix també una pàgina similar a GTFOBins, però per a sistems Windows, anomenada LOLBAS.

Escalada amb el kernel

Hi ha molts exploits per al kernel de windows, molts dels quals es poden practicar en la màquina Metasploitable3, que es la versió Windows de Metasploitable.

Una de les vulnerabilitats més greus és la HiveNightmare o SeriusSAM (CVE-2021-36934) que permet llegir les claus de windows sense privilegis

Algunes ferramentes automatitzen el procés de bypass UAC

  • UACMe
  • UAC-a-mola

Escalada amb serveis

Es poden aprofitar serveis mal configurats que corren en permisos de SYSTEM per escalar privilegis

Principals problemes

  1. Permisos insegurs
  2. DLL Hijacking
  3. Path de servei sense cometes
  4. Permisos dèbils en registres
  5. Serveis executables insegurs

Uns dels serveis de windows on s'han trobat vulnerabilitats greus és el Print Spooler

  • PrintNighMare
  • SpoolFool
  • Potato Attacks

Escalada amb registres

Si la politica de seguretat AllwaysInstallElevated esta habilitada, qualsevol paquet .MSI s'executarà amb privilegis administratius

També s'ha de posar especial atenció als programes que s'executen en l'autoarranc, (autorun), que també s'executen amb privilegis administratius

Escalada amb tasques programades

Esta via d'escalat és similar a la explicada en entorns Linux

Servei Task Scheduler

Comando: schtasks, obte llista de les tasques programades

En Power Shell està Get-ScheduledTask

Tècniques de pivotatge

El pivotatge (pivoting) és una tècnica utilitzada quan: Ja tens accés a un sistema dins d’una xarxa, però vols arribar a altres sistemes que no són accessibles directament.

Aquest primer sistema compromès actua com a: pont o salt intermedi o pivot

📌 El pivotatge no és l’atac inicial, és post-explotació.

amb tunels SSH

Es crea un canal de comunicació encapsulat a través del sistema pivot.

El trànsit “viatja dins” d’un altre protocol, Permet evitar restriccions de xarxa, Molt comú en xarxes corporatives

Local Port Forwarding

El local port forwarding permet: Obrir un port a la teva màquina local que redirigeix el trànsit a un servei remot, a través d’un servidor intermedi (pivot).

És molt útil quan: Un servei no és accessible directament, però sí que és accessible des del servidor pivot

    Escenari d’exemple
  • (atacant / administrador): 127.0.0.1
  • Servidor pivot: pivot.company.local
  • Servei intern: Base de dades a 10.0.0.50:3306
  • El servei només és accessible des del pivot
Exemple de local port Forwarding
ssh -L 13306:10.0.0.50:3306 user@pivot.company.local 
  • -L : Indica local port forwarding
  • 13306 : Port local que s’obrirà a la teva màquina (tu et connectaràs a aquest port)
  • 10.0.0.50:3306 : Destí final intern ( IP interna, Port del servei (ex. MySQL))
  • user@pivot.company.local : Servidor intermedi (pivot) . És qui té accés a la xarxa interna

Remote Port Forwarding

El remote port forwarding permet: Obrir un port en el servidor remot que redirigeix el trànsit cap a un servei accessible des de la teva màquina local (o una altra màquina). És l’opció inversa del local port forwarding.

    Escenari d’exemple
  • La teva màquina local: té un servei web a 127.0.0.1:8080
  • Servidor remot: pivot.company.local
  • El servidor remot no pot accedir directament al teu servei local
  • Objectiu: exposar el teu servei local a través del servidor remot
Exemple de remote port Forwarding
ssh -R 9000:127.0.0.1:8080 user@pivot.company.local  
  • -R : Indica remote port forwarding
  • 9000 : Port que s’obrirà al servidor remot
  • 127.0.0.1:8080 : Destí local (127.0.0.1 → la teva màquina ) (8080 → el servei que ja està escoltant localment)
  • user@pivot.company.local : Servidor remot on es crea el port

👉 Qualsevol que accedeixi a pivot.company.local:9000 , estarà accedint indirectament al teu servei local.

amb chisel

En la màquina kali es pot llançar en mode servidor

chisel server -p 9000 --reverse

En la màquina client

chisel client 10.0.1.7:9000 R:8000:127.0.0.1:8000

Laboratoris