软考中级纠错记录-填空题

0-

错题记录(下半场题目)—软考中级(信息安全工程师)

ASCII

字符类别 规律 十六进制 / 十进制 记忆技巧 / 推导关键
数字 ‘0’ 所有数字字符的起点 0x30 / 48 记住 ‘0’ 是 48。那么 ‘1’ 就是 49,以此类推到 ‘9’ 是 57。
大写字母 ‘A’ 大写字母的起点 0x41 / 65 记住 ‘A’ 是 65。那么 ‘B’ 是 66,…,‘Z’ 是 90。
小写字母 ‘a’ 小写字母的起点 0x61 / 97 记住 ‘a’ 是 97。那么 ‘b’ 是 98,…,‘z’ 是 122。
空字符 (NULL) 字符串的结束标志 0x00 / 0 最小的值,表示空。
空格 (Space) 0x20 / 32 这是一个非常常见的字符,建议记住。
换行 (LF, \n) 0x0A / 10 在编程和文本处理中极其重要。
大小写差值 小写字母 - 大写字母 = 32 0x20 这是最重要的规律之一! 知道了一个大写字母的码,加32就是其小写字母的码。

错误1-安卓的代码的考察


第1题(案例题):

阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。

【说明】
近期,按照网络安全审查工作安排,国家网信办会同公安部、国家安全部、自然资源部、 交通运输部、税务总局、市场监管总局等部门联合进驻某出行科技有限公司,开展网络安全 审查。移动App安全检测和个人数据安全再次成为关注焦点。
问题1

为保护Android系统及应用终端平台安全,Android系统在内核层、系统运行层、应用 框架层以及应用程序层采取了相应的安全措施,以尽可能地保护移动用户数据、应用程序和 设备安全。
在Android系统提供的安全措施中有安全沙箱、应用程序签名机制、权限声明机制、地 址空间布局随机化等。请将上述四种安全措施按照其所在层次划分填入表4-1的空(1)〜(4)。

问题2
权限声明机制为操作权限和对象之间设定了一些限制,只有把权限和对象进行绑定,才 可以有权操作对象。
(1) 请问Android系统的应用程序权限信息声明都在哪个配置文件中?给出该配置文件名。
(2) Android 系统定义的权限组包括:CALENDAR、CAMERA、CONTACTS、LOCATION、 MICROPHONE、PHONE、SENSORS、SMS、STORAGE。按照《信息安全技术移动互联 网应用程序(App)收集个人信息基本规范》,运行在Android 9.0系统中提供网络约车服务 的某某出行App可以有的最小必要权限是以上权限组的哪几个?
(3) 假如有移动应用A提供了如下服务AService,对应的权限描述如下:

如果其他应用B要访问该服务,应该申明使用该服务,将以下申明语句补充完整。

【问题3】(3分)
应用程序框架层集中了很多Android开发需要的组件,其中最主要的就是Activities、 Broadcast Receiver、Services以及Content Providers这四大组件。围绕四大组件存在很多的攻 击方法,请说明以下三种攻击分别是针对哪个组件。
(1) 目录遍历攻击;
(2) 界面劫持攻击;
(3) 短信拦截攻击。
【问题4】(2分)
移动终端设备常见的数据存储方式包括:
① SharedPreferences ;
② 文件存储;
③ SQLite数据库;
④ ContentProvider;
⑤网络存储。
从以上5种方式中选出Android系统支持的数据存储方式,给出对应存储方式的编号。

【问题1】
(1) 权限声明机制
(2)应用程序签名机制
(3) 安全沙箱
(4)地址空间布局随机化
【问题2】
(1) AndroidManifest.xml
(2) LOCATION、PHONE
(3) uses-permission
【问题3】
(1) 目录遍历攻击:Content Providers
(2) 界面劫持攻击:Activities
(3) 短信拦截攻击:Broadcast Receiver
【问题4】
①②③④⑤

【问题1】
权限声明机制就在App当中,应用程序签名机制则是属于应用框架层,安全沙箱在系统运行层,地址空间布局随机化是系统内核层实现的。


【问题2】

解开App文件,在 AndroidManifest.xml中可以看到运行App所需的权限。某出行属于网约车范畴,需要地理位置和打电话权限即可。
Android 的权限在AndroidManifest.xml文件里配置。

其中有四个标签与权限有关,分别是permission, permission-group, permisson-tree, uses-permission,最常用的是uses-permission,当我们需要获取某个权限的时候,就需要在文件中声明。

(1)Android权限组及其常见用途:

  • CALENDAR:访问日历事件。约车App通常不需要这个。
  • CAMERA:访问相机。可能用于扫描二维码或拍照上传,但不是核心功能。
  • CONTACTS:访问联系人。可能用于分享行程,但可能不是绝对必要,用户可以直接输入号码。
  • LOCATION:位置访问。绝对必要。
  • MICROPHONE:麦克风访问。可能用于语音输入,但不是核心功能。
  • PHONE:电话权限。可能用于读取手机状态和拨打电话。
  • SENSORS:传感器访问。可能用于检测运动,但不必要。
  • SMS:短信权限。可能用于验证码或发送短信,但验证码可以通过其他方式处理。
  • STORAGE:存储权限。可能用于缓存地图或保存数据。

(2)对于网络约车服务,必要的权限可能包括:

  • LOCATION:这是核心功能,因为需要实时位置来叫车和导航。
  • PHONE:可能需要读取手机状态(如IMEI)用于设备标识,或者拨打电话。
  • CONTACTS:可能用于分享行程或邀请联系人。
  • STORAGE:可能用于保存数据。

【问题3】
Android系统中界面和Activities关联,因此界面劫持攻击属于Activities组件。Content Providers用来保存或获取数据,目录遍历攻击属于Content Providers。
Broadcast Receiver用于广播发送和接收消息,短信拦截攻击属于Broadcast Receiver。

–纯靠英文意思猜–

【问题4】
题干所述的5种方式全是Android支持的存储方式。

–没点话说–


错误2-wireshark+iptables的熟悉


域名前的子域名是异常字符,推测是加密的信息,通过子域名用dns服务器将信息外带出去,而txt信息中包含ipconfig,可能所外带的信息便是ipconfig的回显

