内容简介
在网络安全领域,网络协议的安全性至关重要。随着网络环境日益复杂,漏洞的发现与防范成为关键。《攻击网络协议:协议漏洞的发现+利用+保护》从攻击者视角出发,全面且深入地剖析网络协议安全,旨在让读者更好地理解潜在风险与应对策略。
《攻击网络协议:协议漏洞的发现+利用+保护》分为10章,先梳理了网络基础以及协议流量捕获相关的知识,为后续深入学习筑牢根基,随后深入探讨静态/动态协议分析、常见协议的结构、加密和协议安全等知识,最后着重讲解寻找和利用漏洞的方法,还对常见的漏洞分类、模糊测试、调试和各种类型的耗尽攻击进行了讲解。本书还通过一个附录对常用的网络协议分析工具进行了概述。
《攻击网络协议:协议漏洞的发现+利用+保护》适合网络安全领域的专业人士(如渗透测试人员、漏洞猎人、开发人员等)阅读,也适合对网络协议安全感兴趣,想要深入学习相关知识的初学者阅读。
目录
第 1章 网络基础 1
1.1 网络架构与协议 1
1.2 互联网协议套件 2
1.3 数据封装 4
1.3.1 报头、报尾和地址 4
1.3.2 数据传输 6
1.4 网络路由 6
1.5 我的网络协议分析模型 8
1.6 总结 9
第 2章 捕获应用程序流量 11
2.1 被动网络流量捕获 11
2.2 Wireshark快速入门 12
2.3 其他的被动捕获技术 14
2.3.1 系统调用跟踪 14
2.3.2 Linux上的strace实用工具 15
2.3.3 使用DTrace监控网络连接 16
2.3.4 Windows上的Process Monitor 17
2.4 被动捕获的优缺点 19
2.5 主动网络流量捕获 19
2.6 网络代理 20
2.6.1 端口转发代理 20
2.6.2 SOCKS代理 23
2.6.3 HTTP代理 28
2.6.4 转发HTTP代理 29
2.6.5 反向HTTP代理 31
2.7 总结 34
第3章 网络协议结构 35
3.1 二进制协议结构 35
3.1.1 数值型数据 36
3.1.2 布尔值 39
3.1.3 位标志 39
3.1.4 二进制字节序 39
3.1.5 文本与人类可读的数据 40
3.1.6 可变长度的二进制数据 44
3.2 日期和时间 46
3.2.1 POSIX/UNIX时间 47
3.2.2 Windows的FILETIME 47
3.3 标记、长度、值模式 47
3.4 多路复用与分片 48
3.5 网络地址信息 49
3.6 结构化二进制格式 50
3.7 文本协议结构 51
3.7.1 数值型数据 51
3.7.2 文本布尔型 52
3.7.3 日期和时间 52
3.7.4 长度可变的数据 52
3.7.5 结构化的文本格式 53
3.8 编码二进制数据 55
3.8.1 十六进制(Hex)编码 55
3.8.2 Base64 56
3.9 总结 58
第4章 高级应用程序流量捕获 59
4.1 重路由流量 59
4.1.1 使用traceroute 60
4.1.2 路由表 61
4.2 配置路由器 62
4.2.1 在Windows上启用路由 62
4.2.2 在类UNIX系统上启用路由 63
4.3 网络地址转换 63
4.3.1 启用SNAT 64
4.3.2 在Linux上配置SNAT 65
4.3.3 启用DNAT 65
4.4 将流量转发到网关 67
4.4.1 DHCP欺骗 67
4.4.2 ARP毒化 69
4.5 总结 72
第5章 分析线上流量 73
5.1 流量生成应用程序:SuperFunkyChat 73
5.1.1 启动服务器 74
5.1.2 启动客户端 74
5.1.3 客户端之间的通信 75
5.2 Wireshark分析速成课 75
5.2.1 生成网络流量并捕获数据包 76
5.2.2 基础分析 78
5.2.3 读取TCP会话中的内容 79
5.3 使用Hex Dump(十六进制转储)识别数据包结构 80
5.3.1 观察单个数据包 80
5.3.2 确定协议结构 81
5.3.3 检验我们的假设 83
5.3.4 使用Python剖析协议 84
5.4 使用Lua开发Wireshark解析器 89
5.4.1 创建剖析器 91
5.4.2 Lua剖析 93
5.4.3 解析消息数据包 94
5.5 使用代理来主动分析流量 96
5.5.1 设置代理 97
5.5.2 使用代理进行协议分析 99
5.5.3 添加基本的协议解析 100
5.5.4 修改协议行为 102
5.6 总结 103
第6章 应用程序逆向工程 105
6.1 编译器、解释器和汇编程序 106
6.1.1 解释型语言 106
6.1.2 编译型语言 106
6.1.3 静态链接与动态链接的对比 107
6.2 x86架构 108
6.2.1 指令集架构 108
6.2.2 CPU寄存器 109
6.2.3 程序流 111
6.3 操作系统基础 112
6.3.1 可执行文件格式 112
6.3.2 段(节) 113
6.3.3 进程与线程 113
6.3.4 操作系统网络接口 114
6.3.5 应用程序二进制接口(ABI) 116
6.4 静态逆向工程 117
6.4.1 IDA Pro免费版本的快速入门 118
6.4.2 分析栈变量与参数 120
6.4.3