一、数据包分析技术与网络技术
网卡设置混杂模式:在这种模式下,网卡将抓取一个网段上的所有网络通信流量,而不仅是发往它的数据包。
协议:帮助异构系统之间进行相互通信的一套共同网络“语言“
协议栈:由一组协同工作网络协议的逻辑组合而成
协议所解决的问题(?)——类似人类的信息交流需求
七层OSI参考模型:应用层(数据)->表示层(数据)->会话层(数据)->传输层(数据段)>网络层(数据包)->数据链路层(数据帧)->物理层(比特流)
TCP/IP协议栈:在OSI模型里去除表示层和会话层
集线器:若为4口的集线器同时连接四个计算机,计算机A发送数据给计算机B,该数据会同时传给B、C、D,C、D计算机检查MAC地址判断该数据包不是发给他们的,在高密度的实际网络中容易造成资源的浪费。
交换机:与集线器不同,并不是将数据广播到每一个端口,而是将数据发送到目的计算机所连接的端口上。(通过用CAM内容寻址寄存器存储每个设备的MAC地址)
广播地址:一般为一个IP网络范围中最大的IP地址
二、监听网络线路
混杂模式的进一步理解:对于一些数据包,网络设备上的网卡驱动一般都会识别出数据包的目的地址是否为本机地址,若不是则丢弃,不会进一步传递给CPU进行处理。这样的做法可以显著地去提高网络的整体性能,但不利于对线路上传输的网络流量进行分析。而将网卡设置为混杂模式,则可以打破这一默认的规则,会捕获所有的网络流量,并传递给主机的处理器进行处理,这样一来,所有的网络流量便可被一个数据包嗅探软件捕获并进行分析。
在交换式网络中进行嗅探
这是比较常见的一种组网方式,便是利用交换机连接各个设备。但是利用交换机去连接各个设备的缺陷也比较明显(对于数据分析师来说):各个设备只能够接收到发送给本机的数据包和广播包。所以在这种场景下,如何从一个目标设备上捕获该网络范围中的所有流量呢?
四种方法:端口镜像、集线器接出、使用网络分流器、ARP缓存污染攻击
(1)端口镜像
例如:四个口的交换机,为了捕获交换机3号端口连接的一台设备发出的所有流量,只需要简单地将嗅探分析器接入4号端口,然后利用命令将3号端口镜像复制到4号端口,便可以看到经过目标设备的所有网络流量了。
对于绝大多数的交换机,都提供了设置端口镜像的命令
思科:set span <source port> <destination port>
凯创:set port mirroring create < source port> <destination port>
北电:port-mirroring mode mirror-port <source port> monitor-port <destination port>
但是在进行端口镜像操作时,需注意端口的负载承受能力,譬如有一个24端口交换机,将23个全双工的100Mbps的流量都镜像到一个端口上,那么这个端口上可能会有4600Mbps的流量,这将远远超过一个单独端口的物理承受能力,造成的结果必然就是数据包丢失、网络速度变慢,甚至严重点,交换机直接罢工。
(2)集线器输出
在交换机不支持端口镜像这种方式的时候,集线器输出似乎是个比较完美的方案。具体做法就是将你的目标设备从交换机的口中拔出,然后连到你的集线器上,然后将你的嗅探分析器也接到集线器上,最后将集线器连接一根网线到交换机上,即将集线器连接到目标网络。
这个方案其实同时也告诉我们,如何在一堆设备中分辨哪个设备是集线器,具体做法便是将两个设备接入到集线器上,然后观察是否能够嗅探到对方与网络中其他设备之间的网络通信。
(3)使用网络分流器
网络分流器是一个硬件设备,这个设备专门为网络分析而设计。网路分流器分为2个基本类型:聚合的和非聚合的。如果同时有一个网络分流器和集线器去做网络流量的嗅探分析的话,选网络分流器性价比更高。两种基本类型的网络分流器如下:
聚合型
非聚合型
非聚合型比起聚合型跟灵活一点,如图有两根线连接分流器和嗅探器,目的是为了用一个监听端口嗅探流出方向的网络流量,另一个监听端口嗅探流入方向的网络流量。
(4)ARP缓存污染
类似于中间人攻击的影子,又有一点dos攻击的味道。
传送门:https://www.grc.com/nat/arp.htm
ARP缓存已经不仅仅是嗅探了,其实是拦截目标计算机的流量,传输到嗅探器所在的计算机。
相关利用工具:Cain & Abel
网络监听方案确定流程
网络监听方法确定流程三、Wireshark使用明细回顾
过滤语法:protocol.feature.subfeature
例1:创建一个只显示192.168.0.103这个IP地址相关(src+dst)数据包的过滤器:
ip.addr == 192.168.0.103
image.png
例2:查看长度小于等于80字节的数据包:
frame.len <= 80
image.png
例3:查看两个IP地址相关的数据包
ip.addr == 192.168.0.1 or ip.addr == 192.168.0.2
image.png
比较操作符:==(等于)、!=(不等于)、>(大于)、>=(大于等于)
逻辑操作符:and(同时两个条件满足)、or(其中一个条件被满足)、xor(有且仅有一个条件被满足)、not(没有条件被满足)
常用过滤器表达式实例:
!tcp.port == 3389 ------排除RDP流量
tcp.flags.syn ==1 ------具有SYN标志位的TCP数据包
tcp.flags.rst ==1 ------具有RST标志位的TCP数据包
!arp ------排除arp流量
http ------所以HTTP流量
tcp.port == 23 || tcp.port == 21 ------文本管理流量(Telnet或FTP)
smtp || pop || imap -------文本email流量
四、tcpdump使用
在linux或unix操作系统里,大多数还是会使用tcpdump来进行抓包。
tcpdump语法参考:
tcpdump -i eth0 从eth0网卡里捕获流量
tcpdump -i eth0 -w packets.pcap 从eth0网卡里捕获流量并且保存到packets.pcap文件中
tcpdump -r packets.pcap 读取packets.pcap并在终端显示出来
tcpdump -r packets.pcap -c 10 只在终端上显示捕获文件中最开始的10个包
tcpdump -r packets.pcap 'tcp dst port 80' -w http_packets.pcap 捕获目的端口号是80的TCP流量并保存到另一个文件中去
五、利用wireshark解决分析并解决具体的网络问题
书上的几个常见场景掌握。
网友评论