• 网络攻击与防御技术
21年品牌 40万+商家 超1.5亿件商品

网络攻击与防御技术

正版保障 假一赔十 可开发票

31.07 6.3折 49.5 全新

仅1件

广东广州
认证卖家担保交易快速发货售后保障

作者王群编著

出版社清华大学出版社

ISBN9787302518327

出版时间2018-08

装帧平装

开本其他

定价49.5元

货号9464507

上书时间2024-12-13

灵感书店

三年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
目录
目录
第1章网络攻防技术概述
1.1黑客、红客及红黑对抗
1.1.1黑客与红客
1.1.2红黑对抗
1.2网络攻击的类型
1.2.1主动攻击
1.2.2被动攻击
1.3网络攻击的属性
1.3.1权限
1.3.2转换方法
1.3.3动作
1.4主要攻击方法
1.4.1端口扫描
1.4.2口令攻击
1.4.3彩虹表
1.4.4漏洞攻击
1.4.5缓冲区溢出
1.4.6电子邮件攻击
1.4.7持续威胁
1.4.8社会工程学
1.5网络攻击的实施过程
1.5.1攻击发起阶段
1.5.2攻击作用阶段
1.5.3攻击结果阶段
1.6网络攻防的发展趋势
1.6.1新应用产生新攻击
1.6.2网络攻击的演进
1.6.3网络攻击新特点
习题
第2章Windows操作系统的攻防
2.1Windows操作系统的安全机制
2.1.1Windows操作系统的层次结构
2.1.2Windows服务器的安全模型
2.2针对Windows数据的攻防
2.2.1数据本身的安全
2.2.2数据存储安全
2.2.3数据处理安全
2.3针对账户的攻防
2.3.1账户和组
2.3.2用户的登录认证
2.3.3账户密码的安全
2.3.4权限管理
2.4针对进程与服务的攻防
2.4.1进程、线程、程序和服务的概念
2.4.2重要系统进程
2.4.3常见的服务与端口
2.5针对日志的攻防
2.5.1Windows日志概述
2.5.2日志分析
2.5.3日志管理
2.6针对系统漏洞的攻防
2.6.1Windows系统漏洞
2.6.2典型的利用漏洞的攻击过程
2.6.3补丁管理
2.7针对注册表和组策略的攻防
2.7.1针对注册表的攻防
2.7.2针对组策略的攻防
习题
第3章Linux操作系统的攻防
3.1Linux操作系统的工作机制
3.1.1Linux操作系统概述
3.1.2Linux操作系统的结构
3.2Linux操作系统的安全机制
3.2.1用户和组
3.2.2身份认证
3.2.3访问控制
3.2.4Linux的日志
3.3Linux系统的远程攻防技术
3.3.1Linux主机账户信息的获取
3.3.2Linux主机的远程渗透攻击
3.3.3DNS服务器的攻防
3.3.4Apache服务器的攻防
3.4Linux用户提权方法
3.4.1通过获取“/etc/shadow”文件的信息来提权
3.4.2利用软件漏洞来提权
3.4.3针对本地提权攻击的安全防御方法
习题
第4章恶意代码的攻防
4.1计算机病毒
4.1.1计算机病毒的起源
4.1.2计算机病毒的概念
4.1.3计算机病毒的基本特征
4.1.4计算机病毒的分类
4.1.5计算机病毒的传播机制
4.1.6计算机病毒的防范方法
4.2蠕虫
4.2.1网络蠕虫的特征与工作机制
4.2.2网络蠕虫的扫描方式
4.2.3网络蠕虫的防范方法
4.3木马
4.3.1木马的概念及基本特征
4.3.2木马的隐藏技术
4.3.3网页木马
4.3.4硬件木马
4.3.5木马的防范方法
4.3.6挖矿木马
4.4后门
4.4.1后门的功能和特点
4.4.2后门的分类
4.4.3Windows系统后门程序的自动加载方法
4.4.4后门的防范方法
4.5僵尸网络
4.5.1僵尸网络的概念
4.5.2僵尸网络的功能结构
4.5.3僵尸网络的工作机制及特点
4.5.4僵尸网络的防范方法
4.6Rootkit
4.6.1Rootkit的概念
4.6.2用户模式Rootkit和内核模式Rootkit
4.6.3Bootkit攻击
4.6.4挂钩技术
4.6.5DKOM技术
4.6.6虚拟化技术
4.6.7Rootkit的检测方法
4.6.8Rootkit的防范方法
习题
第5章Web服务器的攻防
5.1Web应用的结构
5.1.1C/S结构
5.1.2B/S结构
5.1.3Web应用安全结构概述
5.2针对Web服务器的信息收集
5.2.1需要收集的信息内容
5.2.2网络踩点
5.2.3网络扫描
5.2.4漏洞扫描
5.2.5网络查点
5.2.6针对Web服务器信息收集的防范方法
5.3Web数据的攻防
5.3.1针对敏感数据的攻防
5.3.2网站篡改
5.4Web应用程序的攻防
5.4.1Web应用程序安全威胁
5.4.2SQL注入漏洞
5.4.3跨站脚本漏洞
5.5Web服务器软件的攻防
5.5.1Apache攻防
5.5.2IIS攻防
习题
第6章Web浏览器的攻防
6.1Web浏览器技术
6.1.1万维网
6.1.2Web浏览器
6.1.3Web浏览器的安全
6.1.4Web浏览器的隐私保护
6.1.5Web开放数据挖掘形成的安全威胁
6.2Web浏览器插件和脚本的攻防
6.2.1Web浏览器插件的攻防
6.2.2脚本的攻防
6.3针对Web浏览器Cookie的攻防
6.3.1Cookie介绍
6.3.2Cookie的组成及工作原理
6.3.3Cookie的安全防范
6.4网页木马的攻防
6.4.1网页木马的攻击原理
6.4.2网页挂马的实现方法
6.4.3网页木马关键技术
6.4.4网页木马的防范方法
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黑链篡改的检测和防范方法
习题
第7章移动互联网应用的攻防
7.1移动互联网概述
7.1.1移动互联网的概念
7.1.2移动终端
7.1.3接入网络
7.1.4应用服务
7.1.5安全与隐私保护
7.2智能移动终端系统的攻防
7.2.1登录安全
7.2.2软键盘输入安全
7.2.3盗版程序带来的安全问题
7.2.4认证安全
7.2.5安全事件分析
7.3移动应用的攻防
7.3.1恶意程序
7.3.2骚扰和诈骗电话
7.3.3垃圾短信
7.3.4二维码安全
7.4云服务的攻防
7.4.1关于云计算
7.4.2云存储的安全问题
7.4.3云服务的安全防范
7.5网络购物的攻防
7.5.1网络游戏网站钓鱼欺诈
7.5.2网络退款骗局
7.5.3购买违禁品骗局
习题
参考文献

