网络漏洞扫描的原理和相关程序

news/2025/1/16 7:50:43/

 1 引言

  网络扫描,是基于Internet的、探测远端网络或主机信息的一种技术,也是保证系统和网络安全必不可少的一种手段。主机扫描,是指对计算机主机或者其它网络设备进行安全性检测,以找出安全隐患和系统漏洞。总体而言,网络扫描和主机扫描都可归入漏洞扫描一类。漏洞扫描本质上是一把双刃剑:黑客利用它来寻找对网络或系统发起攻击的途径,而系统管理员则利用它来有效防范黑客入侵。通过漏洞扫描,扫描者能够发现远端网络或主机的配置信息、 TCP/UDP端口的分配、提供的网络服务、服务器的具体信息等。

  2 漏洞扫描原理

  漏洞扫描可以划分为ping扫描、端口扫描、OS探测、脆弱点探测、防火墙扫描五种主要技术,每种技术实现的目标和运用的原理各不相同。按照 TCP/IP协议簇的结构,ping扫描工作在互联网络层:端口扫描、防火墙探测工作在传输层;0S探测、脆弱点探测工作在互联网络层、传输层、应用层。 ping扫描确定目标主机的IP地址,端口扫描探测目标主机所开放的端口,然后基于端口扫描的结果,进行OS探测和脆弱点扫描。

  2.1 Ping扫描

  ping扫描是指侦测主机IP地址的扫描。ping扫描的目的,就是确认目标主机的TCP/IP网络是否联通,即扫描的IP地址是否分配了主机。对没有任何预知信息的黑客而言,ping扫描是进行漏洞扫描及入侵的第一步;对已经了解网络整体IP划分的网络安全人员来讲,也可以借助ping扫描,对主机的IP分配有一个精确的定位。大体上,ping扫描是基于ICMP协议的。其主要思想,就是构造一个ICMP包,发送给目标主机,从得到的响应来进行判断。根据构造ICMP包的不同,分为ECH0扫描和non—ECHO扫描两种。

  2.1.1 ECH0扫描

  向目标IP地址发送一个ICMP ECHOREQUEST(ICMP type 8)的包,等待是否收至UICMP ECHO REPLY(ICMP type 0)。如果收到了ICMP ECHO REPLY,就表示目标IP上存在主机,否则就说明没有主机。值得注意的是,如果目标网络上的防火墙配置为阻止ICMP ECH0流量,ECH0扫描不能真实反映目标IP上是否存在主机。

  此外,如果向广播地址发送ICMPECHO REQUEST,网络中的unix主机会响应该请求,而windows主机不会生成响应,这也可以用来进行OS探测。

  2.1.2 non-ECH0扫描

  向目的IP地址发送一个ICMP TIMESTAMP REQUEST(ICMP type l3),或ICMP ADDRESS MASK REQUEST (ICMP type l7)的包,根据是否收到响应,可以确定目的主机是否存在。当目标网络上的防火墙配置为阻止ICMP ECH0流量时,则可以用non.ECH0扫描来进行主机探测。

  2.2端口扫描

  端口扫描用来探测主机所开放的端口。端口扫描通常只做最简单的端口联通性测试,不做进一步的数据分析,因此比较适合进行大范围的扫描:对指定 IP地址进行某个端口值段的扫描,或者指定端口值对某个IP地址段进行扫描。根据端口扫描使用的协议,分为TCP扫描和UDP扫描。

  2.2.1 TCP扫描

  主机间建立TCP连接分三步(也称三次握手):

  (1)请求端发送一个SYN包,指明打算连接的目的端口。

  (2)观察目的端返回的包:

  返回SYN/ACK包,说明目的端口处于侦听状态;

  返回RST/ACK包,说明目的端口没有侦听,连接重置。

  (3)若返回SYN/ACK包,则请求端向目的端口发送ACK包完成3次握手,TCP连接建立。

  根据TCP连接的建立步骤,TCP扫描主要包含两种方式:

  (1)TCP全连接和半连接扫描

  全连接扫描通过三次握手,与目的主机建立TCP连接,目的主机的log文件中将记录这次连接。而半连接扫描(也称TCP SYN扫描)并不完成TCP三次握手的全过程。扫描者发送SYN包开始三次握手,等待目的主机的响应。如果收到SYN/ACK包,则说明目标端口处于侦听状态,扫描者马上发送RST包,中止三次握手。因为半连接扫描并没有建立TCP连接,目的主机的log文件中可能不会记录此扫描。

  (2)TCP隐蔽扫描

  根据TCP协议,处于关闭状态的端口,在收到探测包时会响应RST包,而处于侦听状态的端口则忽略此探测包。根据探测包中各标志位设置的不同,TCP隐蔽扫描又分为SYN/ACK扫描、FIN扫描、XMAS(圣诞树)扫描和NULL扫描四种。

  SYN/ACK扫描和FIN扫描均绕过TCP三次握手过程的第一步,直接给目的端口发送SYN/ACK包或者FIN包。因为TCP是基于连接的协议,目标主机认为发送方在第一步中应该发送的SYN包没有送出,从而定义这次连接过程错误,会发送一个RST包以重置连接。而这正是扫描者需要的结果— 只要有响应,就说明目标系统存在,且目标端口处于关闭状态。

  XMAS扫描和NULL扫描:这两类扫描正好相反,XMAS扫描设置TCP包中所有标志位(URG、ACK、RST、PSH、SYN、FIN),而NULL扫描则关闭TCP包中的所有标志位。

  2.2.2 UDP端口扫描

  UDP协议是数据包协议,为了要发现正在服务的UDP端口,通常的扫描方式是构造一个内容为空的UDP数据包送往目的端口。若目的端口上有服务正在等待,则目的端口返回错误的消息;若目的端口处于关闭状态,则目的主机返回ICMP端口不可达消息。因为UDP端口扫描软件要计算传输中丢包的数量,所以UDP端口扫描的速度很慢。

  2.3 0S探测

  OS探测有双重目的:一是探测目标主机的0S信息,二是探测提供服务的计算机程序的信息。比如OS探测的结果是:OS是Windows XP sp3,服务器平台是IIS 4.0。

  2.3.1二进制信息探测

  通过登录目标主机,从主机返回的banner中得知OS类型、版本等,这是最简单的0S探测技术。

 

   

  图1 二进制信息

  从图l可以看出,在telnet连上FTP服务器后,服务器返回的banner已经提供了server的信息,在执行ftp的syst命令后可得到更具体的信息。

  2.3.2 HTTP响应分析

  在和目标主机建立HTTP连接后,可以分析服务器的响应包得出OS类型。比如响应包中可能包含如下信息:

  

 

  图2 响应包分析

  从图2中对响应包中的数据分析,可以得到server的信息。

  2.3.3栈指纹分析

  网络上的主机都会通过TCP/IP或类似的协议栈来互通互联。由于0S开发商不唯一,系统架构多样,甚至是软件版本的差异,都导致了协议栈具体实现上的不同。对错误包的响应,默认值等都可以作为区分0S的依据。

  (1)主动栈指纹探测

  主动栈指纹探测是主动向主机发起连接,并分析收到的响应,从而确定OS类型的技术。

  1)FIN探测。跳过TCP三次握手的顺序,给目标主机发送一个FIN包。RFC793规定,正确的处理是没有响应,但有些OS,如MS Windows,CISC0,HP/UX等会响应一个RST包。

  2)Bogus标志探测。某些OS会设置SYN包中TCP头的未定义位(一般为64或128),而某些0S在收到设置了这些Bogus位的SYN包后,会重置连接。

  3)统计ICMP ERROR报文。RFCl812中规定了ICMP ERROR消息的发送速度。Linux设定了目标不可达消息上限为80个/4秒。0S探测时可以向随机的高端UDP端口大量发包,然后统计收到的目标不可达消息。用此技术进行OS探测时时间会长一些,因为要大量发包,并且还要等待响应,同时也可能出现网络中丢包的情况。

  4)ICMPERROR报文引用。RFC文件中规定,ICMP ERROR消息要引用导致该消息的ICMP消息的部分内容。例如对于端口不可达消息,某些OS返回收到的IP头及后续的8个字节,Solaris返回的 ERROR消息中则引用内容更多一些,而Linux比Solaris还要多。

  (2)被动栈指纹探测

  被动栈指纹探测是在网络中监听,分析系统流量,用默认值来猜测0S类型的技术。

  1)TCP初始化窗口尺寸。通过分析响应中的初始窗口大小来猜测OS的技术比较可靠,因为很多0S的初始窗口尺寸不同。比如AIX设置的初始窗口尺寸是0x3F25,而Windows NT5、OpenBSD、FreeBSD设置的值是0x402E。

  2)Don’t Fragment位。为了增进性能,某些0S在发送的包中设置了DF位,可以从DF位的设置情况中做大概的判断。

  3)TCPISN采样。建立TCP连接时,SYN/ACK中初始序列号ISN的生成存在规律,比如固定不变、随机增加 (Solaris,FreeBSD等),真正的随机(Linux 2.0.*),而Windows使用的是时间相关模型,ISN在每个不同时间段都有固定的增量。

  2.4脆弱点扫描

  从对黑客攻击行为的分析和脆弱点的分类,绝大多数扫描都是针对特定操作系统中特定的网络服务来进行,即针对主机上的特定端口。脆弱点扫描使用的技术主要有基于脆弱点数据库和基于插件两种。

  2.4.1基于脆弱点数据库的扫描

  首先构造扫描的环境模型,对系统中可能存在的脆弱点、过往黑客攻击案例和系统管理员的安全配置进行建模与分析。其次基于分析的结果,生成一套标准的脆弱点数据库及匹配模式。最后由程序基于脆弱点数据库及匹配模式自动进行扫描工作。脆弱点扫描的准确性取决于脆弱点数据库的完整性及有效性。

  2.4.2基于插件的扫描

  插件是由脚本语言编写的子程序模块,扫描程序可以通过调用插件来执行扫描。添加新的功能插件可以使扫描程序增加新的功能,或者增加可扫描脆弱点的类型与数量。也可以升级插件来更新脆弱点的特征信息,从而得到更为准确的结果。插件技术使脆弱点扫描软件的升级维护变得相对简单,而专用脚本语言的使用也简化了编写新插件的编程工作,使弱点扫描软件具有很强的扩展性。

  2.5防火墙规则探测

  采用类似于traceroute的IP数据包分析法,检测能否给位于过滤设备后的主机发送一个特定的包,目的是便于漏洞扫描后的入侵或下次扫描的顺利进行。通过这种扫描,可以探测防火墙上打开或允许通过的端口,并且探测防火墙规则中是否允许带控制信息的包通过,更进一步,可以探测到位于数据包过滤设备后的路由器。

  3 常见漏洞扫描程序

  通常在制定漏洞扫描策略时,扫描者会考虑程序的操作系统、所应用的技术、易用性、准确性等因素。其中,程序的可用性是最重要的,也是最基本的,但是可控性和准确性同样不容忽视。

  3.1 Unix/Linux平台

  3.1.1 hping

  hping支持TCP、UDP、ICMP、RAW-IP多种协议。特点在于能进行ping扫描、端口扫描、0S探测、防火墙探测等多种扫描,并能自定义发送的ICMP/UDP/TCP包到目标地址并且显示响应信息。

  3.1.2 icmpush&icmpquery

  icmpush&icmpquery的特点在于完全应用了ICMP协议,可以定制ICMP包的结构以及种类。扫描者可以用这套工具把目标网络的各个子网全部查找出来,从而可以撇开广播地址而集中扫描某几个特定的子网。

  3.1.3 Xprobe 2

  是专业的端口扫描、OS探测程序。特点在于自身的0S特征数据库详细,进行OS探测的可靠性较好。

  3.1.4 THC-Anap

  OS探测程序。特点在于扫描速度快,扫描结果可靠。

  3.1.5 Whisker

  针对CGI的脆弱点探测程序。应用了多线程、多文件扫描技术,脆弱点数据库更新频繁,对扫描结果自行复核,从而扫描结果可靠性好。

  3.1.6 Nessus

  脆弱点探测程序。应用了主动扫描、高速扫描技术,可设置扫描过程。特点在于支持DMZ区以及多物理分区网络的大范围扫描。

  3.1.7 Firewalk

  防火墙探测程序。使用类似traceroute的技术来分析IP包的响应,从而测定防火墙的访问控制列表和绘制网络拓扑图。

  3.2 Windows平台

  3.2.1 Pinger

  是一个图形化的ping扫描工具。特点在于可以指定要ping的IP地址,以图形的形式显示扫描结果,并保存至文本文件。

  3.2.2 Fport

  是端口扫描程序。特点在于可以把扫描出的端口与使用该端口的程序相匹配,扫描速度快,匹配程度较好。

  3.2.3 SuperScan

  可以进行ping扫描、端口扫描、0S探测,并且白带一个木马端口列表,可以检测目标计算机是否有木马。

  3.2.4 GFILANguard

  脆弱点探测程序。特点在于集成了网络审计、补丁管理功能,可以自动生成网络拓扑图、自动补丁管理。

  上述漏洞扫描程序及特点如表1所示。

  4 结论

  一般而言,综合地应用多种扫描方法或扫描程序可以得到比较满意的结果。但是漏洞扫描从其技术原理上分析,有不可忽视的副作用。比如对大范围的 IP地址或者端口进行某种扫描,反复高速的发出特定的连接请求,所造成的结果就是目标网络及主机上存在大量的连接请求数据包,可以造成网络拥塞,主机无法正常使用,这正是DoS攻击的方法及表现。因此若要防范漏洞扫描以及可能的DoS攻击,要做到以下三点:

  1.在防火墙及过滤设备上采用严格的过滤规则,禁止扫描的数据包进入系统。

  2.主机系统除了必要的网络服务外,禁止其它的网络应用程序。

  3.对于只对内开放的网络服务,更改其提供服务的端口。

  此外,网络扫描时发送的数据或多或少都会含有扫描者自身相关信息,从而也可以抓取扫描时的数据包,对扫描者进行反向追踪,这也是一个值得研究的方向。

 

