0.概述
Xplico功能不僅是一個(gè)網(wǎng)絡(luò)協(xié)議分析工具,還是一個(gè)開源的網(wǎng)絡(luò)取證分析工具(NFAT)。網(wǎng)絡(luò)取證分析工具是一個(gè)科學(xué)的捕捉,記錄和檢測入侵并進(jìn)行調(diào)查的網(wǎng)絡(luò)流量分析處理系統(tǒng)。Xplico主要作用是從捕獲網(wǎng)絡(luò)應(yīng)用層數(shù)據(jù)并顯示出來,這指的是通過捕獲Internet網(wǎng)絡(luò)流量來提取各種網(wǎng)絡(luò)應(yīng)用中所包含的數(shù)據(jù),并從中分析出各種不同的網(wǎng)絡(luò)應(yīng)用。例如Xplico可以實(shí)時(shí)解析通過網(wǎng)關(guān)的流量,也可以pcap文件中解析出IP流量數(shù)據(jù),并解析每個(gè)郵箱(包括POP、IMAP和SMTP協(xié)議),解析HTTP內(nèi)容,以及VOIP應(yīng)用等。
注意:在后面設(shè)置中Xplico Web界面中的Menu→Dissectors能看到它所支持的應(yīng)用層協(xié)議。
1.系統(tǒng)架構(gòu)
XPlico系統(tǒng)由4個(gè)部分構(gòu)成,分別是:
解碼控制器
IP/網(wǎng)絡(luò)解碼器(Xplico)
程序集來處理解碼數(shù)據(jù)(ManiPulators)
可視化系統(tǒng)(用來查看結(jié)果)
解碼器Xplico是整個(gè)系統(tǒng)的核心組件,它的特點(diǎn)是高度模塊化,可擴(kuò)展性和可配置性。它的主要工作過程是通過數(shù)據(jù)抓取模塊(cap_dissector)抓取網(wǎng)絡(luò)中的數(shù)據(jù)包,然后將數(shù)據(jù)包輸入到各個(gè)解析組件(Dissectors)中,得出的解析結(jié)果通過分發(fā)組件(Dispatcher)存儲(chǔ)到數(shù)據(jù)庫中,最后再顯示出來。其過程如圖1所示。
圖1 Xplico原理圖
從圖1可以看出,Xplico對協(xié)議的分析過程采取自頂向下的流程,首先Xplico捕獲到網(wǎng)絡(luò)數(shù)據(jù)包,然后根據(jù)包中的不同字段,區(qū)分出不同的協(xié)議,分成TCP、UDP等協(xié)議進(jìn)行分析,其中對TCP協(xié)議和UDP協(xié)議再根據(jù)不同的端口號和應(yīng)用層協(xié)議的特征進(jìn)一步細(xì)分,使用不同的解析器對報(bào)文進(jìn)行分析和處理,最后得出結(jié)論并保存結(jié)果。
2. Xplico的數(shù)據(jù)獲取方法
在Xplico底層使用Libpcap來抓取數(shù)據(jù)包,它是一個(gè)專門用來捕獲網(wǎng)絡(luò)數(shù)據(jù)的編程接口。它在很多網(wǎng)絡(luò)安全領(lǐng)域得到了廣泛的應(yīng)用,很多著名的網(wǎng)絡(luò)安全系統(tǒng)都是基于LibPcap而開發(fā)的,如著名的網(wǎng)絡(luò)數(shù)據(jù)包捕獲和分析工具Tcpdump,網(wǎng)絡(luò)入侵檢測系統(tǒng)snort也是使用Libpcap來實(shí)現(xiàn)的。Libpcap幾乎成了網(wǎng)絡(luò)數(shù)據(jù)包捕獲的標(biāo)準(zhǔn)接口。Libpcap中使用了BPF(BSD Packet Filter)過濾機(jī)制,這部分是基于內(nèi)核的過濾模塊,它使Libpcap具有捕獲特定數(shù)據(jù)包的功能,可以過濾掉網(wǎng)絡(luò)上不需要的數(shù)據(jù)包,而只捕獲用戶感興趣的數(shù)據(jù)包。使用Libpcap可以把從網(wǎng)絡(luò)上捕獲到的數(shù)據(jù)包存儲(chǔ)到一個(gè)文件中,還可以把數(shù)據(jù)包信息從文件中讀出,讀出的結(jié)果與從網(wǎng)絡(luò)上捕獲數(shù)據(jù)包的結(jié)果是一樣的。,
3.Xplico部署
Xplico目前最新版本為Xplico version 1.1.2(本文實(shí)驗(yàn)采用版本為1.1.0),其自身的運(yùn)行需要其他一些軟件的支撐例如Apache、Sqlite、tcpdump、tshark等。在安裝部署前,首先要準(zhǔn)備好,這里以選用Ubuntu 系統(tǒng)。
環(huán)境:基礎(chǔ)平臺(tái)OS采用Ubuntu Linux 13.10,安裝方法如下:
$sudo apt-get update
$sudo apt-get install xplico
注意:需要修改apache端口監(jiān)聽文件/etc/apache2/ports.conf,添加以下內(nèi)容
NameVirtualHost *:9876
Listen 9876
此外還有一種方法可以使用集成工具箱DEFT 8.2 Live,用此光盤啟動(dòng)系統(tǒng)后,進(jìn)入控制臺(tái)首先啟動(dòng)apache服務(wù)器,然后啟動(dòng)xplico服務(wù)(順序反了不能成功)最后啟動(dòng)Xplico的Web界面。
4.應(yīng)用Xplico
啟動(dòng)Xplico準(zhǔn)備工作,首先啟動(dòng)Xplico之前現(xiàn)在交換機(jī)端口上做好SPAN然后啟動(dòng)Xplico。
步驟①:啟動(dòng)命令:
#/opt/xplico/script/sqlite_demo.sh
Web登錄方法
瀏覽器輸入地址http://ip:9876
登錄頁面比較簡潔,只要輸入用戶名和密碼就可以,在這里,我們可以使用默認(rèn)的用戶名和密碼登錄XPlico系統(tǒng)"登錄系統(tǒng)后,可以看到創(chuàng)建和顯示實(shí)例的界面。在這個(gè)顯示頁面中,可以看到實(shí)例和會(huì)話的名稱標(biāo)識(shí)、分析開始和結(jié)束的時(shí)間、pcap文件上傳選項(xiàng)、各個(gè)應(yīng)用的分析結(jié)果等信息。
至此,Xplico系統(tǒng)使用之前的初始化設(shè)置完成了。現(xiàn)在我們選擇的是“pcap文件分析模式”,所以我們就可以將Pcap文件提交到xPlico系統(tǒng),查看和驗(yàn)證其分析結(jié)果"這里選取web應(yīng)用和本地客戶端收發(fā)郵件這兩個(gè)例子進(jìn)行介紹,Xplico的原始系統(tǒng)還支持DNS、FTP等應(yīng)用的分析.
Xplico中的功能簡化歸類為四個(gè)方面,分別是網(wǎng)站訪問、收發(fā)郵件、文件共享和即時(shí)通訊(MSN、IRC)其中收發(fā)郵件包含了POP3/SMTP收發(fā)郵件和網(wǎng)頁收發(fā)郵件。
步驟②:管理員登錄
默認(rèn)使用以下用戶名和密碼登錄系統(tǒng)。
用戶名:admin
密碼:xplico
登錄成功后如圖2所示。
圖2 Xplico控制面板
在控制臺(tái)右側(cè)菜單欄Dissectors上我們能夠輕松查看解析組件的分類,如圖3所示。
圖3 xplico支持的組件
當(dāng)我們監(jiān)控時(shí)需要調(diào)整為xplico用戶名,xplico密碼登錄系統(tǒng),首先在Case新建一個(gè)實(shí)例如圖4所示,然后啟動(dòng)監(jiān)聽,xplico監(jiān)控主界面如圖6所示。
圖4 新建監(jiān)控實(shí)例
選擇start按鈕開始實(shí)時(shí)監(jiān)測,如圖5所示。
圖5 開始監(jiān)測
效果如圖6所示。
圖6配置Xplico監(jiān)聽
在監(jiān)聽http應(yīng)用層協(xié)議,來自哪個(gè)IP,用戶瀏覽了什么樣的網(wǎng)頁信息都能一覽無余顯示出來,先看看客戶端瀏覽網(wǎng)頁時(shí)被還原的圖片,如圖7所示。
圖7 Web應(yīng)用層數(shù)據(jù)包解碼
注意:Skype正越來越普及,并受到越來越多的關(guān)注,可是skype通訊軟件內(nèi)部使用了AES分組密碼和RC4密鑰流生成的RSA公鑰密碼系統(tǒng),使得它的保密性非常強(qiáng)大,以至于無法被嗅探軟件捕獲并正確分析,自2012年微軟收購了skype后對其內(nèi)部架構(gòu)進(jìn)行了調(diào)整,使得第三方程序也能對視頻的聊天內(nèi)容進(jìn)行監(jiān)聽和存儲(chǔ)。微軟的Lync Server通信件就是基于SIP協(xié)議。如圖8所示。
圖 8 捕獲SIP協(xié)議通訊
圖 9捕捉到ftp賬號
圖9中展示的是從一臺(tái)計(jì)算機(jī)連接到一臺(tái)FTP服務(wù)器的服務(wù)請求,以及通過XPlico嗅探所傳輸?shù)臄?shù)據(jù)包。采用網(wǎng)絡(luò)分析器獲得用戶名與密碼是非常容易的事情(從數(shù)據(jù)包的內(nèi)容可以很直接地知道用戶名。圖10展示了Facebook、MSN及IRC等聊天工具統(tǒng)統(tǒng)都在XPlico監(jiān)控范圍之內(nèi),但惟獨(dú)Skype是個(gè)例外。
圖10捉MSN信息
在圖11示了用Xplico截獲兩臺(tái)主機(jī)(192.168.150.117和192.168.150.203之間的通訊)的syslog日志通訊內(nèi)容。
圖11獲的syslog日志信息
5.深入分析Xplico
由Xplico捕捉的數(shù)據(jù)包默認(rèn)存儲(chǔ)位置:/opt/xplico/pol_1/sol_1/raw/目錄,當(dāng)程序啟動(dòng)產(chǎn)生pol_1和pol_2兩個(gè)目錄用于承載數(shù)據(jù),所以保證/opt分區(qū)為獨(dú)立分區(qū)并且空間足夠大。在/opt/xplico/pol_1/sol_1/目錄下每個(gè)協(xié)議生成一個(gè)目錄,其內(nèi)容是捕獲的數(shù)據(jù),如圖12。
圖 12 xplico分類
例如查看詳細(xì)FTP協(xié)議情況,F(xiàn)TP數(shù)據(jù)會(huì)放在./ftp目錄下;在Msn目錄下則是嗅探得到的用戶對話記錄,以此類推。Xplico所存儲(chǔ)的重要數(shù)據(jù)放在/opt/xplico/xplico.db數(shù)據(jù)庫文件中,這是sqlite3文件格式,包含了表視圖等信息,但這些信息需要sqlite3的命令才能打開,而非普通的文本??傻絟ttp://sqlite.org/download.html下載工具如sqlitebrowser查看。
注意:Berkeley DB是Unix/Linux平臺(tái)下的高性能的嵌入式數(shù)據(jù)庫系統(tǒng),這款開源軟件比SQL Server、Oracle系統(tǒng)更為簡單所以性能很高,常用在實(shí)時(shí)數(shù)據(jù)庫領(lǐng)域,比如在LDAP服務(wù)的后臺(tái)數(shù)據(jù)庫,另一款開源數(shù)據(jù)庫就是用在xplico下的SQLite, SQLite是一款極其緊湊的可嵌入的數(shù)據(jù)庫,一款能處理巨大數(shù)據(jù)量的數(shù)據(jù)庫,有關(guān)它的詳細(xì)信息,大家參考《SQLite權(quán)威指南》。
圖13 SQLite瀏覽Xlico數(shù)據(jù)庫表結(jié)構(gòu)
圖14 查看表內(nèi)容
本章是實(shí)驗(yàn)中的1.1.0版本的xplico 在/opt/xplico/bin/modules下有65個(gè)模塊,如圖15所示。
圖15 支持的組件
當(dāng)前,大量非關(guān)鍵業(yè)務(wù)流量協(xié)議可以自主變換端口,甚至偽裝自己為其他端口流量,如 QQ、BitTorrent、eMule 等。使用 Iptables 傳統(tǒng)的匹配選項(xiàng)沒有辦法識(shí)別出這些流量。因此,Iptables 提供了良好的擴(kuò)展接口以實(shí)現(xiàn)更強(qiáng)大的功能,網(wǎng)絡(luò)流量管理系統(tǒng)可在此基礎(chǔ)上,開發(fā)能夠識(shí)別數(shù)據(jù)包第七層數(shù)據(jù)內(nèi)容的分類器。
6.綜合應(yīng)用
用Google Earth監(jiān)控IRC的通訊IP地址方位,IRC是互聯(lián)網(wǎng)上經(jīng)典的通訊工具它采用C/S架構(gòu)。如圖16所示開始抓IRC的通訊協(xié)議數(shù)據(jù)包,發(fā)現(xiàn)有兩個(gè)以被捕獲。然后就有Xplico對這種應(yīng)用進(jìn)行分析。在圖中它正在吧捕捉到的irc.pcap上傳到系統(tǒng)進(jìn)行分析,很快就能得到IP對應(yīng)的地理信息位置信息。
圖16 捕獲2個(gè)IRC協(xié)議數(shù)據(jù)包
圖17 保存kml信息
步驟①:上傳捕獲到的irc_1.pcap數(shù)據(jù)包文件,將geomap生成的irc_1pcap.kml文件保存下來。這是個(gè)Google Earth能夠識(shí)別的文件里面有IP的經(jīng)度緯度的數(shù)值。如圖17所示。
步驟②:用Google Earth打開KML文件即可看到效果,如圖18所示。圖中由一條綠線連接兩臺(tái)計(jì)算機(jī)節(jié)點(diǎn)。
圖18 用谷歌地球軟件打開KML效果
http://geolite.maxmind.com/download/geoip/database/
由Xplico系統(tǒng)將抓包獲得的irc_1.pcap數(shù)據(jù)包文件提煉出Kml文件,導(dǎo)入到谷歌地球客戶端,通過在kml文件中尋找坐標(biāo)并定位出線路的過程。這里的KML全稱是Keyhole Markup Language,是一個(gè)基于XML語法和格式的文件,主要用來描述地理信息的點(diǎn),線等信息在其中包含了每個(gè)點(diǎn)的經(jīng)度(Longitude)和緯度(Latitude)甚至是高度(Altitude)。
注意:GeoIP就是通過來訪者的IP,定位它的經(jīng)緯度、國家/地區(qū)、省市甚至街道等位置信息。這里面的技術(shù)不算難題,關(guān)鍵在于有個(gè)精準(zhǔn)的數(shù)據(jù)庫。但是免費(fèi)提供的maxmind數(shù)據(jù)庫不準(zhǔn),至少國內(nèi)的IP定位不太精準(zhǔn),但收費(fèi)服務(wù)的效果要比免費(fèi)的強(qiáng)許多,大家可以到Maxmind網(wǎng)站(www.maxmind.com )查閱相關(guān)信息。
從前面的介紹我們可以看到,Xplico系統(tǒng)具備了上網(wǎng)行為審計(jì)和分析功能,包括對HTTP協(xié)議、SMTP、POP3和FTP協(xié)議的支持,并且己經(jīng)可以推廣運(yùn)用到實(shí)際環(huán)境中。另外對XPlico系統(tǒng)進(jìn)行了改進(jìn)和優(yōu)化后,新的系統(tǒng)還增加了對國內(nèi)主流郵箱的WebMail協(xié)議的支持,并且添加了對即時(shí)通訊軟件協(xié)議的支持,使其功能更加完善。由于目前Xplico所支持的協(xié)議尚無法完全滿足市場的需求,這也是Xplico重點(diǎn)改進(jìn)的地方。
原文鏈接:http://netsecurity.51cto.com/art/201606/513237.htm