2020年信息安全工程师下午真题(专业解析+参考答案)

第 1 题

阅读下列说明和图,回答问题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行代码改为charbuffer[4];图5-3的安全编译选项是否还起作用?
(3)模糊测试是否可以检测出上述代码的安全漏洞?

答案与解析

  • 试题难度:一般
  • 知识点:网络攻击原理与常用方法>网络攻击案例分析
  • 试题答案:

    【问题1】
    缓冲区(栈 )  溢出。
    不对数组越界进行检查。
    【问题2】
    (1)stack
    (2)push和pop或者压栈和弹栈
    (3)高地址
    (4)第9行或者authenticated变量
    【问题3】
    (1)Enable Security Check(/GS)
    (2)不起作用
    (3)可以检测出漏洞

  • 试题解析:

    本题考查软件安全的漏洞类型以及安全开发的知识,是关于代码安全的问题。
    【问题1】
    这类漏洞是由于函数内的本地变量溢出造成的,而本地变量都位于堆栈区域,因此这类漏洞一般称为栈溢出漏洞。主要是因为C语言编译器对数组越界没有进行检查导致的。
    【问题2】
    第9行的变量authenticated同样是本地变量,因此位于堆栈(stack) 区域。堆栈结构常见的操作就是push和pop。在数据往堆栈区域写时,都是往高地址写的。在入栈时,则是第9行的变量先入栈在高地址,后续的第10行代码对应的变量buffer后入栈在低地址,因此第9行的变量在高地址。只有这样在往buffer 数组拷贝过多的数据时,才会覆盖掉后续的authenticated变量。
    【问题3】
    微软的Visual Studio编译器提供了很多的安全编译选项,可以对代码进行安全编译,例如图中Enable Security Check(/GS)可以在栈中添加特殊值,使得一旦被覆盖就会导致异常,从而增加漏洞利用难度。该编译选项针对小于等于4个字节的数组不起保护作用。模糊测试通过发送不同长度的数据给buffer, 可能导致覆盖后续变量和指针值,导致程序异常从而触发监测,因此采用模糊测试的方法是可以检测出此类漏洞的。

第 2 题

阅读下列说明,回答问题1至问题6,将解答填入答题纸的对应栏内。
【说明】
ISO安全体系结构包含的安全服务有七大类,即:①认证服务;②访问控制服务;③数据保密性服务;④数据完整性服务;⑤抗否认性服务;⑥审计服务;⑦可用性服务。
请问以下各种安全威胁或者安全攻击可以采用对应的哪些安全服务来解决或者缓解。请直接用上述编号①~⑦作答。

【问题1】(2分)
针对跨站伪造请求攻击可以采用哪些安全服务来解决或者缓解?
【问题2】(2分)
针对口令明文传输漏洞攻击可以采用哪些安全服务来解决或者缓解?
【问题3】(2分)
针对Smurf攻击可以采用哪些安全服务来解决或者缓解?
【问题4】(2分)
针对签名伪造攻击可以采用哪些安全服务来解决或者缓解?
【问题5】(2分)
针对攻击进行追踪溯源时,可以采用哪些安全服务?
【问题6】(2 分)
如果下载的软件被植入木马,可以采用哪些安全服务来进行解决或者缓解?

答案与解析

  • 试题难度:一般
  • 知识点:网络安全体系与网络安全模型>网络安全体系建设参考案例
  • 试题答案:

    【问题1】

    【问题2】

    【问题3】

    【问题4】

    【问题5】

    【问题6】

  • 试题解析:

    木题考查网络安全目标、安全攻击和安全服务之间的关系。
    ISO的七大类安全服务包括认证服务、访问控制服务、数据保密性服务、数据完整性服务、抗否认性服务、审计服务和可用性服务。这七大类服务的具体含义如下:
    认证服务:在网络交互过程中,对收发双方的身份及数据来源进行验证。
    访问控制服务:防止未授权用户非法访问资源,包括用户身份认证和用户权限确认。
    数据保密性服务:防止数据在传输过程中被破解、泄露。
    数据完整性服务:防止数据在传输过程中被篡改。
    抗否认性服务:也称为抗抵赖服务或确认服务。防止发送方与接收方双方在执行各自操作后,否认各自所做的操作。
    审计服务:对用户或者其他实体的所作所为( 何时如何访问什么资源)进行详细记录。
    可用性服务:确保合法用户可以得到应有的服务。
    【问题1】
    跨站伪造请求是以其他用户身份发生访问请求,对应的是身份认证服务。
    【问题2】
    口令应该加密以后进行传输,因此对应的是数据保密性服务。
    【问题3】
    Smurf攻击是一-种拒绝服务攻击,对应的是可用性服务。
    【问题4】
    签名伪造针对的是数字签名,通过抗否认性服务,确保签名的真实性。
    【问题5】
    追踪溯源通常是通过网络流量分析或者主机系统的日志进行分析,这些都可以通过审计服务来实现。
    【问题6】
    下载的软件一旦被植入恶意代码通常会改变文件的哈希值,这可以通过数据完整性服务来实现。

