天天看點

用開源工具Xplico助力網絡應用層資料解碼

0.概述

xplico功能不僅是一個網絡協定分析工具,還是一個開源的網絡驗證分析工具(nfat)。網絡驗證分析工具是一個科學的捕捉,記錄和檢測入侵并進行調查的網絡流量分析處理系統。xplico主要作用是從捕獲網絡應用層資料并顯示出來,這指的是通過捕獲internet網絡流量來提取各種網絡應用中所包含的資料,并從中分析出各種不同的網絡應用。例如xplico可以實時解析通過網關的流量,也可以pcap檔案中解析出ip流量資料,并解析每個郵箱(包括pop、imap和smtp協定),解析http内容,以及voip應用等。

注意:在後面設定中xplico web界面中的menu→dissectors能看到它所支援的應用層協定。

1.系統架構

xplico系統由4個部分構成,分别是:

解碼控制器

ip/網絡解碼器(xplico)

程式集來處了解碼資料(manipulators)

可視化系統(用來檢視結果)

解碼器xplico是整個系統的核心元件,它的特點是高度子產品化,可擴充性和可配置性。它的主要工作過程是通過資料抓取子產品(cap_dissector)抓取網絡中的資料包,然後将資料包輸入到各個解析元件(dissectors)中,得出的解析結果通過分發元件(dispatcher)存儲到資料庫中,最後再顯示出來。其過程如圖1所示。

用開源工具Xplico助力網絡應用層資料解碼

  圖1 xplico原理圖

從圖1可以看出,xplico對協定的分析過程采取自頂向下的流程,首先xplico捕獲到網絡資料包,然後根據包中的不同字段,區分出不同的協定,分成tcp、udp等協定進行分析,其中對tcp協定和udp協定再根據不同的端口号和應用層協定的特征進一步細分,使用不同的解析器對封包進行分析和處理,最後得出結論并儲存結果。

2. xplico的資料擷取方法

在xplico底層使用libpcap來抓取資料包,它是一個專門用來捕獲網絡資料的程式設計接口。它在很多網絡安全領域得到了廣泛的應用,很多著名的網絡安全系統都是基于libpcap而開發的,如著名的網絡資料包捕獲和分析工具tcpdump,網絡入侵檢測系統snort也是使用libpcap來實作的。libpcap幾乎成了網絡資料包捕獲的标準接口。libpcap中使用了bpf(bsd packet filter)過濾機制,這部分是基于核心的過濾子產品,它使libpcap具有捕獲特定資料包的功能,可以過濾掉網絡上不需要的資料包,而隻捕獲使用者感興趣的資料包。使用libpcap可以把從網絡上捕獲到的資料包存儲到一個檔案中,還可以把資料包資訊從檔案中讀出,讀出的結果與從網絡上捕獲資料包的結果是一樣的。,

3.xplico部署

xplico目前最新版本為xplico version 1.1.2(本文實驗采用版本為1.1.0),其自身的運作需要其他一些軟體的支撐例如apache、sqlite、tcpdump、tshark等。在安裝部署前,首先要準備好,這裡以選用ubuntu 系統。

環境:基礎平台os采用ubuntu linux 13.10,安裝方法如下:

$sudo apt-get update

$sudo apt-get install xplico

注意:需要修改apache端口監聽檔案/etc/apache2/ports.conf,添加以下内容

namevirtualhost *:9876

listen 9876

此外還有一種方法可以使用內建工具箱deft 8.2 live,用此CD光牒啟動系統後,進入控制台首先啟動apache伺服器,然後啟動xplico服務(順序反了不能成功)最後啟動xplico的web界面。

4.應用xplico

啟動xplico準備工作,首先啟動xplico之前現在交換機端口上做好span然後啟動xplico。

步驟①:啟動指令:

#/opt/xplico/script/sqlite_demo.sh

web登入方法

浏覽器輸入位址http://ip:9876