dns服务只要与外界沟通,非极端情况是必须开启的

表(-t table)

表名 主要功能 内置链
filter 过滤数据包,决定是否允许数据包通过(默认表) INPUT, FORWARD, OUTPUT
nat 网络地址转换,用于修改数据包的源或目标地址 PREROUTING, OUTPUT, POSTROUTING
mangle 修改数据包内容(如 TOS、TTL),或给数据包打标记 所有五个链(PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING)
raw 决定数据包是否被状态跟踪机制处理 PREROUTING, OUTPUT

命令选项(Command Options)

指定要对规则进行的操作,如添加、删除、查看等。

命令选项 全称 功能说明
-A --append 追加一条规则到链的末尾
-I --insert 插入一条规则到链的指定位置(默认为链首)
-D --delete 删除链中的一条规则
-R --replace 替换链中的一条规则
-L --list 列出链中的所有规则
-F --flush 清空链中的所有规则(刷掉)
-Z --zero 将链的计数器清零(与 -L 一起用可看清零前的统计)
-P --policy 设置链的默认策略(ACCEPT, DROP, REJECT)
-N --new-chain 创建一条新的用户自定义链
-X --delete-chain 删除一条用户自定义链(必须为空)
-E --rename-chain 重命名一条用户自定义链

综合示例

  1. 允许所有已建立的连接

    1
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  2. 开放本机的SSH(22)、HTTP(80)、HTTPS(443)端口

    1
    iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -m state --state NEW -j ACCEPT
  3. 允许Ping(ICMP回声请求)

    1
    iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
  4. 设置默认策略为拒绝,并记录被拒绝的包

    1
    2
    3
    iptables -P INPUT DROP
    iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROPPED: " # 先记录
    iptables -A INPUT -j DROP # 再丢弃
  5. 端口转发(将到达本机8080端口的流量转发到192.168.1.10的80端口)

    1
    iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80

阅读下列说明和图,回答问题1至问题5,将解答填入答题纸的对应栏内。
【说明】
域名系统是网络空间的中枢神经系统,其安全性影响范围大,也是网络攻防的重点。李 工在日常的流量监控中,发现以下可疑流量,请协助分析其中可能的安全事件。

问题1
域名系统采用授权的分布式数据查询系统,完成域名和IP地址的解析。李工通过上述 流量可以判断域名解析是否正常、有无域名劫持攻击等安全事件发生。
(1) 域名系统的服务端程序工作在网络的哪一层?
(2) 图3-1中的第一个网络分组要解析的域名是什么?
(3) 给出上述域名在DNS查询包中的表示形式(16进制)。
(4) 由图3-1可知李工所在单位的域名服务器的IP地址是什么?
问题2
鉴于上述DNS协议分组包含大量奇怪的子域名,如想知道是哪个应用程序发送的上述 网络分组,请问在Windows系统下,李工应执行哪条命令以确定上述DNS流量来源?
问题3
通过上述的初步判断,李工认为192.168.229.1的计算机可能己经被黑客所控制(CC攻 击)。黑客惯用的手法就是建立网络隐蔽通道,也就是指利用网络协议的某些字段秘密传输 信息,以掩盖恶意程序的通信内容和通信状态。
(1) 请问上述流量最有可能对应的恶意程序类型是什么?
(2) 上述流量中隐藏的异常行为是什么?请简要说明。
(3) 信息安全目标包括保密性、完整性、不可否认性、可用性和可控性。请问上述流量 所对应的网络攻击违反了信息安全的哪个目标?
问题4
通过上述的攻击流分析,李工决定用防火墙隔离该计算机。李工所运维的防火墙是 Ubuntu系统自带的iptables防火墙。
(1) 请问iptables默认实现数据包过滤的表是什么?该表默认包含哪几条链?
(2) 李工首先要在iptables防火墙中查看现有的过滤规则,请给出该命令。
(3) 李工要禁止该计算机继续发送DNS数据包,请给出相应过滤规则。 
【问题5】(2分)
在完成上述处置以后,李工需要分析事件原因,请说明导致DNS成为CC攻击的首选 隐蔽传输通道协议的原因。

【问题1】
(1) 应用层
(2) www.humen.com
(3) 7777770568756d656e03636f6d
(4) 192.168.229.133
【问题2】
由流量的源端口号和netstat/b对应的进程关联即可得知
【问题3】
(1) 特洛伊木马
(2) 执行ipconfig命令,回传网络信息
(3) 机密性
【问题4】
(1) filter; INPUT, FORWARD, OUTPUT
(2) iptables -L
(3) iptables -I INPUT -s 192.168.229.1 -j DROP
【问题5】
放行

【问题1】
域名协议是典型的网络应用,工作在应用层。
从Wireshark第一个分组中的info栏可以明确得知其查询的域名为www.humen.com。而且从图中下半部分可以知道上述域名的编码方法,分别是长度+每一级域名的ASCII 码。字母w的ASCII 码值可以从图中t的ASCII 码值(十六进制74)推导出来,为77,字母a的ASCII码值为十六进制61,因此com的 ASCII码值为636f6d,以此类推。
域名解析的目的IP地址就是域名服务器的IP地址。所以查看查询分组的目的地址即可,即李工所在单位的域名服务器的P地址为192.168.229.133。
【问题2】
由流量的源端口号和netstat/b对应的进程关联,即可得知 DNS流量来源。

【问题3】
病毒是能够自我复制和传播的代码片段,通常病毒无法远程控制。
蠕虫也是一种类似病毒的计算机程序,但它不会去修改其他程序,它越来越多地自我复制导致计算机系统变慢。蠕虫可以进行远程控制。
特洛伊木马不会像病毒和蠕虫那样自我复制。它具备很好的隐藏能力,悄悄地窃取用户的重要信息。根据题目所给信息(具有远程控制功能、隐蔽通信、窃取敏感信息),判断其属于特洛伊木马。
题目所给出的是域名的 TXT记录,在该记录的最后包含命令信息,从图中最下面一行可知执行的是ipconfig命令。
【问题4】
iptables 的4表5链当中,filter表是负责过滤的,其包含INPUT, OUTPUT和转发FORWARD。
查看选项是list的缩写L。
对隧道流量可以禁止(丢弃,DROP)其发送的所有流量,只要其源IP地址为攻击者的机器。
【问题5】
只要计算机能够上网,DNS域名系统就必须是放行的,不会被安全设备所拦截,这就是最根本的原因。

