主页 详情

《计算机安全导论:深度实践》_杜文亮著_14794925_9787040538823

【书名】:《计算机安全导论:深度实践》
【作者】:杜文亮著
【出版社】:北京:高等教育出版社
【时间】:2020
【页数】:
【ISBN】:9787040538823
【SS码】:14794925

最新查询

内容简介

第1部分 软件安全

第1章 Set-UID特权程序原理及攻击方法

1.1 特权程序存在的必要性

1.1.1 密码困境

1.1.2 不同类型的特权程序

1.2 Set-UID机制

1.2.1 超人的故事

1.2.2 特权程序的工作原理

1.2.3 一个Set-UID程序的例子

1.2.4 Set-UID机制的安全性

1.2.5 Set-GID机制

1.3 可能出现的问题:超人的遭遇

1.4 Set-UID程序的攻击面

1.4.1 用户输入:显式输入

1.4.2 系统输入

1.4.3 环境变量:隐藏的输入

1.4.4 权限泄露

1.5 调用其他程序

1.5.1 不安全的方式:使用system()

1.5.2 安全的方式:使用execve()

1.5.3 用其他语言调用外部命令

1.5.4 经验教训:隔离的原则

1.6 最小特权原则

1.7 总结

动手实验

习题

第2章 通过环境变量实现攻击

2.1 环境变量

2.1.1 如何访问环境变量

2.1.2 进程获取环境变量的方式

2.1.3 环境变量在内存中的位置

2.1.4 shell变量和环境变量

2.2 环境变量带来的攻击面

2.3 通过动态链接器的攻击

2.3.1 静态和动态链接

2.3.2 案例分析:LD_PRELOAD和LD_LIBRARY_PATH

2.3.3 案例分析:OS X动态链接器

2.4 通过外部程序进行攻击

2.4.1 两种调用外部程序的典型方式

2.4.2 案例分析:PATH环境变量

2.4.3 减小攻击面

2.5 通过程序库攻击

案例分析:UNIX中的Locale程序

2.6 通过程序本身的代码进行攻击

案例分析:在应用代码中使用getenv()函数

2.7 Set-UID机制和服务机制的比较

2.8 总结

动手实验

习题

第3章 Shellshock攻击

3.1 背景知识:shell函数

3.2 Shellshock漏洞

3.2.1 Shellshock漏洞

3.2.2 Bash源代码中的错误

3.2.3 Shellshock漏洞的利用

3.3 利用Shellshock攻击Set-UID程序

3.4 利用Shellshock攻击CGI程序

3.4.1 实验环境准备

3.4.2 Web服务器调用CGI程序

3.4.3 攻击者向Bash发送数据

3.4.4 实施Shellshock攻击

3.4.5 创建反向shell

3.5 针对PHP的远程攻击

3.6 总结

动手实验

习题

第4章 缓冲区溢出攻击

4.1 程序的内存布局

4.2 栈与函数调用

4.2.1 栈的内存布局

4.2.2 帧指针

4.3 栈的缓冲区溢出攻击

4.3.1 将数据复制到缓冲区

4.3.2 缓冲区溢出

4.3.3 利用缓冲区溢出漏洞

4.4 环境准备

4.4.1 关闭地址空间随机化

4.4.2 有漏洞的程序

4.5 实施缓冲区溢出攻击

4.5.1 寻找注入代码的内存地址

4.5.2 提高猜测成功的概率

4.5.3 通过调试程序找到地址

4.5.4 构造输入文件

4.6 构造shellcode

4.6.1 用C语言编写一段恶意代码

4.6.2 构造shellcode的核心方法

4.6.3 一个shellcode示例的说明

4.7 防御措施概述

4.8 地址随机化

4.8.1 Linux中的地址随机化

4.8.2 地址随机化的有效性

4.9 StackGuard

4.9.1 观察到的现象和解决方法的提出

4.9.2 在函数中添加代码

4.9.3 gcc中的StackGuard实现

4.10 攻破Bash和Dash的保护机制

4.11 总结

动手实验

习题

第5章 return-to-libc攻击

5.1 引言

5.2 攻击实验:准备

5.3 发起return-to-libc攻击:第一部分

5.3.1 任务A:找到system()函数的地址

5.3.2 任务B:找到字符串“/bin/sh”的地址