登入頁面比較簡潔,隻要輸入使用者名和密碼就可以,在這裡,我們可以使用預設的使用者名和密碼登入xplico系統"登入系統後,可以看到建立和顯示執行個體的界面。在這個顯示頁面中,可以看到執行個體和會話的名稱辨別、分析開始和結束的時間、pcap檔案上傳選項、各個應用的分析結果等資訊。

至此,xplico系統使用之前的初始化設定完成了。現在我們選擇的是“pcap檔案分析模式”,是以我們就可以将pcap檔案送出到xplico系統,檢視和驗證其分析結果"這裡選取web應用和本地用戶端收發郵件這兩個例子進行介紹,xplico的原始系統還支援dns、ftp等應用的分析.

xplico中的功能簡化歸類為四個方面,分别是網站通路、收發郵件、檔案共享和即時通訊(msn、irc)其中收發郵件包含了pop3/smtp收發郵件和網頁收發郵件。

步驟②:管理者登入

預設使用以下使用者名和密碼登入系統。

使用者名:admin

密碼:xplico

登入成功後如圖2所示。

用開源工具Xplico助力網絡應用層資料解碼

  圖2 xplico控制台

在控制台右側菜單欄dissectors上我們能夠輕松檢視解析元件的分類,如圖3所示。

用開源工具Xplico助力網絡應用層資料解碼

  圖3 xplico支援的元件

當我們監控時需要調整為xplico使用者名,xplico密碼登入系統,首先在case建立一個執行個體如圖4所示,然後啟動監聽,xplico監控主界面如圖6所示。

用開源工具Xplico助力網絡應用層資料解碼

  圖4 建立監控執行個體

選擇start按鈕開始實時監測,如圖5所示。

用開源工具Xplico助力網絡應用層資料解碼

  圖5 開始監測

效果如圖6所示。

用開源工具Xplico助力網絡應用層資料解碼

  圖6配置xplico監聽

在監聽http應用層協定,來自哪個ip,使用者浏覽了什麼樣的網頁資訊都能一覽無餘顯示出來,先看看用戶端浏覽網頁時被還原的圖檔,如圖7所示。

用開源工具Xplico助力網絡應用層資料解碼

  圖7 web應用層資料包解碼

注意:skype正越來越普及,并受到越來越多的關注,可是skype通訊軟體内部使用了aes分組密碼和rc4密鑰流生成的rsa公鑰密碼系統,使得它的保密性非常強大,以至于無法被嗅探軟體捕獲并正确分析,自2012年微軟收購了skype後對其内部架構進行了調整,使得第三方程式也能對視訊的聊天内容進行監聽和存儲。微軟的lync server通信件就是基于sip協定。如圖8所示。

用開源工具Xplico助力網絡應用層資料解碼

  圖 8 捕獲sip協定通訊

用開源工具Xplico助力網絡應用層資料解碼

  圖 9捕捉到ftp賬号

