描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302522720丛书名: 21世纪高等学校网络空间安全专业规划教材
本书是《网络攻击与防御技术》的配套教材。本书从攻击与防范两个层面,通过网络攻防基础实训、
Wids操作系统攻防实训、Lix操作系统攻防实训、恶意代码攻防实训、Web服务器攻防实训、Web浏览器(n) 攻防(ow) 实训和移动互联网应用攻(n) 防实训共7章内容,(u) 力求做到每个实验从内容确定、内容组织到实验环
境的构建,在充分体现网络攻防主要知识点的同时,可方便读者实验的开展,并加强操作能力的培养和知
识的扩展。
本书不是教授黑客技术的教材,期望通过阅读本书而能够入侵其他的计算机是不现实的。通过阅读本书,读者可以了解黑客入侵的过程、手法,进而建立安全防范意识及提高安全防范能力。
1.1中断攻击: UDP Flood拒绝服务攻击与防范
1.1.1预备知识: DoS/DDoS
1.1.2实验目的和条件
1.1.3实验过程
1.1.4任务与思考
1.2篡改攻击: ARP欺骗攻击
1.2.1预备知识: ARP欺骗攻击
1.2.2实验目的和条件
1.2.3实验过程
1.2.4任务与思考
1.3端口扫描: 利用Nmap工具进行端口扫描
1.3.1预备知识: Nmap工具介绍
1.3.2实验目的和条件
1.3.3实验过程
1.3.4任务与思考
1.4离线攻击工具: 彩虹表破解
1.4.1预备知识: 彩虹表
1.4.2实验目的和条件
1.4.3实验过程
1.4.4任务与思考
1.5电子邮件攻击: 利用社会工程学工具发送恶意邮件
1.5.1预备知识: 社会工程学与电子邮件攻击
1.5.2实验目的和条件
1.5.3实验过程
1.5.4任务与思考
第2章Windows操作系统攻防实训
2.1数据处理安全: 文件加密
2.1.1预备知识: 数据加密
2.1.2实验目的和条件
2.1.3实验过程
2.1.4任务与思考
2.2Windows口令破解
2.2.1预备知识: 获取SAM文件的内容
2.2.2实验目的和条件
2.2.3实验过程
2.2.4任务与思考
2.3IIS日志分析: 手动清除IIS日志
2.3.1预备知识: 日志的功能
2.3.2实现目的和条件
2.3.3实验过程
2.3.4任务与思考
2.4针对注册表的攻防
2.4.1预备知识: 了解注册表
2.4.2实验目的和条件
2.4.3实验过程
2.4.4任务与思考
2.5针对组策略的攻防
2.5.1预备知识: 了解组策略
2.5.2实验目的和条件
2.5.3实验过程
2.5.4任务与思考
2.6Windows Server的安全配置
2.6.1预备知识: Windows Server的网络功能
2.6.2实验目的和条件
2.6.3实验过程
2.6.4任务与思考
2.7Windows登录安全的实现
2.7.1预备知识: 登录安全介绍
2.7.2实验目的和条件
2.7.3实验过程
2.7.4任务与思考
2.8利用samba漏洞进行渗透
2.8.1预备知识: 了解Windows系统漏洞
2.8.2实验目的和条件
2.8.3实验过程
2.8.4任务与思考
2.9ARP和DNS欺骗攻击的实现
2.9.1预备知识: ARP和DNS欺骗原理
2.9.2实验目的和条件
2.9.3实验过程
2.9.4任务与思考
第3章Linux操作系统攻防实训
3.1Linux基本命令的使用
3.1.1预备知识: Linux的字符终端
3.1.2实验目的和条件
3.1.3实验过程
3.1.4任务与思考
3.2Linux用户和组的管理
3.2.1预备知识: Linux用户和组的管理特点
3.2.2实验目的和条件
3.2.3实验过程
3.2.4任务与思考
3.3Linux文件权限管理
3.3.1预备知识: Linux文件权限管理的特点
3.3.2实验目的和条件
3.3.3实验过程
3.3.4任务与思考
3.4Linux系统日志的清除
3.4.1预备知识: Linux系统日志的特点
3.4.2实验目的和条件
3.4.3实验过程
3.4.4任务与思考
3.5使用John the Ripper破解Linux系统密码
3.5.1预备知识: John the Ripper介绍
3.5.2实验目的和条件
3.5.3实验过程
3.5.4任务与思考
3.6Meterpreter键盘记录
3.6.1预备知识: Metasploit框架介绍
3.6.2实验目的和条件
3.6.3实验过程
3.6.4任务与思考
第4章恶意代码攻防实训
4.1脚本病毒编写实验
4.1.1预备知识: 脚本的攻防
4.1.2实验目的和条件
4.1.3实验过程
4.1.4任务与思考
4.2木马攻防实验
4.2.1预备知识: 网页木马的攻击原理
4.2.2实验目的和条件
4.2.3实验过程
4.2.4任务与思考
4.3木马隐藏分析
4.3.1预备知识: 木马的隐藏方式
4.3.2实验目的和条件
4.3.3实验过程
4.3.4任务与思考
4.4木马攻击辅助分析: 文件、注册表修改监视
4.4.1预备知识: 木马攻击辅助分析工具介绍
4.4.2实验目的和条件
4.4.3实验过程
4.4.4任务与思考
4.5远程入侵
4.5.1预备知识: Metaspolit工具使用方法
4.5.2实验目的和条件
4.5.3实验过程
4.5.4任务与思考
4.6脚本及恶意网页攻击
4.6.1预备知识: 脚本及恶意网页
4.6.2实验目的和条件
4.6.3实验过程
4.6.4任务与思考
第5章Web服务器攻防实训
5.1主机扫描: 路由信息的收集
5.1.1预备知识: 路由信息
5.1.2实验目的和条件
5.1.3实验过程
5.1.4任务与思考
5.2主机扫描: 主机探测
5.2.1预备知识: 主机扫描方法
5.2.2实验目的和条件
5.2.3实验过程
5.2.4任务与思考
5.3端口扫描: Zenmap工具的应用
5.3.1预备知识: 端口扫描
5.3.2实验目的和条件
5.3.3实验过程
5.3.4任务与思考
5.4系统类型探测: 主机系统识别
5.4.1预备知识: 主机探测
5.4.2实验目的和条件
5.4.3实验过程
5.4.4任务与思考
5.5漏洞扫描: Web安全漏洞扫描及审计
5.5.1预备知识: Web漏洞的获取方法与w3af
5.2.2实验目的和条件
5.5.3实验过程
5.5.4任务与思考
5.6XSS跨站脚本攻击
5.6.1预备知识: 关于DVWA
5.6.2实验目的和条件
5.6.3实验过程
5.6.4任务与思考
5.7针对MS SQL的提权操作
5.7.1预备知识: MS SQL提权
5.7.2实验目的和条件
5.7.3实验过程
5.7.4任务与思考
第6章Web浏览器攻防实训
6.1Burp Suite漏洞扫描使用
6.1.1预备知识: Burp Suite工具介绍
6.1.2实验目的和条件
6.1.3实验过程
6.1.4任务与思考
6.2Web安全漏洞学习平台: WebGoat的使用
6.2.1预备知识: WebGoat介绍
6.2.2实验目的和条件
6.2.3实验过程
6.2.4任务与思考
6.3Cookie对象操作
6.3.1预备知识: 关于Cookie
6.3.2实验目的和条件
6.3.3实验过程
6.3.4任务与思考
6.4网络钓鱼攻击
6.4.1预备知识: 了解网络钓鱼
6.4.2实验目的和条件
6.4.3实验过程
6.4.4任务与思考
6.5XSS获取Cookie攻击
6.5.1预备知识: ZvulDrill、WampServer和XSS平台
6.5.2实验目的和条件
6.5.3实验过程
6.5.4任务与思考
第7章移动互联网应用攻防实训
7.1程序加壳
7.1.1预备知识: 逆向工程
7.1.2实验目的和条件
7.1.3实验过程
7.1.4任务与思考
7.2Android手机木马程序设计
7.2.1预备知识: Android木马程序设计方法
7.2.2实验目的和条件
7.2.3实验过程
7.2.4任务与思考
7.3IDA破解实例
7.3.1预备知识: 逆向工程分析法
7.3.2实验目的和条件
7.3.3实验过程
7.3.4任务与思考
7.4服务端漏洞: 密码找回逻辑漏洞检测和重现
7.4.1预备知识: Android模拟器
7.4.2实验目的和条件
7.4.3实验过程
7.4.4任务与思考
7.5反编译、篡改漏洞检测和重现
7.5.1预备知识: 反编译
7.5.2实验目的和条件
7.5.3实验过程
7.5.4任务与思考
本书(包括主讲教材《网络攻击与防御技术》)是江苏省高等学校重点教材,从立项之初到最后成书,期间曾几易其稿。本书在写作过程中主要克服了以下的困难:
一是实验内容的确定。实验内容必须要与理论知识相对应,并能够恰当地反映理论知识的内涵和外延。由于每一章节涉及的知识点较多,而要做到实验内容反映所有的知识点,这在一本教材的编写过程中是无法实现的。为此,本书每章遴选了一些典型的实验,力求能够反映核心的内容。
二是实验内容的组织。对于一个具体的实验来说如何组织其内容,既要考虑实验的可操作性,还要关注知识点之间的有效衔接。为了达到这一目的,本书的每个实验都包括预备知识、实验目的和条件、实验过程和任务与思考4个环节,在突出知识掌握的同时,加强对能力的拓展。
三是实验环境的构建。为了能够使每一位读者在不需要依赖第三方平台的基础上能够开展每一个实验,本书中所选择的实验环境都可以由读者借助互联网根据实验要求自己搭建,并完成实验操作。
本书的内容分为网络攻防基础实训、Windows操作系统攻防实训、Linux操作系统攻防实训、恶意代码攻防实训、Web服务器攻防实训、Web浏览器攻防实训和移动互联网应用攻防实训7章。为了便于教学的开展,本书每一章的内容与《网络攻击与防御技术》一一对应。
本书在编写过程中得到了许多同事和同行的无私帮助和支持,在项目申请和出版过程中得到了清华大学出版社编辑老师的关心和帮助。本书中的实验内容由北京易霖博信息技术有限公司提供,同时在编写过程中参考了大量的文献资料。其中,第1章到第3章的内容由李馥娟副教授编写,第4章和第5章由徐鹏工程师编写,第6章和第7章由王群教授编写,同时王群教授负责全书的统稿工作,刘家银和倪雪莉老师负责全书的校对。对资料的直接提供者以及文献资料的贡献者,在此一并表示衷心的感谢!
由于作者水平有限,书中肯定会出现一些错误和不足,敬请读者提出宝贵意见。同时,本书的作者也会对内容进行不断完善,适时提供新的版本。
作者
2019年于南京
“一切皆文件”是Linux的基本思想,包括命令、硬件和软件设备、进程等,对于操作系统内核而言都被视为拥有各自特性或类型的文件。Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获取,并可以任意修改其源代码。正是由于“一切皆文件”和开源这两大特点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行修改和完善,这让Linux吸收了无数程序员的智慧,在发展中不断壮大,已成为目前在服务器应用领域占用率最高的操作系统,也被互联网资源的提供者视为最安全可靠的操作系统。不过,“安全”这一概念在互联网应用中是相对的,即在互联网中不存在绝对的安全,各类攻击行为在Linux系统中仍然存在,只是攻击的方式和难度不同而已。
3.1Linux基本命令的使用
3.1.1预备知识: Linux的字符终端
Linux系统的字符终端窗口为用户提供了一个标准的命令行接口,在字符终端窗口中,会显示一个Shell提示符,通常为“$”。用户可以在提示符后输入带有选项和参数的字符命令,并能够在终端窗口中看到命令的运行结果,此后,将会出现一个新的提示符,标志着新命令行的开始。字符终端窗口中出现的Shell提示符因用户不同而有所差异,其中,普通用户的命令提示符为“$”,超级管理员用户的命令提示符为“#”,这两个符号之间所表示的用户身份的差别,在Linux攻防中是非常重要的。因为在Linux用户的提权攻击过程中,当同一用户账户在不同时间段登录系统后,如果在字符终端窗口中提示符从“$”变为“#”,说明提权操作成功。
Linux系统中的命令是区分大小写的。在Linux命令行中,可以使用Tab键来自动补齐命令,即可以只输入命令的前几个字母,然后按Tab键,系统将自动补齐该命令; 如果命令不止一个,则显示所有和输入字符相匹配的命令。按Tab键时,如果系统只找到一个和输入字符相匹配的目录或文件,则自动补齐; 如果没有匹配的内容或有多个相匹配的名称,系统将发出警鸣声,再按一下Tab键将列出所有相匹配的内容,以供用户利用向上或向下的光标键来选择。
Linux可以翻查曾经执行过的历史命令。如果要在一个命令行上输入和执行多条命令,可以使用分号来分隔命令,如“cd /;ls”; 如果要使程序以后台方式执行,只需在要执行的命令后跟上一个“&”符号即可。
3.1.2实验目的和条件
1. 实验目的
通过本实验,使读者掌握以下内容。
(1) Linux命令行的操作方法。
(2) 文件目录类命令的使用方法。
(3) 系统信息类命令的使用方法。
(4) 进程管理类命令的使用方法。
2. 实验条件
本实验需要在一台运行Linux操作系统的计算机上完成,这台计算机既可以是一台物理机,也可以是一台虚拟机(在实验中,如果没有特殊要求,建议使用虚拟机)。本实验使用的Linux操作系统为Red Hat。
3.1.3实验过程
步骤1: 进入实验用的Red Hat操作系统后,在命令行终端窗口中可以输入简单的命令,如图31所示。
图31Linux的字符操作界面
在命令行中,先来熟悉一些简单的命令,并了解这些命令的用途。其中,浏览目录类命令主要包括pwd、cd、ls,浏览文件类命令主要包括cat、more、less、head、tail,目录操作类命令主要包括mkdir、rmdir,文件操作类命令主要包括cd、rm、diff、tar、mv、whereis、grep。
步骤2: 在图32中,开始演示浏览目录类命令pwd、cd、ls的使用。其中,“ls la /home/”命令为列出home目录中包含隐藏文件在内的所有文件。其他浏览目录类命令希望读者自己动手进行练习。
图32浏览目录
步骤3: 在图33中,开始演示浏览文件类命令cat、more、less、head、tail的使用。
图33浏览文件
步骤4: 在图34中,开始演示目录操作类命令mkdir、rmdir的使用。
图34目录操作
步骤5: 在图35中,开始演示文件操作类命令cd、rm、diff、tar、mv、whereis、grep的使用。
图35文件操作
在Linux操作系统中,还有以下一些常用的命令。
dmesg: 显示系统诊断信息、操作系统版本号、物理内存大小及其他信息。
df: 查看文件系统的各个分区占用情况。
du: 查看某个目录中的各级子目录使用硬盘空间数。
free: 查看系统内存、虚拟内存的大小及占用情况。
date: 查看和设置当前日期和时间。
cal: 显示指定月份或年份的日历。
clock: 显示系统时钟。
ps: 查看系统进程。
kill: 向进程发送强制终止信号。
killall: 根据进程名发送终止信号。
nice: 指定运行程序优先级。
renice: 根据进程的进程号来改变进程的优先级。
top: 实时监控进程状态。
bg、jobs、fg: 控制进程显示。
3.1.4任务与思考
考虑到部分读者对Linux操作系统的命令行操作不熟悉,本实验主要通过对常用命令的学习,使读者逐渐熟悉Linux的操作环境,并初步掌握一些常用命令的功能和使用方法。
Linux在服务器应用中占有绝对的优势,目前DNS、DHCP、NAT等大量的互联网基础信息服务都构建在Linux操作系统之上,同时Web、Email、FTP等服务平台也主要选择Linux操作系统。对于网络攻防的学习来说,读者必须通过系统学习来掌握Linux操作系统的相关操作,同时对Linux的工作机制有一个全面深入的认识。其中包括Linux操作系统在进程与线程管理、内存管理、系统管理、设备控制、网络、系统调用等方面形成的特有工作机制,掌握这些工作机制为全面学习Linux操作系统的功能及应用特点是非常有帮助的。
请读者借助各类工具,通过查阅相关文献,并进行实验操作,来掌握与Linux工作机制相关的内容。
3.2Linux用户和组的管理
3.2.1预备知识: Linux用户和组的管理特点
Linux操作系统是一个多用户、多任务的操作系统,允许多个用户同时登录到同一个系统,使用系统资源。为了使所有用户的工作顺利进行,保护每个用户的文件和进程,规范每个用户的权限,需要区分不同的用户,因此产生了用户账户和组群。
用户账户是用户的身份标识,用户通过用户账户可以登录到系统,并且访问已经被授权的资源。系统依据账户来区分属于每个用户的文件、进程、任务,并给每个用户提供特定的工作环境,使每个用户的工作都能各自独立不受干扰地进行。
Linux系统下的用户账户分为普通用户账户和超级用户账户(root)两种类型。其中,超级用户账户又称为根用户或管理员账户,可以对普通用户和整个系统进行管理。Linux系统下的账户管理具有以下特点。
(1) 组群也称为工作组,是具有相同特性的用户的逻辑集合,使用组群有利于系统管理员按照用户的特性组织和管理用户,提高工作效率。
(2) 在为资源授权时可以把权限赋予某个组群,组群中的成员即可自动获得这种权限。
(3) 一个用户账户至少属于一个用户组,当某一用户账户属于多个组群的成员时,其中某个组群是该用户的主组群(私有组群),其他组群是该用户的附属组群(标准组群)。
(4) 每一个用户都有一个唯一的身份标识,称为用户ID(UID); 每一个用户组也有一个唯一的身份标识,称为用户组ID(GID)。其中,root用户的UID为0。
(5) 普通用户的UID可以在创建时由管理员指定,如果不指定,用户的UID默认从500开始顺序编号。
Linux系统下,用户账户文件有以下两个。
(1) /etc/passwd文件: 用户账户信息。
(2) /etc/shadow文件: 用户口令。
Linux系统下,组群文件有以下3个。
(1) /etc/group文件: 组群账户信息。
(2) /etc/gshadow文件: 组群口令、管理员等管理信息。
(3) /etc/login.defs文件: 设置用户账户限制的文件,该文件中的配置对root用户无效。
3.2.2实验目的和条件
1. 实验目的
通过本实验,使读者掌握以下内容。
(1) 用户和组群的配置文件。
(2) Linux下用户的创建、管理和维护。
(3) Linux下组群的创建、管理和维护。
(4) 用户账户管理器的使用方法。
2. 实验条件
本实验中所使用的Linux操作系统为Red Hat,既可以运行在物理机上,也可以运行在虚拟环境中。对于初学者来说,建议在VMware等虚拟机环境中安装Linux操作系统,进行相关的实验。
3.2.3实验过程
步骤1: 使用“cat/etc/passwd”命令查看/etc/passwd文件,如图36所示。
图36查看/etc/passwd文件
需要说明的是,/etc/passwd文件每行使用“:”分隔几个域,真正的密码保存在shadow文件中。
步骤2: 使用“cat/etc/shadow”命令查看/etc/shadow文件,如图37所示。
图37查看/etc/shadow文件
需要说明的是,所有用户对passwd文件均可读取,但只有root用户对shadow文件可读,因此密码存放在shadow文件中更安全。
步骤3: 使用“cat/etc/group”命令查看/etc/group文件。用户的组账户信息放在group文件中,任何用户都可以查看且用“:”将几个域分开,如图38所示。
图38查看/etc/group文件
步骤4: 使用“cat/etc/gshadow”命令查看/etc/gshadow文件。gshadow文件用于存放组群的加密口令、组管理员等信息,只有root用户可读,用“:”分割成4个域,如图39所示。
图39查看/etc/gshadow文件
步骤5: 使用“useradd”或“adduser”命令创建新用户,其命令格式为:
useradd [选项] username
例如,创建一个名称为cloud用户,如图310所示。
图310创建新用户
需要说明的是,如果系统中创建的用户名已经存在,将出现如图311所示的提示信息。
图311当要创建的用户在系统中存在时出现的提示信息
“useradd”命令的选项含义。
vc comment: 用户的注释性信息。
vd home_dir: 指定用户的主目录。
ve expire_date: 禁用账号的日期,格式为: YYYYMMDD。
vf inactive_days: 设置账户过期多少天后,用户账户被禁用。
vu UID: 指定用户的UID。
vg initial_group: 用户所属主组群的组群名称或GID。
vG grouplist: 用户所属的附属组群列表。
vm: 如果用户主目录不存在,则创建它。
vM: 不要创建用户主目录。
vn: 不要为用户创建用户私人组群。
vp: 加密的口令。
vr: 创建UID小于500的不带主目录的系统账号。
vs: 指定用户的登录Shell,默认为/bin/bash。
步骤6: 新建用户user1,UID为510,指定其所属的私有组为cloud(cloud组的标志符为1001),用户的主目录为/home/user1,用户的Shell为/bin/bash,用户的密码为123456,账户永不过期,如图312所示。
图312新建用户
步骤7: 新建了用户后,要为用户设置口令,未设置口令的用户不能登录系统,使用user1来登录系统(logout注销后,再使用user1用户登录),如图313所示。
图313为新建用户设置口令
步骤8: 请读者重新使用root账户登录,来指定和修改user1用户账户口令: passwd,如图314所示。
图314指定和修改user1用户账户口令
需要说明的是,超级用户root可以为自己和其他用户设置口令,而普通用户只能为自己设置口令。
步骤9: 创建组群命令“groupadd”或“addgroup”。现在创建一个组群testgroup,如图315所示。
图315创建组群
步骤10: 使用“tail l /etc/group”命令查看新建的组群信息,如图316所示。
图316查看新建的组群信息
步骤11: 修改组群、gid、组群名称,如图317所示。
图317修改组群、gid、组群名称
评论
还没有评论。