错误3-日志分析


阅读下列说明,回答问题1至问题5,将解答填入对应栏内。
【说明】
通常由于机房电磁环境复杂,运维人员很少在现场进行运维工作,在出现安全事件需要 紧急处理时,需要运维人员随时随地远程开展处置工作。
SSH(安全外壳协议)是一种加密的网络传输协议,提供安全方式访问远程计算机。李工作为公司的安全运维工程师,也经常使用SSH远程登录到公司的Ubuntu18.04服务器中进 行安全维护。
【问题1】(2分)
SSH协议默认工作的端口号是多少?
【问题2】(2分)
网络设备之间的远程运维可以采用两种安全通信方式:一种是SSH,还有一种是什么?
【问题3】(4分)
日志包含设备、系统和应用软件的各种运行信息,是安全运维的重点关注对象。李工在 定期巡检服务器的SSH日志时,发现了以下可疑记录:

(1)请问李工打开的是系统的哪个日志文件?请给出该文件名字。
(2)李工怀疑有黑客在攻击该系统,请给出判断攻击成功与否的命令以便李工评估攻击 的影响。
【问题4】(10分)
经过上次SSH的攻击事件之后,李工为了加强口令安全,降低远程连接风险,考虑采 用免密证书登录。
(1)Linux系统默认不允许证书方式登录,李工需要实现免密证书登录的功能,应该修 改哪个配置文件?请给出文件名。
(2)李工在创建证书后需要拷贝公钥信息到服务器中。他在终端输入了以下拷贝命令, 请说明命令中“>>”的含义。
ssh xiaoming@server cat /home/xiaoming/.ssh/id_rsa.pub>>authorized_keys
(3)服务器中的authorized_keys文件详细信息如下,请给出该文权限的数字表示。

(4)李工完成SSH配置修改后需要重启服务,请给出systemctl重启SSH服务的命令。
(5)在上述服务配置过程中,配置命令中可能包含各种敏感信息,因此在配置结束后应 该及时清除历史命令信息,请给出清除系统历史记录应执行的命令。

【问题5】(2分)
SSH之所以可以实现安全的远程访问,归根结底还是密码技术的有效使用。对于SSH 协议,不管是李工刚开始使用的基于口令的认证还是后来的基于密钥的免密认证,都是密码 算法和密码协议在为李工的远程访问保驾护航。请问上述安全能力是基于对称密码体制还是 非对称密码体制来实现的?

【问题1】
22
【问题2】
VPN
【问题3】
(1)/var/log/auth.log
(2)cat ./auth.log | grep “Accepted password”
【问题4】
(1)/etc/ssh/sshd_config
(2)追加文件内容
(3)600
(4)systemctl restart ssh
systemctl restart sshd
systemctl restart ssh.service
systemctl restart sshd.service
(5)rm ~/.bash_history
【问题5】
非对称密码体制

本题考查Linux系统基本的安全配置,要求对Linux系统SSH服务相关的端口、日志和免密登录有清晰的了解。
【问题1】
SSH服务的默认端口号是22。

【问题2】
远程安全运维的另外一种常见方法就是虚拟专用网VPN,可以直接在不安全的公网之上以隧道方式开辟安全通道。
【问题3】
Ubuntu系统中日志都位于/var/log目录,其中的登录认证日志都在 auth.log文件中。所谓攻击的评估,对于日志所反应的口令爆破攻击就是想知道攻击是否成功,也就是口令是否已经泄露,这可以从SSH登录成功的字符串“Accepted password”作为过滤依据,因此可以使用cat命令内容,然后用grep过滤内容的上述字符串,两个命令之间用管道符连接即可。
【问题4】
Ubuntu系统的配置基本都在/etc目录下,ssh服务在letc/ssh,对应的配置文件为sshd_config。

一个尖括号是改写原有文件中的内容,而两个尖括号则是在原有文件内容的后面进行追加。
上述权限字符串“rw——-”对应的就是110000000,即600。
最新的Linux系统服务管理程序是systemctl,其语法就是命令+动作+服务名字。
命令历史记录都在每个用户 home目录下的.bash_history 文件中,home目录可以用~表示,因此组合起来就是 rm ~/.bash_history 。
【问题5】
SSH的实现是基于公钥密码体制。私钥在用户本地主机上,公钥则保存在SSH服务器上。


错误4-网络拓扑和编码熟悉


在某政府单位信息中心工作的李工主要负责网站的设计、开发工作。为了确保部门新业务的顺利上线,李工邀请信息安全部的王工按照等级保护2.0的要求对其开展安全测评。李工提供网站所在的网络拓扑图如图1-1所示。图中,网站服务器的IP地址是192.168.70.140, 数据库服务器的IP地址是192.168.70.141。

王工接到网站安全测评任务以后,决定在内网办公区的信息安全部开展各项运维工作。王工使用的办公电脑IP地址为192.168.11.2。

【问题1】(2分)

按照等级保护2.0的要求,政府网站的定级不应低于几级?该等级的测评每几年开展一次?

【问题2】(6分)

按照网络安全测评的实施方式,测评主要包括安全功能检测、安全管理检测、代码安全审查、安全渗透、信息系统攻击测试等。王工调阅了部分网站后台处理代码,发现网站某页面的数据库查询代码存在安全漏洞,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if (isset($_GET['Submit'])) {
// Retrieve data
$id = $_GET['id'];
$getid = "SELECT first_name, last_name FROM users WHERE user id = '$id' ";
$result = mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>');
$num = mysql_numrows($result);
$i = 0;
while($i < $num){
$first = mysql_result($result, $i, "first_narae");
$last = mysql_result($result, $i, "last_name");
ehco '<pre>';
echo 'ID: ' . $id . '<br>First name: '. $first . '<br>Surname: ' . $last;
echo '</pre>';
$i++;
}
}
?>