转载于:https://www.cnblogs.com/linmeng97blogwzhh/p/9157926.html


http://www.ppmy.cn/news/835139.html

相关文章

web安全工具库(笔记)----端口扫描(SuperScanV4.0-RHC.exe)

最简单的方法介绍工具。 教程所包含工具: 链接:https://pan.baidu.com/s/1fPh0rv88y64b33R47ecfxA 提取码:sr2r 系统:windows 10 SuperScanV4.0-RHC.exe工具使用方法: 非常古老的一款扫描端口的工具了&#xff…

网络安全-扫描器X-SCANNER应用实验

一、实验目的: 掌握网络端口扫描器的使用方法,熟悉常见端口和其对应的服务程序,掌握发现系统漏洞的方法。 掌握综合扫描及安全评估工具的使用方法,了解进行简单系统漏洞入侵的方法,了解常见的网络和系统漏洞以及其 安…

[网络安全课设]基于JAVA的系统端口扫描软件设计实现(java代码+IDEA+UI图形界面+实验报告)

链接::l基于JAVA的系统端口扫描软件设计实现(java代码IDEAUI图形界面实验报告) 系统端口扫描软件设计实现 设计目的和任务 参照superscan、nmap等端口扫描软件的运行情况,自行设计一个简单的端口扫描软件,能够根据TCP、IMCP等探…

