飞鸽---局域网聊天软件攻防战

0×00 前言

 

笔者发现不少甲方公司的办公网络依靠五花八门的局域网聊天软件进行办公通信,而这些软件中同样存在各种安全风险。本文就带大家利用协议分析技术来还原一款局域网聊天软件的通信协议,并对其进行简易攻击。

app

0×01 协议分析

网络协议是指计算机网络中通信双方必须共同遵守的一组约定,这些约定包括数据传输格式和顺序等内容,它最终体现为在网络上传输的数据包的格式,只有双方遵守相关约定才能确保正常通信交流。

人类社会使用自然语言进行沟通交流,计算机则使用网络协议来进行通信,只有使用同一语言或协议才能进行有效沟通交流。两者有诸多相似性,包含语法、语义、时序三大要素。

1、语法:数据或命令控制信息在传输时的形态结构或格式;

2、语义:在约定的格式下,每一块数据所对应的具体含义,例如在信息中指明控制信息属于哪种,需要完成什么任务,需要得到什么回应等。

3、时序:时间序列,在约定好的语法语义框架下,相关数据需要按照一定的时间顺序才能构成连贯完整的通讯数据。

协议也可以说是连入网络的计算机遵循的一定技术规范,包含硬件、软件和端口等的技术规范。另外,协议还必须遵守以下几点:

1、 协议中的每个人都充分知晓协议,掌握所有需要完成的步骤;

2、 协议中的每个人都必须同意并遵循它;

3、 协议的每一步必须明确定义,无二义性,不会引起误解。

为了增强兼容性和迭代性能,协议采用分层定义进行管理,设计者将网络通信过程划分为多层,每一层都有自己的协议,某一层协议的改变并不影响其他层次的协议。国际标准化组织(ISO)为了规范协议层次的划分制定了ISO/OSI参考模型,该模型根据网络功能制定出7层网络协议结构,分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。在日常中,大家更愿意使用TCP/IP五层网络模型,该模型与网络数据包更加吻合,容易理解。

协议分析(Protocol analysis)是通过对通讯数据包进行解读、对比、判定,来确定网络协议的格式、含义等的过程,属于网络分析的一部分。协议分析大多应用在黑盒场景中,在未知源码或工作机制的情况下,可通过抓取数据包进行协议分析,以此来确定通讯双方的具体协议,例如木马分析、流量检测时均需要进行协议分析。

纸上得来终觉浅,绝知此事要躬行。接下来我们利用“飞鸽传书”来进行实践,看看如何对一款软件进行协议分析。

0×02 环境准备

Q:为什么要构建实验环境?

A:在生产环境中进行各类测试实验,是忌讳的。一是不可预知的风险可能会威胁到生产环境的稳定运行;其次便是生产环境中,背景流量比较嘈杂,不利于我们快速定位流量进行协议分析,而在一个较为“纯净”的实验环境中进行协议分析,可以大大提升分析效率。

Q:如何构建“纯净”的实验环境?

A:在现实生产环境中,运行软件种类繁多,各种通讯流量很快就能将你淹没,为了尽量避免干扰,我们需要构建一个实验环境,而这个环境最理想的状况就是只产生我们需要的流量,即被分析目标产生的流量。但这显然不可能,毕竟操作系统自身包含的服务程序会产生背景流量。

步骤一:构建基础网络环境。

利用VM虚拟机搭建虚拟网络环境,网络中的机器配置如下

 PC-NAMEMACIP
主机1PC10000-01-00-00-00-01192.168.1.100
主机2PC20000-01-00-00-00-02192.168.1.200

ps:协议分析时,为使信息可对性强,便于对应机器,在配置信息时最好有规律性。

步骤二:下载目标软件,安装后配置相关信息。

0.png

1.png

步骤三:检查网络通联性,察看目标软件是否能够正常使用。

0×03语法分析

学习一门语言前首先要对基本语法进行了解掌握,协议分析也需要对数据报文的基本格式进行判断。如果有源码或者帮助文档,则比较容易获取相关格式信息,若没有这些辅助信息则需要分析者基于经验和数据进行比对判定。

经过抓取数据包进行数据比对后,发现飞鸽的基础通信协议为UDP,端口2425,经过多次对比分析后得到格式信息如下图所示

