MISC is the abbreviation of miscellaneou. It includes packets analysis, picture invisible and many other parts. This blog will summarize these concepts and problems to make it easier to remember the whole stuff.
First, I want to summarize the magic word of the pictures and executes which are useful in a lot of problems in CTF contest.
file type | start of image | end of image |
---|---|---|
JPEG | ff d8 | ff d9 |
JFIF | ff e0 | |
Exif | ff e1 |
We can use some commands to figure out the files’ real type and content:
- file xxx.png
- strings xxx.png
[Finished] Wireshark数据包分析实战:Pracitical Packet Analysis
[America] Chris Sanders
1. 数据包分析基础
1.1 数据包嗅探器工作原理:将嗅探器设置在指定的位置,收集往来的数据包,转换成可读形式,识别分析和验证协议。
1.2 OSI七层模型:
层次 | 协议 |
---|---|
应用层 | HTTP, SMTP, FTP, Telnet |
表示层 | ASCII, MPEG, JPEG, MIDI |
会话层 | NetBIOS, SAP, SDP, NWLink |
传输层 | TCP, UDP, SPX |
网络层 | IP, IPX |
数据链路层 | Ethernet, Token Ring, FDDI, AppleTalk |
物理层 |
1.3 数据封装
不同层次在数据包头部增加或去除数据块,实现封装:以太网+IP+TCP+HTTP。
1.4 网络硬件
- 集线器:半双工模式(不能同一时间接收和发送数据),会将从一个端口收到的数据包向其他每一个端口传输,高负载时效率低下。
- 交换机:向指定端口传输数据包,工作在数据链路层。
- 路由器:工作在网络层,用IP地址标识网络设备。
1.5 在交换式网络中进行嗅探
- 端口镜像:获取目标设备传输与接收的网络流量。要求:交换机提供这个功能;监听端口的流量不能小于被监听端口的流量。
- 集线器输出:通过在被监听设备上使用集线器实现监听。
- 网络分流器:在某段网线上增加网络分流器实现监听流经网线的数据。
- ARP欺骗:在局域网中发送包含虚假MAC地址的ARP消息,以劫持其他计算机流量的过程。推荐工具:
Cabin&Abel
2. Wireshark
Wireshark是目前最好用的嗅探工具之一,其主窗口分为三个部分:Packet List, Packet Details and Packet Bytes.
2.1 数据包操作
- 查找数据包:
ctrl+F
,匹配下一个:ctrl+N
,匹配上一个:ctrl+B
; - 标记数据包:
ctrl+M
,切换下一个:shift+ctrl+N
,切换上一个:shift+ctrl+B
; - 设置数据包相对时间:
Edit->Set Time Reference
2.2 过滤器
包括捕获过滤器和显示过滤器。
- 捕获过滤器语法,使用Berkeley Packet Filter(BPF):
- 与或非:
&&, ||, !
- 主机名和地址过滤器:
- host + IPv4, IPv6, 主机名;
- src/dst + host + IPv4;对源地址和目标地址进行过滤
- ether host + Mac地址;对Mac地址进行过滤
- 端口和协议过滤器:
(dst) + port + 8080
; - 协议过滤器:icmp, !ip6;
- 协议域过滤器(高级):需要对协议有深入理解
- icmp[0] == 3;过滤目标不可达(类型3)的ICMP数据包
- icmp[0:2] == 0x0301;过滤目标不可达、主机不可达(类型3代码1)的ICMP数据包
- 与或非:
- 显示数据包:
- ip.addr == 192.168.0.1;根据IP地址过滤
- frame.len<=128;过滤长度小于128字节的数据包
- 逻辑运算符:and, or, xor, not
- 查看端点:Statistics->Endpoints
- 查看网络会话:Statistics->Conversations
- 基于协议分层结构的统计数据:Statistics->Protocol Hierarchy
- 名字解析:Capture->Options
- Mac地址解析:使用ARP协议将Mac地址转化成IP地址
- 网络名字解析:IP地址转化为域名
- 传输名字解析:将端口号转化为协议名称
- 更换解析器:遇到错误识别协议的情况下使用
- 跟踪TCP流:选择数据包右键Follow TCP Stream
- 数据包长度总结:Statistics->Packet Lengths->Create Stat
- 图形展示:Statistics->IO Graphs
- 双向时间表:Statistics->TCP Stram Graph->Round Trip Time Graph
- 数据流图:Statistics -> Flow Graph
- 专家信息:对话、注意、警告、错误
3. 通用底层网络协议
3.1 地址解析协议(ARP)头包含的数据:ARP协议工作在数据链路层和网络层之间,由于其封装成帧的形式,可以看做属于数据链路层。
- 硬件类型:数据链路层使用的类型数据,一般是以太网(类型1)
- 协议类型:ARP请求正在使用的高层协议
- 硬件地址长度
- 协议地址长度
- ARP操作码:1表示请求,2表示响应
- 发送方硬件地址
- 发送方协议地址
- 目标硬件地址
- 目标协议地址
3.2 互联网协议(IP)
以太网在数据链路层能传输的最大数据包大小是1500字节,即最大传输单元Maximum Transmission Unit(MTU)。
存活时间(TTL)代表该数据包在被丢弃之前所能经历的跳数,每经过一个路由器跳数减一。ICMP ping工具以此来检测设备之间的通信情况。
- IPv4头
- 版本号:IP所使用的版本
- 首部长度:IP头的长度
- 服务类型:优先级标志位和服务类型标志位
- 总长度
- 标识符:用于识别数据包或被分片数据包的次序
- 标记:区分数据包是否是一组分片数据包
- 分片偏移
- 存活时间:剩余经过路由器跳数
- 协议:上层协议数据包类型
- 首部校验和:数据错误检测机制
- 源IP地址
- 目的IP地址
- 选项
- 数据
3.3 传输控制协议(TCP)
为数据提供可靠的端到端传输,工作在传输层,可以处理数据的顺序和错误恢复。
- TCP头
- 源端口
- 目的端口
- 序号:表示TCP片段
- 确认号
- 标记号
- URG
- ACK
- PSH
- RST:连接被异常终止或拒绝连接请求
- SYN
- FIN
- 窗口大小
- 校验和
- 紧急指针
- 选项
- TCP三次握手
- A -SYN-> B
- A <-SYN/ACK- B
- A -ACK-> B
- TCP终止
- A -FIN/ACK-> B
- A <-ACK- B
- A -FIN/ACK-> B
- A -ACK-> B
- TCP重置: RST, ACK
3.4 用户数据报协议(UDP)
工作在传输层,提供高速传输,称为“无连接协议”。
- UDP头
- 源端口
- 目标端口
- 数据包长度
- 校验和
3.5 互联网控制消息协议(ICMP):负责提供在网络上设备、服务以及路由器的可用性信息。属于网络层协议。
- ICMP头:
- 类型Type
- 代码Code
- 校验和Checksum
- 可变域Variable
3.5.1 ping工具用于发送ICMP echo请求数据包
3.5.2 路由跟踪:通过发送TTL不断自增的数据包,实现可以了解ICMP数据包发送的每一跳的节点的信息。Windows下使用tracert <IP>
命令。
4. 常见高层网络协议
4.1 动态主机配置协议(DHCP): 早起使用BOOTP(Bootstrap Protocol)协议,后来被DHCP取代,用户让设备自动获取IP地址。基于UDP协议。
- DHCP头
- 操作代码Opcode
- 硬件类型Handware Type
- 硬件长度Handware Length
- 跳数Hops
- 事务ID(Transaction ID)
- 消耗时间Seconds Elasped
- 标记Flags
- 客户端IP地址Client IP Address
- 你的IP地址
- 服务器IP地址
- 网关IP地址
- 客户端硬件地址
- 服务器主机名
- 启动文件Boot File
- 选项Options
- 续租过程
- Client -discover-> Server
- Client <-offer- Server
- Client -request-> Server
- Client <-acknowledgement- Server
4.2 域名系统DNS:将域名解析成IP地址。
- 基于UDP协议。
- 如果本地DNS服务器没有指定域名对应的IP地址,则会向外部DNS服务器递归查询。
- 区域传送(冗余备份需要)
- 完整区域传送(AXFR)
- 增量区域传送(IXFR)
4.3 超文本传输协议HTTP:万维网传输机制,用于连接Web服务器。常使用80端口。
5. 实际案例
- 利用wireshark分析门户网站的登录和发布消息的过程。
- 查看DNS流量
- 查看HTTP请求
5.1 TCP错误恢复机制
5.1.1 超时重传(RTO, Retransmission timeout):每次重传RTO翻倍,若超过最大值则放弃重传。
5.1.2 重复确认和快速重传:接收方发送3个重复ACK,代表数据包丢失,申请快速重传。
5.1.3 流控制:通过调整窗口大小控制接受的数据包大小。
5.2 网络高延迟的原因
- 线路延迟
- 客户端延迟
- 服务器延迟
- 网络基线:通过基线的帮助,比对整体流量快照
- 站点基线
- 主机基线
- 应用程序基线
6. 安全领域数据包分析
- nmap使用SYN半开扫扫描判断受害者的端口是否开放
- 通过系统扫描指纹术,判断对方机器的种类和类型
- ARP缓存中毒攻击,遭到中间人攻击
- 远程访问特洛伊木马
7. 无线网络数据包
工作在数据链路层
7.1 无线网卡模式
- 被管理模式:无线客户端正常连接无线接入点(WAP, Wireless Access Point)时的使用模式
- Ad hoc模式:通信双方共同承担WAP的指责
- 主模式:高端无线网卡成为其他主机的WAP
- 监听模式
7.2 802.11数据包结构
- 管理:包括认证、关联、信号
- 管理帧头部信息
- Timestamp
- Beacon Intercal
- Capability Information
- SSID Parameter Set
- Supported Rates
- DS Parameter
- 管理帧头部信息
- 控制:包括请求发送、准予发送
- 数据
- beacon:广播数据包,通知无线客户端存在可用WAP
在Packet List增加无线专用列:
- RSSI(for Received Signal Strength Indication):捕获数据包射频强度
- TX Rate(for Transmission Rage):捕获数据包数据率
- Frequency/Channel:捕获数据包频率和信道
无线网络安全
- WEP(Wired Equivalent Privacy):不安全
- WPA(Wi-Fi Protected Access):常用的安全协议
附录:
- tcpdump
- Scapy:基于python的数据包操纵程序
- SANS SEC 503安全入侵检测深入课程