抓取文件包下载传送门
相关文章
目的:
1、分析数据在五层协议栈中的封装及通信过程,理解通信基本原理;
2、对典型的网络应用(DNS、HTTP、FTP、Email等)通信进行详细分析;
3、针对HTTP的User-agent编写简单的访问响应页面,并熟练使用session及cookie
掌握数据传输过程。
要求:
1、使用wireshark、sniffer等捕捉工具捕捉应用层通信报文。
2、对报文在每一层的封装进行分析,特别是DNS、HTTP、FTP与Email协议,对端口复用与分解、应用层服务与协议的通信过程进行分析。
3、对HTTP协议的请求-响应过程及协议数据封装进行详细分析,编写一个页面,能够记录客户端User-Agent信息,并根据访问请求的User-Agent返回不同内容;并熟练使用session和cookie
原理:
1、网络协议(network protocol)
网络协议(network protocol)简称为协议,是为进行计算机网络中的数据交换而建立的规则、 标准或约定。协议规定了通信实体之间所交换的消息的格式、意义、顺序以及针对收到信息或发生事件所采取的“动作”(actions) 。
2、计算机网络体系结构
计算机网络体系结构是指计算机网络层次结构模型,它是各层的协议以及层次之间的端口的集合。在计算机网络中实现通信必须依靠网络通信协议,当前主流的体系结构有三种,分别是OSI七层结构(广泛采用的是国际标准化组织(ISO)1997年提出的开放系统互联(Open System Interconnection,OSI)参考模型,习惯上称为ISO/OSI参考模型。),TCP/IP参考模型,以及Internet五层协议栈。
开放系统互连(Open System Interconnect,OSI)参考模型是由国际标准化组织(ISO) 1984年提出的分层网络体系结构模型。目的是支持异构网络系统的互连互通,是理解网络系统的最佳模型或学习工具。分为物理层,数据链路层,网络层,传输层,会话层,表示层,应用层七层,每层完成特定的网络功能。
OSI是一个理论上的网络通信模型,TCP/IP则是实际运行的网络协议;TCP/IP协议族分为四层,分别为应用层,传输层,网络层,网络接口层。
Internet五层协议栈综合了OSI七层模型和TCP/IP四层模型的优点,包括:应用层、运输层、网络层、数据链路层和物理层。
应用层:是体系结构中的最高。直接为用户的应用进程(例如电子邮件、文件传输和终端仿真)提供服务。支持各种网络应用。
运输层:负责向两个主机中进程之间的通信提供服务。由于一个主机可同时运行多个进程,因此运输层有复用和分用的功能。【进程—进程的数据传输(TCP,UDP)】
网络层:源主机到目的主机的数据分组与转发(IP 协议,路由协议等)。
数据链路层:常简称为链路层,我们知道,两个主机之间的数据传输,总是在一段一段的链路上传送的,也就是说,在两个相邻结点之间传送数据是直接传送的(点对点),这时就需要使用专门的链路层的协议。【相邻网络元素的数据传输】
物理层:在物理层上所传数据的单位是比特。物理层的任务就是透明地传送比特流。
3、Encapsulation 封装
封装Encapsulation,由上到下在每一层数据增加控制信息(Header),构造协议数据单元(PDU),包括:地址(Address):标识发送端/接收端;差错检测编码(Error-detecting Code):用于差错检测或纠正
协议控制(Protocol control):实现协议功能的附加信息。
解封装,就是封装的逆过程,拆解协议包,由下到上去除报头,数据封装和解封装是一对逆过程。
五层协议栈的封装和解封装过程如下:
封装过程
应用层:原始数据被转换成二进制数据
传输层:二进制数据被分割成小的数据段,并封装TCP头部 (数据段)(TCP头部的关键信息–端口号)
网络层:传输层传来的数据被封装上IP头部 (数据包)(IP头部的关键信息–IP地址)
数据链路层:网络层传来的数据被封装上MAC头部 (数据帧)(MAC头部的关键信息–MAC地址)
物理层:二进制数据组成的比特流转化为电信号在网络中传输 (比特流)
解封装(封装的逆过程)
4、应用层协议
应用层协议(application layer protocol)定义了运行在不同端系统上的应用程序进程如何相互传递报文。包含:消息的类型(type){请求消息,响应消息};消息的语法(Syntax)格式{消息中有哪些字段(field),每个字段如何描述};字段的语义(semantics){字段中信息的含义};规则(rules){进程何时发送/响应消息,进程如何发送/响应消息}
典型网络应用服务与协议主要有:
1)域名系统(Domain Name System,DNS):主要提供域名和IP地址之间映射。
2)文件传输协议(File Transfer Protocol,FTP):在互联网的两个主机间实现文件互传的网络应用。
3)超文本传输协议(HyperText Transfer Protocol,HTTP):用于实现WWW服务,也就是WEB服务。
4)SMTP(Simple Mail Transfer Protocol), 使用TCP进行Email消息的可靠传输。
5)POP3(Post Office Protocol 3), 提供从服务器获取邮件的服务。
5、DNS协议
DNS协议是用来将域名解析到IP地址的一种协议,也可以用来将IP地址转换为域名。DNS协议是基于UDP和TCP的协议,使用53端口。只有在区域传输时才使用TCP协议,在其他时候使用的是UDP协议。
6、HTTP(超文本传输协议)
HTTP(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。所有的HTTP报文都分为两类:请求报文和响应报文。
7、SMTP即简单邮件传输协议
SMTP即简单邮件传输协议是一组由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议。运行在发送端邮件服务器主机上的SMTP客户,发起建立一个运行在接收端邮件服务器主机上的SMTP的服务器端口25号之间的TCP链接。
8、POP3协议
POP3协议即“邮局协议版本3”,和SMTP一样属于TCP/IP协议。POP3协议主要用于支持使用客户端远程管理在服务器上的电子邮件。POP3协议还支持离线处理,不需要收件人同时在线。
9、Internet提供的传输服务TCP与UDP
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流、可进行流量控制的、提供拥塞控制的传输层通信协议。
UDP (User Datagram Protocol数据报协议)一种无连接的传输层协议,提供简单不可靠信息传送服务。
TCP与UDP在传输层为应用层服务和程序提供传输服务。
过程与结果:
1、DNS、HTTP、SMTP、POP报文捕捉截图
DNS
图1 命令行操作
图2 对抓取到的数据进行dns过滤
HTTP
图3 查询IPv4端口
图4对抓取到的数据进行http过滤
图5 浏览器内置的网络检查器
SMTP
图6 对抓取到的数据进行stmp过滤
POP
图7 对抓取到的数据进行pop过滤
2、Internet五层协议栈报文封装分析,字节计算
1)、验证Internet五层协议栈的PDU封装
图8 对抓取到的数据下的封装
从上到下分别是,物理层,数据链路层,网络层,传输层,应用层。
逐层点击,即可验证五层协议自顶向下逐层封装,也可验证每层封装encapsulate的头部信息Header,如下图所示传输层的UDP头部,长度8,包含了源端口,目的端口,长度,校验和。
图9 对抓取到的数据下的封装
验证自顶向下逐层封装的数据大小:数据总长度= 33(DNS query)+ 8(UDP头部)+ 20(网络层头部)+ 14(以太帧头部)=75Bytes=600bits
3、DNS query与qurey response过程分析,PDU封装分析
图10 传输端口号
dns query 由source 10.225.146.226 的port 53334发向 destination 172.17.211.212的port 53
头部固定12bytes
Questions包含:
Name 域名:18bytes
Label count 3级域名:2 bytes
Type 类型 HTTP :2 bytes
Class 类别 in internet :2 bytes
总长:12+18+6=36bytes
图11 抓取到的dns query response数据内容
dns query response 由source 172.17.211.212的port 53发回本地destination 10.225.146.226
图12 抓取到的dns query结构
图是DNS query包:Transaction ID是用来匹配请求与响应,回复包中的Transaction ID保持不变;Class :IN(0x001)表示英特网协议。
下图查询类型是A(IPV4),上图是AAAA(IPV6)
图13 A类型的dns query
4、HTTP过程分析,HTTP request与response PDU封装分析
验证http request – http response过程中的端口复用。
验证http request 请求消息报文封装。包含:
HTTP 请求方法,有GET、POST、HEAD等。
Connection 是否持久连接,close非持久,Keep-Alive为持久连接,注意HTTP的持久连接Keep-Alive与TCP的长连接keepalive是有区别的。
User-Agent包含了客户端的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎等,对于服务器针对不同设备响应不同的页面,页面重定向等有较为重要作用。
图14 抓取到的数据结构及http request
图15 抓取到的response
5、SMTP过程及PDU封装分析
TCP流可以看到有SMTP的邮件内容,验证:
SMTP使用TCP进行Email消息的可靠传输
端口:25
传输过程的三个阶段
握手 --- 消息的传输 --- 关闭
命令/响应交互模式
命令(command):ASCII文本
响应(response):状态码和语句
Email消息只能包含7位ASCII码
图16 SMTP的报文
可以看到通过新建的邮箱发出去的邮件,可以看到发送方和接收方的邮箱,同时表示服务器成功执行了客户端的命令,发生应答,通知看不到可以发生下一个命令。
6、FTP过程分析,PDU封装分析
通过FTP Server让用户能连接上一个远程计算机,但是先要获取远程计算机的IPv4地址(win+r打开运行窗口,通过在命令行中输入ipconfig即可查看电脑IPv4地址),接着在本机通过指令FTP 对应的IPv4地址即可连接FTP。
图17 连接FTP
图18 FTP报文
注意事项与解决方案:
新建账户后,如果抓取POP报文时一直抓取不到数据,而Wireshark可以正常工作,可能是没有关闭设置的SSL选项,关闭后可以正常抓取到POP报文数据