Metasploitable 2系列教程:信息收集


Metasploitable 2 系統是一個基於ubuntu 的系統。其設計的最初目的為安全工具測試和常見漏洞攻擊演示。而在這篇關於 Metasploit 的教程中,我們將列舉有關 Metasploitable 2 這個系統的相關漏洞,並利用漏洞,來收集和獲取我們所需要的信息。

在數學或計算機科學中的枚舉是指,在一組中一一列出其中的元素。但在黑客術語中,枚舉通常是指將我們所要收集的信息枚舉出來。例如:我們需要枚舉出數據庫的用戶名甚至密碼,枚舉系統的文件共享,枚舉服務器當前狀態,枚舉web目錄,群組及當前網絡主機存活量等信息。在枚舉過程中,我們還將收集到其它可利用的網絡相關信息,這對於我們后續的滲透具有重要意義。對於 Metasploitable 2 最重要的是端口掃描和指紋識別的枚舉信息的收集。端口掃描是用來探測服務器或主機開放的TPC和UDP端口的。而指紋識別,則是用來確定這些服務版本等基本信息的過程。在本篇文章中,我們將使用鼎鼎大名的掃描神器 Nmap ,來實現對 Metasploitable 2 的信息收集。除此之外,我們還將結合另一款枚舉工具 enum4linux 來一起幫助我們完成信息的收集工作。enum4linux 是一款用於枚舉 Windows 和 Samba 主機信息的工具。

從枚舉過程中檢索到的信息,例如,操作系統版本和正在運行的服務,我們將在這些服務中尋找到已知的漏洞。並通過開源的漏洞庫(OSVDB) 和 已被公布出來的 CVE 來進行漏洞的利用!最后,我們還將使用 kali 下的 OpenVAS 來對目標主機進行一次全方位的漏洞掃描。

Metasploitable 2 的枚舉與端口掃描

在這部分的 Metasploitable 2 枚舉的教程中,我們將枚舉正在運行的服務,帳戶並同時執行端口的掃描動作。我們將使用 nmap 掃描及探測虛擬機的端口開放狀態和開放服務的指紋信息。在本篇文章中,我們主要集中在網絡信息的枚舉收集上!

現在,讓我們來打開已經安裝好的 Metasploitable 2 虛擬機。並進行初始登陸,登錄名及密碼均為 msfadmin !登陸成功后,我們可以使用 ifconfig 命令來查看我們當前虛擬機的 IP 地址。同樣,我們也可以在 kali 上使用 netdiscover 來掃描整個網段的 IP地址,以此來鎖定目標的 IP !使用命令如下:

Netdiscover –r 192.168.111.0/24

以上命令會列舉出所有處在 192.168.111.0 ~192.168.111.255 范圍內的存活主機。當然了,如果想取得 Metasploitable 2 的IP,則必須保證你們同處一個地址段內!

Nmap 的端口及服務掃描

在這部分我們將使用 NMap 來進行掃描任務。我們將會使用 TCP SYN 的掃描方式,眾所周知 SYN 是一種相對隱蔽的掃描方式,原因在於它並不向目標主機建立完整的三次握手連接。這里簡單概述下, TCP 掃描的過程。TCP掃描首先會向目標服務器發送一個 SYN 包,當目標的服務端口處於開啟時,則 nmap 收到一個 SYN-ACK 的響應包。如果我們發的 SYN 包在第一次發送時就沒有獲得響應,那么可以猜測目標防火牆可能對我們的探測進行了過濾或則並未開啟服務。最后Nmap 則會向目標再次返回一個 ACK 包從而完成一次完整的 TCP 連接!

當我們使用Nmap進行 SYN 或其它形式的掃描時,如果我們不指定端口,那么 Nmap 默認會從所有的 65535 個端口中,選出其中 1000 個最為常見的端口作為掃描目標來進行探測。如果你怕遺漏一些重要信息我們可以使用 -p- 這個參數來實現對 所有 65535 個端口進行掃描!例如:

nmap -sS -p-[目標 IP 地址]

NMap-SYN-scan-Metasploitable-tutorial.jpg

Tip:值得一提的是雖說 SYN 掃描是一種相對隱蔽的掃描方式。但是它只對那些比較老的防火牆有效,而對於如今技術不斷更新及趨於完善的防火牆,它並不隱蔽!

端口開放就意味着有漏洞可被利用嗎?

以上的命題,顯而易見是錯誤的。端口開放並不意味着其底層的軟件就存在可利用漏洞,我們還需結合其操作系統及運行服務的當前版本號。因此收集版本信息,對我們后續滲透也至關重要!下面 Nmap 將很好的幫我們解決這些問題。在 Nmap 中,我們可以使用 -sV-O 參數來分別獲取到目標主機的 版本及操作系統版本信息。 除此之外其實我們還可以使用 -A 參數來取代 -O 參數,它同樣可以獲取版本信息,但它是基於 TCP 的全連接掃描,因此並不安全!命令如下:

Nmap –sS –sV -O [目標 IP 地址]

當我們成功執行以上掃描后,我們可以看到一下返回結果:

Metasploitable-2-Enumeration-nmap-port-scan-1.jpg

從以上結果,我們可以很清晰的看到,目標系統開放了很多危險端口及應用服務。並且詳細列舉出了目標操作系統的版本為 Linux 2.6.9 – 2.6.33 我們可以看到主機正在跑的服務有: SSH 其使用的是 OpenSSH 這款軟件,還有 telnet 服務, Apache 2.2.8 web服務,SQL server 和其它各類服務。下面讓我們來做個簡單的總結:

Vsftpd 2.3.4 on open port 21

OpenSSH 4.7p1 Debian 8ubuntu 1 (protocol 2.0) on open port 22

Linux telnetd service on open port 23

Postfix smtpd on port 25

ISC BIND 9.4.2 on open port 53

Apache httpd 2.2.8 Ubuntu DAV/2 on port 80

A RPCbind service on port 111

Samba smbd 3.X on port 139 and 445

3 r services on port 512, 513 and 514

GNU Classpath grmiregistry on port 1099

Metasploitable root shell on port 1524

A NFS service on port 2049

ProFTPD 1.3.1 on port 2121

MySQL 5.0.51a-3ubuntu5 on port 3306

PostgreSQL DB 8.3.0 – 8.3.7 on port 5432

VNC protocol v1.3 on port 5900

X11 service on port 6000

Unreal ircd on port 6667

Apache Jserv protocol 1.3 on port 8009

Apache Tomcat/Coyote JSP engine 1.1 on port 8180

Nmap UDP 掃描

到目前為止,我們一直在介紹關於 TCP 的掃描。下面讓我們介紹關於 UDP 的掃描!我們可以使用以下命令:

nmap -sU 192.168.111.128

同樣我們可以使用 -p 參數,來指定我們要掃描的端口。相對於 TCP 掃描,UDP 掃描會慢於 TCP 。經過一小會兒的等待,Nmap 返回了以下 UDP 的掃描結果:

53/udp open domain

111/udp open rpcbind

137/udp open netbios-ns

2049/udp open nfs

Tip:UDP掃描相對於 TCP ,可能會造成大量的誤報。原因在於,當目標主機的端口處於關閉狀態時,它只會返回一個 ICMP 端口不可達的信息。這種掃描類似與 TCP 的 SYN 掃描方式!由於包的丟失,在很多掃描器中對於 UDP 的掃描默認都認為其端口是開放的。當我們沒有獲取到 ICMP 不可達的提示時,則說明目標系統的 UDP 端口是出於開放狀態的。

Metasploitable 2 用戶枚舉

為了獲取目標虛擬機上的用戶信息,接下來我們將使用到 Nmap 的一個腳本 smb-enum-users 。使用命令如下:

nmap –script smb-enum-users.nse –p 445 [目標主機]

查詢結果如下:

Metasploitable-2-Enumeration-nmap-samba-user-enumeration-2.jpg