8.png

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

0×04 语义与时序分析

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

1、程序启动

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

3.png

程序运行时,会向所在网段以广播的形式发送两个报文,内容如下。

4.png

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

2、主机探测

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

9.png

3、报告上线

在利用ARP进行全网探测时,在线主机会进行ARP应答,如下图所示192.168.1.100主机进行了应答。随后,飞鸽会向在线主机发送上线报文,如下图所示。

5.png

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

4、心跳包

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

10.png

在发送心跳包后,对方会进行回复,同样报告自身的在线信息,心跳包命令编号为1025(0×401),回复包命令编号为3。

12.png

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

11.png

经过比对,飞鸽的在线状态编号所在位置如下图,含义分别为:10000001(在线)、10000002(忙碌)、10000003(离开)。

13.png

5、下线

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

14.png

6、抖动窗口

聊天软件为了提醒对方注意查看消息,通常会有窗口抖动功能,其协议如下图所示,命令编号229(0xE5)。

15.png

7、发送消息

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

16.png

8、数据包编号认证

从飞鸽的协议来看,并没有严格的认证过程,且所有信息均为明文,但为了对传输信息进行基本的管理,飞鸽程序启动后,会初始化一个数据包编号,每发送一个消息报文,该编号均会加1。且在收到编号重复的报文时,将会自动忽略,不做任何回应。

0×05 伪造与篡改

在基本确认协议后,我们可以发现,飞鸽的协议存在诸多弱点,很容易被攻击。本小节就简单演示几种攻击场景。

Attack One:伪造

Python由于其语法简易,功能强大而颇受喜欢,在本次攻击场景中我们选用该语言进行。为确保消息数据包编号的唯一性,我们采用时间戳来进行编号。

1、伪造上线

关闭192.168.1.200机器上的飞鸽程序,使用如下py脚本构建user200用户的上线包发送至192.168.1.100(该机器运行有飞鸽,用户名user100)。

 

import socket
import time
port = 2425
host = "192.168.1.100"
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.bind(('', 2425)) index = str(int(time.time())) strCheatOnline= "5.1.161212:"+index+":Administrator:PC200:1025:user200\x00WorkGroup200\x0000-01-00-00-00-02\x00\x0020000\x00user200@feige.com\x00\x0046\x00192.168.1.200\x00\x0031\x0010000001\x00\x00PC200" s.sendto(strCheatOnline,(host,port))

 

注:附加消息中的间隔号并非空格,而是空字符(0值),所以用“\0×00”来填充。

发送后,可以看到user100的飞鸽账户有上线提示。

17.png

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

18.png

2、伪造下线

先正常开启两边的飞鸽程序,两边都会周期性发送心跳包,我们利用py脚本向user100发送user200的下线包,包内容如下:

 

strOffline = "5.1.161212:145692:Administrator:PC200:2:user200"。

发送后可以观察到,user100的好友列表中的user200会下线,user100停止向user200发送心跳包;但是user200的飞鸽依然在运行,周期发送心跳包,等下次心跳包发送后,user100的好友列表中会重新出现user200上线。如何彻底下线?我们可以分别模拟双方的下线包,发送给对方,这样便可以在双发的好友列表中移除对方,避免心跳包重新激活上线。

3、伪造发信

根据协议格式,我们可以构造任意的消息报文进行发送,包内容如下:

 

strHello = "5.1.161212:145690:Administrator:PC200:288:hello"

该报文发送后,对方会收到一条消息,内容为“hello”。

Attack Two:MITM(Man-in-the-MiddleAttack)

这里我们利用笔者之前文章《WinPcap开发(三):欺骗与攻击》提到过的arpspoof进行中间人劫持,在实验网络中加入中间人机器(192.168.1.150)。(ps:arpspoof只能对TCP协议进行内容替换,所以在实验前对程序进行修改以适应所有协议)

1、消息篡改

设置arpspoof的内容替换规则如下:

19.png

启动arpspoof程序,命令如下:

 

arpspoof.exe  192.168.1.100 192.168.1.200 2425 0 1 /r job.txt

 

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

20.png

而在user100端看到的内容如下:

21.png

2、文件传输篡改

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

22.png

重新设置arpspoof的替换规则:

23.png

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

24.png

0×06 安全建议

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

1、加密

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

2、认证

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

0×07 写在最后

本文简要介绍网络协议分析的基本知识,以飞鸽聊天软件为例,进一步分析其通信协议,并进行针对性攻击。而在实际网络应用中,大部分应用所使用的协议均比较复杂,具有加解密、消息认证等安全机制,如果想进一步学习相关分析知识,可自己结合资料来对复杂的商业级产品进行协议分析。

转载于:https://www.cnblogs.com/h2zZhou/p/6811121.html

飞鸽2011局域网通信软件:高效文件传输与便捷沟通体验 本文还有配套的精品资源,点击获取 简介:《飞鸽2011》是一款2011年推出的局域网通信软件,以其卓越的文件传输功能而受到用户喜爱。软件不仅提供了快速的文件分享和断点续传功能,还支持群组聊天与一对一私聊,使得团队协作更为高效。其简洁的界面设计和直观的操作流程使得新用户也能快速上手。此外,飞鸽2011还通过加密技术和权限管理保障了通信的安全性,适用于办公和家庭网络环境,是一款... 阅读详情

相关推荐

局域网内的通信利器 - 飞鸽传书使用教程

飞鸽传书是一种基于局域网的通信工具,其设计理念是利用局域网的低延迟优势,实现文件快速传输、即时消息交流以及高质量的语音通话功能。这一软件在封闭的网络环境中工作,不依赖外部服务器,确保了信息传输的安全性和效率。传统局域网通信工具在满足基本通信需求的同时,暴露出了若干局限性。首先,在网络拓扑结构发生变化时,这些工具可能需要重新配置,导致通信中断或效率下降。其次,由于缺乏智能的路由选择机制,当网络中存在较多的节点时,传统工具往往无法优化路径选择,从而影响传输效率。

weixin_42300144的博客 1841

飞鸽传书确保服务数据的安全可靠

服务器在的区域一定要在DMZ区,飞鸽传书确保服务数据的安全可靠!我通过视频想到这几方面的问题,具体的方案还要结合具体情况具体分析! 对于整个企业网络来说,要在核心交换机上面有防火墙,在防火墙上做好安全策略,使得内部对外的数据更加安全同时外部也对内部数据有一道安全保护墙! 在

小发猫 2218

局域网传输神器——信鸽(飞鸽传书)详解

本文还有配套的精品资源,点击获取 简介:信鸽(飞鸽传书)是一款专为局域网设计的即时通讯软件,利用TCP/IP协议实现高速、零延迟的文件传输。其简洁的界面和拖拽操作功能让用户轻松上手。它支持文本聊天、文件传输、群发消息等核心功能,并提供安全的点对点传输及加密选项。群组功能和离线消息推送则增强了团队协作效率。此外,提供绿色免安装版,方便携带和快速使用。 1. 局域网文...

weixin_31720909的博客 3920

【转】飞鸽端口号被占用时的解决方法

volkswageos的专栏 1万+

局域网大文件高速传输工具——飞鸽传输软件实战应用

局域网(Local Area Network, LAN)是指在有限地理范围内(如办公室、校园、家庭)通过交换机、路由器等网络设备连接多台计算机的通信系统。其典型特征包括高带宽(通常可达100Mbps至10Gbps)、低延迟、高安全性以及广播通信能力,适用于内部资源共享和高效数据交换。飞鸽传输作为一款专为局域网环境设计的高效文件共享与即时通信工具,凭借其简洁高效的架构和免安装即用的特性,在企业办公、教育机构及家庭网络中广泛应用。

weixin_31938351的博客 1726

局域网即时通讯与文件共享解决方案:飞鸽传书实践指南

飞鸽传书软件提供了一个用户友好的界面,让用户能够轻松地进行通信和文件传输。该软件界面的设计旨在简化操作,使用户即使在快节奏的工作环境中也能迅速完成任务。飞鸽传书软件的增强功能包括语音和视频通话、屏幕共享以及数据同步等。这些功能丰富了用户间的交流方式,特别是在需要面对面沟通时,视频通话提供了更直观的交流体验。数据同步功能则允许用户在多个设备间同步聊天记录和文件,便于移动办公。TCP/IP协议簇是一系列网络协议的统称,它被广泛应用于互联网和局域网中,以确保数据能够在不同网络之间可靠地传输。

