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,用此光盘启动系统后,进入控制台首先启动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所示。图中由一条绿线连接两台计算机节点。

  图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(转载)

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