5.4 发起return-to-libc攻击:第二部分

5.4.1 函数的序言

5.4.2 函数的后记

5.4.3 函数序言及后记示例

5.4.4 任务C

5.4.5 构建恶意输入

5.4.6 发起攻击

5.5 返回导向编程

5.6 总结

动手实验

习题

第6章 格式化字符串漏洞

6.1 可变参数函数

6.1.1 如何使用可变参数

6.1.2 printf()函数如何访问可变参数

6.2 如果可变参数不够会出现什么问题

6.3 漏洞程序以及实验准备

6.4 利用格式化字符串漏洞

6.4.1 攻击一:使程序崩溃

6.4.2 攻击二:输出栈中的数据

6.4.3 攻击三:修改内存中的程序数据

6.4.4 攻击四:修改程序数据为指定值

6.4.5 攻击四(续):更快的方法

6.5 利用格式化字符串漏洞注入恶意代码

6.5.1 有漏洞的程序

6.5.2 攻击策略

6.5.3 攻击程序

6.5.4 减少格式化字符串的长度

6.6 防御措施

6.6.1 开发者

6.6.2 编译器

6.6.3 地址随机化

6.7 总结

动手实验

习题

第7章 竞态条件漏洞

7.1 一个常见的竞态条件漏洞

7.2 竞态条件漏洞

7.3 实验准备

7.4 利用竞态条件漏洞

7.4.1 选择一个目标文件

7.4.2 发动攻击

7.4.3 监控结果

7.4.4 运行攻击代码

7.5 防御措施

7.5.1 原子操作

7.5.2 重复检查和使用

7.5.3 粘滞符号链接保护

7.5.4 最小权限原则

7.6 总结

动手实验

习题

第8章 脏牛竞态条件攻击

8.1 使用mmap()函数进行内存映射

8.2 MAP_SHARED、MAP_PRIVATE和写时拷贝

8.3 抛弃复制的内存

8.4 映射只读文件

8.5 脏牛漏洞

8.6 利用脏牛漏洞

8.6.1 选择/etc/passwd作为目标文件

8.6.2 设置内存映射和线程

8.6.3 写线程

8.6.4 madvise线程

8.6.5 攻击结果

8.7 总结

动手实验

习题

第2部分 Web安全

第9章 跨站请求伪造

9.1 跨站请求及其问题

9.2 跨站请求伪造攻击

9.3 针对HTTP GET服务的CSRF攻击

9.3.1 HTTP GET服务和POST服务

9.3.2 CSRF攻击的基本思路

9.3.3 对于Elgg的添加好友服务进行攻击

9.4 针对HTTP POST服务的CSRF攻击

9.4.1 使用JavaScript构建POST请求

9.4.2 针对Elgg的编辑个人资料服务的攻击

9.5 防御措施

9.5.1 使用referer头

9.5.2 同站cookie

9.5.3 秘密令牌

9.5.4 案例分析:Elgg的应对措施

9.6 总结

动手实验

习题

第10章 跨站脚本攻击

10.1 跨站脚本攻击

10.1.1 反射型XSS攻击

10.1.2 存储型XSS攻击

10.1.3 XSS能造成的破坏

10.2 XSS攻击实战

10.2.1 序幕:注入JavaScript代码

10.2.2 通过XSS攻击成为他人的好友

10.2.3 使用XSS攻击更改他人主页

10.3 实现自我传播

10.3.1 创造一个自我传播的XSS蠕虫:通过DOM方法实现

10.3.2 创造一个自我传播的XSS蠕虫:通过链接方法实现

10.4 抵御XSS攻击

10.4.1 去除代码

10.4.2 用内容安全策略来抵御XSS攻击

10.5 总结

动手实验

习题

第11章 SQL注入攻击

11.1 SQL简略教程

11.1.1 登录MySQL

11.1.2 创建数据库

11.1.3 创建表

11.1.4 插入行

11.1.5 SELECT语句

11.1.6 WHERE子句

11.1.7 UPDATE语句

11.1.8 SQL语句中的注释

11.2 在网络应用程序中与数据库交互

11.2.1 获取用户数据

11.2.2 从数据库获取数据

11.3 发动SQL注入攻击

11.3.1 使用cURL进行攻击

11.3.2 修改数据库

11.3.3 多条SQL语句

11.4 根本原因