渗透测试工程师——第一部分 信息扫描实验系列 001主机存活性探测实验

主机存活性探测实验 实验目的实验原理1.TCP/IP协议网络协议传输控制协议(TCP) 2.Ping命令的原理 实验环境1.操作系统2.实验工具 实验步骤步骤1:Ping命令(Windows环境下)步骤2:使用Nmap进行多种方式的探测步…

关于计算机网络安全实验报告总结,信息安全实验总结报告

信息安全实验总结报告 篇一:信息安全实验报告 课程名称: 信息安全 实验名称: 共五次实验 班级: 姓名: 同组人: 指导教师评定: 签名: 实验一 木马攻击与防范 一、实验目的 通过对木马的练习,使读者理解和掌握木马传播和运行的机制;通过手动删除木马,掌握检查木马和删…

Superscan:应用教程

SuperScan 是由Foundstone开发的一款免费的,但功能十分强大的工具,与许多同类工具比较,它既是一款***工具,又是一款网络安全工具。一名***可以利用它的拒绝服务***(DoS,denial of service)来收集远程网络主机信息。而做为安全工具,SuperScan能够帮助你发现你网络中的弱…

/wp-cron.php_通过CRON / PHP快速检测被黑客入侵的文件:SuperScan

/wp-cron.php As a Certified Ethical Hacker, Im fully aware that prevention is the best tactic to prevent hackers but, should one break through, the sooner you know it, the quicker you can act to limit the damage. 作为一名合格的道德黑客,我深知预防是预防黑客…

SUPERSCAN IIE接线图

简介 SUPERSCAN IIE是RAYLASE公司在某年推出的一款两轴激光扫描振镜。用来如刻蚀、打标、去除、切割、焊接、打孔或高速飞行打标的材料处理。 可选输入孔径: 7, 10, 12, 15, 20, 30 mm 可选配水冷和空气冷却。 一般同一型号的电源配置和接口信号协议是相同的。 不同的参数&am…