鄒 瑛,陳 聯(lián)
(四川司法警官職業(yè)學院 德陽618000)
在網(wǎng)絡取證中,網(wǎng)絡取證的數(shù)據(jù)可以來自多種設備和應用程序,可以分別從網(wǎng)絡協(xié)議的各個層捕獲,其實質(zhì)是網(wǎng)絡流,其存在形式依賴于網(wǎng)絡傳輸協(xié)議,采用不同的傳輸協(xié)議網(wǎng)絡流的格式也不相同。網(wǎng)絡取證的目標就是對網(wǎng)絡流進行正確地提取和分析,真實全面地將發(fā)生在網(wǎng)絡上的所有事件記錄下來,為事后的追查提供完整準確的資料,將證據(jù)提交給法庭。在計算機網(wǎng)絡犯罪手段不斷技術(shù)化、反取證能力日益增強的形勢下,僅依靠網(wǎng)絡安全技術(shù)將入侵者完全拒之門外非常困難。而利用snort2是可以用來填補昂貴的、探測任務繁重的網(wǎng)絡入侵檢測系統(tǒng)(network intrusion detection system,NIDS)留下的空缺,有效防止反取證躲避技術(shù)。
躲避或越過網(wǎng)絡入侵檢測系統(tǒng)的技術(shù)是指利用非法或合法手段逃脫IDS/IPS的檢測和記錄,以防止取證。舉例如下。
(1)利用字符串匹配的弱點:針對基本字符串匹配弱點的IDS躲避技術(shù)是最早被提出和實現(xiàn)的。一些基于特征碼的入侵檢測設備幾乎完全依賴于字符串匹配算法,而對于一個編寫非常差的特征碼,攻擊者能輕松地破壞對其的字符串匹配。雖然不是所有的入侵檢測系統(tǒng)都是純粹基于特征碼檢測的,不過絕大多數(shù)對字符串匹配算法有非常大的依賴。
(2)多變shell代碼:多變shell代碼技術(shù)由K2研發(fā)的,設計思想來源于病毒逃避(virus evasion)技術(shù)。使用這種技術(shù)重新構(gòu)造的shell代碼更為危險,入侵檢測設備非常難以檢測到。這種技術(shù)只用于緩沖區(qū)溢出攻擊,對付基于特征碼的檢測系統(tǒng)非常有效,而對于智能化的或基于協(xié)議分析的檢測系統(tǒng)的效果要差很多。
以上的兩個實例都可以進行應用層入侵檢測躲避。
分布式snort入侵監(jiān)測系統(tǒng)的主要組成部分包括中央分析服務器、IDS探針和協(xié)同代理。一般情況下,一個企業(yè)的網(wǎng)絡可以分為外部網(wǎng)絡、企業(yè)內(nèi)部網(wǎng)絡和DMZ區(qū)等。入侵監(jiān)測系統(tǒng)既可以部署在防火墻之外,也可以部署于防火墻之內(nèi)。部署于防火墻之外,可以獲得更多攻擊數(shù)據(jù),但是誤報警率也高。因此一般情況下,入侵檢測系統(tǒng)部署于防火墻之后是比較明智的。
(1)中央分析服務器
中央分析服務器是整個系統(tǒng)的心臟和靈魂。它一般由一個數(shù)據(jù)庫系統(tǒng)和一個Web服務器組成,為系統(tǒng)管理員提供交互式Web管理界面。在中央分析服務器上,管理人員可以進行遠程IDS探針管理、攻擊數(shù)據(jù)查詢、實時監(jiān)視網(wǎng)絡攻擊及深入分析,如攻擊方向的遷移、識別攻擊模式等。MySQL數(shù)據(jù)庫、Apache服務器、SnortCenter和ACID(analysis console for incident databases)是一個不錯的snort平臺系統(tǒng)組合。
SnortCenter是一個基于Web的snort探針和規(guī)則管理系統(tǒng),用于遠程修改snort探針的配置,起動、停止探針,編輯、分發(fā)snort特征碼規(guī)則。如果與cron和curl結(jié)合使用,SnortCenter還可以定時為每個探針進行規(guī)則升級,自動從snort官方站點獲得最新特征碼規(guī)則(http://www.snort.org/dl/signatures/snortrules-stable.tar.gz)。SnortCenter的下載地址為http://users.pandora.be/larc/download/。ACID是一個基于PHP的分析引擎,用于查詢、管理snort探針產(chǎn)生的數(shù)據(jù)庫。ACID的下載地址為http://www.cert.org/kb/acid/。
(2)IDS探針和協(xié)同代理
代理是向中央分析服務器報告攻擊信息的軟件,是分布式入侵檢測系統(tǒng)的一個重要部件。SnortCenter Agent和普通意義上的協(xié)同代理軟件有些不同,它只是一個SnortCenter進行探針管理的代理工具。通過SnortCenter Agent,SnortCenter能夠起動、關(guān)閉受保護主機上的snort探針;修改探針的配置和使用的特征碼規(guī)則。SnortCenter Agent是用Perl語言編寫的,可以在不同的平臺上使用。為了防止登錄過程中賬戶和密碼的泄漏,它使用SSL和SnortCenter之間進行通信。snort探針是真正進行入侵檢測的組件,其源代碼可以從http://www.snort.org獲得。
在分析服務器上,首先要建立記錄snort報警和日志數(shù)據(jù)庫及SnortCenter、ACID需要的數(shù)據(jù)庫。在臨時目錄中解壓縮snort的源代碼,進入contrib目錄,建立數(shù)據(jù)庫,并進行相關(guān)的配置。代碼如下:
#mysql-u root-p
create database snort;
connect snort
source create_mysql
grant CREATE,INSERT,SELECT,DELETE,UPDATE on snort.*to snort;
grant CREATE,INSERT,SELECT,DELETE,UPDATE on snort.*to snort@localhost;
grant CREATE,INSERT,SELECT,UPDATE on snort.*to acidviewer;
grant CREATE,INSERT,SELECT,UPDATE on snort.*to acidviewer@localhost;
connect mysql
set password for'snort'@'localhost'=password('yourpassword');
set password for'snort'@'%'=password('yourpassword');
flush privileges;
把最新版的SnortCenter源代碼解壓縮,將目錄里面的文件復制到Apache的DocumentRoot目錄(如/usr/local/apache/htdocs)。下載SnortCenter需要的adodb(http://php.weblogs.com/adodb/),安裝到SnortCenter所在的目錄,然后建立SnortCenter數(shù)據(jù)庫。代碼如下:
$tar zxvf snortcenter-v0.9.6.tar.gz
$cp snortcenter-v0.9.6/*/usr/local/apache/htdocs/
$tar zxvf adodb250.tgz
$cp-R./adodb/usr/local/apache/htdocs/
$echo"CREATE DATABASE snortcenter;"|mysql-u root-p
完成了基本的安裝之后,需要根據(jù)系統(tǒng)的情況手工編輯/usr/local/apache/htdocs/config.php文件,從而結(jié)束SnortCenter的配置。一般情況下需要修改的參數(shù)見表1。
完成上面的配置后,啟動Apache服務器,在瀏覽器的地址欄輸入分析中心服務器的地址,系統(tǒng)缺省賬戶是admin,密碼為change。登錄進入系統(tǒng)以后,點擊admin→Create DB Tables選單,即完成SnortCenter的安裝,如圖1所示。
安裝ACID需要PHP支持GD,并對PHPLot(www.phplot.com)、ADODB進行支持。新版本的ACID(0.9.6b22以后版本)還需要JpGraph(http://www.aditus.nu/jpgraph/)的支持。ACID及相關(guān)軟件安裝到指定位置之后,編輯配置文件acid_conf.php完成其配置,參數(shù)設置如表2所示。
表1 /usr/local/apache/htdocs/config.php文件需要修改的參數(shù)
圖1 創(chuàng)建SnortCenter數(shù)據(jù)庫
表2 ACID參數(shù)設置
PHPLot所在目錄另外,ACID本身缺乏必要的訪問控制機制,需要設置Apache對訪問ACID的用戶提供驗證。
同時,需要安裝snort探針和SnortCenter Agent,分別進入需要保護主機,安裝snort和SnortCenter Agent。SnortCenter Agent需要SSL的支持,所需模塊可以從http://www.cpan.org得到。安裝代碼如下:
$./configure-with-mysql
$make
$make install
$tar-zxvf Net_SSLeay.pm.1.21.tar.gz
$cd Net_SSLeay.pm.1.21
$perl Makefile.PL
$make install
$mkdir/opt/snortagent/
$cp snortcenter-agent-v0.1.6.tar.gz/opt/snortagent
$cd/opt/snortagent
$tar-zxvf snortcenter-agent-v0.1.6.tar.gz
$cd sensor
$./setup.sh
其中,我們需要注意的問題是,系統(tǒng)涉及到網(wǎng)絡中的很多主機,各個snort探針需要通過網(wǎng)絡時間協(xié)議(network time protocol)實現(xiàn)時間的精確同步。
在實際的網(wǎng)絡取證中,犯罪分子通過分析,利用取證軟件和設備漏洞等反取證技術(shù),繞開取證環(huán)節(jié)直接攻擊計算機,而snort通過協(xié)議分析,檢測網(wǎng)絡的原始傳輸數(shù)據(jù),進行實時通信分析和信息包記錄、檢查包有效載荷、分析協(xié)議和內(nèi)容查詢匹配、探測緩沖溢出、秘密端口掃描、CGI攻擊、SMB探測、操作系統(tǒng)侵入嘗試、分析捕獲的報文、系統(tǒng)日志、指定文件等,通過匹配入侵行為特征或者從網(wǎng)絡活動的角度檢測異常行為,對攻擊進行實時報警。
Snort是基于特征檢測的IDS,使用規(guī)則的定義來檢查網(wǎng)絡中有問題的數(shù)據(jù)包,針對每一種入侵行為提煉出它的特征值并按照規(guī)范寫成檢驗規(guī)則,從而形成一個規(guī)則數(shù)據(jù)庫。通過對協(xié)議的分析、數(shù)據(jù)包內(nèi)容的搜索和匹配,snort將捕獲的報文按照規(guī)則庫逐一進行匹配,若匹配成功,則認為該入侵行為成立。snort的檢測能力能對付絕大多數(shù)基于單包的網(wǎng)絡攻擊。從報警信息,我們可以了解到報警的類型,它由一個惟一的報警類型編號(SID)表示、報警的創(chuàng)建時間、報警的源地址,即報警的源IP和端口、報警的目的地址,即報警的目的IP和端口。
通過對這些報警信息的分析,可以提取出有用的取證信息。
網(wǎng)絡取證是一個迅速發(fā)展的研究領(lǐng)域,是一門有待標準化和探討、不斷發(fā)展的學科,特別在反取證技術(shù)日益提高的情況下,如何利用有效的工具防治反取證躲避技術(shù)對計算機取證工作帶來的困擾,這在網(wǎng)絡信息安全和犯罪調(diào)查方面有著重要的應用前景。
1 王一淼.基于入侵檢測系統(tǒng)的主動取證方法.計算機應用研究,2007(5)
2 安全響應團隊的好幫手:網(wǎng)絡取證工具,http://netsecurity.51cto.com
3 Ponec M,Herv G P.Highly efficient techniques for network forensics.In:Proceedings of the 14th ACM conference on Computer and communications security,Alexandria,Virginia,USA,2007
4 使用Snort探測輕型侵入HackBase.com