11.5 防范措施

11.5.1 过滤掉代码和把代码变成数据

11.5.2 预处理语句

11.6 总结

动手实验

习题

第3部分 网络安全

第12章 数据包嗅探和伪造

12.1 数据包是如何被接收的

12.1.1 网络接口卡

12.1.2 BSD数据包过滤器

12.2 数据包嗅探

12.2.1 使用socket接收数据包

12.2.2 使用原始套接字进行数据包嗅探

12.2.3 使用pcap API实现数据包嗅探

12.2.4 处理捕获的数据包

12.3 数据包伪造

12.3.1 使用socket发送正常数据包

12.3.2 使用raw socket发送伪造数据包

12.3.3 构造ICMP数据包

12.3.4 构造UDP数据包

12.4 嗅探与伪造

12.5 字节顺序

12.6 计算校验和

12.7 总结

动手实验

习题

第13章 对TCP的攻击

13.1 TCP是如何工作的

13.1.1 TCP客户端程序

13.1.2 TCP服务端程序

13.1.3 数据传输的底层原理

13.1.4 TCP头部

13.2 SYN泛洪攻击

13.2.1 三次握手协议

13.2.2 SYN泛洪攻击

13.2.3 进行SYN泛洪攻击

13.2.4 编程进行SYN泛洪攻击

13.2.5 防御措施

13.3 TCP复位攻击

13.3.1 关闭TCP连接

13.3.2 如何实现攻击

13.3.3 发动TCP复位攻击前的准备

13.3.4 telnet连接中的TCP复位攻击

13.3.5 SSH连接中的TCP复位攻击

13.3.6 视频流连接中的TCP复位攻击

13.4 TCP会话劫持攻击

13.4.1 TCP会话和会话劫持

13.4.2 发动TCP会话劫持攻击

13.4.3 TCP劫持攻击连接的过程

13.4.4 造成更严重的后果

13.4.5 创建反向shell

13.5 总结

动手实验

习题

第14章 防火墙

14.1 介绍

14.2 防火墙种类

14.2.1 数据包过滤器

14.2.2 状态防火墙

14.2.3 应用防火墙

14.3 内核模块

14.3.1 编写可加载内核模块

14.3.2 编译内核模块

14.3.3 安装内核模块

14.4 使用Netfilter搭建一个简单的防火墙

14.4.1 IPv4中的Netfilter钩子函数

14.4.2 实现一个简单的数据包过滤器

14.5 Linux中的iptables防火墙

14.5.1 iptables防火墙的结构

14.5.2 遍历链和规则匹配

14.5.3 iptables的扩展组件

14.5.4 搭建一个简单的防火墙

14.6 基于连接跟踪的状态防火墙

14.6.1 状态防火墙

14.6.2 Linux的连接跟踪框架

14.6.3 搭建一个状态防火墙

14.7 应用防火墙及Web代理

14.8 绕过防火墙

14.8.1 使用SSH隧道绕过防火墙

14.8.2 动态端口转发

14.8.3 使用VPN绕过防火墙

14.9 总结

动手实验

习题

第15章 针对域名系统的攻击

15.1 DNS层次结构、区域、服务器

15.1.1 DNS域层次结构

15.1.2 DNS区域

15.1.3 权威域名服务器

15.1.4 因特网中区域的组织形式

15.2 DNS请求过程

15.2.1 本地DNS文件

15.2.2 本地DNS服务器和迭代查询过程

15.3 搭建DNS服务器以及实验环境

15.3.1 配置用户机

15.3.2 配置本地DNS服务器

15.3.3 在本地DNS服务器内配置区域

15.4 DNS攻击概述

15.5 本地DNS缓存中毒攻击

15.5.1 实现DNS缓存中毒攻击

15.5.2 针对授权部分的攻击

15.6 远程DNS缓存中毒攻击

15.6.1 Kaminsky攻击

15.6.2 构建DNS回复包的IP头和UDP头

15.6.3 构建DNS头和负载

15.6.4 结果验证

15.7 来自恶意DNS服务器的回复伪造攻击

15.7.1 在附加部分伪造数据

15.7.2 在授权部分伪造数据

15.7.3 在附加部分伪造与授权部分相关的数据

15.7.4 在回复部分伪造数据:针对DNS反向查找

15.8 预防DNS缓存中毒攻击

