一、TCP/IP协议簇
- 网络接口层(没有特定的协议)
- 物理层:PPPOE宽带拨号(应用场景:宽带拨号,运营商切网过来没有固定IP就需要拨号,家庭带宽一般都采用的是拨号方式)
- 数据链路层
- 网络层:IP(v4/v6) ARP(地址解析协议) RARP 、ICMP(internet控制报文协议) IGMP
- 传输层:TCP(传输控制协议) UDP(用户数据报协议)
- 应用层:基于传输层协议的端口,总共0-65535 固定协议端口号0-1023 http-80,https-443
- DHCP
- DNS
- HTTP
- HTTPS
- FTP
- SMTP
- POP3
- IMAP
- 流量抓取工具(winshark)
二、winshark工具简介
1、混杂 and 非混杂
winshark是对主机网卡上的数据流量进行抓取,可以对网卡进行混杂模式和非混杂模式的抓包。
- 混杂模式:不管目的是否是自己,都接收。
数据镜像:主机A正常与主机B通信,做数据镜像端口,将F0/0接口镜像到F0/2接口,如果主机C开启混杂模式,就能抓取澳主机A发往主机B的链路流量,反之如果主机C是非混杂模式就会将丢弃该数据。 - 非混杂模式:默认情况下,主机的网卡处于此模式,不会接收目的非自己的数据
2、winshark软件界面介绍
(1)菜单栏
(2)网卡
winshark可以检测到本地的所有网卡
(3)混杂模式
在菜单栏-捕获->选项进入可以设置混杂模式,默认是开启的。
3、抓取数据
(1)流量
- No 抓取报文的序号
- time:时间,抓取这个流量耗费的时间
- Source:源IP地址
- Destination:目标IP地址
- Protocol:协议
- length:数据报文的长度
- Info:简要信息
(2)数据包
看报文详细内容,通过TCP/IP 五层来展现的。
- Frame56:物理层封装的信息(很少去看)
- Ethernet II :二层封装信息 源MAC 目的MAC Type,下面会显示十六进制的消息
- Internet Protocol version 4:网络层数据
- User Datagram protocol:传输层数据
- Domain Name System(response):应用层数据
(3)追踪流(用的比较多)
追踪流:
Wireshark的跟踪数据流功能可以将捕获的数据包排好顺序使之容易查看,右键捕获的数据包并选择追踪流,假设选择HTTP流,HTTP流就会在一个单独的窗口中显示。
我们可以注意到窗口中的文字以两种颜色显示,红色用来标明从源地址前往目标地址的流量,而蓝色用来区分从目标地址到源地址的流量。以访问www.xiaodi8.com为例。
其中黑底红字的报文是错误报文,根据winshark菜单栏视图->着色规则可知,是Bad TCP
(4)自定义显示的列
我们想快速看报文的某些字段信息,就可以设置应用为列。例如想看报文的Type类型,可以直接右击Ethernet II里面的Type,选择应用为列。
(5)自定义Time列
菜单栏视图->日期时间格式下有很多显示时间的格式,我们可以根据场景来选择显示时间的格式。例如当我们发现某个报文有问题时,可以设置时间格式为日期和时间从而追溯到这个报文是在哪个时间点发的。
- 日期和时间
- 自从上一显示分组经过的秒数
- 自捕获开始经过的秒数:
- 设置参考时间
针对某一个报文也可以设置参考时间,选中报文,右击,设置/取消设置时间参考,下面报文Time显示的就是针对上面报文的间隔时间。
(6)、名称解析
默认显示Source和Destination都是IP地址的方式,可以设置成名称的显示方式
可以看到MAC地址默认是做了名称解析的,一个MAC地址前24位由厂商来代替,后面24位是厂商的序列号。
勾选网络地址和端口的名称显示后,抓包数据信息就会显示域名和端口,443就直接解析成了https
4、过滤器
(1)两种过滤器
- 捕获过滤器:在抓包之前先进行过滤(只抓取某种类型的数据包)
- 显示过滤器:抓包前抓包后都可以进行过滤,但是不会影响抓取的包
(2)过滤器语法
A 捕获过滤器语法
- 类型:host net port
- 方向:src dst
- 协议:ether ip tcp udp http ftp……
- 逻辑运算:&&与、 || 或 、!非
- 举个栗子:
- 抓取源地址是本机且目的端口是80的数据流量
src host 192.168.2.16 && dst port 80
- 抓取IP地址为192.168.2.16 或者192.168.2.1
host 192.168.2.16 || 192.168.2.1
- 不抓广播报文
! broadcast
- 抓取源IP为192.168.2.16或者192.168.2.0/24,目的TCP端口号在200到10000之间,并且目的位于47.0.0.0/8的数据流量。
(src host 192.168.2.16 || src net 192.168.18.0/24) && (dst portrange 200-10000 && dst net 47.0.0.0/8)
- 抓取源地址是本机且目的端口是80的数据流量
B 显示过滤器语法
- 比较操作符:== (eq) !=(neq) >大于(gt) <小于(lt) >=大于等于(ge) <=小于等于(le)
- IP地址过滤:ip.addr ip.host ip.dst
- 端口过滤:tcp.port udp.port tcp.dstport tcp.flag.syn tcp.flag.ack
- 协议过滤:arp ip icmp udp tcp http
- 举个栗子
- 显示源IP为192.168.2.16并且tcp端口为443
ip.src ==192.168.2.16 and tcp.port==443
- 显示源不为192.168.2.16或者目的不为47.75.212.155的
ip.src!=192.168.2.16 or ip.dst!=47.75.212.155
- 显示源IP为192.168.2.16并且tcp端口为443
三、案例
1、实验要求
开启winshark抓包,抓取所有的报文
过滤DNS的报文,找到对应的域名解析报文
根据DNS返回的IP地址,找到主机与服务器的TCP交互过程
找到客户机请求服务器的HTTP报文, 追踪HTTP流情况
2、实验过程
(1)关掉已打开的网页
(2)刷新DNS缓存
(3)精确查找
过滤DNS,Ctrl+N,输入域名精确查找
(4)定位请求/响应报文
(5)找目标IP地址
响应报文Answer中会显示目标IP地址为47.75.212.155
(6)追踪流分析
如果访问的是https的网站,报文中protocol字段就是TLS,追踪流追踪到的就是加密的内容,看不到网页响应源码。