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 ..
- Cobalt Strike
- Covenant
- Empire
- Havoc
- ibombshell
- Silver
- Villain
Mòduls postexplotació. Metasploit
- Recopilació d'informació local
- post/multi/recon/local_exploit_suggester
- post/multi/gather/env
- post/multi/gather/firefox_creds
- post/multi/gather/ssh_creds
- post/multi/gather/checkvm
- post/windows/gather/credentials/credential_collector
- post/windows/gather/enum_applications
- post/windows/gather/enum_shares
- Manteniment d'accés
- exploit/windows/local/persistence
- Escalada de privilegis
- 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
- Ús de comodins o "wildcards"
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
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 ?
- Quins directoris s’exporten
- Qui hi pot accedir
- Si existeixen restriccions d’usuari
- Si els directoris són utilitzats pel sistema
- Si hi ha controls addicionals
🛡️ Bones pràctiques de seguretat amb NFS
- Activar sempre root squashing
- Exportar només el necessari
- Limitar per IP o xarxa
- Evitar exportar directoris crítics
- Usar permisos estrictes
- Monitorar l’ús del servei
- 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.
- WinPEAS
- JAWS
- SeatBelt
- SharpUP
- Metasploit Local Exploit Suggester
- 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
- Permisos insegurs
- DLL Hijacking
- Path de servei sense cometes
- Permisos dèbils en registres
- 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