15.8.1 DNSSEC

15.8.2 TLS/SSL解决方案

15.9 对DNS服务器的拒绝服务攻击

15.9.1 对root和TLD服务器的攻击

15.9.2 对特定域的域名服务器的攻击

15.10 总结

动手实验

习题

第16章 虚拟专用网络

16.1 虚拟专用网络概述

16.1.1 虚拟专用网络

16.1.2 虚拟专用网络的工作原理

16.2 TLS/SSL VPN原理概述

16.2.1 建立一个TLS/SSL隧道

16.2.2 转发IP数据包

16.2.3 传递IP数据包

16.3 TLS/SSL VPN原理的具体细节

16.3.1 虚拟网络接口

16.3.2 建立TUN接口

16.3.3 将数据包路由到TUN接口

16.3.4 TUN接口的读操作和写操作

16.3.5 在隧道中转发数据包

16.3.6 数据包的回程

16.4 开发VPN程序

16.4.1 建立隧道

16.4.2 监控文件描述符

16.4.3 从TUN接口到隧道

16.4.4 从隧道到TUN接口

16.4.5 代码汇总

16.5 VPN的网络配置

16.5.1 实验环境的网络配置

16.5.2 配置VPN服务器

16.5.3 配置VPN客户端

16.5.4 配置主机V

16.6 测试VPN

16.6.1 ping测试

16.6.2 telnet测试

16.7 用VPN绕过防火墙

16.7.1 网络配置

16.7.2 搭建VPN绕过防火墙

16.8 总结

动手实验

习题

第17章 心脏滴血漏洞和攻击

17.1 心跳协议

17.2 发动心脏滴血攻击

17.2.1 搭建攻击环境

17.2.2 发动攻击

17.3 修复心脏滴血漏洞

17.4 总结

动手实验

习题

第18章 公钥基础设施

18.1 攻击公钥加密

18.1.1 中间人攻击

18.1.2 防御中间人攻击

18.1.3 公钥基础设施

18.2 公钥证书

18.2.1 X.50 9数字证书

18.2.2 从真实服务器获取证书

18.3 认证机构

18.3.1 成为认证机构

18.3.2 从CA获取X.50 9数字证书

18.3.3 在网络服务器中部署公钥证书

18.3.4 使用Apache部署HTTPS

18.4 根与中间CA

18.4.1 根CA和自签名证书

18.4.2 中间CA与信任链

18.4.3 为中间CA制作证书

18.4.4 Apache服务器部署

18.4.5 现实世界中的可信CA

18.5 防御中间人攻击

18.5.1 攻击者转发真实证书

18.5.2 攻击者制作假证书

18.5.3 攻击者发送自己的证书

18.5.4 中间人代理

18.6 在公钥基础设施上实施攻击

18.6.1 对CA认证过程的攻击

18.6.2 对CA签名过程的攻击

18.6.3 对算法的攻击

18.6.4 对用户确认的攻击

18.7 数字证书的类型

18.7.1 域名验证型证书

18.7.2 机构验证型证书

18.7.3 扩展验证型证书

18.8 总结

动手实验

习题

第19章 传输层安全

19.1 TLS概述

19.2 TLS握手

19.2.1 TLS握手协议概述

19.2.2 证书验证

19.2.3 密钥生成和交换

19.3 TLS数据传输

19.3.1 使用TLS记录协议发送数据

19.3.2 使用TLS记录协议接收数据

19.4 TLS编程:客户端程序

19.4.1 TLS编程概述

19.4.2 TLS初始化

19.4.3 TCP连接设置

19.4.4 TLS握手

19.4.5 应用数据传输

19.4.6 创建证书的文件夹

19.4.7 完整的TLS客户端程序

19.5 校验服务器的主机名

19.5.1 修改过的客户端代码

19.5.2 实验:中间人攻击

19.5.3 主机名校验

19.6 TLS编程:服务器程序

19.6.1 建立TLS

19.6.2 TCP的建立

19.6.3 TLS握手

19.6.4 TLS数据传输

19.6.5 测试

19.7 总结

动手实验

习题

参考文献


书查询(www.shuchaxun.com)本网页唯一编码:
1246ae6b7f66d9e31d5bcd4f19d07cb8#943d3f893c483fccb15b52ce67e20ef4#123171937#14794925_yz.pdf