Vuoi ottenere l'accesso come superutente a un sistema Linux? Ecco alcuni dei modi migliori per enumerare una macchina Linux.

L'enumerazione è una delle fasi chiave dei test di penetrazione. È la prima cosa da fare quando hai compromesso un sistema bersaglio come penetration tester. Sebbene esistano una miriade di strumenti per automatizzare questo processo, si consiglia sempre di setacciare manualmente e ricontrollare il sistema per potenziali vettori di escalation dei privilegi.

Diamo un'occhiata ai diversi modi per enumerare manualmente un sistema Linux per l'escalation dei privilegi.

Perché l'enumerazione è importante per l'escalation dei privilegi?

L'escalation dei privilegi, nota anche come Escalation of Privilege (EOP), è un componente fondamentale dei test di penetrazione e della metodologia dei test di penetrazione. Come suggerisce il nome, è una fase in cui si tenta di elevare i propri privilegi all'amministratore o, nei sistemi Linux, all'utente root.

Per ottenere i privilegi di root, devi prima trovare una vulnerabilità nel sistema. È qui che entra in gioco l'enumerazione. Sebbene esistano strumenti per automatizzare l'enumerazione, il più delle volte un'enumerazione manuale e completa può scoprire configurazioni errate e altre vulnerabilità che non vengono rilevate dagli strumenti.

instagram viewer

1. Enumerazione del sistema

La prima cosa che dovresti fare dopo aver ottenuto un punto d'appoggio iniziale è conoscere il sistema a cui hai stabilito l'accesso. Ciò ti aiuterà a ottimizzare i tuoi payload in modo che corrispondano all'architettura e garantire la massima compatibilità dei tuoi payload con il sistema di destinazione.

Ad esempio, se si dispone di un exploit a 64 bit, è necessario modificarlo se il sistema di destinazione supporta solo software a 32 bit poiché esiste una differenza tra i sistemi a 32 bit e quelli a 64 bit.

Inoltre, conoscere la versione del kernel ti aiuterà a cercare exploit sul Web nel caso in cui scoprissi che la versione è obsoleta e vulnerabile a un exploit pubblico. Ecco alcuni comandi che ti aiuteranno a recuperare le informazioni di sistema:

Per trovare informazioni di sistema come la versione del kernel, la versione del sistema operativo, ecc., digitare:

cat /etc/cpuinfo 
uname -a

Se vuoi saperne di più sull'architettura della CPU, usa il comando lscpu:

lscpu

2. Enumerazione dei processi

I processi sono programmi in esecuzione. Conoscere l'elenco completo dei processi su un sistema Linux, insieme ad alcune altre tattiche di enumerazione menzionato in questa guida ti aiuterà a identificare i processi potenzialmente vulnerabili e sfruttarli per elevarli privilegio.

Ad esempio, se trovi un processo in esecuzione con privilegi di root, potresti essere in grado di iniettarvi codice arbitrario che potrebbe portare a un'escalation dei privilegi riuscita.

Puoi usare il comando ps con il ausiliario flag per elencare tutti i processi nel sistema:

ps ausiliario

3. Enumerazione di utenti e gruppi

L'enumerazione di utenti e gruppi è importante per capire chi ha accesso a quale parte del sistema. Sapere ciò ti consente di individuare i tuoi obiettivi in ​​modo efficiente e costruire una strategia di attacco efficace. Inoltre, sei in grado di creare mappature appropriate e comprendere a fondo i ruoli e i privilegi di ciascun account.

Avere la visibilità degli account privilegiati ti consente di provare combinazioni note di nome utente e password. È possibile stampare il contenuto del file /etc/passwd E /etc/group file per accedere all'elenco degli utenti. In alternativa, puoi anche usare il comando getent.

A ottenere l'elenco degli utenti su Linux:

getent passwd

Per ottenere l'elenco dei gruppi:

gruppo getent

4. Ricerca di file sensibili

File sensibili come /etc/passwd E /etc/shadow può potenzialmente far trapelare molte informazioni. Da /etc/shadow puoi trovare gli hash delle password degli utenti e tentare di decifrarli con uno strumento di cracking degli hash come Hashcat o John the Ripper.

C'è anche il /etc/sudoers file, che, se puoi modificarlo in qualche modo, consentirà di modificare le autorizzazioni sudo per utenti e gruppi.

5. Verifica delle autorizzazioni sudo

La corretta gestione delle autorizzazioni sudo è fondamentale per la sicurezza di un sistema Linux. L'analisi delle autorizzazioni sudo ti garantirà informazioni sui potenziali vettori per l'escalation dei privilegi. Se ci sono configurazioni errate come certi programmi hanno un livello di privilegi allarmante, potresti essere in grado di sfruttarli per ottenere l'accesso root.

Questo è solo un esempio dei numerosi percorsi di attacco che possono aprirsi una volta chiariti i permessi sudo nel sistema Linux. Un altro esempio sarebbe l'abuso del meccanismo di precaricamento della libreria LD_PRELOAD, che puoi enumerare osservando le autorizzazioni sudo.

sudo -l

6. Trovare gli exploit del kernel Linux

Gli exploit del kernel Linux sono letali perché attaccano il nucleo del sistema operativo in esecuzione sul sistema compromesso. Con un difetto critico del kernel, sarai in grado di fare qualsiasi cosa con il sistema.

