type
Post
status
Published
date
Apr 1, 2021
slug
2021/wireshark
summary
wireshark入门:
https://www.bilibili.com/video/BV1X5411x7R4
他这里顺序有点误,应该是 P1-P26,P32-P39,P27-P31
tags
流量分析
Wireshark
MISC
category
学习总结
icon
password
wireshark入门:
他这里顺序有点误,应该是 P1-P26,P32-P39,P27-P31

Wireshark 入门
伯克利包过滤 - Wireshark包过滤
BPF(Berkeley Packet Filter) 采用与自然语言相近的语法,利用语法构造字符串确定保留具体符合规则的数据包而忽略其他数据包
最简单语法空白字符,任何数据包都符合空白字符规则
语法规则
- type表示对象 如 IP地址、子网或端口 -> host、net、port
- dir 表示数据包传输的方向 -> src、dst
- proto 表示与数据包匹配的协议类型 -> ether、ip、tcp、arp
演示实例

会发现直接在 Apply a display filter 里输入是无法过滤的,

新版的 wireshark 的 expression 功能在如下图所示这里


在 wireshark 里,不是直接使用 host 来表示主机名和对应的 ip 地址,而是使用
ip.addr = <ip>
来表示

其他也是类似,如
ip.src
和 ip.dst
在找服务这一块,服务都是以占用端口的形式展示的,因此可以通过这种形式来看怎么用,然后点OK即可。


也可以使用 逻辑运算符实现筛选,如
tcp.port == 80 and ip.src == 192.168.123.37

当然也有类似补全的操作

wireshark包过滤器分类 - 遵循伯克利语法规则
捕获过滤器 -> 在抓包之前进行设置,在抓取时,就不会抓取不符合文件的数据包
- 只捕获目标端口为80的TCP数据包 -> tcp dst port 80

- 捕获目的主机IP地址为 192.168.123.37 的数据包 -> dst host 192.168.123.37

- host 不支持 cidr 域名 书写
筛选过滤器 (显示过滤器)-> 抓包之后进行应用的,即再次筛选
然后显示过滤器有两种创建方式
- 输入框创建

当不知道如何创建就看下图这里


- 数据包细节面板创建

... and Selected
表示 目前的过滤器 + and 进行连接

一开始是只有
Selected
和 Not Selected
的- 表达式规则
- 主题 + 运算符 + 值
- 逻辑关系 与 或 非 -> and (&&) or (||) not (!)
Wireshark 捕获数据包文件保存


杂项设置
wireshark 数据包颜色的意思
可以通过 视图 -> 着色规则进行查看


wireshark 故障包过滤

有5个等级
- Error 严重错误,譬如:畸形数据包或识别出数据包协议头部的某些字段和预期值不符
- Warning 一般性问题(应用程序问题或通信问题),譬如:TCP zero window ,TCP window full ,TCP报文段失序,TCP报文段丢失
- Note 可能引发故障的异常现象(正常行为),譬如:TCP重传,重复确认,快速重传
- Chat 符合常规流量的特征,譬如:SYN,FIN,RST
- Comment
- OK
_ws.expert.severity <= Note 或者 _ws.expert.severity <= Chat
查看wireshark 内置文件路径

修改wireshark默认配置

Wireshark 网络分析

# Wireshark 部署方式
远程数据包捕获
方式1:
开启远程桌面,rdp服务,在系统中安装wireshark进行抓包分析
缺点: 在于远程登录过程中,都会产生无关与目的远程连接数据流量
方式2: wireshark 远程抓包
windows
服务端: winpcap -> rpcapd
cd "C:\Program Files (x86)\WinPcap\" .\rpcapd.exe -n
客户端: wireshark


linux
macos
注意 macos 版本没有直接抓取数据包的功能,可参考
https://distanceblog.github.io/2020/06/05/wireshark%E8%BF%9C%E7%A8%8B%E6%8A%93%E5%8C%85/
本地数据包捕获
wireshark 不能抓取本地环回网卡数据包
不过可以使用 RawCap
https://www.netresec.com/?page=RawCap
# cmd RawCap.exe

