目录
一、前提
在wireshark中捕获选项,选中左下角所有接口使用混杂模式,不会校验MAC地址是否合法,可以检验非法黑客,以便于接收所有的数据信息,而关闭则是普通模式,只接收发送到本机的正确的信息,不显示无效信息。
在主机终端通过ping baidu.com 获取当前baidu ip地址信息(一般来说,大网站的ip信息会一直更换,每次都是能接收到的,距离主机最近的服务器发送的信息)
向过滤器中填入ip.addr==39.156.66.10来查找刚刚的测试ping的数据包。
通过点击每一条数据包,可以看到ping测试的报文。
二、过滤器使用
主页绿框处为手动添加过滤器的位置,也可以通过上方捕获栏/捕获过滤器设置来增删过滤器。
常见过滤器表达式规则
1、ip过滤
ip.addr==192.168.0.1,显示源ip地址或目标ip地址为192.168.0.1的数据包列表
ip.src==192.168.0.1,显示源ip地址为192.168.0.1的数据包列表
ip.dst==192.168.0.1,显示目标ip地址为192.168.0.1的数据包列表
2、协议过滤
tcp 只显示tcp数据包列表 (出现的TLS等都是在TCP协议集包含的)
udp 只显示udp数据包列表 (出现的DHCP,ICMP等都是udp协议集包含)
http 只显示http数据包列表
诸如此类的还有arp,oicq等等
3、tcp过滤
tcp.port==80,显示源主机和目标主机端口为80的数据包列表
tcp.srcport==80,显示tcp协议源主机的端口为80的数据包列表
tcp.dstport==80,显示tcp协议目标主机的端口为80的数据包列表
4、tcp标志位过滤
tcp.flags.xxx的格式
tcp.flags.syn==1 and tcp.flags.ack==0 这是一个连接请求报文段,显示满足该类型的数据包列表
tcp.flags.syn==1 and tcp.flags.ack==1 在上一类型下,对方若是同意建立连接,则响应的报文段中使SYN=1、ACK=1,所以通过该过滤器显示数据包列表
tcp.flags.fin==1 返回报文段的发送方的数据已经发送完毕,并要求释放连接的数据包列表
tcp.flags.seq==1 显示tcp握手中传输一个数据的数据包列表
5、逻辑运算符
!broadcast 不抓去广播数据包的其他列表(不知道为什么做实验带!的过滤器一直报红)
&&或and 与
||或or 或
== 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<=小于等于
三、arp(地址解析协议)
源主机知道目标ip地址,通过arp解析成MAC地址,先通过本地arp缓存寻找有无该MAC地址,若没有找到映射关系,则将询问目标主机硬件地址,并在本地网络(网关)下进行广播所有主机,所有的主机都可以接受到该广播,目标主机确定arp请求中的ip地址与自己的ip地址匹配,并将源主机ip地址和MAC地址保存在arp缓存,并将MAC地址信息发回源主机,若无相应,则放弃该arp。
由于源主机进行了网关下的广播,若此时黑客主机通过欺骗主机,且比网关接收速度快的相应,可以做到获取源主机的信息,篡改本地的MAC地址表,进行arp欺骗。ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患。
下面是通过linux虚拟机系统进行arp欺骗的代码,保证主机与目标主机均在统一网关下,且目标主机防火墙关闭。
echo "0" > /proc/sys/net/ipv4/ip_forward #关闭linux内核转发
arpspoof -i interface -t target-ip -r host-ip #target-ip填写受害者ip,host-ip填写局域网路由,运行arpspoof,受害者断网
echo "1" > /proc/sys/net/ipv4/ip_forward #打开linux内核转发,网络恢复
arp数据包中见到最多的就这种who has 192.168.0.1 ?tell 0.0.0.0这种进行arp请求,意思是源地址0.0.0.0询问目标地址192.168.0.1,要求请求。
回复是reply 192.168.0.1 is-at 0:0:c0:c2:9b:26,目标主机更新arp缓存,并将自己的MAC地址(0:0:c0:c2:9b:26)打包发送给请求方
四、ICMP(互联网控制报文协议)
icmp被封装在ip层,既不属于网络层,也不属于传输层,属于介于这两者之间的一个协议,该协议一方面用来查询,一方面用来差错诊断。在最简单的ping操作中均属于icmp协议中。
ping操作有request和reply两部分组成,而且ping的长度最大只有1472(被Y某无意发现)
五、TCP(传输控制协议)
tcp协议,使用三次握手协议建立连接,四次挥手结束连接。下图为wireshark中的握手操作。
三次握手:(1)客户端发送SYN(SEQ=x)报文给服务端,进入SYN_SEND状态。
(2)服务端接收SYN报文,回应一个SYN(SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
(3)客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
四次挥手:(1)客户端某应用进程首先调用close,执行主动关闭,发送一个FIN报文,表示数据分发完毕。
(2)服务端接收到FIN报文,并回应一个ACK报文执行被动关闭。
(3)一段时间后,服务端接收到这个文件结束符的应用进程将调用close关闭它的套接字,并发送一个FIN报文。
(4)接收这个最终FIN的客户端回应一个ACK报文确认这个FIN。
通过wireshark流量图来显示三次握手,FIN,ACK是结束以前的指令