用开源工具Xplico助力网络应用层数据解码
0.概述Xplico功能不仅是一个网络协议分析工具,还是一个开源的网络取证分析工具(NFAT)。网络取证分析工具是一个科学的捕捉,记录和检测入侵并进行调查的网络流量分析处理系统。Xplico主要作用是从捕获网络应用层数据并显示出来,这指的是通过捕获Internet网络流量来提取各种网络应用中所包含的数据,并从中分析出各种不同的网络应用。例如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所示。
图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所示。
图2 Xplico控制面板
在控制台右侧菜单栏Dissectors上我们能够轻松查看解析组件的分类,如图3所示。
图3 xplico支持的组件
当我们监控时需要调整为xplico用户名,xplico密码登录系统,首先在Case新建一个实例如图4所示,然后启动监听,xplico监控主界面如图6所示。
图4 新建监控实例
选择start按钮开始实时监测,如图5所示。
图5 开始监测
效果如图6所示。
图6配置Xplico监听
在监听http应用层协议,来自哪个IP,用户浏览了什么样的网页信息都能一览无余显示出来,先看看客户端浏览网页时被还原的图片,如图7所示。
图7 Web应用层数据包解码
注意:Skype正越来越普及,并受到越来越多的关注,可是skype通讯软件内部使用了AES分组密码和RC4密钥流生成的RSA公钥密码系统,使得它的保密性非常强大,以至于无法被嗅探软件捕获并正确分析,自2012年微软收购了skype后对其内部架构进行了调整,使得第三方程序也能对视频的聊天内容进行监听和存储。微软的Lync Server通信件就是基于SIP协议。如图8所示。
图 8 捕获SIP协议通讯
图 9捕捉到ftp账号
图9中展示的是从一台计算机连接到一台FTP服务器的服务请求,以及通过XPlico嗅探所传输的数据包。采用网络分析器获得用户名与密码是非常容易的事情(从数据包的内容可以很直接地知道用户名。图10展示了Facebook、MSN及IRC等聊天工具统统都在XPlico监控范围之内,但惟独Skype是个例外。
图10捉MSN信息
在图11示了用Xplico截获两台主机(192.168.150.117和192.168.150.203之间的通讯)的syslog日志通讯内容。
图11获的syslog日志信息
5.深入分析Xplico
由Xplico捕捉的数据包默认存储位置:/opt/xplico/pol_1/sol_1/raw/目录,当程序启动产生pol_1和pol_2两个目录用于承载数据,所以保证/opt分区为独立分区并且空间足够大。在/opt/xplico/pol_1/sol_1/目录下每个协议生成一个目录,其内容是捕获的数据,如图12。
图 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权威指南》。
图13 SQLite浏览Xlico数据库表结构
图14 查看表内容
本章是实验中的1.1.0版本的xplico 在/opt/xplico/bin/modules下有65个模块,如图15所示。
图15 支持的组件
当前,大量非关键业务流量协议可以自主变换端口,甚至伪装自己为其他端口流量,如 QQ、BitTorrent、eMule 等。使用 Iptables 传统的匹配选项没有办法识别出这些流量。因此,Iptables 提供了良好的扩展接口以实现更强大的功能,网络流量管理系统可在此基础上,开发能够识别数据包第七层数据内容的分类器。
6.综合应用
用Google Earth监控IRC的通讯IP地址方位,IRC是互联网上经典的通讯工具它采用C/S架构。如图16所示开始抓IRC的通讯协议数据包,发现有两个以被捕获。然后就有Xplico对这种应用进行分析。在图中它正在吧捕捉到的irc.pcap上传到系统进行分析,很快就能得到IP对应的地理信息位置信息。
图16 捕获2个IRC协议数据包
图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(转载)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)