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端进行该共享文件的下载,下载后的内容如下:

0×06 安全建议
从上面的实验可以看出,类似于飞鸽这样的协议存在着诸多脆弱性,很容易收到攻击,这也为我们使用该类软件敲响警钟。
1、加密
协议未加密导致数据均以明文形式传送,中间人在获取足够的数据后,对比明文会很快还原出协议格式,如果使用加密协议,则会一定程度提高协议分析的成本。
2、认证
整个通讯 络属于分布式 络,无中心服务器节点,具有较高鲁棒性,即不会因服务器的瘫痪而导致全 的中断。但是这种去中心化的 络存在身份认证的问题,即两个节点相互证明彼此身份的合法性。而这也给消息的合法性验证带来困难,而较易受到劫持篡改或伪造。
0×07 写在最后
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览215671 人正在系统学习中 相关资源:战 架设软件FSGSv0.7.2.12_星际争霸重置版服务器搭建fsgs-Linux…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!