迅速發(fā)展的Internet給人們的生活、工作帶來了巨大的方便,但同時(shí),也帶來了一些不容忽視的問題,網(wǎng)絡(luò)信息的安全保密問題就是其中之一。
網(wǎng)絡(luò)的開放性以及黑客的攻擊是造成網(wǎng)絡(luò)不安全的主要原因。科學(xué)家在設(shè)計(jì)Internet之初就缺乏對安全性的總體構(gòu)想和設(shè)計(jì),我們所用的TCP/IP 協(xié)議是建立在可信的環(huán)境之下,首先考慮的是網(wǎng)絡(luò)互連,它是缺乏對安全方面的考慮的。而且TCP/IP協(xié)議是完全公開的,遠(yuǎn)程訪問使許多攻擊者無須到現(xiàn)場就能夠得手,連接的主機(jī)基于互相信任的原則等等這一些性質(zhì)使網(wǎng)絡(luò)更加不安全。
先進(jìn)的技術(shù)是實(shí)現(xiàn)網(wǎng)絡(luò)信息安全的有力武器,這些技術(shù)包括:密碼技術(shù)、身份驗(yàn)證技術(shù)、訪問控制技術(shù)、安全內(nèi)核技術(shù)、網(wǎng)絡(luò)反病毒技術(shù)、信息泄漏防治技術(shù)、防火墻技術(shù)、網(wǎng)絡(luò)安全漏洞掃描技術(shù)、入侵檢測技術(shù)等。而在系統(tǒng)發(fā)生安全事故之前對其進(jìn)行預(yù)防性檢查,及時(shí)發(fā)現(xiàn)問題并予以解決不失為一種很好的辦法,于是網(wǎng)絡(luò)安全漏洞掃描技術(shù)應(yīng)運(yùn)而生。
1. 掃描器基本工作原理
掃描器是一種自動檢測遠(yuǎn)程或本地主機(jī)安全脆弱點(diǎn)的程序,通過使用掃描器可以不留痕跡的發(fā)現(xiàn)遠(yuǎn)程服務(wù)器的各種TCP端口的分配及提供的服務(wù)和它們的軟件版本,這就能讓我們間接的或直觀的了解到遠(yuǎn)程主機(jī)所存在的安全問題。
掃描器采用模擬攻擊的形式對目標(biāo)可能存在的已知安全漏洞進(jìn)行逐項(xiàng)檢查。目標(biāo)可以是工作站、服務(wù)器、交換機(jī)、數(shù)據(jù)庫應(yīng)用等各種對象。然后根據(jù)掃描結(jié)果向系統(tǒng)管理員提供周密可靠的安全性分析報(bào)告,為提高網(wǎng)絡(luò)安全整體水平產(chǎn)生重要依據(jù)。在網(wǎng)絡(luò)安全體系的建設(shè)中,安全掃描工具花費(fèi)低、效果好、見效快、與網(wǎng)絡(luò)的運(yùn)行相對對立、安裝運(yùn)行簡單,可以大規(guī)模減少安全管理員的手工勞動,有利于保持全網(wǎng)安全政策的統(tǒng)一和穩(wěn)定。
掃描器并不是一個直接的攻擊網(wǎng)絡(luò)漏洞的程序,它僅僅能幫助我們發(fā)現(xiàn)目標(biāo)機(jī)的某些存在的弱點(diǎn)。一個好的掃描器能對它得到的數(shù)據(jù)進(jìn)行分析,幫助我們查找目標(biāo)主機(jī)的漏洞。但它不會提供進(jìn)入一個系統(tǒng)的詳細(xì)步驟。
掃描器應(yīng)該有三項(xiàng)功能:發(fā)現(xiàn)一個主機(jī)和網(wǎng)絡(luò)的能力;一旦發(fā)現(xiàn)一臺主機(jī),有發(fā)現(xiàn)什么服務(wù)正運(yùn)行在這臺主機(jī)上的能力;通過測試這些服務(wù),發(fā)現(xiàn)這些漏洞的能力。
掃描器對Internet安全很重要,因?yàn)樗芙沂疽粋€網(wǎng)絡(luò)的脆弱點(diǎn)。在任何一個現(xiàn)有的平臺上都有幾百個熟知的安全脆弱點(diǎn)。在大多數(shù)情況下,這些脆弱點(diǎn)都是唯一的,僅影響一個網(wǎng)絡(luò)服務(wù)。人工測試單臺主機(jī)的脆弱點(diǎn)是一項(xiàng)極其繁瑣的工作,而掃描程序能輕易的解決這些問題。掃描程序開發(fā)者利用可得到的常用攻擊方法并把它們集成到整個掃描中,這樣使用者就可以通過分析輸出的結(jié)果發(fā)現(xiàn)系統(tǒng)的漏洞。
2.端口掃描介紹
真正的掃描器是TCP端口掃描器,這種程序可以選通TCP/IP端口和服務(wù)(比如,Telnet或FTP),并記錄目標(biāo)的回答。通過這種方法,可以搜集到關(guān)于目標(biāo)主機(jī)的有用信息(比如,一個匿旬用戶是否可以登錄等等)。而其他所謂的掃描器僅僅是UNIX網(wǎng)絡(luò)應(yīng)用程序,這些程序一般用于觀察某一服務(wù)是否正在一臺遠(yuǎn)程機(jī)器上正常工作,它們不是真正的掃描器,但也可以用于收集目標(biāo)主機(jī)的信息(UNIX平臺上通用的rusers和host命令就是這類程序的很好的例子)。
2.1 TCP SYN 掃描
掃描程序發(fā)送的SYN數(shù)據(jù)包,好像準(zhǔn)備打開一個新的連接并等待反映一樣。一個SYN|ACK的返回信息表示端口處于偵聽狀態(tài)。一個RST 返回表示端口沒有處于偵聽狀態(tài)。如果收到一個SYN|ACK,掃描程序必須再發(fā)送一個RST 信號,來關(guān)閉這個連接過程。
優(yōu)點(diǎn):不會在目標(biāo)計(jì)算機(jī)上留下紀(jì)錄。
缺點(diǎn):掃描程序必須要有root權(quán)限才能建立自己的SYN數(shù)據(jù)包。
2.2 TCP FIN 掃描
關(guān)閉的端口會用適當(dāng)?shù)腞ST來回復(fù)FIN數(shù)據(jù)包,而打開的端口會忽略對FIN數(shù)據(jù)包的回復(fù)。
優(yōu)點(diǎn):FIN數(shù)據(jù)包可以不惹任何麻煩的通過。
缺點(diǎn):這種方法和系統(tǒng)的實(shí)現(xiàn)有一定的關(guān)系,有些系統(tǒng)不論是打開的或關(guān)閉的端口對FIN數(shù)據(jù)包都要給以回復(fù),這種情況下該方法就不實(shí)用了。
2.3 TCP connect()掃描
操作系統(tǒng)提供connect()系統(tǒng)調(diào)用,用來與每一個感興趣的目標(biāo)計(jì)算機(jī)的端口進(jìn)行連接。如果端口處于偵聽狀態(tài),那么connect()就能成功。否則,這個端口是不能用的,即沒有提供服務(wù)。
優(yōu)點(diǎn):系統(tǒng)中的任何用戶都有權(quán)利使用這個調(diào)用;如果對每個目標(biāo)端口以線性的方式掃描,將會花費(fèi)相當(dāng)長的時(shí)間,但如果同時(shí)打開多個套接字,就能加速掃描。
缺點(diǎn):很容易被發(fā)現(xiàn),目標(biāo)計(jì)算機(jī)的logs文件會顯示一連串連接和連接出錯的消息,并且能很快的將它關(guān)閉。
#p#副標(biāo)題#e#
3.掃描程序介紹
目前存在的掃描器產(chǎn)品主要可分為基于主機(jī)的和基于網(wǎng)絡(luò)的兩種,前者主要關(guān)注軟件所在主機(jī)上面的風(fēng)險(xiǎn)漏洞,而后者則是通過網(wǎng)絡(luò)遠(yuǎn)程探測其它主機(jī)的安全風(fēng)險(xiǎn)漏洞。
國外,基于主機(jī)的產(chǎn)品主要有:AXENT公司的ESM,ISS公司的System Scanner等,基于網(wǎng)絡(luò)的產(chǎn)品包括ISS公司的Internet Scanner、AXENT公司的NetRecon、NAI公司的CyberCops Scanner、Cisco的NetSonar等。目前國內(nèi)有中科院網(wǎng)威工作室開發(fā)的NetPower產(chǎn)品出現(xiàn),另外北方計(jì)算機(jī)公司(***)也有類似產(chǎn)品。 下面介紹一些可以在Internet上免費(fèi)獲得的掃描程序。
3.1 NSS(網(wǎng)絡(luò)安全掃描器)
(1) NSS由Perl語言編成,它最根本的價(jià)值在于速度,它運(yùn)行速度非常快,可以執(zhí)行下列常規(guī)檢查:
■Sendmail
■匿名FTP
■NFS出口
■TFTP
■Hosts.equiv
■Xhost
注:除非你擁有最高特權(quán),否則NSS不允許你執(zhí)行Hosts.equiv。
(2) 利用NSS,用戶可以增加更強(qiáng)大的功能,其中包括:
■AppleTalk掃描
■Novell掃描
■LAN管理員掃描
■可掃描子網(wǎng)
(3) NSS執(zhí)行的進(jìn)程包括:
■取得指定域的列表或報(bào)告,該域原本不存在這類列表
■用Ping命令確定指定主機(jī)是否是活性的
■掃描目標(biāo)主機(jī)的端口
■報(bào)告指定地址的漏洞
(4) 提示
在對NSS進(jìn)行解壓縮后,不能立即運(yùn)行NSS,需要對它進(jìn)行一些修改,必須設(shè)置一些環(huán)境變量,以適應(yīng)你的機(jī)器配置。主要變量包括:
$TmpDir_NSS使用的臨時(shí)目錄
$YPX-ypx應(yīng)用程序的目錄
$PING_可執(zhí)行的ping命令的目錄
$XWININFO_xwininfo的目錄
如果你隱藏了Perl include目錄(目錄中有Perl include文件),并且在PATH環(huán)境變量中沒有包含該目錄,需要加上這個目錄;同時(shí),用戶應(yīng)該注意NSS需要ftplib.pl庫函數(shù)。NSS具有并行能力,可以在許多工作站之間進(jìn)行分布式掃描。而且,它可以使進(jìn)程分支。在資源有限的機(jī)器上運(yùn)行NSS(或未經(jīng)允許運(yùn)行NSS)應(yīng)該避免這種情況,在代碼中有這方面的選項(xiàng)設(shè)置。
3.2 Strobe(超級優(yōu)化TCP端口檢測程序)
strobe是一個TCP端口掃描器,它可以記錄指定機(jī)器的所有開放端口。strobe運(yùn)行速度快(其作者聲稱在適中的時(shí)間內(nèi),便可掃描整個一個國家的機(jī)器)。
strobe的主要特點(diǎn)是,它能快速識別指定機(jī)器上正在運(yùn)行什么服務(wù)。strobe的主要不足是這類信息是很有限的,一次strobe攻擊充其量可以提供給"入侵者"一個粗略的指南,告訴什么服務(wù)可以被攻擊。但是,strobe用擴(kuò)展的行命令選項(xiàng)彌補(bǔ)了這個不足。比如,在用大量指定端口掃描主機(jī)時(shí),你可以禁止所有重復(fù)的端口描述(僅打印首次端口定義)。其他選項(xiàng)包括:
■定義起始和終止端口
■定義在多長時(shí)間內(nèi)接收不到端口或主機(jī)響應(yīng),便終止這次掃描。
■定義使用的socket號碼
■定義strobe要捕捉的目標(biāo)主機(jī)的文件
在獲得strobe的同時(shí),必然獲得手冊頁面,這對于Solaris 2.3是一個明顯的問題,為了防止發(fā)生問題,必須禁止使用getpeername()。在行命令中加入-g 標(biāo)志就可以實(shí)現(xiàn)這一目的。同時(shí),盡管strobe沒有對遠(yuǎn)程主機(jī)進(jìn)行廣泛測試,但它留下的痕跡與早期的ISS一樣明顯,被strobe掃描過的主機(jī)會知道這一切(這非常象在/var/adm/messages文件中執(zhí)行連接請求)。
3.3 SATAN(安全管理員的網(wǎng)絡(luò)分析工具)
SATAN是為UNIX設(shè)計(jì)的,它主要是用C和Perl語言編寫的(為了用戶界面的友好性,還用了一些HTML技術(shù))。它能在許多類UNIX平臺上運(yùn)行,有些根本不需要移植,而在其他平臺上也只是略作移植。
在Linux上運(yùn)行SATAN有一個特殊問題,應(yīng)用于原系統(tǒng)的某些規(guī)則在Linus平臺上會引起系統(tǒng)失效的致命缺陷;在tcp-scan模塊中實(shí)現(xiàn) select()調(diào)用也會產(chǎn)生問題;最后要說的是,如果用戶掃描一個完整子網(wǎng),則會引進(jìn)反向fping爆炸,也即套接字(socket)緩沖溢出。但是,有一個站點(diǎn)不但包含了用于Linux的、改進(jìn)的SATAN二進(jìn)制代碼,還包含了diff文件。SATAN用于掃描遠(yuǎn)程主機(jī)的許多已知的漏洞,其中包括但并不限于下列這些漏洞:
■FTPD脆弱性和可寫的FTP目錄
■NFS脆弱性
■NIS脆弱性
■RSH脆弱性
■Sendmail
■X服務(wù)器脆弱性
SATAN的安裝和其他應(yīng)用程序一樣,每個平臺上的SATAN目錄可能略有不同,但一般都是/satan-1.1.1。安裝的第一步(在閱讀了使用文檔說明后)是運(yùn)行Perl程序reconfig。這個程序搜索各種不同的組成成分,并定義目錄路徑。如果它不能找到或定義一個瀏覽器。則運(yùn)行失敗,那些把瀏覽器安裝在非標(biāo)準(zhǔn)目錄中(并且沒有在PATH中進(jìn)行設(shè)置)的用戶將不得不手工進(jìn)行設(shè)置。同樣,那些沒有用DNS(未在自己機(jī)器上運(yùn)行DNS)的用戶也必須在/satan-1.1.1/conf/satan.cf中進(jìn)行下列設(shè)置:$dont_use_nslookuo=1;在解決了全部路徑問題后,用戶可以在分布式系統(tǒng)上運(yùn)行安裝程序(IRIX或SunOS),我建議要非常仔細(xì)地觀察編譯,以找出錯誤。
SATAN比一般掃描器需要更多一些的資源,尤其是在內(nèi)存和處理器功能方面要求更高一些。如果你在運(yùn)行SATAN時(shí)速度很慢,可以嘗試幾種解決辦法。最直接的辦法就是擴(kuò)大內(nèi)存和提高處理器能力,但是,如果這種辦法不行,我建議用下面兩種方法:一是盡可能地刪除其他進(jìn)程;二是把你一次掃描主機(jī)的數(shù)量限制在100臺以下。最后說明的一點(diǎn)是,對于沒有強(qiáng)大的視頻支持或內(nèi)存資源有限的主機(jī),SATAN有一個行命令接口,這一點(diǎn)很重要。
3.4 Jakal
Jakal是一個秘密掃描器,也就是就,它可以掃描一個區(qū)域(在防火墻后面),而不留下任何痕跡。
秘密掃描器工作時(shí)會產(chǎn)生"半掃描"(half scans),它啟動(但從不完成)與目標(biāo)主機(jī)的SYN/ACK過程。從根本上講,秘密掃描器繞過了防火墻,并且避開了端口掃描探測器,識別出在防火墻后面運(yùn)行的是什么服務(wù)。(這里包括了像Courtney和GAbriel這樣的精制掃描探測器)。
3.5 IdentTCPscan
IdentTCPscan是一個更加專業(yè)化的掃描器,其中加入了識別指定TCP端口進(jìn)程的所有者的功能,也就是說,它能測定該進(jìn)程的UID。
3.6 CONNECT
CONNECT是一個bin/sh程序,它的用途是掃描TFTP服務(wù)子網(wǎng)。
3.7 FSPScan
FSPScan用于掃描FSP服務(wù)順。FSP代表文件服務(wù)協(xié)議,是非常類似于FTP的Internet協(xié)議。它提供匿名文件傳輸,并且據(jù)說具有網(wǎng)絡(luò)過載保護(hù)功能(比如,F(xiàn)SP從來不分叉)。FSP最知名的安全特性可能就是它記錄所有到來用戶的主機(jī)名,這被認(rèn)為優(yōu)于FTP,因?yàn)镕TP僅要求用戶的E- mail地址(而實(shí)際上根本沒有進(jìn)行記錄)。FSP相當(dāng)流行,現(xiàn)在為Windows 和OS/2開發(fā)了GUI客戶程序。
3.8 XSCAN
XSCAN掃描具有X服務(wù)器弱點(diǎn)的子網(wǎng)(或主機(jī))。乍一看,這似乎并不太重要,畢竟其他多數(shù)掃描器都能做同樣的工作。然而,XSCAN包括了一個增加的功能:如果它找到了一個脆弱的目標(biāo),它會立即加入記錄。
XSCAN的其他優(yōu)點(diǎn)還包括:可以一次掃描多臺主機(jī)。這些主機(jī)可以在行命令中作為變量鍵入(并且你可以通過混合匹配同時(shí)指定主機(jī)和子網(wǎng))。
4. 結(jié)束語
隨著Internet的應(yīng)用日漸普及,網(wǎng)絡(luò)攻擊的種類和方式也愈來愈多,掃描程序不太可能集成所有的遠(yuǎn)程攻擊。每發(fā)現(xiàn)一個新的漏洞,掃描程序就應(yīng)該加入檢查這個新漏洞的能力,這是一個永不停止的過程。因此掃描器最多提供一個快速觀察TCP/IP安全性的工具,通過系統(tǒng)管理員的正確使用,能夠避免一些入侵者的惡意攻擊,但并不能保證網(wǎng)絡(luò)的安全。