1. 網路安全漏洞掃描器的應用
網路安全掃描器簡介
迅速發展的Internet給人們的生活、工作帶來了巨大的方便,但同時,也帶來了一些不容忽視的問題,網路信息的安全保密問題就是其中之一。
網路的開放性以及黑客的攻擊是造成網路不安全的主要原因。科學家在設計Internet之初就缺乏對安全性的總體構想和設計,我們所用的TCP/IP 協議是建立在可信的環境之下,首先考慮的是網路互連,它是缺乏對安全方面的考慮的。而且TCP/IP協議是完全公開的,遠程訪問使許多攻擊者無須到現場就能夠得手,連接的主機基於互相信任的原則等等這一些性質使網路更加不安全。
先進的技術是實現網路信息安全的有力武器,這些技術包括:密碼技術、身份驗證技術、訪問控制技術、安全內核技術、網路反病毒技術、信息泄漏防治技術、防火牆技術、網路安全漏洞掃描技術、入侵檢測技術等。而在系統發生安全事故之前對其進行預防性檢查,及時發現問題並予以解決不失為一種很好的辦法,於是網路安全漏洞掃描技術應運而生。
1. 掃描器基本工作原理
掃描器是一種自動檢測遠程或本地主機安全脆弱點的程序,通過使用掃描器可以不留痕跡的發現遠程伺服器的各種TCP埠的分配及提供的服務和它們的軟體版本,這就能讓我們間接的或直觀的了解到遠程主機所存在的安全問題。
掃描器採用模擬攻擊的形式對目標可能存在的已知安全漏洞進行逐項檢查。目標可以是工作站、伺服器、交換機、資料庫應用等各種對象。然後根據掃描結果向系統管理員提供周密可靠的安全性分析報告,為提高網路安全整體水平產生重要依據。在網路安全體系的建設中,安全掃描工具花費低、效果好、見效快、與網路的運行相對對立、安裝運行簡單,可以大規模減少安全管理員的手工勞動,有利於保持全網安全政策的統一和穩定。
掃描器並不是一個直接的攻擊網路漏洞的程序,它僅僅能幫助我們發現目標機的某些存在的弱點。一個好的掃描器能對它得到的數據進行分析,幫助我們查找目標主機的漏洞。但它不會提供進入一個系統的詳細步驟。
掃描器應該有三項功能:發現一個主機和網路的能力;一旦發現一台主機,有發現什麼服務正運行在這台主機上的能力;通過測試這些服務,發現這些漏洞的能力。
掃描器對Internet安全很重要,因為它能揭示一個網路的脆弱點。在任何一個現有的平台上都有幾百個熟知的安全脆弱點。在大多數情況下,這些脆弱點都是唯一的,僅影響一個網路服務。人工測試單台主機的脆弱點是一項極其繁瑣的工作,而掃描程序能輕易的解決這些問題。掃描程序開發者利用可得到的常用攻擊方法並把它們集成到整個掃描中,這樣使用者就可以通過分析輸出的結果發現系統的漏洞。
2.埠掃描介紹
真正的掃描器是TCP埠掃描器,這種程序可以選通TCP/IP埠和服務(比如,Telnet或FTP),並記錄目標的回答。通過這種方法,可以搜集到關於目標主機的有用信息(比如,一個匿旬用戶是否可以登錄等等)。而其他所謂的掃描器僅僅是UNIX網路應用程序,這些程序一般用於觀察某一服務是否正在一台遠程機器上正常工作,它們不是真正的掃描器,但也可以用於收集目標主機的信息(UNIX平台上通用的rusers和host命令就是這類程序的很好的例子)。
2.1 TCP SYN 掃描
掃描程序發送的SYN數據包,好像准備打開一個新的連接並等待反映一樣。一個SYN|ACK的返回信息表示埠處於偵聽狀態。一個RST 返回表示埠沒有處於偵聽狀態。如果收到一個SYN|ACK,掃描程序必須再發送一個RST 信號,來關閉這個連接過程。
優點:不會在目標計算機上留下紀錄。
缺點:掃描程序必須要有root許可權才能建立自己的SYN數據包。
2.2 TCP FIN 掃描
關閉的埠會用適當的RST來回復FIN數據包,而打開的埠會忽略對FIN數據包的回復。
優點:FIN數據包可以不惹任何麻煩的通過。
缺點:這種方法和系統的實現有一定的關系,有些系統不論是打開的或關閉的埠對FIN數據包都要給以回復,這種情況下該方法就不實用了。
2.3 TCP connect()掃描
操作系統提供connect()系統調用,用來與每一個感興趣的目標計算機的埠進行連接。如果埠處於偵聽狀態,那麼connect()就能成功。否則,這個埠是不能用的,即沒有提供服務。
優點:系統中的任何用戶都有權利使用這個調用;如果對每個目標埠以線性的方式掃描,將會花費相當長的時間,但如果同時打開多個套接字,就能加速掃描。
缺點:很容易被發現,目標計算機的logs文件會顯示一連串連接和連接出錯的消息,並且能很快的將它關閉。
3.掃描程序介紹
目前存在的掃描器產品主要可分為基於主機的和基於網路的兩種,前者主要關注軟體所在主機上面的風險漏洞,而後者則是通過網路遠程探測其它主機的安全風險漏洞。
國外,基於主機的產品主要有:AXENT公司的ESM,ISS公司的System Scanner等,基於網路的產品包括ISS公司的Internet Scanner、AXENT公司的NetRecon、NAI公司的CyberCops Scanner、Cisco的NetSonar等。目前國內有中科院網威工作室開發的NetPower產品出現,另外北方計算機公司(***)也有類似產品。 下面介紹一些可以在Internet上免費獲得的掃描程序。
3.1 NSS(網路安全掃描器)
(1) NSS由Perl語言編成,它最根本的價值在於速度,它運行速度非常快,可以執行下列常規檢查:
■Sendmail
■匿名FTP
■NFS出口
■TFTP
■Hosts.equiv
■Xhost
註:除非你擁有最高特權,否則NSS不允許你執行Hosts.equiv。
(2) 利用NSS,用戶可以增加更強大的功能,其中包括:
■AppleTalk掃描
■Novell掃描
■LAN管理員掃描
■可掃描子網
(3) NSS執行的進程包括:
■取得指定域的列表或報告,該域原本不存在這類列表
■用Ping命令確定指定主機是否是活性的
■掃描目標主機的埠
■報告指定地址的漏洞
(4) 提示
在對NSS進行解壓縮後,不能立即運行NSS,需要對它進行一些修改,必須設置一些環境變數,以適應你的機器配置。主要變數包括:
$TmpDir_NSS使用的臨時目錄
$YPX-ypx應用程序的目錄
$PING_可執行的ping命令的目錄
$XWININFO_xwininfo的目錄
如果你隱藏了Perl include目錄(目錄中有Perl include文件),並且在PATH環境變數中沒有包含該目錄,需要加上這個目錄;同時,用戶應該注意NSS需要ftplib.pl庫函數。NSS具有並行能力,可以在許多工作站之間進行分布式掃描。而且,它可以使進程分支。在資源有限的機器上運行NSS(或未經允許運行NSS)應該避免這種情況,在代碼中有這方面的選項設置。
3.2 Strobe(超級優化TCP埠檢測程序)
strobe是一個TCP埠掃描器,它可以記錄指定機器的所有開放埠。strobe運行速度快(其作者聲稱在適中的時間內,便可掃描整個一個國家的機器)。
strobe的主要特點是,它能快速識別指定機器上正在運行什麼服務。strobe的主要不足是這類信息是很有限的,一次strobe攻擊充其量可以提供給"入侵者"一個粗略的指南,告訴什麼服務可以被攻擊。但是,strobe用擴展的行命令選項彌補了這個不足。比如,在用大量指定埠掃描主機時,你可以禁止所有重復的埠描述(僅列印首次埠定義)。其他選項包括:
■定義起始和終止埠
■定義在多長時間內接收不到埠或主機響應,便終止這次掃描。
■定義使用的socket號碼
■定義strobe要捕捉的目標主機的文件
在獲得strobe的同時,必然獲得手冊頁面,這對於Solaris 2.3是一個明顯的問題,為了防止發生問題,必須禁止使用getpeername()。在行命令中加入-g 標志就可以實現這一目的。同時,盡管strobe沒有對遠程主機進行廣泛測試,但它留下的痕跡與早期的ISS一樣明顯,被strobe掃描過的主機會知道這一切(這非常象在/var/adm/messages文件中執行連接請求)。
3.3 SATAN(安全管理員的網路分析工具)
SATAN是為UNIX設計的,它主要是用C和Perl語言編寫的(為了用戶界面的友好性,還用了一些HTML技術)。它能在許多類UNIX平台上運行,有些根本不需要移植,而在其他平台上也只是略作移植。
在Linux上運行SATAN有一個特殊問題,應用於原系統的某些規則在Linus平台上會引起系統失效的致命缺陷;在tcp-scan模塊中實現 select()調用也會產生問題;最後要說的是,如果用戶掃描一個完整子網,則會引進反向fping爆炸,也即套接字(socket)緩沖溢出。但是,有一個站點不但包含了用於Linux的、改進的SATAN二進制代碼,還包含了diff文件。SATAN用於掃描遠程主機的許多已知的漏洞,其中包括但並不限於下列這些漏洞:
■FTPD脆弱性和可寫的FTP目錄
■NFS脆弱性
■NIS脆弱性
■RSH脆弱性
■Sendmail
■X伺服器脆弱性
SATAN的安裝和其他應用程序一樣,每個平台上的SATAN目錄可能略有不同,但一般都是/satan-1.1.1。安裝的第一步(在閱讀了使用文檔說明後)是運行Perl程序reconfig。這個程序搜索各種不同的組成成分,並定義目錄路徑。如果它不能找到或定義一個瀏覽器。則運行失敗,那些把瀏覽器安裝在非標准目錄中(並且沒有在PATH中進行設置)的用戶將不得不手工進行設置。同樣,那些沒有用DNS(未在自己機器上運行DNS)的用戶也必須在/satan-1.1.1/conf/satan.cf中進行下列設置:$dont_use_nslookuo=1;在解決了全部路徑問題後,用戶可以在分布式系統上運行安裝程序(IRIX或SunOS),我建議要非常仔細地觀察編譯,以找出錯誤。
SATAN比一般掃描器需要更多一些的資源,尤其是在內存和處理器功能方面要求更高一些。如果你在運行SATAN時速度很慢,可以嘗試幾種解決辦法。最直接的辦法就是擴大內存和提高處理器能力,但是,如果這種辦法不行,我建議用下面兩種方法:一是盡可能地刪除其他進程;二是把你一次掃描主機的數量限制在100台以下。最後說明的一點是,對於沒有強大的視頻支持或內存資源有限的主機,SATAN有一個行命令介面,這一點很重要。
3.4 Jakal
Jakal是一個秘密掃描器,也就是就,它可以掃描一個區域(在防火牆後面),而不留下任何痕跡。
秘密掃描器工作時會產生"半掃描"(half scans),它啟動(但從不完成)與目標主機的SYN/ACK過程。從根本上講,秘密掃描器繞過了防火牆,並且避開了埠掃描探測器,識別出在防火牆後面運行的是什麼服務。(這里包括了像Courtney和GAbriel這樣的精製掃描探測器)。
3.5 IdentTCPscan
IdentTCPscan是一個更加專業化的掃描器,其中加入了識別指定TCP埠進程的所有者的功能,也就是說,它能測定該進程的UID。
3.6 CONNECT
CONNECT是一個bin/sh程序,它的用途是掃描TFTP服務子網。
3.7 FSPScan
FSPScan用於掃描FSP服務順。FSP代表文件服務協議,是非常類似於FTP的Internet協議。它提供匿名文件傳輸,並且據說具有網路過載保護功能(比如,FSP從來不分叉)。FSP最知名的安全特性可能就是它記錄所有到來用戶的主機名,這被認為優於FTP,因為FTP僅要求用戶的E- mail地址(而實際上根本沒有進行記錄)。FSP相當流行,現在為Windows 和OS/2開發了GUI客戶程序。
3.8 XSCAN
XSCAN掃描具有X伺服器弱點的子網(或主機)。乍一看,這似乎並不太重要,畢竟其他多數掃描器都能做同樣的工作。然而,XSCAN包括了一個增加的功能:如果它找到了一個脆弱的目標,它會立即加入記錄。
XSCAN的其他優點還包括:可以一次掃描多台主機。這些主機可以在行命令中作為變數鍵入(並且你可以通過混合匹配同時指定主機和子網)。
4. 結束語
隨著Internet的應用日漸普及,網路攻擊的種類和方式也愈來愈多,掃描程序不太可能集成所有的遠程攻擊。每發現一個新的漏洞,掃描程序就應該加入檢查這個新漏洞的能力,這是一個永不停止的過程。因此掃描器最多提供一個快速觀察TCP/IP安全性的工具,通過系統管理員的正確使用,能夠避免一些入侵者的惡意攻擊,但並不能保證網路的安全。
2. 什麼是漏洞掃描
漏洞掃描是指基於漏洞資料庫,通過掃描等手段對指定的遠程或者本地計算機系統的安全脆弱性進行檢測,發現可利用漏洞的一種安全檢測(滲透攻擊)行為。
漏洞掃描器包括網路漏掃、主機漏掃、資料庫漏掃等不同種類。
3. 用網路掃描工具的目的是什麼(或者說它可以干什麼)
網路掃描工具就像它的名字一樣。就像槍一樣,拿在壞人手裡就是暴力工具,那在好人手裡就是保護的工具一樣。大多數情況下,用網路掃描工具來掃描網路,以便發現網路漏洞,及時設防。但是黑客也拿掃描工具來掃描網路,是為了發現漏洞,便於攻擊。
4. 怎麼運用漏洞
漏洞掃描就是對計算機系統或者其它網路設備進行安全相關的檢測,以找出安全隱患和可被黑客利用的漏洞。顯然,漏洞掃描軟體是把雙刃劍,黑客利用它入侵系統,而系統管理員掌握它以後又可以有效的防範黑客入侵。因此,漏洞掃描是保證系統和網路安全必不可少的手段,必須仔細研究利用。 漏洞掃描通常採用兩種策略,第一種是被動式策略,第二種是主動式策略。所謂被動式策略就是基於主機之上,對系統中不合適的設置,脆弱的口令以及其他同安全規則抵觸的對象進行檢查;而主動式策略是基於網路的,它通過執行一些腳本文件模擬對系統進行攻擊的行為並記錄系統的反應,從而發現其中的漏洞。利用被動式策略掃描稱為系統安全掃描,利用主動式策略掃描稱為網路安全掃描。 快速安裝Nessus Nessus是一個功能強大而又易於使用的遠程安全掃描器。安全掃描器的功能是對指定網路進行安全檢查,找出該網路是否存在有導致對手攻擊的安全漏洞。該系統被設計為client/sever模式,伺服器端負責進行安全檢查,客戶端用來配置管理伺服器端。在服務端還採用了plug-in的體系,允許用戶加入執行特定功能的插件,這插件可以進行更快速和更復雜的安全檢查。在Nessus中還採用了一個共享的信息介面,稱之知識庫,其中保存了前面進行檢查的結果。檢查的結果可以HTML、純文本、LaTeX(一種文本文件格式)等幾種格式保存。 Nessus的優點在於: 1. 其採用了基於多種安全漏洞的掃描,避免了掃描不完整的情況。 2. 它是免費的,比起商業的安全掃描工具如ISS具有價格優勢。 (1)安裝和啟動Nessus伺服器端 以Nessus-4.2.0-es5.i386.rpmNessus使用為例,使用如下的命令對其進行安裝即可: [root@localhost tmp]# rpm -ivh Nessus-4.2.0-es5.i386.rpm 安裝成功後,還需要添加用戶來對其進行操作,步驟如下所示: [root@localhost tmp]# /opt/nessus//sbin/nessus-adser //添加用戶 Login : root //設置密碼 Login password : Login password (again) : 啟動nessus非常簡單,使用如下命令即可: #/sbin/service nessusd start (2)安裝Nessus客戶端 nessus的客戶端有兩個版本,JAVA版本及C版本,JAVA版本的可以在多個平台中運行,C版本的支持Windows,有了這兩個客戶端的版本就可以在區域網的任何的一台機器上進行安全檢查了。為了使用的簡單起見,我們選擇了一款Windows系統下的Nessus 4客戶端版本進行安裝和使用,也就是使用Windows客戶端來控制運行於Linux下的Nessus伺服器端來對區域網裡面的機器進行漏洞掃描,這也是目前Nessus使用的非常流行的一種方式。具體的安裝如同Windows下任何一款應用軟體的安裝方式相同,非常簡單,這里不再贅述。 3、五步完成Nessus掃描 下面來看看使用nessus進行掃描的步驟以及效果,一般來說,使用Nessus進行掃描需要有如下5個步驟: (1)設置伺服器連接:如圖1所示,首先需要設置Nessus客戶端來連接Nessus伺服器,在圖1中,配置好相應的主機名和埠,以及登陸所需要使用的用戶名和密碼。 (2)設置IP范圍:如圖2所示,設置為IP Range。當然,這里還有其他的選項可提供選擇,包括圖中所示的Single Host、Subnet等,可以根據實際情況來選擇。 (3)點擊scan now,開始對設定范圍進行掃描:如圖5所示。 (4)掃描的整體效果:如圖4所示,掃描給出了對172.31.12.188這台主機(Linux操作系統,RHEL 5.0版本)的掃描結果,可以很清晰看出操作系統的版本以及開放的埠,同時,也能夠將開放的埠詳細信息列出來。 (5)查看具體的漏洞信息:如圖5所示,如果想查看具體的漏洞信息報告以及漏洞等級等詳細信息時,可以點開圖中所示的對應開放埠信息,並針對具體信息採取相應的措施來對該漏洞進行修補等操作。
5. 漏洞檢測的幾種方法
漏洞掃描有以下四種檢測技術:
1.基於應用的檢測技術。它採用被動的、非破壞性的辦法檢查應用軟體包的設置,發現安全漏洞。
2.基於主機的檢測技術。它採用被動的、非破壞性的辦法對系統進行檢測。通常,它涉及到系統的內核、文件的屬性、操作系統的補丁等。這種技術還包括口令解密、把一些簡單的口令剔除。因此,這種技術可以非常准確地定位系統的問題,發現系統的漏洞。它的缺點是與平台相關,升級復雜。
3.基於目標的漏洞檢測技術。它採用被動的、非破壞性的辦法檢查系統屬性和文件屬性,如資料庫、注冊號等。通過消息文摘演算法,對文件的加密數進行檢驗。這種技術的實現是運行在一個閉環上,不斷地處理文件、系統目標、系統目標屬性,然後產生檢驗數,把這些檢驗數同原來的檢驗數相比較。一旦發現改變就通知管理員。
4.基於網路的檢測技術。它採用積極的、非破壞性的辦法來檢驗系統是否有可能被攻擊崩潰。它利用了一系列的腳本模擬對系統進行攻擊的行為,然後對結果進行分析。它還針對已知的網路漏洞進行檢驗。網路檢測技術常被用來進行穿透實驗和安全審記。這種技術可以發現一系列平台的漏洞,也容易安裝。但是,它可能會影響網路的性能。
網路漏洞掃描
在上述四種方式當中,網路漏洞掃描最為適合我們的Web信息系統的風險評估工作,其掃描原理和工作原理為:通過遠程檢測目標主機TCP/IP不同埠的服務,記錄目標的回答。通過這種方法,可以搜集到很多目標主機的各種信息(例如:是否能用匿名登錄,是否有可寫的FTP目錄,是否能用Telnet,httpd是否是用root在運行)。
在獲得目標主機TCP/IP埠和其對應的網路訪問服務的相關信息後,與網路漏洞掃描系統提供的漏洞庫進行匹配,如果滿足匹配條件,則視為漏洞存在。此外,通過模擬黑客的進攻手法,對目標主機系統進行攻擊性的安全漏洞掃描,如測試弱勢口令等,也是掃描模塊的實現方法之一。如果模擬攻擊成功,則視為漏洞存在。
在匹配原理上,網路漏洞掃描器採用的是基於規則的匹配技術,即根據安全專家對網路系統安全漏洞、黑客攻擊案例的分析和系統管理員關於網路系統安全配置的實際經驗,形成一套標準的系統漏洞庫,然後再在此基礎之上構成相應的匹配規則,由程序自動進行系統漏洞掃描的分析工作。
所謂基於規則是基於一套由專家經驗事先定義的規則的匹配系統。例如,在對TCP80埠的掃描中,如果發現/cgi-bin/phf/cgi-bin/Count.cgi,根據專家經驗以及CGI程序的共享性和標准化,可以推知該WWW服務存在兩個CGI漏洞。同時應當說明的是,基於規則的匹配系統有其局限性,因為作為這類系統的基礎的推理規則一般都是根據已知的安全漏洞進行安排和策劃的,而對網路系統的很多危險的威脅是來自未知的安全漏洞,這一點和PC殺毒很相似。
這種漏洞掃描器是基於瀏覽器/伺服器(B/S)結構。它的工作原理是:當用戶通過控制平台發出了掃描命令之後,控制平台即向掃描模塊發出相應的掃描請求,掃描模塊在接到請求之後立即啟動相應的子功能模塊,對被掃描主機進行掃描。通過分析被掃描主機返回的信息進行判斷,掃描模塊將掃描結果返回給控制平台,再由控制平台最終呈現給用戶。
另一種結構的掃描器是採用插件程序結構。可以針對某一具體漏洞,編寫對應的外部測試腳本。通過調用服務檢測插件,檢測目標主機TCP/IP不同埠的服務,並將結果保存在信息庫中,然後調用相應的插件程序,向遠程主機發送構造好的數據,檢測結果同樣保存於信息庫,以給其他的腳本運行提供所需的信息,這樣可提高檢測效率。如,在針對某FTP服務的攻擊中,可以首先查看服務檢測插件的返回結果,只有在確認目標主機伺服器開啟FTP服務時,對應的針對某FTP服務的攻擊腳本才能被執行。採用這種插件結構的掃描器,可以讓任何人構造自己的攻擊測試腳本,而不用去了解太多掃描器的原理。這種掃描器也可以用做模擬黑客攻擊的平台。採用這種結構的掃描器具有很強的生命力,如著名的Nessus就是採用這種結構。這種網路漏洞掃描器的結構如圖2所示,它是基於客戶端/伺服器(C/S)結構,其中客戶端主要設置伺服器端的掃描參數及收集掃描信息。具體掃描工作由伺服器來完成。
6. 簡述網路安全掃描的內容
一次完整的網路安全掃描分為三個階段:
第一階段:發現目標主機或網路。
第二階段:發現目標後進一步搜集目標信息,包括操作系統類型、運行的服務以及服務軟體的
版本等。如果目標是一個網路,還可以進一步發現該網路的拓撲結構、路由設備以及各主機的信息。
第三階段:根據搜集到的信息判斷或者進一步測試系統是否存在安全漏洞。
網路安全掃描技術包括有PING掃射(Ping sweeP)、操作系統探測(Operating system identification)、如何探測訪問控制規則(firewalking)、埠掃描(Port scan)以及漏洞掃描
(vulnerability scan)等。這些技術在網路安全掃描的三個階段中各有體現。
網路安全掃描技術的兩大核心技術就是埠掃描技術與漏洞掃描技術,這兩種技術廣泛運用於
當前較成熟的網路掃描器中,如著名的Nmap和Nessus就是利用了這兩種技術。
網路安全掃描技術是新興的技術,它與防火牆、入侵檢測等技術相比,從另一個角度來解決網
絡安全上的問題。隨著網路的發展和內核的進一步修改,新的埠掃描技術及對入侵性的埠掃描的新防禦技術還會誕生,而到目前為止還沒有一種完全成熟、高效的埠掃描防禦技術;同時,漏洞掃描面向的漏洞包羅萬象,而且漏洞的數目也在繼續的增加。就目前的漏洞掃描技術而言,自動化的漏洞掃描無法得以完全實現,而且新的難題也將不斷涌現,因此網路安全掃描技術仍有待更進
一步的研究和完善。