第 3 题

阅读下列说明,回答问题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-4的端口和协议设置界面中,请分别给出“协议类型(P)” “协议号(U)” “本地端口(L)” “远程端口(R)”的具体设置值。

答案与解析

  • 试题难度:一般
  • 知识点:防火墙技术原理与应用>防火墙技术应用
  • 试题答案:

    【问题1】
    [开始]→[控制面板]→[系统和安全]→[Windows Defender防火墙]

    运行“control[.exe]”→[系统和安全]→[Windows Defender防火墙]
    【问题2】
    (1)192.168.27.1
    (2)Echo reply(回响应答 )
    【问题3】
    高级设置。
    【问题4】
    自定义。
    【问题5】
    协议类型(p):ICMPv4
    协议号(U):自动填1
    本地端口(L):不用填或空白
    远程端口(R):不用填或空白

  • 试题解析:

    本题考查Windows系统下的防火墙以及网络攻击的过滤防护知识及应用。
    此类题目要求考生熟悉常见的网络攻击手段及其相应的网络数据分组,并具备Wireshark工具的基本使用方法,能针对不同的网络攻击方法配置对应的防护措施。
    【问题1】
    要求掌握Windows系统的基本操作。根据图中显示的窗口标题名字或者路径信息【系统和安全】-【Windows Defender防火墙】,可知从控制面板是可以访问到图中界面的。打开控制面板可以从命令行进入,也可以从开始菜单进入。
    【问题2】
    从图中可以发现攻击数据包的规律:源地址都是192.168.27.1, 目的地址是一个广播地址192.168.27.255, 采用ICMP协议。由于它是广播地址,对应的同网内的所有地址都可以收到,因此上述同网的大量机器会向源地址192. 168.27.1发送应答分组,从而造成大量数据包发往源地址,所以在此源地址才是受害(被攻击)地址。发送的分组是Echo request,对应的应答分组是Echo reply。
    【问题3】
    Windows防火墙要定制过滤规则需要从“高级设置”进入。
    【问题4】
    针对ICMP协议,既不是程序,也没有端口,更不是预先定义的规则,只能通过“自定义”进行设置。
    【问题5】
    ICMP协议工作在网络层,没有传输层的端口信息。因此端口信息是不需要填写的。对于协议类型选择ICMPv4,协议号会自动填1。

第 4 题

阅读下列说明,回答问题1至问题8,将解答填入答题纸的对应栏内。
【说明】
密码学作为信息安全的关键技术,在信息安全领域有着广泛的应用。密码学中,根据加密和解密过程所采用密钥的特点可以将密码算法分为两类:对称密码算法和非对称密码算法。此外,密码技术还用于信息鉴别、数据完整性检验、数字签名等。