圖9中展示的是從一台計算機連接配接到一台ftp伺服器的服務請求,以及通過xplico嗅探所傳輸的資料包。采用網絡分析器獲得使用者名與密碼是非常容易的事情(從資料包的内容可以很直接地知道使用者名。圖10展示了facebook、msn及irc等聊天工具統統都在xplico監控範圍之内,但惟獨skype是個例外。

用開源工具Xplico助力網絡應用層資料解碼

  圖10捉msn資訊

在圖11示了用xplico截獲兩台主機(192.168.150.117和192.168.150.203之間的通訊)的syslog日志通訊内容。

用開源工具Xplico助力網絡應用層資料解碼

  圖11獲的syslog日志資訊

5.深入分析xplico

由xplico捕捉的資料包預設存儲位置:/opt/xplico/pol_1/sol_1/raw/目錄,當程式啟動産生pol_1和pol_2兩個目錄用于承載資料,是以保證/opt分區為獨立分區并且空間足夠大。在/opt/xplico/pol_1/sol_1/目錄下每個協定生成一個目錄,其内容是捕獲的資料,如圖12。

用開源工具Xplico助力網絡應用層資料解碼

  圖 12 xplico分類

例如檢視詳細ftp協定情況,ftp資料會放在./ftp目錄下;在msn目錄下則是嗅探得到的使用者對話記錄,以此類推。xplico所存儲的重要資料放在/opt/xplico/xplico.db資料庫檔案中,這是sqlite3檔案格式,包含了表視圖等資訊,但這些資訊需要sqlite3的指令才能打開,而非普通的文本。可到http://sqlite.org/download.html下載下傳工具如sqlitebrowser檢視。

注意:berkeley db是unix/linux平台下的高性能的嵌入式資料庫系統,這款開源軟體比sql server、oracle系統更為簡單是以性能很高,常用在實時資料庫領域,比如在ldap服務的背景資料庫,另一款開源資料庫就是用在xplico下的sqlite, sqlite是一款極其緊湊的可嵌入的資料庫,一款能處理巨大資料量的資料庫,有關它的詳細資訊,大家參考《sqlite權威指南》。

用開源工具Xplico助力網絡應用層資料解碼

  圖13 sqlite浏覽xlico資料庫表結構

用開源工具Xplico助力網絡應用層資料解碼

  圖14 檢視表内容

本章是實驗中的1.1.0版本的xplico 在/opt/xplico/bin/modules下有65個子產品,如圖15所示。

用開源工具Xplico助力網絡應用層資料解碼

  圖15 支援的元件

目前,大量非關鍵業務流量協定可以自主變換端口,甚至僞裝自己為其他端口流量,如 qq、bittorrent、emule 等。使用 iptables 傳統的比對選項沒有辦法識别出這些流量。是以,iptables 提供了良好的擴充接口以實作更強大的功能,網絡流量管理系統可在此基礎上,開發能夠識别資料包第七層資料内容的分類器。

6.綜合應用

用google earth監控irc的通訊ip位址方位,irc是網際網路上經典的通訊工具它采用c/s架構。如圖16所示開始抓irc的通訊協定資料包,發現有兩個以被捕獲。然後就有xplico對這種應用進行分析。在圖中它正在吧捕捉到的irc.pcap上傳到系統進行分析,很快就能得到ip對應的地理資訊位置資訊。

用開源工具Xplico助力網絡應用層資料解碼

  圖16 捕獲2個irc協定資料包

用開源工具Xplico助力網絡應用層資料解碼

  圖17 儲存kml資訊

步驟①:上傳捕獲到的irc_1.pcap資料封包件,将geomap生成的irc_1pcap.kml檔案儲存下來。這是個google earth能夠識别的檔案裡面有ip的經度緯度的數值。如圖17所示。

步驟②:用google earth打開kml檔案即可看到效果,如圖18所示。圖中由一條綠線連接配接兩台計算機節點。

用開源工具Xplico助力網絡應用層資料解碼

  圖18 用谷歌地球軟體打開kml效果

http://geolite.maxmind.com/download/geoip/database/

由xplico系統将抓包獲得的irc_1.pcap資料封包件提煉出kml檔案,導入到谷歌地球用戶端,通過在kml檔案中尋找坐标并定位出線路的過程。這裡的kml全稱是keyhole markup language,是一個基于xml文法和格式的檔案,主要用來描述地理資訊的點,線等資訊在其中包含了每個點的經度(longitude)和緯度(latitude)甚至是高度(altitude)。

注意:geoip就是通過來訪者的ip,定位它的經緯度、國家/地區、省市甚至街道等位置資訊。這裡面的技術不算難題,關鍵在于有個精準的資料庫。但是免費提供的maxmind資料庫不準,至少國内的ip定位不太精準,但收費服務的效果要比免費的強許多,大家可以到maxmind網站(www.maxmind.com )查閱相關資訊。

從前面的介紹我們可以看到,xplico系統具備了上網行為審計和分析功能,包括對http協定、smtp、pop3和ftp協定的支援,并且己經可以推廣運用到實際環境中。另外對xplico系統進行了改進和優化後,新的系統還增加了對國内主流郵箱的webmail協定的支援,并且添加了對即時通訊軟體協定的支援,使其功能更加完善。由于目前xplico所支援的協定尚無法完全滿足市場的需求,這也是xplico重點改進的地方。

本文轉自d1net(轉載)