Per trovare gli exploit del kernel, prima scopri la versione del kernel e poi, usando uno strumento come searchsploit o, utilizzando Google Dorks, trova un exploit adatto che influisca sulla versione esatta del kernel in esecuzione sul sistema.

7. Sfruttare i binari SUID

SUID è l'abbreviazione di Set Owner User ID all'esecuzione. È un tipo speciale di permesso di file che, se impostato, esegue un programma con i privilegi del suo proprietario.

Se un programma è stato creato dall'utente root e per esso è stato impostato il bit SUID, il programma, una volta eseguito, possiederà i privilegi di root. Come si può abusare del SUID? È semplice.

Enumerare tutti i binari con il bit SUID impostato, scorrere l'elenco, trovare un binario per il quale si dispone dell'accesso in scrittura e modificarne l'origine per aggiungere il payload. È possibile utilizzare il comando find per cercare i binari SUID e reindirizzare l'output standard a /dev/null:

trova / -perm -4000 2>/dev/null

8. Dirottamento delle biblioteche

A volte potrebbero esserci programmi in esecuzione sul sistema che utilizzano librerie non protette da scrittura. In uno scenario del genere, puoi facilmente sovrascrivere la libreria in uso e assumere il controllo della funzionalità del programma.

Se sei fortunato e trovi un programma in esecuzione come root, potresti dirottare la libreria da cui dipende e potenzialmente ottenere l'accesso alla shell di root.

9. Indagare e dirottare le variabili d'ambiente

Le variabili d'ambiente sono tipi speciali di variabili che, in una certa misura, definiscono il funzionamento del sistema e dei programmi. Un'importante variabile d'ambiente è la variabile PATH.

Memorizza la posizione di tutti i binari eseguibili nel sistema. Puoi manipolare la variabile PATH e concatenarla con altre vulnerabilità come il dirottamento della libreria per ottenere l'accesso root.

Ad esempio, supponiamo che ci sia un eseguibile con un set di bit SUID. Per funzionare correttamente, chiama un binario senza definirne il percorso completo.

Puoi trarne vantaggio creando una versione duplicata e dannosa del file binario e aggiornando la variabile PATH con la posizione di il binario dannoso in modo che quando viene eseguito l'eseguibile SUID, il tuo binario dannoso verrà eseguito come root e sarai in grado di generare una shell di root.

Inoltre, c'è anche una buona possibilità di trovare chiavi segrete e password semplicemente guardando attraverso le variabili d'ambiente. Puoi stampare tutte le variabili d'ambiente usando il comando env :

avv

10. Trova artefatti nella storia di Bash

Spesso, la cronologia dell'utente corrente non verrà eliminata. Puoi abusarne per ottenere potenzialmente l'accesso a informazioni sensibili o eseguire nuovamente i comandi precedenti con parametri modificati.

Sebbene questi probabilmente non porteranno a un'escalation dei privilegi, è una buona fonte di fughe di informazioni per darti chiarezza su ciò che l'utente fa di solito sul sistema.

11. Dirottamento di job Cron vulnerabili

I lavori Cron sono una funzionalità integrata e ricca di risorse di Linux. Se hai eseguito la migrazione da Windows, un processo cron può essere confrontato direttamente con un'attività pianificata su Windows.

Funziona periodicamente ed esegue i comandi. Sia l'ora in cui verrà eseguito che i comandi che eseguirà sono predefiniti dall'utente. A volte potresti trovare alcuni cron job vulnerabili ad attacchi come l'iniezione di caratteri jolly o sono scrivibili dall'utente con cui hai effettuato l'accesso.

È possibile abusare di queste vulnerabilità per ottenere l'accesso root al sistema. Per sfruttare un cron job, devi prima trovarne uno vulnerabile. Ecco i comandi per elencare i cron job attualmente in esecuzione e altri dati rilevanti:

ls /etc/cron.d/
crontab -l -u

12. Elenco dei pacchetti obsoleti

Una volta stabilito l'accesso a un sistema, uno dei primi passi da compiere è elencare tutti i pacchetti software installati e confrontare le versioni installate con l'ultima versione.

C'è la possibilità che sia installato qualche pacchetto oscuro che potrebbe non essere utilizzato molto ma è criticamente vulnerabile a un attacco di escalation dei privilegi. Puoi quindi sfruttare quel pacchetto per ottenere l'accesso come root.

Utilizzare il comando dpkg con il file -l tag per elencare i pacchetti installati su sistemi basati su Debian e Ubuntu:

dpkg -l

Per i sistemi RHEL/CentOS/Fedora, utilizzare questo comando per elencare i pacchetti installati:

rpm -qa 

Ora sai come enumerare manualmente Linux per l'escalation dei privilegi

L'escalation dei privilegi dipende esclusivamente dall'enumerazione. Più informazioni hai accesso, meglio sarai in grado di pianificare le tue strategie di attacco.

Un'enumerazione efficiente è la chiave per stabilire un punto d'appoggio, aumentare i privilegi e persistere con successo sul sistema di destinazione. Anche se fare le cose manualmente aiuta, alcune delle attività possono essere assegnate a strumenti automatizzati per risparmiare tempo e fatica. Devi conoscere i migliori strumenti di sicurezza per scansionare un sistema alla ricerca di vulnerabilità.