【问题1】(3分)
信息安全的基本目标包括:真实性、保密性、完整性、不可否认性、可控性、可用性、可审查性等。密码学的三大安全目标C.I.A分别表示什么?
【问题2】(3分)
RSA公钥密码是一种基于大整数因子分解难题的公开密钥密码。对于RSA密码的参数:p,q,n,p(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所述的哪三个安全基本目标?

答案与解析

  • 试题难度:一般
  • 知识点:密码学基本理论>常见密码算法
  • 试题答案:

    【问题1】
    保密性、完整性、可用性。
    【问题2】
    n, e
    【问题3】
    【问题4】
    (55,27 )
    【问题5】
    eXd=1 mod φ(n);一个加密另一个可以解开;从一个密钥无法推导出另一个。
    【问题6】
    消息m的十进制表示值小于n的值。
    【问题7】
    可以。
    签名:用私钥加密;验证:用公钥解密。
    签名=memodn
    【问题8】
    真实性、保密性、完整性

  • 试题解析:

    本题考查公钥密码算法RSA的基本原理及其加解密过程。
    此类题目要求考生对常见的密码算法及其应用有清晰的了解。
    【问题1】
    CIA分别表示单词Confidentiality、Integrity 和Availability,也就是保密性、完整性和可用性三个安全目标的缩写。
    【问题2】
    RSA密码是基于大数分解难题,RSA密码的参数主要有: p,q,n,p(n),e,d, 其中模数n=pXq, q(m)=(p-1)X(q-1), eXd=lmod o(n),由这些关系,只有n和e作为公钥是可以公开的,其他的任何一个参数泄露,都会导致私钥泄露。
    【问题3】
    根据RSA加密算法,密文c= 183 mod 55=2。
    【问题4】
    根据n=55,可知p=lI, g=5,o(n)=-40, 由e=3,可得到d=27时满足eXd=lmod40,因此私钥为(55, 27)。
    【问题5】
    公钥密码体制有两个密钥,一个是公钥,一个是私钥。其中一个用于加密,可以用另一个解密。
    【问题6】
    消息m所表示的10进制值不能大于模数n的值,否则将导致解密有误。
    【问题7】
    使用RSA可以进行数字签名,直接用私钥对消息进行加密即可,其他人可以用对应的公钥进行解密并验证签名。签名公式就是消息的加密公式。
    签名=m mod n
    【问题8】
    RSA签名体制的私钥签名确保消息的真实性,RSA加密提高保密性,哈希计算提高完整性。

第 5 题

阅读下列说明,回答问题1至问题6,将解答填入答题纸的对应栏内。
【说明】
Linux系统通常将用户名相关信息存放在/etc/passwd文件中,假如有/etc/passwd文件的部分内容如下,请回答相关问题。

【问题1】(2分)
口令字文件/etc/passwd是否允许任何用户访问?
【问题2】 (2分)
根据上述/etc/passwd显示的内容,给出系统权限最低的用户名字。
【问题3】(2分)
在Linux中,/etc/passwd 文件中每一行代表一个用户, 每行记录又用冒号(:)分隔为7个字段,请问Linux操作系统是根据哪个字段来判断用户的?
【问题4】(3分)
根据上述/et/passwd显示的内容,请指出该系统中允许远程登录的用户名。
【问题5】(2分)
Linux系统把用户密码保存在影子文件中,请给出影子文件的完整路径及其名字。
【问题6】(3分)
如果使用1s-a1命令查看影子文件的详细信息,请给出数字形式表示的影子文件访问权限。

答案与解析

  • 试题难度:一般
  • 知识点:操作系统安全保护>UNIX/Linux操作系统安全分析与防护
  • 试题答案:

    【问题1】
    允许
    【问题2】
    user2
    【问题3】
    第三个字段或者UID字段
    【问题4】
    user1,user2,sync
    【问题5】
    /etc/shadow
    【问题6】
    640或者600或者400或者000

  • 试题解析:

    本题考查Linux系统身份认证和权限控制相关的知识点。
    此类题目要求考生对常用的操作系统安全机制有清晰的理解,并对安全机制在操作系统中的具体实现及其使用能熟练掌握。题目围绕Linux系统的口令字文件/etc/passwd设置相关的考查点。
    【问题1】
    因为操作系统通常都允许每个用户修改自己的身份信息包括口令,如果用户无法访问/etc/passwd文件, 则无法满足上述要求,因此任何用户都可以访问该文件。
    【问题2】
    Linux系统用户是根据用户ID来识别的,用户ID与用户名是一一对应的。用户ID取值范围是0~65535。0表示超级用户root, 1~499 表示系统用户,普通用户从500开始。用户ID由/etc/passwd文件每一行用冒号隔开的第三列表示,由此得知本题的user2 的用户ID值为1000,属于普通用户,其权限最低。
    【问题3】
    Linux系统用户是根据用户ID (UserID,简称UID)来识别的。
    【问题4】
    在/etc/passwd的最后一列, 可以看到有/usr/sbin/nologin或者为空,通常意味着该用户无法登录系统。因此,user1/user2/sync 用户可以登录。
    【问题5】
    为了安全起见,用户口令通常保存在另外-一个文件中,文件路径和名字为:/etc/shadow。
    【问题6】
    上述影子文件不像etc/passwd文件,不是每个用户都可以访问的,否则每个人都能看到其他用户加密存储的口令字。该文件通常只能由root查看和修改,其他用户是没有任何访问权的。具体到不同的Linux类系统稍微有些不同,主要的访问权限有640或者600或者400或者000。

results matching ""

    No results matching ""