0x01 协议分析基础
网络安全领域的“基本功”:一切高级攻击(漏洞利用、DDoS、渗透等)都体现为网络流量的异常。
核心价值:
- 故障排查 : 定位网络延迟、丢包、无法连接等问题。
- 性能优化 : 分析应用性能瓶颈。
- 安全防御 : 检测恶意软件、入侵行为、数据泄露等。
- 逆向工程 : 分析未知协议或应用程序的通信机制。
回顾协议栈
相同点
- 两者都是以协议栈的概念为基础。
- 协议栈中的协议彼此相互独立。
- 下层为上层提供服务。
不同点
- 层次数量不同。
- OSI是一个理论模型,TCP/IP则应用于实际当中。
- OSI定义每一层做什么,但对具体如何实现不做规定,TCP/IP不仅要定义每一层的功能,还必须考虑如何实现该功能。
数据封装
(Data Encapsulation
),笼统地讲,就是把业务数据映射到某个封装协议的净荷中,然后填充对应协议的包头,形成封装协议的数据包,并完成适配。
解封装
,就是封装的逆过程,拆解协议包,处理包头中的信息,取出净荷中的业务信息
数据封装和解封装是一对逆过程
。
0x02 协议分析工具
Wireshark
Tcpdump
Microsoft Network Monitor
Sniffer
- 科来网络分析系统
通常使用Wireshark
软件
wireshark
是非常流行的网络封包分析软件,功能十分强大。- 可以截取各种网络封包,显示网络封包的详细信息。
wireshark
是开源软件,并且可以运行在Windows
、Linux
和Mac OS
上。wireshark
只能查看封包,而不能修改封包的内容,或者发送封包。
下载直接去官网下载安装即可。https://www.wireshark.org/#download
安装过程挺简单的,只有这一步需要注意下,选择是使用WinPcap
还是Npcap
作为底层的封包库。
WinPcap
和Npcap
都是Windows
系统上的数据包捕获库,它们是Wireshark
等网络分析工具能够从网卡抓取原始数据的底层驱动和API
。你可以把它们理解为Wireshark
的“引擎”。
虽然Npcap
很好,但是我还是选择使用WinPcap
其余的都默认安装就可以了
0x03 Wireshark功能
常用基本功能的使用
这里用张老图来进行标识 ,这么多版本下来UI
功能界面一直也没什么太大变化,看看就能明白什么意思,这里就不详细写了,找个视频看看会更加直观和高效。
捕获过滤器
- 捕获过滤器配置于抓包之前:一经应用,
Wireshark
将只会抓取经过捕获过滤器过滤的数据(包或数据帧),其余数据均不抓取。 - 显示过滤器配置于抓包之后:
Wireshark
先抓所有数据,Wireshark
应用显示过滤器后, 只显示筛选的数据。 - 两种过滤器的配置语法并不相同。
- 抓包过滤器的配置语法派生自
libpcap/WinPcap
库中tcpdump
的语法 - 显示过滤器的配置语法则在若干年后定义
- 抓包过滤器的配置语法派生自
捕获过滤器表达式范例:
iax2 dst 61.154.152.13 4569 and src 192.168.2.111
Protocol(协议):
可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp。如果没有特别指明是什么协议,则默认使用所有支持的协议
Direction(方向):
可能的值: src, dst, src and dst, src or dst。如果没有特别指明来源或目的地,则默认使用 “src or dst” 作为关键字。
Host(s):
可能的值:net, port, host, portrange。如果没有指定此值,则默认使用“host”关键字。
Logical Operations(逻辑运算): 可能的值:not, and, or。否(“not”)具有最高优先级,或(“or”)和与(“and”)具有相同的优先级,运算时从左至右进行。
- “not tcp port 3128 and tcp port 23”与”(not tcp port 3128) and tcp port 23”相同。
- “not tcp port 3128 and tcp port 23”与”not (tcp port 3128 and tcp port 23)”不同。
比如这样就只能抓取10.1.1.88
为源IP
地址的数据包了,这个通常用于工作环境下,流量非常大的时候进行筛选数据,学习的时候其实是用的比较少的,还是使用显示过滤器会更加多一点。
显示过滤器
显示过滤器表达式写法规则
常用显示过滤器表达式写法
没啥说的,挺简单,后面慢慢更新单个协议。