weixin_42128315的博客 1122

局域网传输还在用飞鸽?还在用QQ,其实Python也可以实现类似的功能!Python基于scoket实现多路复用TCP局域网文件传输

局域网传输的基本信息1.IO是什么?⦁定义⦁ 阻塞IO⦁ 非阻塞IO2.IO多路复用定义select具体用法3.实现多路复用局域网文件传输server.pyclient.pyFileOperation.py注意事项运行效果 1.IO是什么? ⦁定义 在内存中存在数据交换的操作 和终端交互:input, output 和磁盘交互:read, write 和网络交互:recv, send ①IO密集型:在程序当中存在大量的IO,而CPU的运算较少,消耗CPU资源小,耗时长,效率不高 ②计算密集型:在运算中存在大

ZesenYuan的博客 624

飞鸽传书:局域网文件传输的实用指南

本文还有配套的精品资源,点击获取 简介:在局域网环境下,文件传输工具的高效性和安全性是用户的关键需求。本文深入剖析了"飞鸽传书"这款局域网文件传输软件的优势、功能及应用。其快速传输、简洁易用的界面、安全的点对点传输方式和集成的即时通讯功能让文件共享变得简单。应用场景包括办公协作、教育交流、家庭共享以及数据备份,使飞鸽传书成为提升局域网内文件交互效率的利器。 1. ...

weixin_30205153的博客 2161

飞鸽-http://www.freeeim.com/

<br />在11月初公布的“飞鸽”智能手机系统,相比iPhone和Android要迟到了很久,以至于局域网聊天Smartphone时代的全球市场份额优势,几乎消失殆尽。<br />可迟到的“飞鸽”智能手机操作系统还是明确的昭示了局域网聊天的移动互联网战略,至少可以同苹果、Google、黑莓和诺基亚一起参与移动互联网终端的马拉松竞赛了。即时APP应用软件商店的商业模式越来越惹眼,但是HTML5网页编码方式的流行,让APP应用软件更像一个用来收取0.99美元的包装外壳,局域网聊天势必迎合智能手机应用软件的下载

小发猫 6644

飞鸽传书:局域网文件传输利器详解

在当今快节奏的工作环境中,快速、高效地在局域网内传输文件已成为一项基本需求。局域网文件传输工具的出现,大大简化了这一过程。这些工具不仅支持文件的快速共享,而且在安全性、用户管理等方面也提供了丰富的功能,以满足不同规模企业的特定需求。局域网文件传输工具的设计理念是简化文件共享的复杂性,让用户能够轻松管理数据流,而不必担心网络的复杂性。这些工具通常具有直观的用户界面,允许用户在不深入了解网络协议的情况下实现文件传输。在本文中,我们将深入了解一种流行的局域网文件传输工具——IPMSG.exe。

weixin_36431145的博客 1154

feige2014_for_Windows.zip

局域网内传输文件的好帮手,可以直接拖拽文件夹

局域网+飞鸽+源代码

局域网内的经典之作、小巧却很实用、此代码为我从网上下载的、经试用、的确很好、特此上传、为大家做个案例、便于C#学习、我们一起来进步!

飞鸽即时通讯软件

1、基于大作业而写的飞鸽源程序。 2、实现了基本实验要求

内网穿透工具飞鸽使用方法

二、登录后点击“开通隧道”,这里有国内和香港两个节点可以使用,注:我这里选择的是香港节点,因为我使用国内节点的时候,对接支付宝业务无法回调需要认证密码。点击免费试用后:填写 备注 , 填写前置域名(随意写几个字母就行),点击确认开通。一、飞鸽内网穿透官网:https://www.fgnwct.com。打开网址注册一个账号。使用新注册的账号登录。

sxl2017的博客 2922

飞鸽(局域网传输软件)

飞鸽、一个很不错的局域网聊天、文件传输软件,绿色。

飞鸽(局域网传输工具)

飞鸽(局域网传输工具) 方便 快捷 传输

上一篇: phtread_mutex 组合
下一篇: LeetCode 之 Valid Palindrome(字符串)
badiu_30394251
博客等级 码龄11年 124粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值