(1) 请问上述代码存在哪种漏洞?
(2) 为了进一步验证自己的判断,王工在该页面的编辑框中输入了漏洞测试语句,发起测试。请问王工最有可能输入的测试语句对应以下哪个选项?
A. or 1=1– order by 1
B. 1 or ‘1’=’1’=1 order by 1#
C. 1’ or 1=1 order by 1#
D. 1’ and ‘1’=’2’ order by 1#

(3) 根据上述代码,网站后台使用的是哪种数据库系统?
(4) 王工对数据库中保存口令的数据表进行检查的过程中,发现口令为明文保存,遂给出整改建议,建议李工对源码进行修改,以加强口令的安全防护,降低敏感信息泄露风险。下面给出四种在数据库中保存口令信息的方法,李工应该采用哪一种口令安全实践方法?
A. Base64
B. MD5
C.哈希加盐
D.加密存储

【问题3】(2分)

按照等级保护2.0的要求,系统当中没有必要开放的服务应当尽量关闭。王工在命令行窗口运行了一条命令,端口开放情况一目了然。请给出王工所运行命令的名字。

【问题4】(2分)

防火墙是网络安全区域边界保护的重要技术,防火墙防御体系结构主要有基于双宿主主机防火墙、基于代理型防火墙和基于屏蔽子网的防火墙。图1-1拓扑图中的防火墙布局属于哪种体系结构类型?

【问题5】(8分)

根据李工提供的网络拓扑图,王工建议部署开源的Snort入侵检测系统以提高整体的安全检测和态势感知能力。

(1)针对王工建议,李工查阅了入侵检测系统的基本组成和技术原理等资料。请问以下有关Snort入侵检测系统的描述哪几项是正确的?(2分)
A.基于异常的检测系统
B.基于误用的检测系统
C.基于网络的入侵检测系统
D.基于主机的入侵检测系统

(2)为了部署Snort入侵检测系统,李工应该把入侵检测系统连接到图1-1网络拓扑中的哪台交换机?(1分)

(3)李工还需要把网络流量导入入侵检测系统才能识别流量中的潜在攻击。图1-1中使用的均为华为交换机,李工要将交换机网口 GigabitEthernet1/0/2的流量镜像到部署Snort的网口 GigabitEthernet1/0/1上,他应该选择下列选项中哪一个配置? (2分)
A. observe-port 1 interface GigabitEthernet1/0/2
interface GigabitEthernet1/0/1
port-mirroring to observe-port 1 inbound/outbound/both
B. observe-port 2 interface GigabitEthernet1/0/2
interface GigabitEthernet1/0/1
port-mirroring to observe-port 1 inbound/outbound/both
C. port-mirroring to observe-port 1 inbound/outbound/both
observe-port 1 interface GigabitEthernet1/0/2 interface
GigabitEthernet1/0/1
D. observe-port 1 interface GigabitEthernet1/0/1
interface GigabitEthernet1/0/2
port-mirroring to observe-port 1 inbound/outbound/both

(4)Snort入侵检测系统部署不久,就发现了一起网络攻击。李工打开攻击分组查看,发现很多字符看起来不像是正常字母,如图1-2所示,请问该用哪种编码方式去解码该网络分组内容? (1分)

(5)针对图1-2所示的网络分组,李工查看了该攻击对应的Snort检测规则,以更好地掌握Snort入侵检测系统的工作机制。请完善以下规则,填充空(a)、(b)处的内容。(2分)
(a) tcp any any -> any any (msg:”XXX”;content:” (b) “;nocase;sid: 1106;)

【问题1】(2分)

按照等级保护2.0的要求,政府网站的定级不应低于二级。该等级的测评每年开展一次。

【问题2】(6分)

(1) SQL注入漏洞
(2) C. 1’ or 1=1 order by 1#
(3) MySQL
(4) C. 哈希加盐

【问题3】(2分)

王工运行的命令是 netstat(或 netstat -an)。

【问题4】(2分)

图1-1拓扑图中的防火墙布局属于基于屏蔽子网的防火墙体系结构。

【问题5】(8分)

(1)B. 基于误用的检测系统C. 基于网络的入侵检测系统
(2)应连接到交换机2(或DMZ区交换机)。
(3)正确配置是:
A. observe-port 1 interface GigabitEthernet1/0/2
  interface GigabitEthernet1/0/1
  port-mirroring to observe-port 1 inbound/outbound/both

(4)应使用URL编码方式解码。
(5)规则完善:
(a)alert
(b)union

完整规则:
alert tcp any any -> any any (msg:"XXX";content:"union";nocase;sid:1106;)

解析摘要
  • 问题1:根据《网络安全等级保护条例》,政府网站通常定为二级或以上,二级系统每两年测评一次。
  • 问题2:代码中用户输入未过滤直接拼接SQL语句,导致SQL注入;测试语句需闭合引号并用#注释;mysql_*函数表明使用MySQL数据库;口令存储应采用加盐哈希增强安全性。
  • 问题3netstat命令可查看系统开放端口和连接状态。
  • 问题4:拓扑中包含DMZ区(屏蔽子网),内外网间有防火墙隔离,符合屏蔽子网结构。
  • 问题5:Snort是基于规则(误用)和网络的IDS;需部署在DMZ交换机(交换机2)以监控外部流量;华为交换机镜像配置需先定义观察端口再应用镜像;HTTP请求中的特殊字符通常需URL解码;Snort规则中alert为动作类型,union是SQL注入常见特征。

访问控制

简明对比表

访问控制模型 控制主体 控制对象 典型访问粒度 列级访问控制实现形式
RBAC(基于角色) 系统管理员、角色分配者 资源(表、列、文件、内存页) 角色粒度,通常绑定用户组 - 角色-列权限映射表:某角色可以访问哪些列- 用户通过角色继承列权限
ABAC(基于属性) 系统(自动判断) 资源(表、列、文件、内存页) 属性粒度(用户属性、环境属性、资源属性) - 动态列访问策略:基于属性决定访问- 条件表达式控制列访问,如“部门=财务 AND 安全级别>=3”
DAC(自主访问控制) 资源所有者(用户) 自己创建的资源 用户粒度,可随意授权 - 保护位(Protection Bits):如 rwx 位标记列可读写- 访问控制表(ACL, Access Control List):列级列出允许的用户及权限
MAC(强制访问控制) 系统安全策略(不可随意更改) 资源(表、列、文件、内存页) 安全级别粒度 - 安全标签(Security Labels):列级标签,如 Confidential、Secret- 系统强制判断访问许可,用户无法修改
访问控制模型 形式
基于列的自主访问控制 保护位、访问控制表

