2020年因为疫情,计划是上半年考,改为下半年考,但题目是上半年已经出好了的,所以还是第一版教材的内容。
如大家在学习中遇到问题,欢迎通过邮件2976033@qq.com留言给作者,以便共同探讨。
试题一(共14分)
阅读下列说明,回答问题1至问题6,将解答填入答题纸的对应栏内。
【说明】Linux系统通常将用户名相关信息存放在/etc/passwd文件中,假如有/etc/passwd文件的部分内容如下,请回答相关问题。
security@ubuntu:~$cat/etc/passwd
user1:x:0:0:user:/home/user1:/bin/bash
user2:x:1000:1000:ubuntu64:/home/user2:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
【问题1】(2分)
口令字文件/etc/passwd是否允任何用户访问?
【问题2】(2分)
根据上述/etc/passwd显示的内容,给出系统权限最低的用户名字。
【问题3】(2分)
在Linux中,/etc/passwd文件中每一行代表一个用户,每行记录又用冒号(:)分隔为7个字段,请问Linux操作系统是根据哪个字段来判断用户的?
【问题4】(3分)
根据上述/etc/passwd显示的内容,请指出该系统中允许远程登陆的用户名。
【问题5】(2分)
Linux系统把用户密码保存在影子文件中,请给出影子文件的完整路径及其名字。
【问题6】(3分)
如果使用Ls-al命令查看影子文件的详细信息,请给出数字形式表示的影子文件访问权限。
试题一参考答案与试题解析:
【问题1】参考答案: 允许
试题解析:/etc/passwd文件是系统用户配置文件,因为文件中存储了所有用户的宿主目录、shell等信息,因此所有用户都可以对此文件执行读(r)操作。
【问题2】参考答案: user2
试题解析:Linux系统中用户有用户ID和组ID两个内部标识,其中用户ID的范围是0~65535,其中0是超级用户root的标识号;1~99由系统保留,作为管理预设账号;100~499保留给一些服务使用;500~65535给一般用户使用。从题干来看,只有user2的用户D是1000,对应的是普通用户,而其他用户的ID要么是系统管理员,要么是管理预设账号,权限通常比普通用户高。
【问题3】参考答案:UID
试题解析:/etc/passwd文件用于用户登录时校验用户的口令,文件中每行的一般格式为:
LOGNAME:PASSWORD:UID:GID:USERINFO:HOME:SHELL
每行的头两项是登录名和加密后的口令,后面的两个数是UID和GID,接着的一项是系统管理员想写入的有关该用户的任何信息,最后两项是两个路径名:一个是分配给用户的HOME目录,第二个是用户登录后将执行的shell,.如果为空格则表示默认的是bin/sh。
用户标识号(UID)是一个整数,系统内部用它来标识用户,一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等,因此判断用户身份的是UID。
【问题4】参考答案: user1、user2
试题解析:Shell是用户登录到系统后运行的命令解释器或某个特定的程序,是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,此时这个字段的值为bin/sh。Linux系统可以使用nologin确定用户是否可以登陆系统,在某用户信息后添加nologin之后,用户不能登录系统,但可以登录FTP、SAMBA等。
根据题干信息,daemon,sys和bin后面有禁止登陆信息。同时要注意,有一些系统账户如daemon、bin、sync等,是为了管理相关服务,不能远程登陆系统的shell。.
【问题5】参考答案: /etc/shadow
试题解析:有些Linux系统中口令不再直接保存在passwd文件中,通常将passwd文件中的口令字段使用一个“x”来代替,/etc/shadow则成为了真正的口令文件,用于保存口令数据。
【问题6】参考答案: 400或者000
试题解析:shadow文件是不能被普通用户读取的,只有超级用户才有权读取。/etc/shadow文件的默认权限一般是400。某些版本系统是000,表示只有root可以读写这个文件。
试题二(共20分)
阅读下列说明,回答问题1至问题8,将解答填入答题纸的对应栏内。
【说明】密码学作为信息安全的关键技术,在信息安全领域有着广泛的应用。密码学中,根据加密和解密过程所采用密钥的特点可以将密码算法分为两类:对称密码算法和非对称密码算法。此外,密码技术还用于信息鉴别、数据完整性检验、数字签名等。
【问题1】(3分)
信息安全的基本目标包括:真实性、保密性、完整性、不可否认性、可控性、可用性、可审查性等。密码学的三大安全目标C、I、A分别表示什么?
【问题2】(3分)
RSA公钥密码是一种基于大整数因子分解难题的公开密钥密码。对于RSA密码的参数P、q、n、Φ(n)、e、d,哪些参数是可以公开的?
【问题3】(2分)
如有RSA密码算法的公钥为(55,3),请给出对小王的年龄18进行加密的密文结果。
【问题4】(2分)
对于RSA密码算法的公钥(55,3),请给出对应的私钥。
【问题5】(2分)
在RSA公钥算法中,公钥和私钥的关系是什么?
【问题6】(2分)
在RSA密码中,消息m的取值有什么限制?
【问题7】(3分)
是否可以直接使用RSA密码进行数字签名?如果可以,请给出消息m的数字签名方法。如果不可以,请给出原因。
【问题8】(3分)
上述RSA签名体制可以实现【问题1】所述的哪3个安全基本目标?
试题二参考答案与试题解析:
【问题1】参考答案: 保密性、完整性、可用性
试题解析:保密性(Confidentiality)是指确保信息仅被合法用户访问,而不泄露给非授权的用户:完整性(Integrity)指所有资源只能由授权方或者以授权方式进行修改;可用性(Availability)指所有资源在适当的时候可以由授权方访问。
【问题2】参考答案: n、e
试题解析:根据RSA公钥密码算法的基本原理,求两个大素数的乘积很容易但是反过来则非常困难。因此在RSA公钥密码算法中,通常先找到两个大的素数P和Q,利用P和Q计算出公开密钥(e,n)之后,会将P、Q和φ(n)丢弃,公钥(n,e)公开,私钥(n,d)严格保密。具体加密算法如下:
- 选取两个大的素数p和q;
- 计算p和g的乘积n=pXg:
- 随机选取一个与φ(n)=(p-1)×(g-1)互质的数e,也即是gcd(d,(p-1)×(1-1))=1;
- 计算e模φ(n)的逆元d,也即是计算满足(e•d)modφ(n)=1的d;
- 将(n,e)公开作为公钥,任何人都可以获取;将(n,d)作为私钥,妥善保存。
【问题3】参考答案: 2
试题解析:①利用给出的公钥(55,3),得n=55=PQ,因此P、Q分别是5和11,e=3;
②φ(n)=(5-1)*(11-1)=40;
③(ed)mod40=1,即(3d)mod40=1,3d=41时,d非整数,3d=81时,d=27;
④消息m=18,cmemodn=183mod55=5832 mod55=2
【问题4】参考答案: (55,27)
试题解析:根据上分析,可知对应的d=27,对应的私有密钥为(55,27)。
【问题5】参考答案: (ed)modφ(n)=1
试题解析:见问题2解析。
【问题6】参考答案: 消息m取值必须是整数且小于n
试题解析:m必须是整数(字符串可以取ASCI值或Unicode值),且m必须小于n。
【问题7】参考答案: 不可以直接使用RSA进行数字签名,因为RSA的密钥没有与用户的身份进行捆绑,有可能被假冒。
试题解析:不可以直接使用RSA进行数字签名,因为RSA的密钥并没有与用户身份绑定,也就是没有使用数字证书对秘钥进行身份验证。直接使用RSA私钥进行签名有可能被假冒。
【问题8】参考答案: 完整性、真实性和不可否认性
试题解析:RSA数字签名机制可以实现消息的不可否认性、真实性、完整性。
试题三(共15分)
阅读下列说明,回答问题1至问题5,将解答填入答题纸的对应栏内。
【说明】防火墙作为网络安全防护的第一道屏障,通常用一系列的规则来实现网络攻击数据包的过滤。
【问题1】(3分)
图3.1给出了某用户Windows系统下的防火墙操作界面,请写出Windows下打开以下界面的操作步骤。
【问题2】(4分)
Smurf拒绝服务攻击结合IP欺骗和ICMP回复方法使大量网络数据包充斥目标系统,引起目标系统拒绝为正常请求提供服务。请根据图3.2回答下列问题。
(1)上述攻击针对的目标IP地址是多少?
(2)在上述攻击中,受害者将会收到ICMP协议的哪一种数据包?
【问题3】(2分)
如果Windows系统中对上述Smurf攻击进行过滤设置,应该图3.1中“允许应用或者功能通过Windows defender防火墙”下面的选项中选择哪一项?
【问题4】(2分)
要对入站的ICMP协议数据包设置过滤规则,应选择图3.3的哪个选项?
【问题5】(4分)
在图3.3的端口和协议设置界面中,请分别给出“协议类型(P)”和“协议号(U)”,“本地端口(L)、“远程端口(R)”的具体设置值。
试题三参考答案与试题解析:
【问题1】参考答案:
通过控制面板->系统和安全->Windows Defender防火墙,可以进入当前界面。
试题解析:题目所示图片中完整给出了防火墙路径。
【问题2】参考答案:
(1)192.168.27.1
(2)ICMP echo reply数据包
试题解析:Smurf攻击者向网络广播地址发送ICMP echo request包,并将回复地址设置成受害主机地址,网络中的主机都会对这个请求包做出回应,从而导致网络中大量的iemp echo reply应答数据包淹没受害主机。根据图中的信息可知,发送的ICMP回送请求包对应的目标地址是192.168.27.255,是一个广播地址,而源主机的地址是192.168.27.1,由此可知,ICMP的回送回答报文(ICMP echo reply包)全部会发给192.168.27.1,从而使192.168.27.1遭受攻击。
【问题3】参考答案: 高级设置
试题解析:在windows防火墙中,不能直接对smurf攻击进行配置拦截,需要使用windows防火墙的高级功能里面的自定义入站规则进行,因此需要选择高级配置选项。
【问题4】参考答案: 自定义
试题解析:对入站的ICMP协议数据包设置过滤规则,只能采用自定义形式。
【问题5】参考答案:
协议类型(P):ICMPv4
协议号(U):1
本地端口(L):所有端口
远程端口(R):所有端口
试题解析:因为ICMP协议是一个网络层协议,不具备传输层的端口号等特性,并且从题目可以看到,这是基于ICMPv4协议的smurf攻击,因此只要在协议类型中选择“ICMPv4”即可。ICMP协议的协议号是1。本地和远程端口都无需设置。
试题四(共12分)
阅读下列说明,回答问题1至问题6,将解答填入答题纸的对应栏内。
【说明】ISO安全体系结构包含的安全服务有七大类,即:①认证服务:②访问控制服务:③数据保密性服务:④数据完整性服务:⑤抗否认性服务:⑥审计服务:⑦可用性服务。
请问以下各种安全威胁或者安全攻击可以采用对应的哪些安全服务来解决或者缓解。
请直接用上述编号①⑦作答。
【问题1】(2分)
针对跨站伪造请求攻击可以采用哪些安全服务来解决或者缓解?
【问题2】(2分)
针对口令明文传输漏洞攻击可以采用哪些安全服务来解决或者缓解?
【问题3】(2分)
针对Smurf攻击可以采用哪些安全服务来解决或者缓解?
【问题4】(2分)
针对签名伪造攻击可以采用哪些安全服务来解决或者缓解?
【问题5】(2分)
针对攻击进行追踪溯源时,可以采用哪些安全服务?
【问题6】(2分)
如果下载的软件被植入木马,可以采用哪些安全服务来进行解决或者缓解?
试题四参考答案:与试题解析:
【问题1】参考答案: ①
试题解析:跨站伪造请求利用了web用户身份验证漏洞,即简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。因此跨站请求攻击主要是利用了对请求的身份真实性没有严格验证,这可以通过认证服务来缓解。
【问题2】参考答案: ③
试题解析:口令明文传输可能导致口令被攻击者截获,从而导致这个口令对应的用户账户被攻击。为了避免口令明文传输的问题,可以采用数据保密性服务,将口令加密,从而使口令变成密文。
【问题3】参考答案: ⑦
试题解析:Smurf攻击是让目标主机被大量的ICMP echo reply报文所淹没,从而失去正常服务的能力,因此可采用可用性服务来缓解。
【问题4】参考答案: ④
试题解析:数字签名具有发送方不能抵赖、接收方不能伪造的能力,签名伪造主要是攻击数据的完整性,因此可采用数据完整性服务来缓解。
【问题5】参考答案: ⑥
试题解析:安全审计是一种事后追查的安全技术。安全审计的作用包括追查执行事件的当事人,明确事故责任;分析审计信息,发现系统设计、配置缺陷,从而提高系统安全性;结合告警模块,可以对系统状态进行实时监控。
【问题6】参考答案: ②
试题解析:系统事先给访问主体(进程、文件、设备等)和受控对象分配不同的安全级别属性,系统严格依据安全级别属性决定主体是否能够进行访问,这种方式可以防范木马攻击。
试题五(共14分)
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】代码安全漏洞往往是系统或者网络被攻破的头号杀手。在C语言程序开发中,由于C语言自身语法的一些特性,很容易出现各种安全漏洞。因此,应该在C程序开发中充分利用现有开发工具提供的各种安全编译选项,减少出现漏洞的可能性。
【问题1】(4分)
图5.1给出了一段有漏洞的C语言代码(注:行首数字是代码行号),请间,图中代码存在哪种类型的安全漏洞?该漏洞和C语言数组的哪一个特性有关?
【问题2】(4分)
图5.2给出了C程序的典型内存布局,请回答如下问题。
(1)请问图5.1的代码第9行的变量authenticated保存在图5.2所示的哪个区域中?
(2)请问stack的两个典型操作是什么?
(3)在图5.2中的stack区域保存数据时,其地址增长方向是往高地址还是往低地址增长方向?
(4)对于图5.1代码中的第9行和第10行代码的两个变量,哪个变量对应的内存地址更高?
【问题3】(6分)
微软的Visual Studio提供了很多安全相关的编译选项,图5.3给出了图5.1中代码相关的工程属性页面的截图。请回答以下问题。
(1)请问图5.3中哪项配置可以有效缓解上述代码存在的安全漏洞?
(2)如果把图5.1中第10行代码改为char buffer[4],图5.3的安全编译选项是否还起作用?
(3)模糊测试是否可以检测出上述代码的安全漏洞?
试题五参考答案与试题解析:
【问题1】参考答案:
缓冲区溢出漏洞。该漏洞和C语言不对数组进行边界检查的特性有关。
试题解析:C语言不进行数组的边界检查,都假定缓冲区的长度是足够的,但实际上并非如此。这往往会导致缓冲区溢出。缓冲区溢出攻击的原理是,函数的局部变量在栈中是一个紧接一个地排列。如果局部变量中有数组变量,而程序中没有针对数组越界操作的判断,那么越界的数组元素就可能破坏栈中的相邻变量、EBP(extended base pointer)、返回地址的值。
【问题2】参考答案:
(1)stack区。
(2)入栈、出栈
(3)往低地址方向增长
(4)authenticated
试题解析:
(1)authenticated属于main函数中的变量,是局部变量。而局部变量存放在stack区。
(2)堆栈的两个典型操作是入栈和出栈。
(3)stack区域保存数据时,其地址增长方向是往低地址增长方向。
(4)第9行的变量authenticated和第10行的数组变量buffer,.均为局部变量,因此均存放在栈区。而堆栈的特点是先进后出,且该区域保存数据的地址增长方向是向往低地址增长的。而authenticated先进入堆栈,所以对应的内存地址更高。
各类型的变量在内存中所处的位置如下图所示。
【问题3】参考答案:
(1)Security Check
(2)起作用
(3)能
试题解析:
(1)编译器启用Security Check时,可以检查缓冲区溢出。/GS就是缓冲区安全检查。
(2)第10行代码改为char buffer[4]时,程序因为strcpy(buffer,password)语句导致缓冲区溢出,所以安全编译选项起作用。
(3)模糊测试属于软件测试中的黑盒测试,是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。模糊测试不需要读懂程序的代码就可以发现问题,所以能发现有漏洞,但不能确定代码中问题的位置。