然后浏览器访问 localhost
不过可以通过访问本机 ip 代替 localhost 间接捉取数据包(狗头
虚拟机数据包捕获
选择对应网卡即可。。。
比如在 kali 上运行
sudo netdiscover -r 192.168.18.1/24

哈哈哈哈,原来arp广播还真就这么直白,,Who has ....? Tell ...(netdiscover 还真直白
ARP欺骗捕获数据包
攻击原则
- 任何主机均能发送伪造包给局域网中的另一主机;
- 任一主机相信它们接受到的所有包;
- 当一个新的响应包到达时,它甚至在没有请求包被发送的情况下覆盖掉旧的记录。
实践
kali 一般要先安装
sudo apt install dsniff
kali 上运行
sudo arpspoof -i eth0 -t <欺骗的目标> <我是谁> # 如 sudo arpspoof -i eth0 -t 192.168.123.37 192.168.123.1

然后此时在
192.168.123.37
这台机器上wireshark 选择网卡 eth0,因为是欺骗这一张网卡,wireshark 筛选过滤器填入 icmp
查看# 然后在 192.168.123.37 上 ping 网关 ping 192.168.123.1

会发现 192.168.123.1 的 mac 地址是 kali的。。。

所以在
192.168.123.37
上是上不了网的,除非kali上开启了数据包转发,当 ip_forward
为 0 时,欺骗的目标
上不了网,当该值为 1
时,会把192.168.123.37
发送的数据包做转发给网关,就可以正常上网,但是192.168.123.37
的数据包都会经过 kali。
Wireshark 网络安全
链路层安全
针对于交换机的安全问题
MAC对称欺骗 —— macchange
擦除只是暂时的,不是覆盖原来的mac地址,机器重启后就会恢复。
通过MAC地址欺骗达到隐藏真实主机的目的
-e 改变的是后三字节,即不改变生产厂商 -a 同一类型的随机供应商地址 ( macchanger --list=Huawei 就是同一类型 ) -A 随机厂商随机地址 -p 永久修改 -r 完全随机 -l 查看支持的厂商 -b -m
设置前需要关闭网卡
sudo ifconfig eth0 down # -m 不能自己完全随意起,如果前三字节不符合 mac 地址命名规范会报错 # [ERROR] Could not change MAC: interface up or insufficient permissions: Cannot assign requested address sudo macchanger -m 00:90:d1:33:33:33 eth0 sudo ifconfig eth0 up

随机化设置
sudo macchanger -r eth0
MAC地址泛洪分析 —— 溢出交换机CAM表
交换机之所以可以交换数据,是因为交换机在内存中维护着一张CAM表,即 端口 <-> MAC地址
当表被添满时,其他主机就无法在对应的端口正常交互数据
sudo macof -h # -x 源端口 -y 目的端口 # 泛洪 sudo macof -i eth0
wireshark 抓包分析

因为实际中,主要数据包类型是 tcp 或 udp
下面只有 ip 数据包,因此很可能有问题(当然有问题,哈哈


很多无关的 ip 以及 mac地址,数据包很小


查找源头端口
交换机
display mac-address
找到对应的端口

防御策略
限制交换机端口 MAC 地址数量,比如这个端口只能有3或5个,那他就只能添加3或5跳记录到CAM表,那么就无法溢出啦。
STP操纵
生成树协议按照树的结构构造网络拓扑,避免形成回路。STP协议中的各交换机通过交换BPDU报文信息传播生成树信息,如果伪造BPDU报文,控制交换机的端口转发状态,从而动态改变网络拓扑,劫持网络流量到本地。
广播风暴
ARP DHCP 通过在局域网中广播,占用网络资源,网络性能下降 -> 网络速度变慢
产生原因
- 网络短路引发广播风暴 -> 8根连接 两两连接 -> 互联网上网线导致网络性能下降
- 网络中存在环路引发广播风暴
- 网卡损坏引发广播风暴
- 蠕虫病毒引发广播风暴
网络层安全
中间人安全测试 - 欺骗
ARP协议
- 局域网内用来寻找主机发送数据包的协议,通过它可以找到指定 IP 地址对应的 MAC地址
- 每台终端设备都具有ARP缓存表
arp -a
查看缓存表arp -d
删除缓存表- 表的填充,寻找 IP 地址对应MAC地址,如果没有则广播此时设置的目标MAC地址为 (00:00:00:00:00:00) 是否具有IP地址对应的MAC地址,找到填充。
ARP协议分析介绍
显示过滤器
- arp
- 请求数据包
- arp.opcode == 0x0001
- 响应数据包
- arp.opcode == 0x0002
- 查看源 MAC 地址
- arp.src.hw_mac == 00:00:00:00:00:00
- arp.src.hw_mac == 00:00:00:00:00:00 && arp.opcode == 0x0002
专家系统分析
网关地址与局域网中的计算机具有一致的MAC地址

出现大量ARP数据包的原因
- ARP主机扫描
- ARP病毒进行通信
- ARP欺骗 中间人安全测试
防御ARP欺骗措施
- 静态绑定ARP表
- arp -s 网关的IP地址 网关的MAC地址
- 不适合大型网络使用
- 需要管理员权限
- win
netsh i i show in
-> 查看网卡编号 - win
netsh -c "i i" add neighbors <网卡编号> <网关IP地址> <网关MAC地址>

- 验证是否静态绑定 `arp -a`
- 交换机也有端口安全配置,固定MAC和IP使用端口
- 不适合大型网络使用
- 交换机 DHCP-Snooping
- 交换机监听DHCP数据,提取IP和MAC建立DHCP Snooping的绑定表
- 划分VLAN
- 每一个VLAN就是一个广播域 -> 限制网络范围
泪滴安全测试
原理介绍
- 针对于IP协议的安全测试,主要是伪造IP地址和发送畸形数据包
- 向目标发送畸形数据包,使得IP数据包碎片在重组的过程中有重合的部分(偏移位置不够),从而导致目标系统无法进行重组,进一步导致系统奔溃而停止服务。
根据数据包表示 Identification 来确实是否属于同一分组

分析 第8和第9个数据包

偏移量仅为 24,远不够36。

因此无法重组
不过对现在的计算机来说,泪滴测试不会对计算机造成很大的影响,所以基本不关心泪滴安全测试了。不够泪滴测试和ARP泛洪结合,还是能对计算机造成很大的困扰。
传输层安全
传输层主要针对TCP和UDP协议,因此拒绝服务DOS(Denial of Service)也主要是基于这两个协议
TCP SYN 泛洪
TCP连接介绍
- 客户端发送SYN到服务器
- 服务器响应 SYN+ACK 到客户机
- 客户机发送ACK到服务器
使用 wireshark 分析 TCP 三次握手数据包

TCP SYN flooding 安全测试
原理
- 客户端发送syn服务端返回syn+ack,如果客户端不再发送ack,那么服务端将等待超时,重新发送syn+ack。如果是大量的等待,就可能导致服务器奔溃。
案例演示
hping3 -q -n --rand-source -S -p 80 --flood <目标IP地址>
- q: 安静模式
- n: 数字化输出,象征性输出主机地址
- -rand-source: 随机源IP
- S: 发送SYN数据包
- p: 指向端口
- -flood: 使用泛洪
为了便于分析。打开 Statistics -> Flow Graph

先选择流类型为TCP

发现客户端发送syn服务端返回syn+ack,但客户端不再发送ack,导致资源消耗。
TCP SYN flooding安全防御
- 丢弃第一个SYN数据包 -> 用户体验差
- 反向探测 -> 向源地址方向发送探测包,确定源地址合法性
- 代理模式 -> 防火墙代理 -> 即先与防火墙建立tcp连接
UDP 泛洪
非连接状态的协议,简洁协议,控制选项少,不可靠,传输速率高,适合大文件传输
UDP协议关键点
- 源端口
- 目的端口
- UDP报文长度
- 检验码

UDP flooding 安全测试
原理: 测试人员向目标发送大量巨大的UDP数据包,就会使网络资源被耗尽
sudo hping3 -q -n -a <fake_ip> --udp -s 53 -p <dst_port> --flood <target_ip> -d 1000
- a: 伪造的 ip -s: 53端口

UDP flooding 安全防御
防火墙
- 限流: 将链路中的UDP报文控制在合理的范围,当超过指定值,则丢弃UDP报文
- 指纹学习: 先学习,在匹配
网络取证简析
wireshark 恢复传输文件
无论使用何种应用层协议,对于传输层来说都是TCP或UDP协议,来恢复一下wireshark官网提供的文件
https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=view&target=http_with_jpegs.cap.gzhttp_with_jpegs.cap.gz
首先在显示过滤器中筛选具有jpeg内容的数据包:
http contains "jpeg"

选第一个,追踪tcp流


最后点一下 Save as... 保存为 xxx.bin 就好,然后用16进制编辑器打开,JPEG的文件开始字节为
FF D8
,文件结束字节为 FF D9

然后把其余没用的都删除掉,这里因为结束符号就是最后了,因此把上图
FF D8
之前的都删除掉就好了。

成功恢复。
取证实践案例
https://forensicscontest.com/2009/09/25/puzzle-1-anns-bad-aim
好像没了。。。然后在Github找了个: https://github.com/aarud/Pcaps/blob/master/evidence01.pcap
1.寻找Ann的通信好友名称
根据题目名称提示 aim 通信,wireshark 自带 aim 解密

这三项依次改为

然后查看数据包,发现通信好友名称是 Sec558user1

2. 通信过程中的第一条信息内容是什么

3. Ann 通信过程中传输的文件名字
显示过滤器输入
data
,然后追踪tcp流

文件名字

4. 还原Ann发送文件并得出文件幻数(magic number)
文件幻数介绍: https://baike.baidu.com/item/magic%20number
说直白点就是以 zip 之父的首字母PK来命名,对应的16进制是
50 4B 03 04
50(P)4B(K)03(文本结束)04(传输结束),组合起来就是压缩包的标识开头。
那为啥word文档的文件开头是这个,把word文档后缀改为.zip
试试,这是微软2006年公布的OOXML规范。显示过滤器输入
data
,然后追踪tcp流
另存为,
xxx.bin
,用16进制编辑器打开xxx.bin



5. 查看文件md5值

应用层网络安全
暴力破解分析
分析使用 medusa 破解 ssh 登录

后门分析
某些软件具有其他的目的 -> 设置隐藏后门
这里针对vsftpd 2.3.4 后门
帐号密码不要紧,有
:)
笑脸就行,因此这个后门也被称为笑脸后门,2333