代码分析

栈缓冲区溢出漏洞-题目

【说明】基于 Windows32 位系统分析下列代码,回答相关问题 。

【问题 1】(3 分)

main 函数内的三个本地变量所在的内存区域称为什么?它的两个最基本操作是什么?

【问题 2】(3分)

画出buf,check,buf2 三个变量在内存的布局图。

【问题 3】(2分)

应该给程序提供什么样的命令行参数值(通过argv变量传递)才能使程序执行流程进入判断语句 If(check=65)….然后调用challenge( )函数。

【问题4】(4分)

上述代码所存在的漏洞名字是什么,针对本例代码,请简要说明如何修正上述代码以修补此漏洞。

试题分析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
int main(int argc, char *argv[])
{
char buf2[16]; // 16字节缓冲区
int check = 1; // 整型变量check初始化为1
char buf[8]; // 8字节缓冲区

strcpy(buf2, "Give me Key!!!"); // 复制字符串到buf2
strcpy(buf,argv[1]); // 将命令行第一个参数复制到buf(存在缓冲区溢出风险!)

if(check==65) { // 检查check是否等于65
Challenge(buf); // 如果等于65,调用Challenge函数
}
else {
// 输出check的实际值
printf("Check is not 65 (%d) \n Program terminated!!\n",check);
}
return 0;
}

void Challenge(char *str)
{
char temp[9]={0}; // 定义9字节的字符数组并初始化为0
strncpy(temp,str,8); // 从str复制最多8个字符到temp
printf("temp=%s\n",temp); // 打印temp的内容

// 对比
if(strcmp(temp, "Please!@")==0) { // 比较temp与字符串"Please!@"
printf("KEY:*****"); // 如果匹配则输出KEY
}
}

#normal
输入:./program test
输出:Check is not 65 (1) Program terminated!!

#key
输入:精心构造的输入使check=65且前8字符为"Please!@"
输出:KEY:*****

1.答案:动态存储区,分配存储空间和释放存储空间

3.让agrv[] 中的第9个字符是十进制数65即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
高地址
+----------------+ <- 栈顶(高地址)
| |
| main函数 |
| 的返回地址 |
| |
+----------------+
| saved ebp |
+----------------+
| |
| buf2[15] | <- buf2[15] (最后一个字节)
| ... |
| buf2[1] |
| buf2[0] | <- buf2起始地址
+----------------+
| |
| check | <- 4字节整数
| |
+----------------+
| |
| buf[7] | <- buf[7] (最后一个字节)
| ... |
| buf[1] |
| buf[0] | <- buf起始地址
+----------------+
| | <- 栈底(低地址)

#攻击原理:

通过向 buf 写入超过8字节的数据,可以精确控制 check 的值

要让 check == 65,需要在 buf 的8字节后写入 65 的二进制表示

4.答案:缓冲区溢出漏洞,使用安全的strcpy函数,检测边界。

内存泄露漏洞(心跳包)-题目

阅读下列说明和C语言代码,回答问题1至问题4,将解答写在答题纸的对应栏内。

【说明】

在客户服务器通信模型中,客户端需要每隔一定时间向服务器发送数据包,以确定服务器是否掉线,服务器也能以此判断客户端是否存活,这种每隔固定时间发一次的数据包也称为心跳包。心跳包的内容没有什么特别的规定,一般都是很小的包。某系统采用的请求和应答两种类型的心跳包格式如图4-1所示。

图4-1协议包格式

心跳包类型占1个字节,主要是请求和响应两种类型;

心跳包数据长度字段占2个字节,表示后续数据或者负载的长度。

接收端收到该心跳包后的处理函数是process_ heartbeat (),其中参数p指向心跳包的报文数据,s是对应客户端的socket网络通信套接字。

【问题1】(4分)

(1)心跳包数据长度字段的最大取值是多少?

(2)心跳包中的数据长度字段给出的长度值是否必须和后续的数据字段的实际长度一致?

【问题2】(5分)

(1)上述接收代码存在什么样的安全漏洞?

(2)该漏洞的危害是什么?

【问题3】(2分)

模糊测试(Fuzzing)是一种非常重要的信息系统安全测评方法,它是一种基于缺陷注入的自动化测试技术。请问模糊测试属于黑盒测试还是白盒测试?其测试结果是否存在误报?

【问题4】(4分)

模糊测试技术能否测试出上述代码存在的安全漏洞?为什么?

【问题1】(4分)

(1)64KB

(2)必须一致

【问题2】(5分)

(1)“心脏出血”漏洞;

(2)造成重要信息泄露。

【问题3】(2分)

(1)黑盒测试

(2)不存在误报

【问题4】(4分)

(1)能

(2)可利用黑盒测试方法,向服务器发送特定报文,通过服务器返回数据解析出报文,解析并判断是否存在“心脏出血”漏洞。

试题分析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void process_heartbeat(unsigned char *p, SOCKET s)
{
unsigned short hbtype;
unsigned int payload;
unsigned char *p1;

hbtype = *p++; // 读取心跳包类型(1字节)
n2s(p, payload); // 读取心跳包数据长度(2字节,网络字节序转主机字节序)
p1 = p; // p1 指向心跳包数据部分

if (hbtype == HB_REQUEST) { // 如果是心跳请求包
unsigned char *buffer, *bp;
buffer = malloc(1 + 2 + payload); // 分配内存:类型(1) + 长度(2) + 数据(payload)
bp = buffer; // bp 指向分配的内存

*bp++ = HB_RESPONSE; // 写入心跳响应类型
s2n(payload, bp); // 写入数据长度(主机字节序转网络字节序)
memcpy(bp, p1, payload); // 将心跳请求中的数据复制到响应中

// 将构造好的心跳响应包通过 socket s 返回给客户端
write_bytes(s, buffer, 3 + payload);
}
}

【问题1】(4分)

