试题一 阅读下列说明,回答问题1 至问题3 ,将解答写在答题纸的对应栏内。
【说明】
安全目标的关键是实现安全的三大要素:机密性、完整性和可用性。对于一般性的信息类型
的安全分类有以下表达形式:
{ (机密性,影响等级), (完整性,影响等级), (可用性,影响等级) }
在上述表达式中,"影响等级"的值可以取为低 (L)、中(M)、高(H) 三级以及不适用 (NA)。
问题: 1.1(6 分)
请简要说明机密性、完整性和可用性的含义。
问题: 1.2(2 分)
对于影响等级"不适用"通常只针对哪个安全要素?
问题: 1.3(3 分)
如果一个普通人在它的个人 Web 服务器上管理其公开信息。请问这种公开信息的安全分类是什么?
试题一参考答案及解析
【问题1】
参考答案机密性:确保信息未经非授权的访问,避免信息泄露。
完整性:防止信息非法的修改和毁坏,包括保证信息的不可抵赖性和真实性。
可用性:保证信息及时且可靠地访问和使用。
试题解析:需要答题者能掌握和理解机密性、完整性和可用性的含义,答对意思就能得分。
【问题2】参考答案机密性
试题解析:“不适用”通常只针对机密性。对于公开的信息,机密性没有意义,所以机密性在公开信息类型中并不适用。而完整性和可用性总是可以对应一个影响等级(高、中、低)的。
【问题3】
参考答案{(机密性,NA)、(完整性,M)、(可用性,M)}
试题解析:公开且放个人Web服务器上的信息,不需要机密性,因此分类为(机密性,NA);公开且放个人Web服务器上的信息,其完整性分类为(完整性,M);公开且放个人Web服务器上的信息,其可用性分类为(可用性,M)。
而公开的实时的股票信息,则完整性和可用性就需要非常高。因此其分类可表述为:{(机密性,NA)、(完整性,H)、(可用性,H)}。
试题二 阅读下列说明,回答问题1 和问题2 ,将解答写在答题纸的对应栏内。
【说明】
Windows 系统的用户管理配置中,有多项安全设置,如图2-1 所示。
问题: 2.1(3 分)
请问密码和帐户锁定安全选项设置属于图中安全设置的哪一项?
问题: 2.2(3 分)
Windows 的密码策略有一项安全策略就是要求密码必须符合复杂性要求,如果启用此策略,
那么请问:用户 Administrator 拟选取的以下六个密码中的哪些符合此策略?
123456 Admin123 Abcd321 Admin@ test123 ! 123@host
试题二参考答案及解析
【问题1】
参考答案属于安全设置中的账号策略选项
试题解析:账户策略主要包括密码策略和账户锁定策略两种安全设置,具体如下图所示。
【问题2】
参考答案Abcd321 test123! 123@host
试题解析:如果启用“密码必须符合复杂性要求”策略,密码必须符合下列最低要求:①不能包含用户的账户名,不能包含用户姓名中超过两个连续字符的部分:②至少有六个字符长:③包含以下四类字符中的三类字符,即英文大写字母(A一Z)、英文小写字母(a~z)、十个基本数字(0~9),非字母字符(例如!、$、#、%)。
试题三 阅读下列说明,回答问题1 至问题7 ,将解答写在答题纸的对应栏内。
【说明】
扫描技术是网络攻防的一种重要手段,在攻和防当中都有其重要意义。nmap 是一个开放源码的网络扫描工具,可以查看网络系统中有哪些主机在运行以及哪些服务是开放的。 namp工具的命令选项: sS 用于实现SYN 扫描,该扫描类型是通过观察开放端口和关闭端口对探测分组的响应来实现端口扫描的。
请根据下图回答下列问题
问题: 3.1(2 分)
此次扫描的目标主机的IP 地址是多少?
问题: 3.2(2 分)
SYN 扫描采用的传输层协议名字是什么?
问题: 3.3(2 分)
SYN 的含义是什么?
问题: 3.4(4 分)
目标主机开放了哪几个端口?简要说明判断依据。
问题: 3.5(3 分)
每次扫描有没有完成完整的三次握手?这样做的目的是什么?
问题: 3.6(5 分)
补全下表所示的防火墙过滤器规则的空(1) - (5),达到防火墙禁止此类扫描流量进入和
处出网络 ,同时又能允许网内用户访问外部网页服务器的目的。
问题: 3.7(2 分)
简要说明为什么防火墙需要在进出两个方向上对据数据包进行过滤。
试题三参考答案及解析
【问题1】
参考答案192.168.220.1
试题解析:通常客户端首先向服务器发送SYN分组以便建立连接。目标服务器接收到SYN包后发回确认数据报文,该数据报文ACK=1。该题中,扫描主机发送SYN分组给目标主机(192.168.220.1),目标主机反馈SYN、ACK报文给扫描主机。
【问题2】
参考答案TCP协议
试题解析:SYN是TCP协议发起连接的同步位。
【问题3】
参考答案SYN表示同步信号,是TCP建立连接时使用的握手信号
试题解析:同步(SYN):同步信号,是TCPP建立连接时使用的握手信号。
通常TCP连接使用的三次握手建立连接,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接。
【问题4】
参考答案目标主机开放了135端口和139端口。依据是如果端口开放,目标主机会响应扫描主机的SYN/ACK连接请求。
试题解析:判断依据:如果端口开放,目标主机会响应扫描主机的SYN/ACK连接请求:如果端口关闭,则目标主机向扫描主机发送RST的响应
如果收到RST/ACK分组也表示该端口不在监听状态。客户端不管收到的是什么样的分组,都向发起方发送一个RST/ACK分组,表示该端口关闭。
【问题5】
参考答案没有完成。
目的是减少对方主机或者防火墙记录这样的扫描行为。
试题解析:从题目来看,扫描机首先发出一个SYN连接,目标机使用SYN+ACK应答,而扫描机就返回RST终止了三次握手。
防火墙往往只记录成功的连接,而半连接的方式减少了对方主机或者防火墙记录这样的扫描行为。
【问题6】
参考答案(1)UDP(2)*(3)80(4)0(5)*
试题解析:第1条规则,拒绝从外网往内网发送请求连接信息,所以ACK=0。
第2、3、4条规则,配置允许内网用户访问外部网页服务器。
第2条规则,允许内网往外网服务器80端口发送的请求连接和应答信息,所以目的端口为80。
第3条规则,允许内网向外网域名服务器发送的请求连接和应答信息,所以协议为UDP
第4条规则,允许外网域名服务器发往内网的应答信息,UDP协议不关心ACK,所以ACK=*。
第5条规则,其他流量一律不允许进出内外部网络,所以协议为*。
【问题7】
参考答案在进入方向过滤是为了防止被人攻击,而在出口方向过滤则是为了防止内部用户通过本网络对外攻击。
试题解析:考查防火墙应用知识。
试题四 阅读下列说明,回答问题1 至问题5 ,将解答写在答题纸的对应栏内。
【说明】
DES 是一种分组密码,己知DES 加密算法的某个S 盒如下表所示。
问题: 4.1(4 分)
请补全该S 盒,填补其中的空(1) - (4),将解答写在答题纸的对应栏内。
问题: 4.2(2 分)
如果该S 盒的输入为110011 ,请计算其二进制输出。
问题: 4.3(6 分)
DES 加密的初始置换表如下:
置换时,从左上角的第一个元素开始,表示输入的铭文的第58 位置换成输出的第1 位,输入明文的第50 位置换成输出的第2 位,从左至右,从上往下,依次类推。
DES 加密时,对输入的64 位明文首先进行初始置换操作。
若置换输入的明文M=0123456789ABCDEF(16 进制),请计算其输出(16 进制表示)。
问题: 4.4(2 分)
如果有简化的DES 版本,其明文输入为8 比特,初始置换表IP 如下:
IP : 2 6 3 1 4 8 5 7
请给出其逆初始置换表。
问题: 4.5(2 分)
DES 加密算法存在一些弱点和不足,主要有密钥太短和存在弱密钥。请问,弱密钥的定义是什么?
试题四参考答案及解析
【问题1】
参考答案
(1)10(2)6(3)1(4)11
试题解析:DES算法中的每个S盒都是由4行16列的矩阵构成,每行都是0到15这16个数字,通过题目给出S盒表的缺失项可以分析得出,第0行缺少10,第1行缺少6,第3行缺少1,第4行缺少11。
【问题2】
参考答案0100
试题解析:0100S盒的运算规则(设输入为110011):
第一位和第六位数字组成的二进制数为11=(3)10,表示选中该S盒表中的行号为3。
其余4位数字组成的二进制数为1001=(9)10,表示选中该S盒表中列号为9
S盒表的第3行,第9列的值为4,转换成二进制为0100。
【问题3】
参考答案M=(00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111)2
经过IP置换
M’=(11001100 00000000 11001100 11111111 11110000 10101010 11110000 10101010)2
IP=(CC00CCFFF0AAF0AA)16
试题解析:DES的初始置换表就是要打乱明文的顺序,其步骤如下:
(1)将M=(0123456789 ABCDEF))16表示成二进制形式,即1位十六进制数字可表示为4位二进制,即M=(00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111)2
(2)按照初始置换表进行置换,基本置换规则为:
原始数据中的第58位放在第1位:第50位放第2位:第42位放第3位,…,其余依此类推。
置换后的结果为:M’=(11001100 00000000 11001100 11111111 11110000 10101010 11110000 10101010)2=(CC00 CCFFF0AAF0AA)16
M=(0123456789ABCDEF)16=(00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111)2
经过IP置换,结果为:M’=(11001100 00000000 11001100 11111111 11110000 10101010 11110000 10101010)2=(CC00 CCFFF0AAF0AA)
【问题4】
参考答案4 1 3 5 7 2 8 6
试题解析:逆初始置换是在初始置换的基础上进行逆置换:比如原始数据顺序为12345678;经过初始置换之后变成:26314857:则逆初始置换是要将其顺序进行还原。
比如,原始数据中第一位数据经初始置换之后放到了第4位,那么逆初始置换就要将初始置换后的第4位放到第1位,即逆初始置换表第一位为4。
原始数据中第二位数据经初始置换之后放到了第1位,那么逆初始置换就要将初始置换后的第1位放到第2位,即逆初始置换表第二位为1。
其余依此类推,得出该逆初始置换表为41357286
【问题5】
参考答案如果存在一个密钥k,由其产生的子密钥是相同的,则称其为弱密钥。
试题解析:DES算法中存在着弱密钥和半弱密钥。
DES中存在四个弱密钥,如下:
弱密钥1:K1=......=K16(000000000000)16
弱密钥2:K1=......=K16(FFFFFFFFFFFF)16
弱密钥3:K1=......=K16(000000 FFFFFF)16
弱密钥4:K1=......=K16(FFFFFF000000)16
半弱密钥:有些种子密钥只能生成两个不同的子密钥,这样的种子密钥K称为半弱密钥,DES至少存在12个半弱密钥。半弱密钥将导致把明文加密成相同的密文。
试题五 阅读下列说明,回答问题1 和问题2 ,将解答写在答题纸的对应栏内。
【说明】
在公钥体制中,每一用户U 都有自己的公开密钥PKu 和私钥SKu 。如果任意两个用户A 和B 按以下方式通信:
A 发给B 消息 [EpkB (m), A] 。
其中 Ek(m)代表用密钥 K 对消息 m 进行加密。
B 收到以后,自动向A 返回消息【EpkA(m),B 】,以使A 知道B 确实收到消息m 。
问题: 5.1(4 分)
用户C 怎样通过攻击手段获取用户A 发送给用户B 的消息m 。
问题: 5.2(6 分)
若通信格式变为:
A 给B 发消息:EpkB(EskA(m), m , A)
B 给A 发消息: EpkA(EskB (m), m , B)
这时的安全性如何?请分析A , B 此时是如何相互认证并传递消息的。
试题五参考答案及解析
参考答案用户C的攻击过程如下:
第1步:用户C截获消息:(EpkB(m),A)。
第2步:用户C纂改消息,并发给B:(EpkB,(m),C)。
第3步:用户B接收消息,以为是C发出,返回消息:(EpkC(m),B),
第4步:用户C解密收到的消息,最后得到明文m。
试题解析:由于A发给B消息(EpkB(m),A),B收到该消息后就知道是A发出的,但消息中的A是明文,容易被篡改。
【问题2】
参考答案这种方式提高了安全性,实现了加密和认证的双重功能,并且能对信息传输进行确认。但存在重放攻击的可能。(2分)
试题解析:A、B相互认证并传递消息的过程如下:
(1)A发送消息到B。A用私钥SKA对消息m加密,也就是进行数字签名;附上m和A信息后:最后用B的公钥PKB加密所有信息。
(2)B接收了A发过来的消息。先用B的私钥解密,再用A的公钥验证签名信息,确认和认证A的身份,并得到明文m。
同样,A也可以EpkA(EskB,(m),m,B),安全发送m消息,并验证B的身份。(4分)
试题六 阅读下列说明,回答问题1 至问题4 ,将解答写在答题纸的对应栏内。
【说明】
基于Windows32 位系统分析下列代码,回答相关问题 。
void Challenge(char *str)
{
Char temp[9]={0};
strncpy(temp , str , 8);
printf("temp=%s\n", temp);
if(strcmp(temp,"Please!@")==0){
printf("KEY: ******");
}
}
Int main(int argc , char *argv[ ])
{
Char buf2[16]
Int check=1;
Char buf[8]
Strcpy (buf2, "give me key! !");
strcpy(buf , argv[1]);
if(check==65) {
Challenge(buf);
}
else {
printf("Check is not65 (%d) \n Program terminated!!\n", check);
}
Return 0;
}
问题: 6.1(3 分)
main 函数内的三个本地变量所在的内存区域称为什么?它的两个最基本操作是什么?
问题: 6.2(3 分)
画出buf , check , buf2 三个变量在内存的布局图,具体如下图所示。
问题: 6.3(2 分)
应该给程序提供什么样的命令行参数值(通过argv 变量传递)才能使程序执行流程进入判断语句 If(check==65)....然后调用challenge( )函数。
问题: 6.4(4 分)
上述代码所存在的漏洞名字是什么,针对本例代码,请简要说明如何修正上述代码以修补
次漏洞。
试题六
【问题1】
参考答案称为栈区(可以写堆栈):其基本操作有入栈(push)和出栈(pop)。
试题解析:内存结构如下图所示。
Main()函数的三个变量,char buf2[16];int check=1;char buf[8]都是局部变量,位于栈区。栈区两个操作就是入栈(push)、出栈(pop)。
【问题2】
参考答案
试题解析:进入栈区的次序是先进的在堆栈最里端。变量进入栈的次序为buf2、check、buf。而依据C语言规则,char变量占1字节,所以buf2是16字节,buf是8字节;int变量占4字节,所以check是4个字节。
【问题3】
参考答案输入buf数组的数据形式是“********A……”(*代表任何1位字符,A为大写字母)。
试题解析:根据题干图片可知,当写入buf数组的数据超过8位时,就发生缓冲区溢出,多余的值会向高地址位写,从而可能会覆盖高地址的check、buf2变量的值。
当写入buf数组的数据形式是“********A……”(*代表任何字符),那么buf数组第9位的“A”值就覆盖了check原来值,变成了65(A的ASCI码的值是65)。
此时,程序执行语句if(check==65),就会直接调用Challenge()函数.
buf地址写入内存图示
注意:本题用图,用了障眼法,将高地址标在了图的底部,低地址标在了图的顶部
【问题4】
参考答案:代码中存在的漏洞为缓存溢出漏洞;添加检查输入参数长度的代码,可修补此漏洞。
试题解析:原因是没有对输入的变量进行长度检测,没有判断数组越界的情况,从而引发缓冲区溢出。解决方法:检查strcpy(buf,argy[1])语句中,输入buf数组数据的长度。