Die Vielzahl der bekannt gemachten Verstöße großer Verbraucherkonzerne unterstreicht die kritische Bedeutung des Systemsicherheitsmanagements. Glücklicherweise gibt es viele verschiedene Anwendungen, die helfen, Computersysteme zu schützen. 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 auf Schwachstellen zu untersuchen.
Kali installiert viele Tools, die alle Open Source sind, und ihre standardmäßige Installation macht die Sache einfacher.
kali-tools.png
(Peter Gervase, CC BY-SA 4.0)
Die Systeme, die ich in diesem Tutorial verwenden werde, sind:
kali.usersys.redhat.com
: Dies ist das System, auf dem ich die Scans und Angriffe starte. 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önnen veraltet sein.- Dieses System beinhaltet 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 aufgenommen, 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 Nmap-Ergebnisse verwenden lesen, um Linux-Systeme zu härten.) Ein Nmap-Scan ist eine schnelle Möglichkeit, einen Überblick darüber zu erhalten, welche Ports und Dienste von dem System aus sichtbar sind, das den Nmap-Scan initiiert.
nmap-scan.png

(Peter Gervase, CC BY-SA 4.0)
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 sein könnte, in Ihr Netzwerk einzudringen. In diesem Beispiel sind die Ports 21, 22, 80 und 443 angenehm zu 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 benutze ich die -p 80
Argument für Port 80 und -A
um Informationen wie das Betriebssystem und die Anwendungsversion abzurufen.
nmap-port80.png

(Peter Gervase, CC BY-SA 4.0)
Einige der wichtigsten Zeilen 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 mit WPScan Informationen über mögliche Schwachstellen erhalten. Eine gute Untersuchung besteht darin, einige Benutzernamen zu finden. Verwenden von --enumerate u
weist WPScan an, in der WordPress-Instanz nach Benutzern 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: https://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 zu erraten für admin
indem Sie ein Passwort-Wörterbuch verwenden, das eine Textdatei mit vielen möglichen Passwörtern ist. Das Wörterbuch, das ich benutzte, war 37G und hatte 3.543.076.137 Zeilen.
So wie es mehrere Texteditoren, Webbrowser und andere Anwendungen gibt, aus denen Sie wählen können, stehen Ihnen 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 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: https://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 Admin-Benutzernamen und das Passwort. Es dauerte nur zwei Minuten, um 3.231 Linien zu durchlaufen.
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 zu einem viel schnelleren 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 dieser kann jedoch eine Flut von HTTPD-Logging-Meldungen auf dem Zielsystem hinterlassen:
10.19.47.170 - - [18/Feb/2021:20:14:01 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "https://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 "https://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 "https://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 "https://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 "https://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 "https://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 "https://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 "https://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 "https://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
Um Informationen über den HTTPS-Server zu erhalten, der in meinem ersten Nmap-Scan gefunden wurde, habe ich den sslscan
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>
Diese zeigt Informationen zu den aktivierten SSL-Protokollen und weiter unten in der Ausgabe Informationen zur Heartbleed-Schwachstelle:
Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed
Tipps zur Abwehr oder Abwehr von Angreifern
Es gibt viele Möglichkeiten, Ihre Systeme gegen die Vielzahl von Angreifern zu verteidigen. Ein paar Eckpunkte sind:
- Kennen Sie Ihre Systeme: Dazu gehört, zu wissen, welche Ports geöffnet sind, welche Ports geöffnet sein sollten, wer diese offenen Ports sehen kann und wie hoch der erwartete Datenverkehr für diese Dienste ist. Nmap ist ein großartiges Werkzeug, um mehr über Systeme im Netzwerk zu erfahren.
- Verwenden Sie aktuelle Best Practices: Was heute als Best Practice gilt, ist in Zukunft möglicherweise keine Best Practice. Als Admin ist es wichtig, über Trends im Infosec-Bereich auf dem Laufenden zu bleiben.
- Erfahren Sie, wie Sie Ihre Produkte verwenden: Anstatt beispielsweise einen Angreifer ständig auf Ihr WordPress-System einschlagen 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.
- Pflegen und überprüfen Sie gute Backups: Wenn ein Angreifer eines oder mehrere Ihrer Systeme umfasst, kann die Wiederherstellung von bekannten 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 das System angreift. Wenn Sie sie bemerken, können Sie vorbeugende Maßnahmen ergreifen, um das Risiko zu mindern.
- Aktualisieren Sie Ihre Systeme, deren Anwendungen und alle zusätzlichen Module: Wie die NIST Special Publication 800-40r3 erklärt, “sind Patches normalerweise der effektivste Weg, um Schwachstellen in Software zu mindern, und sind oft die einzige vollständig effektive Lösung.”
- Verwenden Sie die von Ihren Anbietern bereitgestellten Tools: Anbieter haben unterschiedliche Tools, die Ihnen bei der Wartung ihrer Systeme helfen, also stellen Sie sicher, dass Sie diese nutzen. Red Hat Insights, das in Red Hat Enterprise Linux-Abonnements enthalten ist, kann beispielsweise dabei helfen, Ihre Systeme zu optimieren und Sie auf potenzielle Sicherheitsbedrohungen aufmerksam zu machen.
Mehr erfahren
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 Angriffsverwaltung
- Red Hat Produktsicherheitscenter
- Red Hat-Sicherheitskanal
- Cybersicherheitsseite von NIST
- Nmap-Ergebnisse verwenden, um Linux-Systeme zu härten