(1)心跳包数据长度字段占2个字节,表示后续数据或者负载的长度。所以心跳包数据长度字段的最大取值为2^16=64KB

(2)必须一致

【问题2】(5分)

OpenSSL的心跳处理逻辑没有检测心跳包中的长度字段是否和后续的数据字段相符合,攻击者可以利用这点,构造异常的数据包,来获取心跳数据所在的内存区域的后续数据。这些数据中可能包含了证书私钥、用户名、用户密码、用户邮箱等敏感信息。该漏洞允许攻击者,从内存中读取多达64KB的数据。

【问题3】(2分)

5天修炼,8.2.4 信息系统安全测评。

模糊测试:属于软件测试中的黑盒测试,是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。模糊测试不需要程序的源代码就可以发现问题。

模糊测试是一种自动化的动态漏洞挖掘技术,不存在误报,也不需要人工进行大量的逆向分析工作。

【问题4】(4分)

可利用黑盒测试方法,向服务器发送特定报文,通过服务器返回数据解析出报文,解析并判断是否存在“心脏出血”漏洞。

恶意代码分析

阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。

【说明】恶意代码是指为达到恶意目地专门设计的程序或者代码。常见的恶意代码类型有特洛伊木马、蠕虫、病毒、后门、Rootkit、僵尸程序、广告软件。2017年5月。勒索软件WanaCry席卷全球,国内大量高校及企事业单位的计算机被攻击,文件及数据被加密后无法使用,系统或服务无法正常运行,损失巨大。

【问题1】(2分)

按照恶意代码分类,此次爆发的恶意软件属于那种类型?

【问题2】(2分)

此次勒索软件针对软件攻击目标是Windows还是Linux类系统?

【问题3】(6分)

恶意代码具有的共同特征是什么?

【问题4】(5分)

由于此次勒索软件需要利用系统的SMB服务漏洞(端口号445)进行传播,我们可以配置防火墙过滤规则来阻止勒索软件的攻击,请填写表1-1中的空(1)-(5),使该过滤规则完整。

注:假设本机IP地址为:1.2.3.4,”*”表示通配符。

试题分析

【问题1】

WannaCry(又叫Wanna Decryptor)是一种“蠕虫式”的勒索病毒软件,大小3.3MB,由不法分子利用NSA(National Security Agency,美国国家安全局)泄露的危险漏洞“EternalBlue”(永恒之蓝)进行传播。

当用户主机系统被该勒索软件入侵后,弹出如下勒索对话框,提示勒索目的并向用户索要比特币。而对于用户主机上的重要文件,如:照片、图片、文档、压缩包、音频、视频、可执行程序等几乎所有类型的文件,都被加密的文件后缀名被统一修改为“.WNCRY”。目前,安全业界暂未能有效破除该勒索软的恶意加密行为,用户主机一旦被勒索软件渗透,只能通过重装操作系统的方式来解除勒索行为,但用户重要数据文件不能直接恢复。

【问题2】

WannaCry主要利用了微软“Windows”操作系统的漏洞,以获得自动传播的能力。

【问题3】

5天修炼,5.2恶意代码。

恶意代码的特点如下:

l恶意的目的;

l本身是计算机程序;

l通过执行发生作用。

【问题4】

防火墙设置就是关闭外网到内网,TCP协议445端口的连接。。

参考答案

【问题1】(2分)

蠕虫病毒

【问题2】(2分)

“Windows”操作系统

【问题3】(6分)

恶意代码的特点如下:

l恶意的目的;

l本身是计算机程序;

l通过执行发生作用。

【问题4】(5分)

(1)(2)>1024(或者填)(3)445(4)TCP (5)*

加密分析

试题二

阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

密码学的基本目标是在有攻击者存在的环境下,保证通信双方(A和B)之间能够使用不安全的通信信道实现安全通信。密码技术能够实现信息的保密性、完整性、可用性和不可否认性等安全目标。一种实用的保密通信模型往往涉及对称加密、公钥密码、Hash函数、数字签名等多种密码技术。

在以下描述中,M表示消息,H表示Hash函数,E表示加密算法,D表示解密算法,K表示密钥,SKA表示A的私钥,PKA表示A的公钥,SKB表示B的私钥,PKB表示B的公钥,

表示连接操作。

【问题1】(6分)

用户AB双方采用的保密通信的基本过程如图2-1所示。

试题分析

【问题1】(6分)

A发送给B:对消息M 做摘要,然后用密钥进行加密,然后与消息M一并发出。

B接受到M和加密后的摘要后,对加密信息进行解密得到H’(M);B对接受到的M做摘要得到H(M)。如果H’( M)=H(M)表明M没有被篡改。

H和E不能否互换计算顺序,先hash摘要可以减少加密的计算量。

【问题2】(4分)

A发送给B:M消息进行hash摘要,然后与消息M一并加密。这种方式就确保了M信息的机密性。

B接受到加密信息后:解密信息,得到M消息和hash摘要信息;B对接受到的M做摘要得到H(M)。如果H’( M)= H(M)表明M没有被篡改。

【问题3】(5分)

发送过程:

(1)对M摘要:H(M)

(2)对H(M)使用A的私钥SKA签名:SKA(H(M))

(3)合并M和(2)的结果,并使用共享密钥K对M||SKA(H(M))加密:[M||KA(H(M))]

接受过程:

(1)使用共享密钥对接受到的信息解密,得到信息M||SKA(H(M))

(2)使用A的公钥PKA解密信息SKA(H(M)),得到H(M)

(3)对M再次进行摘要,得到H’(M)。如果H’( M)= H(M)表明M没有被篡改。

参考答案

【问题1】(6分)

保证M完整性;

不能互换,先hash摘要可以减少加密的计算量。

【问题2】(4分)

实现机密性、完整性。

wireshark分析

试题五

阅读下列说明和图,回答问题1至问题5,将解答写在答题纸的对应栏内。

【说明】

入侵检测系统(IDS)和入侵防护系统(IPS)是两种重要的网络安全防御手段,IDS注重的是网络安全状况的监管,IPS则注重对入侵行为的控制。

【问题1】(2分)

网络安全防护可以分为主动防护和被动防护,请问IDS和IPS分别属于哪种防护?

【问题2】(4分)

入侵检测是动态安全模型(P2DR)的重要组成部分。请列举P2DR模型的4个主要组成部分。

【问题3】(2分)

假如某入侵检测系统记录了如图5-1所示的网络数据包:

图5-1

请问图中的数据包属于哪种网络攻击?该攻击的具体名字是什么?

【问题4】(4分)

入侵检测系统常用的两种检测技术是异常检测和误用检测,请问针对图中所描述的网络攻击应该采用哪种检测技术?请简要说明原因。

【问题5】(3分)

Snort是一款开源的网络入侵检测系统,它能够执行实时流量分析和IP协议网络的数据包记录。

Snort的配置有3种模式,请给出这3种模式的名字。

试题分析

【问题1】(2分)

入侵检测技术(IDS)注重的是网络安全状况的监管,通过监视网络或系统资源,寻找违反安全策略的行为或攻击迹象,并发出报警。因此绝大多数 IDS 系统都是被动的。

入侵防护系统(IPS) 则倾向于提供主动防护,注重对入侵行为的控制。其设计宗旨是预先对入侵活动和攻击性网络流量进行拦截,避免其造成损失。

【问题2】(4分)

5天修炼,5.4.2 入侵检测与入侵防护。

P2DR模型是基于静态模型之上的动态安全模型,该模型包含防护、检测、响应三个部分之外,还包含安全策略。

【问题3】(2分)

【问题4】(4分)

(1)异常检测

异常检测(也称基于行为的检测)是指把用户习惯行为特征存储在特征库中,然后将用户当前行为特征与特征数据库中的特征进行比较,若两者偏差较大,则认为有异常情况发生。

(2)误用检测

误用检测一般是由计算机安全专家首先对攻击情况和系统漏洞进行分析和分类,然后手工的编写相应的检测规则和特征模型。误用入侵检测的主要假设是具有能够被精确地按某种方式编码的攻击,并可以通过捕获攻击及重新整理,确认入侵活动是基于同一弱点进行攻击的入侵方法的变种。

SYN FLOOD攻击具有固定的攻击行为,攻击特征明显,所以可以使用误用检测的方法进行检测。

【问题5】(3分)

Snort的配置有3个主要模式:嗅探、包记录和网络入侵检测。

参考答案

【问题1】(2分)

入侵检测技术(IDS)属于被动防护;

入侵防护系统(IPS)提供主动防护。

【问题2】(4分)

防护、检测、响应、安全策略

【问题3】(2分)

拒绝服务攻击,SYN flood攻击。

【问题4】(4分)

\tSYN FLOOD攻击具有固定的攻击行为,攻击特征明显,所以可以使用误用检测的方法进行检测。

【问题5】(3分)

Snort的配置有3个主要模式:嗅探、包记录和网络入侵检测。

拓扑图分析

【问题1】(6分)

1、按照等级保护2. 0的要求,该虚拟化云平台的定级不应低于(1)级?需要每(2)年测评一次。

2、根据信安部门要求,需要针对虚拟化云平台进行等级测评,结合该数据中心网络拓扑图,需要购置相关安全设备。

针对要求点“应在关键网网络节点检测、防止或限制从外部或内部部发起的网络攻击行为”选购的设备是(3);

针对要求点“应能对远程访问的用户行为、访问互联网的用户行为等单独进行行为审计和数据分析”选购的设备是(4);

针对要求点“应对系统管理员进行身份鉴别,只允许其通过特定的命令或操作界面进行系统管理操作,并针对这些操作进行审计”选购的设备是(5);

针对要求点“应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞”选购的设备是(6)。

【问题1】(6分)

1、按照等级保护2. 0的要求,该虚拟化云平台的定级不应低于(1)级?需要每(2)年测评一次。

2、根据信安部门要求,需要针对虚拟化云平台进行等级测评,结合该数据中心网络拓扑图,需要购置相关安全设备。

针对要求点“应在关键网网络节点检测、防止或限制从外部或内部部发起的网络攻击行为”选购的设备是(3);

针对要求点“应能对远程访问的用户行为、访问互联网的用户行为等单独进行行为审计和数据分析”选购的设备是(4);

针对要求点“应对系统管理员进行身份鉴别,只允许其通过特定的命令或操作界面进行系统管理操作,并针对这些操作进行审计”选购的设备是(5);

针对要求点“应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞”选购的设备是(6)。

常见危险端口

端口号 协议 服务名称 功能说明 开放后的危险描述 被攻击或滥用时的典型特征
135 TCP / UDP RPC Endpoint Mapper(远程过程调用) 用于定位 Windows 系统中 RPC 服务的动态端口,是 DCOM、WMI、远程服务调用等的基础 被利用进行 远程命令执行(如 MS03-026、MS08-067 等漏洞),攻击者可远程执行任意代码或控制主机;勒索病毒常用此端口扫描横向传播 网络中出现对 135 端口的大量扫描;防火墙日志中频繁有 “MSRPC” 请求;系统 RPCSS 服务异常消耗 CPU
137 UDP NetBIOS Name Service 负责将计算机名解析为 IP 地址(早期局域网主机发现) 泄露主机名、工作组名、NetBIOS 名称等信息;可被用于 主机枚举、信息收集,甚至名称欺骗(NetBIOS spoofing) 出现异常 UDP 137 请求;网络嗅探可见主机名广播;局域网内频繁广播 NBNS 包
138 UDP NetBIOS Datagram Service 提供广播消息及无连接数据报服务,用于 LAN 内共享发现 攻击者可利用其做 局域网嗅探、共享枚举、欺骗攻击;广播包会泄露设备信息 网络广播频繁;可见大量 UDP 138 流量;攻击中常出现 NB-Datagram 包
139 TCP NetBIOS Session Service 建立有连接会话以进行文件、打印共享等操作(SMB over NetBIOS) 可被攻击者通过 空会话(Null Session)连接 或 弱口令爆破访问共享文件;也常被用于 SMB relay 攻击、横向移动 局域网中出现 TCP 139 会话请求;可用 net usesmbclient 等直接访问共享;攻击日志中显示匿名访问尝试
445 TCP SMB(Server Message Block) / CIFS 现代 SMB 协议直接运行在 TCP 上(不依赖 NetBIOS),用于文件共享、IPC、远程管理 勒索病毒最常利用的端口:WannaCry、NotPetya、EternalBlue 等均利用 SMBv1 漏洞通过 445 扩散;也可被用于 SMB relay、凭证嗅探、横向传播 局域网中爆发异常 SMB 流量;主机之间相互访问 445;出现文件共享自动创建/修改、勒索文件加密迹象

常见日志路径

Linux 用户登录与行为日志
日志文件 绝对路径 特点 功能描述 查看命令
lastlog /var/log/lastlog 二进制格式,记录所有用户的最近登录时间。 用户登录时间审计:快速查看每个用户最后一次成功登录系统的时间。 lastlog
btmp /var/log/btmp 二进制格式,记录失败的登录尝试。 安全监控:记录所有失败的登录尝试,用于检测暴力破解等安全威胁。 lastb
utmp /var/run/utmp 二进制格式,记录当前登录用户会话。 当前用户会话监控:记录当前登录系统的用户信息,是 who, w 等命令的数据源。 who, w, users
wtmp /var/log/wtmp 二进制格式,记录所有的登录、注销历史。 用户登录历史审计:记录所有用户的登录、注销、重启事件,可用于追溯用户活动。 last
utmpx wtmpx /var/log/utmpx /var/log/wtmpx 扩展格式(在某些Unix系统中,如Solaris)。 功能同utmp/wtmp,但提供更详细的信息。注意:在大多数Linux发行版中,主要使用utmp和wtmp。 系统相关
Linux 服务与命令审计日志
绝对路径 特点 功能描述
/var/log/messages 历史遗留名称,在许多系统(如RHEL/CentOS 7)中是核心系统日志。记录内核、服务等广泛信息。 通用系统活动记录:包含系统启动、服务状态变化、硬件检测、非关键错误等信息。是排查系统级问题的首选。
/var/log/syslog 在 Debian/Ubuntu 等系统中充当核心系统日志的角色,功能类似 /var/log/messages 通用系统活动记录:记录除身份验证外的大部分系统级日志。
/var/log/auth.log /var/log/secure 身份验证和安全相关日志。 - auth.log (Debian/Ubuntu) - secure (RHEL/CentOS) 用户登录/认证审计:记录所有用户的登录、注销、sudo提权、SSH登录成功/失败等安全事件。是安全审计的关键。
/var/log/kern.log 内核专用日志。记录内核产生的信息,包括硬件驱动、内核模块加载/卸载等。 内核问题诊断:用于排查硬件兼容性、内核崩溃、驱动故障等问题。
/var/log/boot.log 系统启动过程日志。记录本次开机启动过程中各个服务的启动状态。 启动故障排查:当系统启动失败或服务未能正常启动时,查看此日志。
/var/log/dmesg 内核环形缓冲区日志。内容与 dmesg 命令相同,但会持久化到磁盘。 硬件和设备信息:记录系统启动时检测到的硬件信息,以及运行过程中的硬件错误(如USB设备故障、磁盘错误)。
/var/log/cron 计划任务日志。记录 cronanacron 任务的执行情况。 定时任务监控:查看定时任务是否按时执行、执行结果(成功或错误输出)。
/var/log/maillog 邮件服务日志。记录邮件系统(如Postfix, Sendmail)的收发信活动。 邮件服务调试:用于排查邮件发送/接收失败的问题。
/var/log/httpd/ /var/log/apache2/ Apache Web服务器日志目录。 - access_log:访问日志 - error_log:错误日志 网站访问分析:记录所有HTTP请求,用于分析流量、访客行为。 Web服务错误诊断:记录Apache服务运行中的错误、PHP致命错误等。
/var/log/nginx/ Nginx Web服务器日志目录。 - access.log:访问日志 - error.log:错误日志 功能同Apache,记录Nginx的访问和错误信息。
/var/log/apt/ APT包管理器日志目录history.logterm.log 最为有用。 软件包管理历史:记录所有通过 apt 进行的软件包安装、更新、删除操作,便于回溯。
windows常见日志
绝对路径 特点 功能描述
C:\Windows\System32\winevt\Logs\ 事件查看器日志文件存储目录。日志为二进制的 .evtx 格式,需用事件查看器或 Get-WinEvent PowerShell命令解析。 所有Windows系统、应用程序和服务日志的集中存储位置
C:\Windows\System32\winevt\Logs\System.evtx 系统组件日志。记录由Windows操作系统组件(如驱动、系统服务)产生的事件。 系统稳定性诊断:查看硬件错误、服务启动失败、驱动程序崩溃、蓝屏相关事件等。
C:\Windows\System32\winevt\Logs\Application.evtx 应用程序日志。记录由用户应用程序或非系统程序产生的事件。 应用程序问题排查:查看软件安装错误、程序崩溃、应用程序特定的错误和警告。
C:\Windows\System32\winevt\Logs\Security.evtx 安全审计日志。记录所有与安全相关的事件,如登录、对象访问、权限变更等。默认部分审计策略未开启。 安全审计与入侵检测:监控成功/失败的登录尝试、用户权限变更、文件访问审计、策略更改等。是安全调查的核心。
C:\Windows\System32\winevt\Logs\Setup.evtx 系统安装日志。记录在系统安装或更新过程中发生的事件。 系统安装/更新问题排查
C:\Windows\System32\winevt\Logs\ForwardedEvents.evtx 转发事件日志。用于存储从其他计算机转发过来的事件。 集中式日志管理
C:\Windows\Logs\ 一些Windows组件和功能的独立日志目录。 包含一些更具体的日志,如:
C:\Windows\Logs\CBS\CBS.log 组件基于服务的堆栈日志。非常详细且庞大。 Windows更新失败排查:当Windows Update失败时,这是最关键的日志,记录了每个更新组件的处理过程。
C:\Windows\Logs\DISM\dism.log 部署映像服务和管理工具日志 系统映像处理问题排查:在使用DISM工具修复系统映像时查看。
%SystemRoot%\System32\Winevt\Logs\ 同上,使用了环境变量。 C:\Windows\System32\winevt\Logs\ 是同一个目录。