飞鸽—局域 聊天软件攻防战

0×00 前言

 

从数据包可以看出,飞鸽的通讯协议包含6个部分,以冒 (:)分割,附加信息以空格作为分隔符,内容为对应命令的各种参数,例如上图的附加信息显示的是发送者的基本信息(MAC地址、IP地址、用户名、邮箱、分组等)。

0×04 语义与时序分析

在了解协议基本格式后,便可对语义和时序进行分析。同时进行语义和时序的分析工作,是因为时序有助于分析人员确定语义,和自然语言一样,不同顺序的语句所产生的情景有所差异。我们按照飞鸽程序的启动顺序进行操作,产生各功能对应的数据包,进行语义分析。

1、程序启动

打开wireshark,选定对应的 卡进行截包,双击运行“飞鸽传书”。

这两个 文命令编 均为1025(0×401),差异在于描述版本 的字段,前者为1.feige.1,后者为5.1.161212。初步判断是为了兼容性而采用两种形式描述。

2、主机探测

在发送完广播 文后,程序对所在 段进行ARP扫描,确定本 段内的在线主机。

上线 文的命令编 为3073(0xC01),内容主要包含本机的机器信息和飞鸽账户的基本信息。

4、心跳包

通讯软件为了保持在线状态,即时上 自身在线信息,通常会采用心跳包的形式来 告自身状态。如下图所示,192.168.1.100和192.168.1.200两台主机相互发送心跳包,中间还夹杂有ARP探测包。

为了进一步观察心跳包周期,输入如下图所示的过滤参数,可以明显看到周期为60秒(一分钟)。

5、下线

当用户关闭飞鸽时,飞鸽会通知其他在线用户自己要下线。该命令编 为2。

7、发送消息

进行文本传输时,接收方会反馈回执,如下图所示。192.168.1.200发出“hello,i am user200”的文本消息,命令编 288(0×120),该条消息的数据包编 为163932。192.168.1.100机器在接收到该消息时,反馈回执,命令编 33(0×21),该回执的附加信息包含着被回执信息的数据包编 ,即163932。

User200用户上线后,user100用户会周期性发送心跳包。从下图可以看出心跳包周期为60s(和上一节分析的心跳包一致),但是由于我们是伪造的上线包,192.168.1.200机器上并没有飞鸽程序运行,所以无法接收和回复该心跳包,所以会看到机器会自动回馈ICMP不可达的 文。经过10分钟,即发送10个心跳包且不可达时,user100会将user200从上线列表中移除。

启动arpspoof程序,命令如下:

 

 

此时我们用user200发送消息给user100:

2、文件传输篡改

在user200端设置共享文件如下:

启动程序,在user100端进行该共享文件的下载,下载后的内容如下:

24.png

0×06 安全建议

从上面的实验可以看出,类似于飞鸽这样的协议存在着诸多脆弱性,很容易收到攻击,这也为我们使用该类软件敲响警钟。

1、加密

协议未加密导致数据均以明文形式传送,中间人在获取足够的数据后,对比明文会很快还原出协议格式,如果使用加密协议,则会一定程度提高协议分析的成本。

2、认证

整个通讯 络属于分布式 络,无中心服务器节点,具有较高鲁棒性,即不会因服务器的瘫痪而导致全 的中断。但是这种去中心化的 络存在身份认证的问题,即两个节点相互证明彼此身份的合法性。而这也给消息的合法性验证带来困难,而较易受到劫持篡改或伪造。

0×07 写在最后

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览215671 人正在系统学习中 相关资源: 架设软件FSGSv0.7.2.12_星际争霸重置版服务器搭建fsgs-Linux…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年4月4日
下一篇 2017年4月4日

相关推荐