用开源工具Xplico助力网络应用层数据解码

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
简介:

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

相关文章
|
5天前
|
JavaScript 算法 前端开发
采招网JS逆向:基于AES解密网络数据
采招网JS逆向:基于AES解密网络数据
18 0
|
4天前
|
数据采集 存储 机器学习/深度学习
豆瓣评分7.6!Python大牛教你如何采集网络数据
网络数据采集大有所为。在大数据深入人心的时代,网络数据采集作为网络、数据库与机器学习等领域的交汇点,已经成为满足个性化网络数据需求的最佳实践。你在浏览器上看到的内容,大部分都可以通过编写Python 程序来获取。如果你可以通过程序获取数据,那么就可以把数据存储到数据库里。如果你可以把数据存储到数据库里,自然也就可以将这些数据可视化。 今天给小伙伴们分享的这份手册采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导。
|
3天前
|
存储 安全 网络安全
云计算与网络安全:保护云端数据的关键技术
【8月更文挑战第28天】在数字化时代,云计算服务成为企业和个人存储、处理数据的首选。然而,随之而来的网络安全挑战也日益严峻。本文将深入探讨如何通过先进的网络安全技术来保护云服务中的数据安全。我们将从基础的云服务模型开始,逐步深入到网络安全的核心策略和最佳实践,旨在为读者提供一套完整的解决方案,确保他们的数据在云端得到充分的保护。
|
3天前
|
安全 网络安全 数据安全/隐私保护
云原生技术探索:容器化与微服务架构的实践之路网络安全与信息安全:保护数据的关键策略
【8月更文挑战第28天】本文将深入探讨云原生技术的核心概念,包括容器化和微服务架构。我们将通过实际案例和代码示例,展示如何在云平台上实现高效的应用部署和管理。文章不仅提供理论知识,还包含实操指南,帮助开发者理解并应用这些前沿技术。 【8月更文挑战第28天】在数字化时代,网络安全和信息安全是保护个人和企业数据的前线防御。本文将探讨网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性。文章旨在通过分析网络安全的薄弱环节,介绍如何利用加密技术和提高用户警觉性来构建更为坚固的数据保护屏障。
|
4天前
|
存储 安全 网络安全
云计算与网络安全的博弈:保护数据在虚拟世界中的安全移动应用开发之旅:从新手到专家
【8月更文挑战第27天】随着云计算技术的飞速发展,企业和个人用户越来越多地将数据和服务迁移到云端。然而,这一转变同时带来了新的安全挑战。本文旨在探讨云计算环境下的网络安全问题,并分析如何通过技术和策略保障信息安全。我们将从云服务的基础知识出发,逐步深入到网络安全和信息安全的高级概念,最后讨论如何实施有效的安全措施来抵御网络威胁。文章不仅涵盖了理论框架,还提供了实际案例分析,旨在为读者提供一套全面的云计算安全指南。
|
2天前
|
存储 SQL 安全
网络安全与信息安全:保护数据的关键策略
【8月更文挑战第29天】在数字时代,数据的安全性成为了一个日益严峻的问题。本文将深入探讨网络安全漏洞、加密技术和安全意识的重要性,并分享一些实用的知识。我们将了解如何识别和防范网络攻击,学习如何使用加密技术来保护数据,以及提高个人和组织的安全意识。无论你是IT专业人士还是普通用户,这篇文章都将为你提供有价值的见解和建议。
|
2天前
|
人工智能 监控 安全
十大优秀反网络钓鱼工具和服务
十大优秀反网络钓鱼工具和服务
|
8天前
|
Kubernetes 监控 Shell
在K8S中,我们公司用户反应pod连接数非常多,希望看一下这些连接都是什么信息?什么状态?怎么排查?容器里面没有集成bash环境、网络工具,怎么处理?
在K8S中,我们公司用户反应pod连接数非常多,希望看一下这些连接都是什么信息?什么状态?怎么排查?容器里面没有集成bash环境、网络工具,怎么处理?
|
1天前
|
安全 网络安全 开发者
探索Python中的装饰器:简化代码,增强功能网络安全与信息安全:从漏洞到防护
【8月更文挑战第30天】本文通过深入浅出的方式介绍了Python中装饰器的概念、用法和高级应用。我们将从基础的装饰器定义开始,逐步深入到如何利用装饰器来改进代码结构,最后探讨其在Web框架中的应用。适合有一定Python基础的开发者阅读,旨在帮助读者更好地理解并运用装饰器来优化他们的代码。
|
1天前
|
运维 安全 应用服务中间件
自动化运维的利器:Ansible入门与实战网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【8月更文挑战第30天】在当今快速发展的IT时代,自动化运维已成为提升效率、减少错误的关键。本文将介绍Ansible,一种流行的自动化运维工具,通过简单易懂的语言和实际案例,带领读者从零开始掌握Ansible的使用。我们将一起探索如何利用Ansible简化日常的运维任务,实现快速部署和管理服务器,以及如何处理常见问题。无论你是运维新手还是希望提高工作效率的资深人士,这篇文章都将为你开启自动化运维的新篇章。
下一篇
云函数