新書推薦:

《
你想活出怎样的人生:摆渡船上的人生哲学
》
售價:HK$
65.9

《
中国历代户口、田地、田赋统计——梁方仲著作集
》
售價:HK$
148.5

《
反乌合之众——跳出羊群,逆向获利
》
售價:HK$
76.8

《
帝国作为装饰品:英国人眼中的大英帝国(帝国与国际法译丛)
》
售價:HK$
86.9

《
煤气灯效应:识别并摆脱情感操控
》
售價:HK$
86.9

《
AI芯片应用开发实践:深度学习算法与芯片设计
》
售價:HK$
75.9

《
世界之中(文明三部曲之后,亚洲图书奖得主张笑宇充满想象力的重磅新作)
》
售價:HK$
86.9

《
柏拉图《美诺》疏证
》
售價:HK$
96.8
|
編輯推薦: |
1.Google漏洞猎手亲授:从协议逆向到漏洞攻防的「上帝视角」,通过“动态逆向工程”和“内存耗尽攻击”还原真实漏洞利用链,破解传统防御视角盲区。
2.工业级攻防手册:从流量捕获到Shellcode编写的全链路指南。
3.加密协议深度击穿:TLS/SSH/RSA的「致命七寸」剖析。
4.漏洞全景图谱:系统化分类9大类漏洞(内存损坏/拒绝服务/权限绕过等),结合“格式化字符串漏洞”和“算法复杂度耗尽攻击”等前沿案例,构建漏洞预测模型。
5.双面防御指南:不仅讲解攻击技术(如栈溢出利用/任意内存写入),更深度解析DEP、ASLR、内存金丝雀等防护机制的突破与加固策略。
|
內容簡介: |
在网络安全领域,网络协议的安全性至关重要。随着网络环境日益复杂,漏洞的发现与防范成为关键。《攻击网络协议:协议漏洞的发现 利用 保护》从攻击者视角出发,全面且深入地剖析网络协议安全,旨在让读者更好地理解潜在风险与应对策略。
《攻击网络协议:协议漏洞的发现 利用 保护》分为10章,先梳理了网络基础以及协议流量捕获相关的知识,为后续深入学习筑牢根基,随后深入探讨静态/动态协议分析、常见协议的结构、加密和协议安全等知识,最后着重讲解寻找和利用漏洞的方法,还对常见的漏洞分类、模糊测试、调试和各种类型的耗尽攻击进行了讲解。本书还通过一个附录对常用的网络协议分析工具进行了概述。
《攻击网络协议:协议漏洞的发现 利用 保护》适合网络安全领域的专业人士(如渗透测试人员、漏洞猎人、开发人员等)阅读,也适合对网络协议安全感兴趣,想要深入学习相关知识的初学者阅读。
|
關於作者: |
James Forshaw,就职于Google Project Zero,是一位非常有名的计算机安全研究员,在分析与利用应用程序网络协议方面拥有十余年的经验。他的技能涵盖了从破解游戏机到揭露操作系统(尤其是微软Windows)中复杂的设计问题等多个方面,而且还因为发现了Windows 8.1的漏洞而赢得了10万美元的顶级漏洞奖金,这使他在微软安全响应中心(MSRC)发布的榜单上一跃成为排名第一的研究员。他凭借多年的经验开发出了网络协议分析工具Canape。他还曾受邀在BlackHat、CanSecWest和Chaos Computer Congress等全球安全会议上展示自己新颖的安全研究成果。
|
目錄:
|
第 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 识别关键功能 121
6.5 动态逆向工程 126
6.5.1 设置断点 126
6.5.2 调试器窗口 126
6.5.3 在哪里设置断点 128
6.6 托管语言的逆向工程 128
6.6.1 .NET应用程序 128
6.6.2 使用ILSpy 129
6.6.3 Java应用程序 132
6.6.4 处理代码混淆问题 133
6.7 总结 134
第7章 网络协议安全 135
7.1 加密算法 136
7.1.1 替换密码 136
7.1.2 异或加密 137
7.2 随机数生成器 138
7.3 对称密钥加密学 139
7.3.1 块密码 139
7.3.2 块密码模式 142
7.3.3 块密码填充 144
7.3.4 填充预言机攻击 145
7.3.5 流密码 147
7.4 非对称密钥加密学 148
7.4.1 RSA算法 149
7.4.2 RSA填充 150
7.4.3 Diffie-Hellman密钥交换 151
7.5 签名算法 152
7.5.1 加密哈希算法 152
7.5.2 非对称签名算法 153
7.5.3 消息认证码 154
7.6 公钥基础设施 156
7.6.1 X.509证书 157
7.6.2 验证证书链 158
7.7 案例研究:传输层安全 159
7.7.1 TLS握手 159
7.7.2 初始化协商 160
7.7.3 端点身份验证 161
7.7.4 建立加密机制 162
7.7.5 满足安全要求 162
7.8 总结 164
第8章 实现网络协议 165
8.1 重放已捕获的网络流量 165
8.1.1 使用Netcat捕捉流量 166
8.1.2 使用Python重新发送捕获的UDP流量 168
8.1.3 重新利用我们的分析代理 169
8.2 重用现有的可执行代码 174
8.2.1 重用.NET应用程序的代码 175
8.2.2 重用Java应用程序的代码 179
8.2.3 非托管的可执行文件 181
8.3 加密技术及TLS的处理方法 186
8.3.1 了解正在使用中的加密技术 186
8.3.2 解密TLS流量 187
8.4 总结 192
第9章 漏洞的根本原因 193
9.1 漏洞类别 193
9.1.1 远程代码执行 194
9.1.2 拒绝服务 194
9.1.3 信息泄露 194
9.1.4 验证绕过 194
9.1.5 权限绕过 195
9.2 内存损坏漏洞 195
9.2.1 内存安全编程语言与内存不安全编程语言的对比 195
9.2.2 内存缓冲区溢出 196
9.2.3 缓冲区索引越界 201
9.2.4 数据膨胀攻击 202
9.2.5 动态内存分配失败 203
9.3 默认凭据或硬编码凭据 203
9.4 用户枚举 204
9.5 不正确的资源访问 205
9.5.1 规范化 205
9.5.2 详细错误 207
9.6 内存耗尽攻击 208
9.7 存储耗尽攻击 209
9.8 CPU耗尽攻击 209
9.8.1 算法复杂度 209
9.8.2 可配置的密码学 211
9.9 格式化字符串漏洞 212
9.10 命令行注入 213
9.11 SQL注入 214
9.12 文字编码字符替换 215
9.13 总结 216
第 10章 查找和利用安全漏洞 217
10.1 模糊测试 217
10.1.1 最简单的模糊测试 218
10.1.2 变异模糊测试器 218
10.1.3 生成测试用例 219
10.2 漏洞分类筛选 219
10.2.1 调试应用程序 220
10.2.2 提高找出程序崩溃根本原因的概率 226
10.3 利用常见的漏洞 228
10.3.1 利用内存损坏漏洞 229
10.3.2 任意内存写入漏洞 235
10.4 编写shell code 238
10.4.1 入门 238
10.4.2 简单的调试技术 240
10.4.3 调用系统调用 241
10.4.4 执行其他程序 246
10.4.5 使用Metasploit生成shell code 247
10.5 内存损坏利用的缓解措施 249
10.5.1 数据执行保护 249
10.5.2 ROP的反漏洞利用技术 250
10.5.3 地址空间布局随机化(ASLR) 252
10.5.4 使用内存金丝雀检测栈溢出 255
10.6 总结 257
附录A 网络协议分析套件 258
|
|