從掃描結果我們可以看到 Metasploitable 2 上大量的用戶信息。其中很多服務賬號和 admin 賬號,都叫 msfadmin 這個用戶名。下面讓我們看看使用第二種方法,檢索列表中的用戶帳戶,就是使用 Samba 服務器上的一個空會話的方式。

利用 rpcclient 空會話枚舉用戶賬戶

rpcclient 是用於執行客戶端MS-RPC功能的Linux工具。空會話是指,連接一個 samba 或 SMB server 不需要用戶名及密碼驗證,因此叫做空會話!支持空會話,是由系統默認的。但是從 Windows XP SP2 和 Windows Server 2003 開始系統就不支持空會話的連接了!連接使用的是445端口,因此目標主機也開放着445端口。當我們成功進行空會話連接后,我們就可以輸入相應的命令,來查詢當前主機的端口開放狀態了!

現在讓我們打開一個新的 terminal 窗口,使用 Metasploitable 2 samba server 來建立一個空會話連接。命令如下:

rpcclient –U “” [目標 IP 地址]

-U 參數用來指定一個空用戶,后面跟上 Metasploitable 2 VM 的IP地址。當我們按 enter 后,會要求你輸入密碼我們繼續回車即可!

Metasploitable-2-Enumeration-null-sessions-with-rpcclient-3.jpg

接着我們執行以下命令:

rcpclient $> querydominfo

Metasploitable-2-Enumeration-querydominfo-rpcclient.jpg

通過 querydominfo 命令,我們獲取到了 domain, server 和目標系統的 用戶總數 還有一些其他的信息。從返回結果我們得知,目標系統有 35 個用戶下面讓我們來枚舉出他們!命令如下:

rcpclient $> enumdomusers

Metasploitable-2-Enumeration-rpcclient-enumdomusers-4.jpg

可以看到,此時已經列舉出了所有可用用戶賬戶。現在讓我們使用 rpcclient ,利用已獲取的用戶賬戶信息,來查詢用戶更加詳細的信息!命令如下:

rcpclient $> queryuser [用戶名]

我們來查詢 msfadmin 這個賬戶:

rcpclient $> queryuser msfadmin

這將返回關於服務器上的配置文件路徑信息,主驅動器信息及密碼相關的設置等。如果想了解更多的關於 rcpclient 的使用方法,可以使用 help 來查看。

枚舉工具之 enum4linux

Enum4linux 是一款用 Perl 語言開發的工具,它主要用來枚舉 Windows Samba 主機。下面讓我們來看看如何在 Metasploitable 2 下使用它。

Usage: ./enum4linux.pl [options]ip

-U get userlist 獲取用戶列表
-M get machine list* 獲取機器列表
-S get sharelist 獲取分享列表
-P get password policy information 獲取密碼策略信息
-G get group and member list 獲取組成員信息
-d be detailed, applies to -U and -S 更加詳細信息,結合 -U 和 -S 使用
-u user specify username to use (default “”) 指定用戶名
-p pass specify password to use (default “”) 指定密碼
-a Do all simple enumeration (-U -S -G -P -r -o -n -i) 執行所有枚舉操作
-o Get OS information 獲取系統信息
-i Get printer information 獲取打印機信息

在基本了解后,現在我們在 Metasploitable 2 上執行如下命令:

enum4linux 192.168.111.128

可以看到 enum4linux 為我們獲取了許多有用的信息,我們得到了一個可用的共享:

enumeration-enum4linux-shares.jpg

並且還列出了可用的賬戶信息:

enumeration-enum4linux-users.jpg

還有有關操作系統的信息:

enumeration-enum4linux-OS.jpg

到此為止,我們已經收集到了目標操作系統Metasploitable 2 的用戶賬戶,開放端口及運行服務的版本等信息!同時我們還獲取到了比較機密的
密碼策略 信息。接下來我們就可以,對這些獲取的信息進行評估分析,為我們下一步的滲透打下良好的基礎。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM