当前位置:文档之家› 网络安全技术题+答案1

网络安全技术题+答案1

一、简述常见的黑客攻击过程。

1 目标探测和信息攫取
先确定攻击日标并收集目标系统的相关信息。

一般先大量收集网上主机的信息,然后根据各系统的安全性强弱确定最后的目标。

1) 踩点(Footprinting)
黑客必须尽可能收集目标系统安全状况的各种信息。

Whois数据库查询可以获得很多关于目标系统的注册信息,DNS查询(用Windows/UNIX上提供的nslookup命令客户端)也可令黑客获得关于目标系统域名、IP地址、DNS务器、邮件服务器等有用信息。

此外还可以用traceroute工具获得一些网络拓扑和路由信息。

2) 扫描(Scanning)
在扫描阶段,我们将使用各种工具和技巧(如Ping扫射、端口扫描以及操作系统检测等)确定哪些系统存活着、它们在监听哪些端口(以此来判断它们在提供哪些服务),甚至更进一步地获知它们运行的是什么操作系统。

3) 查点(Enumeration)
从系统中抽取有效账号或导出资源名的过程称为查点,这些信息很可能成为目标系统的祸根。

比如说,一旦查点查出一个有效用户名或共享资源,攻击者猜出对应的密码或利用与资源共享协议关联的某些脆弱点通常就只是一个时间问题了。

查点技巧差不多都是特定于操作系统的,因此要求使用前面步骤汇集的信息。

2 获得访问权(Gaining Access)
通过密码窃听、共享文件的野蛮攻击、攫取密码文件并破解或缓冲区溢出攻击等来获得系统的访问权限。

3 特权提升(Escalating Privilege)
在获得一般账户后,黑客经常会试图获得更高的权限,比如获得系统管理员权限。

通常可以采用密码破解(如用L0phtcrack破解NT的SAM文件)、利用已知的漏洞或脆弱点等技术。

4 窃取(Stealing)
对敏感数据进行篡改、添加、删除及复制(如Windows系统的注册表、UNIX
的rhost文件等)。

5 掩盖踪迹(Covering Tracks)
此时最重要就隐藏自己踪迹,以防被管理员发觉,比如清除日志记录、使用rootkits等工具。

6 创建后门(Creating Bookdoor)
在系统的不同部分布置陷阱和后门,以便入侵者在以后仍能从容获得特权访问。

二、什么是IDS,它有哪些基本功能?
入侵检测系统IDS,它从计算机网络系统中的若干关键点收集信息,并分析这些信息,检查网络中是否有违反安全策略的行为和遭到袭击的迹象。

入侵检测被认为是防火墙之后的第二道安全闸门。

1)监测并分析用户和系统的活动,查找非法用户和合法用户的越权操作;
2)核查系统配置和漏洞并提示管理员修补漏洞;
3)评估系统关键资源和数据文件的完整性;
4)识别已知的攻击行为,统计分析异常行为;
5)操作系统日志管理,并识别违反安全策略的用户活动等。

三、什么是网络蠕虫?它的传播途径是什么?
网络蠕虫是一种可以通过网络(永久连接网络或拨号网络)进行自身复制的病毒程序。

一旦在系统中激活,蠕虫可以表现得象计算机病毒或细菌。

可以向系统注入特洛伊木马程序,或者进行任何次数的破坏或毁灭行动。

普通计算机病毒需要在计算机的硬件或文件系统中繁殖,而典型的蠕虫程序会在内存中维持一个活动副本。

蠕虫是一个独立运行的程序,自身不改变其他的程序,但可以携带一个改变其他程序功能的病毒。

四、TCP/IP协议的网络安全体系结构的基础框架是什么?
由于OSI参考模型与TCP/IP参考模型之间存在对应关系,因此可根据GB/T 9387.2-1995的安全体系框架,将各种安全机制和安全服务映射到TCP/IP的协议集中,从而形成一个基于TCP/IP协议层次的网络安全体系结构。

五、请举例说明至少两个最近的网络安全事件及造成的后果,并分析其原因。

1.OpenSSL爆“心脏出血”漏洞
2014年4月8日,OpenSSL爆出本年度最知名的安全漏洞Heartbleed,被形象地形容为致命的“心脏出血”。

利用该漏洞,黑客坐在自己家里电脑前,就可以实时获取约30%的https开头网址的用户登录账号密码,其中包括网民最常用的购物、网银、社交、门户、微博、微信、邮箱等知名网站和服务,影响至少两亿中国网民。

OpenSSL的“心脏出血”再一次把网络安全问题推到了公众面前。

分析:结构体SSL3_RECORD的定义如下
typedef struct ssl3_record_st
{
int type; /* type of record */
unsigned int length; /* How many bytes available */
unsigned int off; /* read/write offset into 'buf' */
unsigned char *data; /* pointer to the record data */
unsigned char *input; /* where the decode bytes are */
unsigned char *comp; /* only used with decompression - malloc()ed */ unsigned long epoch; /* epoch number, needed by DTLS1 */
unsigned char seq_num[8]; /* sequence number, needed by DTLS1 */
} SSL3_RECORD;
每条SSLv3记录中包含一个类型域(type)、一个长度域(length)和一个指向记录数据的指针(data)。

我们回头去看dtls1_process_heartbeat:
/* Read type and payload length first */
hbtype = *p++;
n2s(p, payload);
pl = p;
SSLv3记录的第一个字节标明了心跳包的类型。

宏n2s从指针p指向的数组中取出前两个字节,并把它们存入变量payload中——这实际上是心跳包载荷的长度域(length)。

注意程序并没有检查这条SSLv3记录的实际长度。

变量pl则指向由访问者提供的心跳包数据。

这个函数的后面进行了以下工作:
unsigned char *buffer, *bp;
int r;
/* Allocate memory for the response, size is 1 byte
* message type, plus 2 bytes payload length, plus
* payload, plus padding
*/
buffer = OPENSSL_malloc(1 + 2 + payload + padding);
bp = buffer;
所以程序将分配一段由访问者指定大小的内存区域,这段内存区域最大为(65535 + 1 + 2 + 16) 个字节。

变量bp是用来访问这段内存区域的指针。

/* Enter response type, length and copy payload */
*bp++ = TLS1_HB_RESPONSE;
s2n(payload, bp);
memcpy(bp, pl, payload);
宏s2n与宏n2s干的事情正好相反:s2n读入一个16 bit长的值,然后将它存成双字节值,所以s2n会将与请求的心跳包载荷长度相同的长度值存入变量payload。

然后程序从pl处开始复制payload个字节到新分配的bp数组中——pl 指向了用户提供的心跳包数据。

最后,程序将所有数据发回给用户。

如果用户并没有在心跳包中提供足够多的数据,会导致什么问题?比如pl指向的数据实际上只有一个字节,那么memcpy会把这条SSLv3记录之后的数据——无论那些数据是什么——都复制出来。

很明显,SSLv3记录附近有不少东西。

2、1·21中国互联网DNS大劫难。

相关主题