企業網絡用開源安全工具挖掘漏洞漫談
原創【51CTO.com獨家特稿】俗話說得好:“千里之堤,毀于蟻穴。”一個小小的漏洞造成一旦被攻擊者發現,最終后果有可能是整個網絡的癱瘓。因此作為管理員應當像黑客一樣思考,時刻關注最新的安全技術和系統漏洞,并對照本單位的網絡進行檢查。而怎么來發現企業網絡的安全漏洞呢?需要掌握和采用一些什么關鍵技術?有什么比較流行和高效的工具可以用來輔助系統管理員來進行漏洞的掃描和發現呢?本文為讀者揭開這個謎底。
1、企業網絡漏洞掃描概述
隨著Internet的不斷發展,信息技術已成為促進經濟發展、社會進步的巨大推動力:當今社會高度的計算機化信息資源對任何人無論在任何時候、任何地方都變得極有價值。不管是存儲在工作站中、服務器里還是流通于Internet上的信息都已轉變成為一個關系事業成敗關鍵的策略點,這就使保證信息的安全變得格外重要。
安全掃描技術是一類重要的網絡安全技術。安全掃描技術與防火墻、入侵檢測系統互相配合,能夠有效提高網絡的安全性。通過對網絡的掃描,網絡管理員可以了解網絡的安全配置和運行的應用服務,及時發現安全漏洞,客觀評估網絡風險等級。網絡管理員可以根據掃描的結果更正網絡安全漏洞和系統中的錯誤配置,在黑客攻擊前進行防范。如果說防火墻和網絡監控系統是被動的防御手段,那么安全掃描就是一種主動的防范措施,可以有效避免黑客攻擊行為,做到防患于未然。
安全掃描技術主要分為兩類:主機安全掃描技術和網絡安全掃描技術。網絡安全掃描技術主要針對系統中不合適的設置脆弱的口令,以及針對其它同安全規則抵觸的對象進行檢查等;而主機安全掃描技術則是通過執行一些腳本文件模擬對系統進行攻擊的行為并記錄系統的反應,從而發現其中的漏洞。
端口掃描技術和漏洞掃描技術是網絡安全掃描技術中的兩種核心技術,并且廣泛運用于當前較成熟的網絡掃描器中,如著名的Nmap和Nessus。鑒于這兩種技術在網絡安全掃描技術中起著的舉足輕重作用,本文將對這兩種技術進行了非常系統和完整的學習、總結和研究。 #p#
2、端口掃描技術基本原理
對于位于網絡中的計算機系統來說,一個端口就是一個潛在的通信通道,也就是一個入侵通道。對目標計算機進行端口掃描,能得到許多有用的信息從而發現系統的安全漏洞。通過其可以使系統用戶了解系統目前向外界提供了哪些服務,從而為系統用戶管理網絡提供了一種參考的手段。
從技術原理上來說,端口掃描向目標主機的TCP/UDP服務端口發送探測數據包,并記錄目標主機的響應。通過分析響應來判斷服務端口是打開還是關閉,就可以得知端口提供的服務或信息。端口掃描也可以通過捕獲本地主機或服務器的流入流出IP數據包來監視本地主機的運行情況,不僅能對接收到的數據進行分析,而且能夠幫助用戶發現目標主機的某些內在的弱點,而不會提供進入一個系統的詳細步驟。一般說來,端口掃描的目的通常是如下的一項或者多項:
◆發現開放端口:發現目標系統上開放的TCP或UDP端口;
◆了解主機操作系統信息:端口掃描可以通過操作系統的“指紋”來推測被掃描操作系統或者應用程序的版本等信息;
◆了解軟件或者服務版本:軟件或服務版本可以通過“標志獲取”或者應用程序的指紋來識別獲得;
◆發現脆弱的軟件版本:識別軟件和服務的缺陷,從而有助于發起針對漏洞的攻擊。
端口掃描主要有經典的掃描器(全連接)以及所謂的SYN(半連接)掃描器。此外還有間接掃描和秘密掃描等。TCP掃描方式是通過與被掃描主機建立標準的TCP連接,因此這種方式最準確,很少漏報、誤報,但是容易被目標主機察覺、記錄。SYN方式是通過與目標主機建立半打開連接,這樣就不容易被目標主機記錄,但是掃描結果會出現漏報,在網絡狀況不好的情況下這種漏報是嚴重的。 #p#
3、快速安裝nmap
(1)Nmap簡介
map是一個網絡探測和安全掃描程序,系統管理者和個人可以使用這個軟件掃描大型的網絡,獲取那臺主機正在運行以及提供什么服務等信息。nmap支持很多掃描技術,例如:UDP、TCP connect()、TCP SYN(半開掃描)、ftp代理(bounce攻擊)、反向標志、ICMP、FIN、ACK掃描、圣誕樹(Xmas Tree)、SYN掃描和null掃描。從掃描類型一節可以得到細節。nmap還提供了一些高級的特征,例如:通過TCP/IP協議棧特征探測操作系統類型,秘密掃描,動態延時和重傳計算,并行掃描,通過并行ping掃描探測關閉的主機,誘餌掃描,避開端口過濾檢測,直接RPC掃描(無須端口影射),碎片掃描,以及靈活的目標和端口設定。
為了提高nmap在non-root狀態下的性能,軟件的設計者付出了很大的努力。很不幸,一些內核界面(例如raw socket)需要在root狀態下使用。所以應該盡可能在root使用nmap。
nmap運行通常會得到被掃描主機端口的列表。nmap總會給出well known端口的服務名(如果可能)、端口號、狀態和協議等信息。每個端口的狀態有:open、filtered、unfiltered。
◆open狀態意味著目標主機能夠在這個端口使用accept()系統調用接受連接;
◆filtered狀態表示防火墻、包過濾和其它的網絡安全軟件掩蓋了這個端口,禁止 nmap探測其是否打開。
◆unfiltered表示這個端口關閉,并且沒有防火墻/包過濾軟件來隔離nmap的探測企圖。通常情況下,端口的狀態基本都是unfiltered狀態,只有在大多數被掃描的端口處于filtered狀態下,才會顯示處于unfiltered狀態的端口。
根據使用的功能選項,nmap也可以報告遠程主機的下列特征:使用的操作系統、TCP序列、運行綁定到每個端口上的應用程序的用戶名、DNS名、主機地址是否是欺騙地址、以及其它一些東西。
(2)快速安裝
在使用之前,我們需要下載該軟件的源碼包進行安裝。目前,作者下載到的最新版本為:nmap-5.00.tgz,下載網址為:http://linux.softpedia.com/get/System/Networking/Nmap-184.shtml。下載完成后,用戶執行如下安裝命令即可:
(1)解壓縮軟件包
#tar –xzvf nmap-5.00.tgz
(2)切換到安裝目錄
#cd nmap-5.00
(3)使用configure命令生成make文件
#./configure
(4)編譯源代碼
#make
(5)安裝相關模塊
#make install #p#
4、使用nmap確定開放端口
功能選項可以組合使用。一些功能選項只能夠在某種掃描模式下使用。nmap會自動識別無效或者不支持的功能選項組合,并向用戶發出警告信息。使用nmap,可以參考使用如下一些常用的選項。
(1)使用主要掃描類型選項
(1)-sT
TCP connect()掃描:這是最基本的TCP掃描方式。connect()是一種系統調用,由操作系統提供,用來打開一個連接。如果目標端口有程序監聽,connect()就會成功返回,否則這個端口是不可達的。這項技術最大的優點是,用戶不需要root權限。任何Linux用戶都可以自由使用這個系統調用。這種掃描很容易被檢測到,在目標主機的日志中會記錄大批的連接請求以及錯誤信息。
(2)-sS
TCP同步掃描(TCP SYN):因為不必全部打開一個TCP連接,所以這項技術通常稱為半開掃描(half-open)。用戶可以發出一個TCP同步包(SYN),然后等待回應。如果對方返回SYN|ACK(響應)包就表示目標端口正在監聽;如果返回RST數據包,就表示目標端口沒有監聽程序;如果收到一個SYN|ACK包,源主機就會馬上發出一個RST(復位)數據包斷開和目標主機的連接,這實際上有我們的操作系統內核自動完成的。這項技術最大的好處是,很少有系統能夠把這記入系統日志。不過,用戶需要root權限來定制SYN數據包。
(3)-sF -sF –sN
秘密FIN數據包掃描、圣誕樹(Xmas Tree)、空(Null)掃描模式:即使SYN掃描都無法確定的情況下使用。一些防火墻和包過濾軟件能夠對發送到被限制端口的SYN數據包進行監視,而且有些程序比如synlogger和courtney能夠檢測那些掃描。這些高級的掃描方式可以逃過這些干擾。這些掃描方式的理論依據是:關閉的端口需要對用戶的探測包回應RST包,而打開的端口必需忽略有問題的包。FIN掃描使用暴露的FIN數據包來探測,而圣誕樹掃描打開數據包的FIN、URG和PUSH標志。不幸的是,微軟決定完全忽略這個標準,另起爐灶。所以這種掃描方式對Windows95/NT無效。不過,從另外的角度講,可以使用這種方式來分別兩種不同的平臺。如果使用這種掃描方式可以發現打開的端口,用戶就可以確定目標注意運行的不是Windows系統。如果使用-sF、-sX或者-sN掃描顯示所有的端口都是關閉的,而使用SYN掃描顯示有打開的端口,用戶可以確定目標主機可能運行的是Windows系統。現在這種方式沒有什么太大的用處,因為nmap有內嵌的操作系統檢測功能。還有其它幾個系統使用和Windows同樣的處理方式,包括Cisco、BSDI、HP/UX、MYS、IRIX。在應該拋棄數據包時,以上這些系統都會從打開的端口發出復位數據包。
(4)-sP
ping掃描:有時用戶只是想知道此時網絡上哪些主機正在運行。通過向用戶指定的網絡內的每個IP地址發送ICMP echo請求數據包,nmap就可以完成這項任務。如果主機正在運行就會作出響應。不幸的是,一些站點會主動阻塞ICMP echo請求數據包。然而,在默認的情況下nmap也能夠向80端口發送TCP ack包,如果用戶收到一個RST包,就表示主機正在運行。nmap使用的第三種技術是:發送一個SYN包,然后等待一個RST或者SYN/ACK包。對于非root用戶,nmap使用connect()方法。在默認的情況下(root用戶),nmap并行使用ICMP和ACK技術。值得注意的是:nmap在任何情況下都會進行ping掃描,只有目標主機處于運行狀態,才會進行后續的掃描。如果用戶只是想知道目標主機是否運行,而不想進行其它掃描,才會用到這個選項。
(5)-sU
UDP掃描:如果用戶想知道在某臺主機上提供哪些UDP服務,可以使用這種掃描方法。nmap首先向目標主機的每個端口發出一個0字節的UDP包,如果我們收到端口不可達的ICMP消息,端口就是關閉的,否則我們就假設它是打開的。
(6)-sA
ACK掃描:這項高級的掃描方法通常用來穿過防火墻的規則集。通常情況下,這有助于確定一個防火墻是功能比較完善的或者是一個簡單的包過濾程序,只是阻塞進入的SYN包。這種掃描是向特定的端口發送ACK包(使用隨機的應答/序列號)。如果返回一個RST包,這個端口就標記為unfiltered狀態。如果什么都沒有返回,或者返回一個不可達ICMP消息,這個端口就歸入filtered類。注意,nmap通常不輸出unfiltered的端口,所以在輸出中通常不顯示所有被探測的端口。顯然,這種掃描方式不能找出處于打開狀態的端口。
(7)-sW
對滑動窗口的掃描:這項高級掃描技術非常類似于ACK掃描,除了它有時可以檢測到處于打開狀態的端口,因為滑動窗口的大小是不規則的,有些操作系統可以報告其大小。這些系統至少包括:某些版本的AIX、Amiga、BeOS、BSDI、Cray、Tru64 UNIX、DG/UX、OpenVMS、Digital UNIX、OpenBSD、OpenStep、QNX、Rhapsody、SunOS 4.x、Ultrix、VAX、VXWORKS。從nmap-hackers郵件3列表的文檔中可以得到完整的列表。
(8)-sR
RPC掃描:這種方法和nmap的其它不同的端口掃描方法結合使用。選擇所有處于打開狀態的端口向它們發出SunRPC程序的NULL命令,以確定它們是否是RPC端口,如果是,就確定是哪種軟件及其版本號。因此用戶能夠獲得防火墻的一些信息。誘餌掃描現在還不能和RPC掃描結合使用。
(2)使用高級設置選項
通常,nmap在運行時,能夠很好地根據網絡特點進行調整。掃描時,nmap會盡量減少被目標檢測到的機會,同時盡可能加快掃描速度。然而,nmap默認的適時策略有時候不太適合用戶的目標。使用下面這些選項,可以有效地控制nmap的掃描時間。
(1)-T
設置nmap的掃描策略,主要有如下幾種:
◆Paranoid:為了避開IDS的檢測使掃描速度極慢,nmap串行所有的掃描,每隔至少5分鐘發送一個包;
◆Sneaky:和Paranoid差不多,只是數據包的發送間隔是15秒;
◆Polite:不增加太大的網絡負載,避免宕掉目標主機,串行每個探測,并且使每個探測有0.4 秒種的間隔;
◆Normal:nmap默認的選項,在不是網絡過載或者主機/端口丟失的情況下盡可能快速地掃描;
◆Aggressive:設置5分鐘的超時限制,使對每臺主機的掃描時間不超過5分鐘,并且使對每次探測回應的等待時間不超過1.5秒鐘;
◆Insane:只適合快速的網絡或者用戶不在意丟失某些信息,每臺主機的超時限制是75秒,對每次探測只等待0.3秒鐘。
用戶也可以使用數字來代替上述這些模式,例如:-T 0等于-T Paranoid,-T 5等于-T Insane。并且,上述這些模式不能和下面的選項組合使用。
(2)--host_timeout
設置掃描一臺主機的時間,以毫秒為單位。默認的情況下,沒有超時限制。
(3)--max_rtt_timeout
設置對每次探測的等待時間,以毫秒為單位。如果超過這個時間限制就重傳或者超時。默認值是大約9000毫秒。
(4)--min_rtt_timeout
當目標主機的響應很快時,nmap就縮短每次探測的超時時間。這樣會提高掃描的速度,但是可能丟失某些響應時間比較長的包。使用這個選項,可以讓nmap對每次探測至少等待用戶指定的時間,以毫秒為單位。
(5)--initial_rtt_timeout
設置初始探測的超時值。一般這個選項只在使用-P0選項掃描有防火墻保護的主機才有用。默認值是6000毫秒。
(6)--max_parallelism
設置最大的并行掃描數量。--max_parallelism 1表示同時只掃描一個端口。這個選項對其它的并行掃描也有效,例如ping sweep, RPC scan。
(7)--scan_delay
設置在兩次探測之間,nmap必須等待的時間。這個選項主要用于降低網絡的負載。
(3)掃描實施第一步:發現活動主機
使用nmap掃描整個網絡尋找目標,已確定目標機是否處于連通狀態。通過使用“-sP”命令,進行ping掃描。缺省情況下,nmap給每個掃描到的主機發送一個ICMP echo和一個TCP ACK,主機對任何一種的響應都會被nmap得到,掃描速度非常快,在很短的時間內可以掃描一個很大的網絡。該命令使用如下所示:
[root@localhost ~]# nmap -sP 10.1.4.0/24 Starting Nmap 5.0 ( http://www.insecure.org/nmap/ ) at 2009-12-17 15:09 CST Host 10.1.4.1 appears to be up. MAC Address: 00:0B:CD:B9:EE:A8 (Compaq (HP)) Host 10.1.4.6 appears to be up. MAC Address: 00:1E:65:F0:48:B8 (Unknown) Host 10.1.4.8 appears to be up. MAC Address: 00:1F:3C:56:00:95 (Unknown) Host 10.1.4.9 appears to be up. MAC Address: 00:13:CE:FA:45:4A (Intel Corporate) Host 10.1.4.14 appears to be up. MAC Address: 00:21:5C:64:0D:07 (Unknown) Host 10.1.4.15 appears to be up. MAC Address: 00:21:5C:77:C1:83 (Unknown) Host 10.1.4.16 appears to be up. MAC Address: 00:1C:BF:A4:02:39 (Unknown) Host 10.1.4.18 appears to be up. MAC Address: 00:1C:BF:D5:30:04 (Unknown) Host 10.1.4.20 appears to be up. MAC Address: 00:1C:BF:95:6F:3C (Unknown) Host 10.1.4.21 appears to be up. MAC Address: 00:1C:BF:95:62:69 (Unknown) Host 10.1.4.22 appears to be up. MAC Address: 00:1F:3A:4C:90:D2 (Unknown) Host 10.1.4.23 appears to be up. Host 10.1.4.25 appears to be up. MAC Address: 00:22:FA:CA:C6:7A (Unknown) Host 10.1.4.26 appears to be up. MAC Address: 00:26:BB:0F:40:01 (Unknown) Host 10.1.4.27 appears to be up. MAC Address: 00:22:FA:B0:BB:D2 (Unknown) Host 10.1.4.28 appears to be up. MAC Address: 00:1E:65:F2:76:96 (Unknown) Host 10.1.4.29 appears to be up. MAC Address: 00:1C:BF:9D:20:F5 (Unknown) 略。。。。。。 Nmap finished: 256 IP addresses (125 hosts up) scanned in 7.852 seconds |
通過該掃描,可以發現該公司網絡中有125臺主機是活躍的,也就是說有機可趁,下一步就是要進行更詳細的掃描,來掃描這些主機到底有些什么活動端口。
(4)掃描實施第二步:掃描端口掃描
通常情況下,當nmap的使用者確定了網絡上運行的主機處于連通狀態,下一步的工作就是進行端口掃描,端口掃描使用-sT參數。如下面結果如示:
[root@localhost ~]# nmap -v -sT 10.1.4.0/24 Starting Nmap 5.0 ( http://www.insecure.org/nmap/ ) at 2009-12-17 14:19 CST Initiating ARP Ping Scan against 23 hosts [1 port/host] at 14:19 The ARP Ping Scan took 0.51s to scan 23 total hosts. DNS resolution of 12 IPs took 0.29s. Initiating SYN Stealth Scan against 5 hosts [1680 ports/host] at 14:19 Discovered open port 25/tcp on 10.1.4.1 Discovered open port 3389/tcp on 10.1.4.1 Discovered open port 389/tcp on 10.1.4.1 Discovered open port 21/tcp on 10.1.4.1 Discovered open port 13/tcp on 10.1.4.1 Discovered open port 80/tcp on 10.1.4.11 Increasing send delay for 10.1.4.11 from 0 to 5 due to 11 out of 34 dropped probes since last increase. Discovered open port 3372/tcp on 10.1.4.1 Discovered open port 42/tcp on 10.1.4.1 SYN Stealth Scan Timing: About 10.47% done; ETC: 14:24 (0:04:16 remaining) Discovered open port 143/tcp on 10.1.4.1 Discovered open port 993/tcp on 10.1.4.1 Discovered open port 1025/tcp on 10.1.4.1 Discovered open port 445/tcp on 10.1.4.1 Discovered open port 995/tcp on 10.1.4.1 Increasing send delay for 10.1.4.11 from 5 to 10 due to max_successful_tryno increase to 4 Discovered open port 110/tcp on 10.1.4.1 Discovered open port 17/tcp on 10.1.4.1 Discovered open port 2008/tcp on 10.1.4.1 Discovered open port 7/tcp on 10.1.4.1 Discovered open port 9/tcp on 10.1.4.1 Discovered open port 19/tcp on 10.1.4.1 Increasing send delay for 10.1.4.11 from 10 to 20 due to max_successful_tryno increase to 5 Increasing send delay for 10.1.4.11 from 20 to 40 due to max_successful_tryno increase to 6 Discovered open port 6000/tcp on 10.1.4.1 Discovered open port 135/tcp on 10.1.4.1 Discovered open port 1029/tcp on 10.1.4.1 Discovered open port 465/tcp on 10.1.4.1 Discovered open port 139/tcp on 10.1.4.1 Completed SYN Stealth Scan against 10.1.4.1 in 249.12s (4 hosts left) Completed SYN Stealth Scan against 10.1.4.6 in 257.58s (3 hosts left) Completed SYN Stealth Scan against 10.1.4.9 in 258.51s (2 hosts left) Completed SYN Stealth Scan against 10.1.4.11 in 274.71s (1 host left) Discovered open port 139/tcp on 10.1.4.10 The SYN Stealth Scan took 280.28s to scan 8400 total ports. Host 10.1.4.1 appears to be up ... good. Interesting ports on 10.1.4.1: Not shown: 1657 closed ports PORT STATE SERVICE 7/tcp open echo 9/tcp open discard 13/tcp open daytime 17/tcp open qotd 19/tcp open chargen 21/tcp open ftp 25/tcp open smtp 42/tcp open nameserver 110/tcp open pop3 135/tcp open msrpc 139/tcp open netbios-ssn 143/tcp open imap 389/tcp open ldap 445/tcp open microsoft-ds 465/tcp open smtps 993/tcp open imaps 995/tcp open pop3s 1025/tcp open NFS-or-IIS 1029/tcp open ms-lsa 2008/tcp open conf 3372/tcp open msdtc 3389/tcp open ms-term-serv 6000/tcp open X11 MAC Address: 00:0B:CD:B9:EE:A8 (Compaq (HP)) Host 10.1.4.6 appears to be up ... good. All 1680 scanned ports on 10.1.4.6 are filtered MAC Address: 00:1E:65:F0:48:B8 (Unknown) Host 10.1.4.9 appears to be up ... good. All 1680 scanned ports on 10.1.4.9 are filtered MAC Address: 00:13:CE:FA:45:4A (Intel Corporate) Host 10.1.4.10 appears to be up ... good. Interesting ports on 10.1.4.10: Not shown: 1678 filtered ports PORT STATE SERVICE 139/tcp open netbios-ssn 445/tcp closed microsoft-ds MAC Address: 00:22:FA:DB:C3:A8 (Unknown) Host 10.1.4.11 appears to be up ... good. Interesting ports on 10.1.4.11: Not shown: 1673 closed ports PORT STATE SERVICE 80/tcp open http 170/tcp filtered print-srv 179/tcp filtered bgp 218/tcp filtered mpp 736/tcp filtered unknown 1720/tcp filtered H.323/Q.931 5302/tcp filtered hacl-cfg MAC Address: 00:1E:65:F0:78:CA (Unknown) DNS resolution of 1 IPs took 4.01s. Initiating SYN Stealth Scan against 7 hosts [1680 ports/host] at 14:24 Increasing send delay for 10.1.4.20 from 0 to 5 due to 11 out of 11 dropped probes since last increase. Increasing send delay for 10.1.4.20 from 5 to 10 due to 11 out of 11 dropped probes since last increase. SYN Stealth Scan Timing: About 2.66% done; ETC: 14:43 (0:18:18 remaining) Increasing send delay for 10.1.4.20 from 10 to 20 due to 11 out of 36 dropped probes since last increase. SYN Stealth Scan Timing: About 7.69% done; ETC: 14:39 (0:13:50 remaining) 略。。。。。。 |
可以清楚地看到,端口掃描采用多種方式對網絡中主機的TCP活動端口進行了全面的掃描,由于掃描的主機數太多(125臺),上面僅僅給出了2臺主機的TCP端口情況,也就是主機10.1.4.1和10.1.4.11,并且,主機10.1.4.1打開的端口非常多,網絡服務也相對比較豐富,并且從IP地址的構成來看,該主機極有可能是網關(一般網關的IP地址設定為X.X.X.1),于是就可以鎖定這臺主機進行后續的掃描。
(5)掃描實施第三步:主機操作系統識別
通常一個入侵者可能對某個操作系統的漏洞很熟悉,能很輕易地進入此操作系統的機器。一個常見的選項是TCP/IP上的指紋,帶有"-O"選項決定遠程操作系統的類型。這可以和一個端口掃描結合使用,但不能和ping掃描結合使用。nmap通過向主機發送不同類型的探測信號,縮小查找的操作系統的范圍。如下面的掃描結果所示:
[root@localhost ~]# nmap -O 10.1.4.1 Starting Nmap 5.0 ( http://www.insecure.org/nmap/ ) at 2009-12-17 15:28 CST Interesting ports on 10.1.4.1: Not shown: 1657 closed ports PORT STATE SERVICE 7/tcp open echo 9/tcp open discard 13/tcp open daytime 17/tcp open qotd 19/tcp open chargen 21/tcp open ftp 25/tcp open smtp 42/tcp open nameserver 110/tcp open pop3 135/tcp open msrpc 139/tcp open netbios-ssn 143/tcp open imap 389/tcp open ldap 445/tcp open microsoft-ds 465/tcp open smtps 993/tcp open imaps 995/tcp open pop3s 1025/tcp open NFS-or-IIS 1029/tcp open ms-lsa 2008/tcp open conf 3372/tcp open msdtc 3389/tcp open ms-term-serv 6000/tcp open X11 MAC Address: 00:0B:CD:B9:EE:A8 (Compaq (HP)) Device type: general purpose Running: Microsoft Windows 95/98/ME|NT/2K/XP OS details: Microsoft Windows Millennium Edition (Me), Windows 2000 Professional or Advanced Server, or Windows XP Nmap finished: 1 IP address (1 host up) scanned in 68.749 seconds |
通過上述掃描結果可以看到,10.1.4.1這臺機器運行的是Windows系列的操作系統,并且提供了一些比較常用的網絡服務。
(6)掃描實施第四步:掃描總結歸納
通過上述3步的掃描實施,可以逐步總結得出了如下幾點結論和經驗:
◆端口掃描的步驟是先發現活動主機,然后發現活動主機的活動端口,從而確定需要重點關注或者需要供給的主機,一般這些主機是服務端口開得多的主機;再然后對重點關注的主機實行操作系統掃描,從而確定操作系統類型,以便從操作系統層面來尋找突破口;一般情況下,如果是Windows操作系統的話,那么就有比較大的攻擊或者是安全維護的空間。
◆除了上述幾個常用的掃描選項外,在掃描過程中還需要綜合采用其他-T之類的選項,以保證掃描不被對方發現,否則對于具有豐富管理經驗的管理員來說,很容易發現這種掃描行為,引起反追蹤甚至是報復性的攻擊等。當然,對于內網的網管性的維護工作來說,就沒有這個風險。
◆另外,在使用nmap進行掃描后,對于它提供的開放端口的號及其對應的服務名進行比較對照,以更好地確認端口及其對應的開放服務,從而為下一步的針對性的攻擊或者是網絡管理作好準備。 #p#
5、 漏洞掃描
nmap雖說不錯,能夠輕松地實現TCP掃描、UDP掃描、操作系統指紋掃描、隱蔽掃描等方式,也能得到活動的主機及其端口,還能通確認該端口對應的網絡或者系統服務,從而通過其他方式來獲取這些服務的漏洞發起攻擊或者是進行網絡安全管理。那么,有沒有一種比以nmap為代表的端口掃描技術更加具有針對性的漏洞發現技術呢?
(1)漏洞掃描基本原理
漏洞掃描就是對計算機系統或者其它網絡設備進行安全相關的檢測,以找出安全隱患和可被黑客利用的漏洞。顯然,漏洞掃描軟件是把雙刃劍,黑客利用它入侵系統,而系統管理員掌握它以后又可以有效的防范黑客入侵。因此,漏洞掃描是保證系統和網絡安全必不可少的手段,必須仔細研究利用。
漏洞掃描通常采用兩種策略,第一種是被動式策略,第二種是主動式策略。所謂被動式策略就是基于主機之上,對系統中不合適的設置,脆弱的口令以及其他同安全規則抵觸的對象進行檢查;而主動式策略是基于網絡的,它通過執行一些腳本文件模擬對系統進行攻擊的行為并記錄系統的反應,從而發現其中的漏洞。利用被動式策略掃描稱為系統安全掃描,利用主動式策略掃描稱為網絡安全掃描。
這里進一步介紹漏洞掃描的四種檢測技術:
◆基于應用的檢測技術,它采用被動的,非破壞性的辦法檢查應用軟件包的設置,發現安全漏洞。
◆基于主機的檢測技術,它采用被動的,非破壞性的辦法對系統進行檢測。通常,它涉及到系統的內核,文件的屬性,操作系統的補丁等問題。這種技術還包括口令解密,把一些簡單的口令剔除。因此,這種技術可以非常準確的定位系統的問題,發現系統的漏洞。它的缺點是與平臺相關,升級復雜。
◆基于目標的漏洞檢測技術,它采用被動的,非破壞性的辦法檢查系統屬性和文件屬性,如數據庫,注冊號等。通過消息文摘算法,對文件的加密數進行檢驗。這種技術的實現是運行在一個閉環上,不斷地處理文件,系統目標,系統目標屬性,然后產生檢驗數,把這些檢驗數同原來的檢驗數相比較。一旦發現改變就通知管理員。
◆基于網絡的檢測技術,它采用積極的,非破壞性的辦法來檢驗系統是否有可能被攻擊崩潰。它利用了一系列的腳本模擬對系統進行攻擊的行為,然后對結果進行分析。它還針對已知的網絡漏洞進行檢驗。網絡檢測技術常被用來進行穿透實驗和安全審記。這種技術可以發現一系列平臺的漏洞,也容易安裝。但是,它可能會影響網絡的性能。
優秀的安全掃描產品應該是綜合了以上4種方法的優點,最大限度的增強漏洞識別的精度。
(2)網絡漏洞掃描器的構成
網絡漏洞掃描器的一種掃描原理和工作原理為:通過遠程檢測目標主機TCP/IP不同端口的服務,記錄目標給予的回答。通過這種方法,可以搜集到很多目標主機的各種信息(例如:是否能用匿名登陸,是否有可寫的FTP目錄,是否能用Telnet,httpd是否是用root在運行)。在獲得目標主機TCP/IP端口和其對應的網絡訪問服務的相關信息后,與網絡漏洞掃描系統提供的漏洞庫進行匹配,如果滿足匹配條件,則視為漏洞存在。此外,通過模擬黑客的進攻手法,對目標主機系統進行攻擊性的安全漏洞掃描,如測試弱勢口令等,也是掃描模塊的實現方法之一。如果模擬攻擊成功,則視為漏洞存在。在匹配原理上,該網絡漏洞掃描器采用的是基于規則的匹配技術,即根據安全專家對網絡系統安全漏洞、黑客攻擊案例的分析和系統管理員關于網絡系統安全配置的實際經驗,形成一套標準的系統漏洞庫,然后再在此基礎之上構成相應的匹配規則,由程序自動進行系統漏洞掃描的分析工作。所謂基于規則是基于一套由專家經驗事先定義的規則的匹配系統。例如,在對TCP 80端口的掃描中,如果/cgi-bin/phf/cgi-bin/Count.cgi,根據專家經驗以及CGI程序的共享性和標準化,可以推知該WWW服務存在兩個CGI漏洞。同時應當說明的是,基于規則的匹配系統也有其局限性,因為作為這類系統的基礎的推理規則一般都是根據已知的安全漏洞進行安排和策劃的,而對網絡系統的很多危險的威脅是來自未知的安全漏洞,這一點和PC殺毒很相似。
基于網絡的漏洞掃描器,一般有以下幾個方面組成:
◆漏洞數據庫模塊:漏洞數據庫包含了各種操作系統的各種漏洞信息,以及如何檢測漏洞的指令。由于新的漏洞會不斷出現,該數據庫需要經常更新,以便能夠檢測到新發現的漏洞。
◆用戶配置控制臺模塊:用戶配置控制臺與安全管理員進行交互,用來設置要掃描的目標系統,以及掃描哪些漏洞。
◆掃描引擎模塊:掃描引擎是掃描器的主要部件。根據用戶配置控制臺部分的相關設置,掃描引擎組裝好相應的數據包,發送到目標系統,將接收到的目標系統的應答數據包,與漏洞數據庫中的漏洞特征進行比較,來判斷所選擇的漏洞是否存在。
◆當前活動的掃描知識庫模塊:通過查看內存中的配置信息,該模塊監控當前活動的掃描,將要掃描的漏洞的相關信息提供給掃描引擎,同時還接收掃描引擎返回的掃描結果。
◆結果存儲器和報告生成工具:報告生成工具,利用當前活動掃描知識庫中存儲的掃描結果,生成掃描報告。掃描報告將告訴用戶配置控制臺設置了哪些選項,根據這些設置,掃描結束后,在哪些目標系統上發現了哪些漏洞。
(3)基于B/S架構的網絡漏洞掃描器
下面為這種網絡漏洞掃描器的一種結構:
![]() |
圖1 基于B/S架構的網絡漏洞掃描器結構 |
這種漏洞掃描器是基于瀏覽器/服務器(B/S)結構。這種網絡掃描器的工作原理是:當用戶通過控制平臺發出了掃描命令之后,控制平臺即向掃描模塊發出相應的掃描請求,掃描模塊在接到請求之后立即啟動相應的子功能模塊,對被掃描主機進行掃描。通過對從被掃描主機返回的信息進行分析判斷,掃描模塊將掃描結果返回給控制平臺,再由控制平臺最終呈現給用戶。
(4)基于C/S架構的網絡漏洞掃描器
另一種結構的掃描器是采用插件程序結構,客戶/服務器模式。插件是由腳本語言編寫的子程序,掃描程序可以通過調用它來執行漏洞掃描,檢測出系統中存在的一個或多個漏洞。添加新的插件就可以使漏洞掃描軟件增加新的功能,掃描出更多的漏洞。插件編寫規范化后,甚至用戶自己都可以用perl、c或自行設計的腳本語言編寫的插件來擴充漏洞掃描軟件的功能。這種技術使漏洞掃描軟件的升級維護變得相對簡單,而專用腳本語言的使用也簡化了編寫新插件的編程工作,使漏洞掃描軟件具有強的擴展性。可以針對某一具體漏洞,編寫對應的外部測試腳本。通過調用服務檢測插件,檢測目標主機TCP/IP不同端口的服務,并將結果保存在一信息庫中,然后調用相應的插件程序,向遠程主機發送構造好的數據,并也將檢測結果保存于信息庫,以提供給其它的腳本運行所需的必要信息,這樣可提高檢測效率。如,在針對某FTP服務的攻擊中,可以首先查看服務檢測插件的返回結果,只有在確認目標主機服務器開啟FTP服務時,對應的針對某FTP服務的攻擊腳本才能被執行。采用這種插件結構的掃描器,可以讓任何人構造自己的攻擊測試腳本,而不用去了解太多掃描器的原理。這種掃描器也可以用做模擬黑客攻擊的平臺。采用這種結構的掃描器具有很強的生命力,如著名的Nessus 就是采用這種結構。這種網絡漏洞掃描器的結構為:
![]() |
圖2 基于C/S架構的網絡漏洞掃描器結構 |
其中客戶端主要設置服務器端的掃描參數,及收集掃描信息。具體掃描工作由服務器來完成。 #p#
6、快速安裝Nessus
(1)Nessus簡介
Nessus是一個功能強大而又易于使用的遠程安全掃描器,它不僅免費而且更新極快。安全掃描器的功能是對指定網絡進行安全檢查,找出該網絡是否存在有導致對手攻擊的安全漏洞。該系統被設計為client/sever模式,服務器端負責進行安全檢查,客戶端用來配置管理服務器端。在服務端還采用了plug-in的體系,允許用戶加入執行特定功能的插件,這插件可以進行更快速和更復雜的安全檢查。在Nessus中還采用了一個共享的信息接口,稱之知識庫,其中保存了前面進行檢查的結果。檢查的結果可以HTML、純文本、LaTeX(一種文本文件格式)等幾種格式保存。
在未來的新版本中,Nessus將會支持快速更快的安全檢查,而且這種檢查將會占用更少的帶寬,其中可能會用到集群的技術以提高系統的運行效率。
Nessus的優點在于:
◆其采用了基于多種安全漏洞的掃描,避免了掃描不完整的情況。
◆它是免費的,比起商業的安全掃描工具如ISS具有價格優勢。
◆Nessus擴展性強、容易使用、功能強大,可以掃描出多種安全漏洞。
Nessus的安全檢查完全是由plug-ins的插件完成的。在Nessus主頁中不但詳細介紹了各種插件的功能,還提供了解決問題的相關方案。有關plug-in的詳細說明,請看http://cgi.nessus.org/plugins/dump.php3?viewby=family
除了這些插件外,Nessus還為用戶提供了描述攻擊類型的腳本語言,來進行附加的安全測試,這種語言稱為Nessus攻擊腳本語言(NSSL),用它來完成插件的編寫。
在客戶端,用戶可以指定運行Nessus服務的機器、使用的端口掃描器及測試的內容及測試的IP地址范圍。Nessus本身是工作在多線程基礎上的,所以用戶還可以設置系統同時工作的線程數。這樣用戶在遠端就可以設置Nessus的工作配置了。安全檢測完成后,服務端將檢測結果返回到客戶端,客戶端生成直觀的報告。在這個過程當中,由于服務器向客戶端傳送的內容是系統的安全弱點,為了防止通信內容受到監聽,其傳輸過程還可以選擇加密。
(2)安裝和啟動Nessus服務器端
用戶可以到http://www.nessus.org/download.html去下載nessus服務器的最新版本。目前其最新版本為:Nessus-4.2.0-es5.i386.rpmNessus,使用如下的命令對其進行安裝即可:
[root@localhost tmp]# rpm -ivh Nessus-4.2.0-es5.i386.rpm Preparing... ########################################### [100%] 1:Nessus ########################################### [100%] nessusd (Nessus) 4.2.0 [build K9080] for Linux (C) 1998 - 2009 Tenable Network Security, Inc. - Please run /opt/nessus//sbin/nessus-adduser to add a user - Register your Nessus scanner at http://www.nessus.org/register/ to obtain |
安裝成功后,還需要添加用戶來對其進行操作,步驟如下所示:
[root@localhost tmp]# /opt/nessus//sbin/nessus-adduser //添加用戶 Login : root //設置密碼 Login password : Login password (again) : Do you want this user to be a Nessus 'admin' user ? (can upload plugins, etc...) (y/n) [n]: y User rules ---------- nessusd has a rules system which allows you to restrict the hosts that root has the right to test. For instance, you may want him to be able to scan his own host only. Please see the nessus-adduser manual for the rules syntax Enter the rules for this user, and enter a BLANK LINE once you are done : (the user can have an empty rules set) Login : root Password : *********** This user will have 'admin' privileges within the Nessus server Rules : Is that ok ? (y/n) [y] y //添加成功 User added |
啟動nessus非常簡單,使用如下命令即可:
#/sbin/service nessusd start |
(3)安裝Nessus客戶端
nessus的客戶端有兩個版本,JAVA版本及C版本,JAVA版本的可以在多個平臺中運行,C版本的支持Windows,有了這兩個客戶端的版本就可以在局域網的任何的一臺機器上進行安全檢查了。為了使用的簡單起見,我們選擇了一款Windows系統下的Nessus 4客戶端版本進行安裝和使用,也就是使用Windows客戶端來控制運行于Linux下的Nessus服務器端來對局域網里面的機器進行漏洞掃描,這也是目前Nessus使用的非常流行的一種方式。具體的安裝如同Windows下任何一款應用軟件的安裝方式相同,非常簡單,這里不再贅述。 #p#
7、使用Nessus掃描
下面來看看使用nessus進行掃描的步驟以及效果,一般來說,使用Nessus進行掃描需要有如下幾個步驟:
(1)設置服務器連接:如圖3所示,首先需要設置Nessus客戶端來連接Nessus服務器,也就是上面介紹中安裝的服務器,在圖3中,配置好相應的主機名和端口,以及登陸所需要使用的用戶名和密碼。
![]() |
圖3 設置服務器連接 |
(2)設置IP范圍:如圖4所示,設置為IP Range。當然,這里還有其他的選項可提供選擇,包括圖中所示的Single Host、Subnet等,可以根據實際情況來選擇。
![]() |
圖4 設置掃描的IP范圍 |
(3)點擊scan now,開始對設定范圍進行掃描:如圖5所示。
![]() |
圖5 開始掃描 |
(4)掃描的整體效果:如圖6所示,掃描給出了對172.31.12.188這臺主機(Linux操作系統,RHEL 5.0版本)的掃描結果,可以很清晰看出操作系統的版本以及開放的端口,同時,也能夠將開放的端口詳細信息列出來。
![]() |
圖6 掃描的整體結果 |
(5)查看具體的漏洞信息:如圖7所示,如果想查看具體的漏洞信息報告以及漏洞等級等詳細信息時,可以點開圖中所示的對應開放端口信息,并針對具體信息采取相應的措施來對該漏洞進行修補等操作。
![]() |
圖7 具體的漏洞信息 |
【51CTO.COM 獨家特稿,轉載請注明出處及作者!】