内容摘要
    第3章Linux操作系统的攻防 作为类UNIX操作系统家族中的一员,Linux操作系统已经成为服务器应用领域的优选。相较于Windows操作系统,Linux在很多方面都具有一定的优势,尤其在安全方面。由于Linux的开源性,其安全漏洞的发现与补丁的发布效率都要比Windows系统高。然而,Linux并非一个保证安全的操作系统,也存在大量的安全漏洞,并且攻击者凭借其开源性可以从源码中发现更多的系统内核和开源软件的漏洞。本章将从网络攻防的角度介绍Linux操作系统的安全机制、攻击技术及对应的防范方法。 3.1Linux操作系统的工作机制 Linux是源自于UNIX的开放源代码的多用户、多任务、支持多线程和多CPU的操作系统,主要应用于安全性要求较高的服务器、网络设备和移动终端。 3.1.1Linux操作系统概述 Linux操作系统诞生于1991年,很初是由芬兰大学生Linus Torvalds为在Intel x86架构计算机上运行自由免费的类UNIX操作系统,而用C语言编写的开放源代码的操作系统。目前,Linux存在着许多不同的版本,主要包括Ubuntu、Fedora、RedHat、CentOS、OpenSUSE等,但不同版本都使用了相同的Linux内核。 Linux的基本思想是: 一切都是文件,即系统中包括命令、硬件和软件设备、进程等所有对象对于操作系统内核而言都被视为拥有各自特性或类型的文件。Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以根据需要对其源代码进行修改。目前,Linux可以运行在多种硬件平台上,如x86(32位和64位)、680x0、SPARC、Alpha等处理器的平台。此外,Linux还是一种嵌入式操作系统,可以运行在智能手机、机顶盒、路由器等设备上,如Google基于Linux内核开发了Android移动智能终端操作系统与开发环境。 Linux通过自带的防火墙、入侵检测和安全认证等工具,可以及时发现和修复系统的漏洞,以提高系统的安全性。在桌面应用中,Linux的用户数要少于Windows操作系统的用户,较少的用户群使专门针对Linux的恶意代码和渗透攻击要比Windows操作系统少。同时,Linux内核源代码是以标准规范的32位或64位计算机进行优化设计的,良好的稳定性使得一些安装了Linux的主机像UNIX主机一样可以常年不关机或宕机。在网络功能方面,Linux内置了免费网络服务器软件、数据库和Web开发工具,如Apache、Sendmail、SSH、MySQL、PHP、JSP、VSFTP等。丰富而强大的网络功能为用户提供了安全可靠的网络服务,使得Linux成为安全性、稳定性和可靠性要求较高的服务器操作系统的优选。 3.1.2Linux操作系统的结构 Linux操作系统采用宏内核(monolithic kernel)架构,整个操作系统是一个运行在核心态的单一的进程文件,这个二进制文件包含进程管理、内存管理、文件管理等。而Linux的前身Minix采用的是微内核(Micro Kernel)架构,基于该架构的操作系统大部分都运行在单独的进程中,而且多数在内核之外,进程之间通过消息传递来通信,内核的任务是处理消息传递、中断处理、底层的进程管理及可能的I/O。 1. Linux操作系统的内核结构 如图31所示,从体系结构来看,Linux操作系统的体系架构分为用户态和内核态,也称为用户空间和内核。内核从本质上看是一种软件,用于控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。为了使上层应用能够访问到这些资源,内核必须为上层应用提供访问的接口,即系统调用。系统调用是操作系统的很小功能单位,根据不同的应用场景可以进行扩展和裁剪,不同的Linux版本提供的系统调用数量各不相同。系统调用功能通过系统调用接口实现。 图31Linux操作系统内核结构 在Linux内核中,位于硬件抽象层中的各类设备驱动程序可以接近访问硬件设备,并以模块化形式进行设置,而且系统运行期间可以直接通过LKM(Loadable Kernel Module,可装载内核模块)机制装载或卸载。内核服务功能模块位于硬件抽象层之上,包括进程与线程管理、内存管理、文件系统管理、设备控制与网络5个子系统。这些内核服务功能模块通过系统调用接口向用户态的GNU运行库/工具、命令行Shell、X窗口及应用软件提供服务。 Shell是一个被称为“命令行”的特殊的应用程序,其实质是一个命令解释器,它负责将上层的各种应用与系统调用连接起来,以便让不同程序能够以一个清晰的接口协同工作,从而增强各个程序的功能。同时,Shell是可编程的,它可以执行符合Shell语法的文本,即Shell脚本。为了方便用户和系统交互,一般一个Shell对应一个终端,终端是一个硬件设备,呈现给用户的是一个图形化窗口,用户可以通过这个窗口输入或者输出文本,这个文本直接传递给Shell进行分析解释,然后执行。 2. Linux的工作机制 Linux操作系统在进程与线程管理、内存管理、文件系统管理、设备控制、网络、系统调用等方面都形成了特有的工作机制,掌握这些工作机制为全面学习Linux操作系统的功能及应用特点是很好有帮助的。 (1) 进程与线程管理。 进程是一个动态的概念,进程运行过程实际上是进程的一个生存周期,通常分为实际占用CPU的运行状态、进程可运行(但暂时挂起)的就绪状态和资源不可用的阻塞(中断)状态3种状态。线程可以理解为同一进程中相互独立执行的上下文,线程是“多任务”的进程。线程的概念较为适用于紧密耦合的一组处理流程。在传统进程的概念中,一个进程有一条执行线索,进程之间空间、时间独立,互不干扰。而线程在逻辑上是一个事务的不同线索,线索之间有着种种联系,可能是共享一段缓存或协调执行一组任务。 Linux内核采用抢占式多用户多进程(multiprocessing)模式。在该模式下,多个进程可并发活动,具体由内核进程管理模块负责调度并分配硬件资源。进程作为很基本的调度单元,维护着一个进程控制块(Processing Control Block,PCB)结构,由内核schedule()进程调度函数根据进程优先级和CPU、内存、外设等资源情况来选择进程的运行。 (2) 内存管理。 内存管理在操作系统中不仅很好重要,而且很好复杂。利用虚拟存储技术,Linux使得一个拥有有限内存资源的计算机可以为每个进程提供多达4GB的虚拟内存空间。其基本实现思路是通过进程映像和分页机制在内存和二级存储之间传送数据,以充分利用有限的内存资源。另外,Linux虚拟内存管理机制把用户空间和核心空间分开,这样不仅有效地保护了核心空间,各个进程之间也互不影响。 (3) 文件系统管理。 Linux使用了虚拟文件管理(Virtual File System,VFS)机制,从而使得它能够支持多种不同类型的逻辑文件系统(主要包括ext2/ext3/ext4、vfat、NTFS等),通过设备驱动程序访问特定硬件设备(如磁盘、打印机等)。而VFS为用户进程提供了一组通用的文件系统调用函数(如open、close、read、write等),可以对不同文件系统中的文件进行统一的操作。ext2/ext3/ext4是Linux中默认的文件系统格式,使用索引节点来记录文件信息,作用类似于Windows系统中的FAT32文件系统的目录项,包含了文件长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。 (4) 设备控制。 设备驱动程序(device driver)是操作系统中一种可以使计算机和设备进行通信的特殊软件。Linux抽象了设备的处理,它对所有的硬件设备都视为常规的文件来处理。Linux支持3种类型的硬件设备: 字符设备、块设备和网络设备。其中,字符设备直接读/写,没有提供缓冲区,如系统的串行端口/dev/cua0和/dev/cua1; 块设备只能按照一个块(一般是512字节或1024字节)的倍数进行读/写,块设备通过bcache(buffer cache)访问,进行随机存取; 网络设备则通过BSD(Berkeley Software Distribution,伯克利软件套件)Socket网络接口进行访问。大多数的设备驱动程序都采用LKM(Loadable Kernel Modules,可装载内核模块)机制,在需要的时候作为核心模块加载,在不需要的时候进行卸载,以提高对系统资源的利用率。 (5) 网络。 Linux中的网络模块提供了对各种网络标准的访问,并支持各种网络硬件设备。网络接口可以分为网络协议栈和网络驱动程序。其中,网络协议栈负责实现每一种可能的网络传输协议,包括网络接口层的协议(如以太网、PPP、SLIP等)、TCP/IP协议层,以及为上层网络应用提供的Socket接口,如图32所示。网络设备驱动程序负责与硬件设备之间的通信。 图32Linux操作系统的网络功能 Linux通过以上5种工作机制实现了操作系统基本的硬件管理和系统功能,这些功能模块全部运行在CPU的核心态。而应用程序运行在用户态,不能直接访问内存空间,也不能直接调用内核函数。Linux提供了系统调用接口,通过该接口应用程序可以访问硬件设备和其他系统资源,以增加系统的安全性、稳定性和可靠性。同时,Linux为用户空间提供了一种统一的抽象接口,有助于应用程序的跨平台移植。 3.2Linux操作系统的安全机制 与Windows操作系统类似,Linux同样通过身份认证、授权访问与安全审计等机制来实现对系统的安全管理。 3.2.1用户和组 Linux通过基于角色的身份认证方式实现对不同用户(user)和组(group)的分类管理,来确保多用户多任务环境下操作系统的安全性。 1. 用户 用户是Linux操作系统中执行进程完成特定操作任务的主体,根据不同的角色定位,可以将用户分为以下3种类型。 (1) Root根用户。Root根用户是Linux系统中专享拥有系统管理员(不错用户)权限的用户,可以对系统进行任何的操作。由于Root用户对系统拥有很高的控制和管理权限,所以成为网络攻击的主要目标。 (2) 普通用户。普通用户是由系统使用者根据需要创建的一种用户类型,其基本功能是登录系统并执行基本的计算任务,该类用户在系统中的操作被在自己的目录内,且执行权限受到。 (3) 系统用户。系统用户不具有登录系统的能力,但却是系统运行中不可缺少的用户。例如,当启动网络服务时使用的Daemon、Apache等用户,以及匿名访问时使用的Nobody、FTP等用户。 Linux的用户信息保存在系统的“/etc/passwd”文件中,主要包括用户名、用户专享的标识(UID)、使用Shell类型、用户初始目录等,而被加密后的口令则存放在“/etc/shadow”文件中,只有Root用户可以读取其信息。 2. 组 Linux通过组来简化对系统中用户的管理。根据管理的需要,可以将具有相同权限的用户集中纳入到同一个组中,通过对组设置权限来使该组中的所有用户自动继承组的权限。在权限设置上,对组的权限设置会自动传递给组中的所有用户,为此将组也称为用户组。 Linux组信息保存在系统的“/etc/group”文件中,包括组名称、组标识(GID)及组所包含的用户名列表,组被加密后的口令保存在“/etc/gshadow”文件中。可以使用ida命令来查询和显示当前用户所属的组,并通过groupadd命令添加组,使用usermodG group_name username命令向组中添加用户。 3.2.2身份认证 Linux分别对本地登录和远程登录用户提供了身份认证方式,同时还为不同的应用软件和网络服务提供了用于统一身份认证的PAM(Pluggable Authentication Modules,可插入身份认证模块)中间件。 1. 本地身份认证 本地身份认证对从本地计算机通过Linux控制台登录的用户身份的合法性进行认证,基本的认证流程是: 由init进程启动getty,产生tty1、tty2等一组虚拟控制台。在虚拟控制台上为用户提供了登录方式,在用户输入用户名和密码后,getty执行登录(Login)进程,并开始对用户身份的合法性进行认证。当身份认证通过后,登录进程会通过fork()函数复制一份该用户的界面(Shell),从而完成登录过程,用户可以在该界面下进行相应的操作。 登录进程通过Crypt()函数对用户输入的口令进行验证,并通过引入在用户设置密码时随机产生的salt值来提高身份认证的安全性。salt值和用户密码被一起加密后形成密文连同salt值保存在“/etc/shadow”文件中。当用户登录系统时,Crypt()函数会对用户输入的口令和shadow文件中的salt值进行加密处理,再将处理后的密文与保存在shadow文件中的密文进行比对,以确定用户身份的真实性。 Linux的口令加密机制源于DES(Data Encryption Standard,数据加密标准),通常使用56位密钥加密的64位的文本块,抵抗暴力破解的能力较弱。为提高身份认证的可靠性,较新版本的Linux开始采用MD5、SHA256、SHA512、blofish等高强度的加密算法,同时增加了salt的编码长度。 2. 远程身份认证 UNIX系统中提供的rlogin(远程登录)、rsh(remote shell,远程界面)和Telnet登录用户和终端登录与访问服务在Linux系统中得到了继承,但由于这些服务信息都以明文方式在网络中传输,传输口令和控制命令极易被攻击者获取并利用,如典型的中间人(man in the middle)攻击。为解决此问题,目前Linux系统普遍采用SSH(Secure Shell)服务来实现对远程访问的安全保护。 使用SSH具有两大明显的优势: 数据加密和数据压缩。利用数据加密功能可以对所有传输的数据进行加密,以避免中间人攻击或网络欺骗; 利用数据压缩功能,可以对传输的数据进行压缩,以提高数据传输的效率。 SSH协议由传输层协议(Transport Layer Protocol)、用户认证协议(User Authentication Protocol)和连接协议(Connection Protocol)三部分组成。每层提供自己类型的保护,并且可以与其他方式一起使用,SSH协议的体系结构如图33所示。 图33SSH协议的体系结构 (1) 传输层协议。 SSH传输层协议提供了高强度的数据通信加密处理、加密的主机身份认证、数据完整性校验及可供用户选择的数据压缩等多种安全服务。通信双方所需要的密钥交换方式、公钥密码算法、对称密钥密码算法、消息认证算法和Hash算法等都可以进行协商。传输层协议的主要功能是为两种主机之间的认证和通信提供安全数据传输通道,通常运行于TCP/IP之上。 需要说明的是,SSH传输层协议中的认证是基于主机的,而不是针对客户端用户的身份认证。用户身份认证可以通过基于传输层协议之上、单独设计的协议来完成。这样,既保证了通信的安全性,又提供了协议的灵活性和扩展性。 (2) 用户认证协议。 在传输层构建了一个连接客户端与服务器端的安全通道后,服务器将告诉客户端它所支持的认证算法,客户端将用服务器支持的算法向服务器证明自己的身份。认证由服务器,客户端可以根据服务器提供的方法列表自由进行选择。这样一方面使服务器对认证有接近的控制权,同时也给客户端足够的灵活度。 SSH提供了基于口令的安全验证和基于密钥的安全验证两种方式。其中,基于口令的安全验证方式可以使用Linux系统内建的用户账户(用户名+口令)进行远程登录; 基于密钥的安全验证方式使用公钥密钥机制对用户身份的合法性进行认证。系统生成的一对密钥,私钥由用户自己保存,而公钥保存在远程访问服务器上。当用户通过SSH方式连接服务器时,客户端软件首先向服务器发出连接请求,服务器在接收到请求后就利用请求用户的公钥加密“质询”(challenge)并将其发送给客户端软件,客户端软件收到被加密的“质询”后利用私钥进行解密,再发送给服务器端,完成了基于公钥密钥机制的身份认证过程。 (3)

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP