网络扫描器的主要功能
1.扫描目标主机识别其工作状态(开/关机)
2.识别目标主机的端口状态(监听/关闭)
3.识别目标主机系统及服务程序的类型和版本
4.根据已知漏洞信息,分析系统脆弱点
5.生成扫描结果报告
总结:
网络扫描器的功能:判断①目标主机是否在线;②目标主机端口打开状况;③目标主机的操作系统及相关信息;④目标主机可能存在的系统漏洞。
扫描器的基本原理
ICMP协议(主机扫描)
网际控制报文协议(Internet Control Message Protocol),是IP的一部分,在IP协议栈中必须实现。
用途:
- 网关或者目标机器利用ICMP与源通讯
- 当出现问题时,提供反馈信息用于报告错误
特点:
- 其控制能力并不用于保证传输的可靠性
- 它本身也是不可靠传输的
- 并不用来反映ICMP报文的传输情况
TCP协议(端口扫描)
传输控制协议TCP(Transmission Control Protocol),位于运输层,提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。
扫描器主要利用TCP协议的连接(“三次握手”)和释放过程(“四次挥手”)、标志位实现端口扫描。
TCP标志位
ACK:确认标志
RST:复位标志
URG:紧急标志
SYN:建立连接标志
PSH:推标志
FIN:结束标志
总结:
主机扫描以ICMP协议为基础。
端口扫描以TCP协议为基础。
网络扫描主要技术
主机扫描技术
主机扫描的目的是确定在目标网络上的主机是否可达。
传统技术:ICMP Echo扫描、ICMP Sweep扫描、Broadcast ICMP扫描、Non-Echo ICMP扫描
高级技术:构造IP包
ICMP Echo扫描:
原理:Ping的实现机制,在判断在一个网络上主机是否开机时非常有用。向目标主机发送ICMP Echo Request数据包(type 8),等待回复的ICMP Echo Reply包
(type 0)。如果能收到,则表明目标系统可达,否则表明目标系统已经不可达或发送的包被对方的设备过滤掉。
优点:简单、系统支持
缺点:容易被防火墙限制 (如不响应PING)
ICMP Sweep扫描:
在ICMP Echo基础上,通过并行发送,同时探测多个目标主机,以提高探测效率。(看作多线程的ICMP Echo)
Broadcast ICMP扫描:
原理:将ICMP请求包的目标地址设为广播地址或网络地址,则可以探测广播域或整个网络范围内的主机。
缺点:1.只适用于UNIX/Linux系统,Windows会忽略这种请求包。2.容易引起广播风暴。
Non-Echo ICMP扫描:
原理: 利用ICMP协议中非ICMP ECHO的ICMP查询信息类型实现主机扫描,如Timestamp和Timestamp Reply 、Information Request和Information Reply 、Address
Mask Request 和Address Mask Reply等。
构造IP包:
原理:向目标主机发送构造的IP包,探测对方返回的信息。第三层攻击。
case1.向目标主机发送一个只有首部的IP包,目标主机将返回“Destination unreachable”。
(个人理解:返回消息,则主机存活)
case2.向目标主机发送一个IP包,但协议项是错误的,则目标主机将返回“Destination unreachable”。如果目标主机前有防火墙,则可能会被过滤,从而收不到返回消息。
可以使用一个非常大的数字(当天未用过)作为协议项,则主机返回“Destination unreachable”。由此可判断主机是否开机以及是否有防火墙。
case3.向目标主机发送一个IP包,改变其协议项,如果返回“Destination unreachable”,则主机没有使用这个协议;如果未返回任何信息则使用了该协议或使用了防火墙。
(个人理解:发送IP包后,改变协议项,如返回“Du”,则证明主机存活,继续改变协议项,如没有任何返回信息,则认为其使用了该协议或被防火墙过滤。)
总结:
简单的查询---直接使用ping
安全测试--构造IP包
端口扫描技术
当确定了目标主机可达后,就可以使用端口扫描技术,发现目标主机的开放端口,包括网络协议和各种应用监听的端口。
端口扫描技术主要包括以下三类:
1.开放扫描:会产生大量的审计数据,容易被对方发现,但可靠性高。
2.隐蔽扫描:能有效避免对方入侵检测系统和防火墙的检测,但这样扫描使用的数据包在通过网络时容易被丢弃从而产生错误的探测信息。
3.半开放扫描:隐蔽性和可靠性介于两者之间。
开放扫描技术
TCP Connect扫描:
原理:通过调用socket函数connect()连接到目标计算机上,完成一次完整的三次握手过程。如果端口处于侦听状态,那么connect()就能成功返回。否则,这个端口
不可用,即没有提供服务。优点:稳定可靠,不需要特殊的权限。
缺点:扫描方式不隐蔽,服务器日志会记录下大量密集的连接和错误记录,并容易被防火墙发现和屏蔽。(防火墙发现机制:短时间内某固定的IP地址建立了大量的连接)
TCP 反向ident扫描
半开放扫描技术
TCP SYN扫描
原理:扫描器想目标主机发送SYN包。如果应答是RST包,那么说明端口是关闭的;如果应答中包含SYN和ACK包,说明目标端口属于监听状态,在传送一个RST包给
目标主机从而停止建立连接。由于SYN扫描事,全连接尚未建立,所以这种技术通常被称为半连接扫描。
优点:隐蔽性比全连接扫描好,一般系统对这种半扫描很少记录。
缺点:通常构造SYN数据包需要超级用户或者授权用户访问专门的系统调用。
TCP间接扫描
原理:利用第三方的IP(欺骗主机)来隐藏真正扫描者的IP。由于扫描主机会对欺骗主机发送回应信息,所以必须监控欺骗主机的IP行为,从而获得原始的扫描结果。扫
描主机通过伪造第三方主机IP地址向目标主机发起SYN扫描,并通过观察其IP序列号的增长规律获取端口的状态。
优点:隐蔽性好。
缺点:对第三方主机要求较高。
隐蔽扫描技术
TCP FIN扫描
TCP Xmas扫描
TCP Null扫描
TCP ftp proxy扫描
分段扫描
TCP FIN扫描
原理:扫描器向目标主机端口发送FIN包。当一个FIN数据包到达一个关闭的端口,数据包会被丢掉,而且返回一个RST数据包。否则,若是打开的端口,数据包指挥
简单 的丢掉(不返回RST)。优点:由于这种技术不包含标准的TCP三次握手协议的任何部分,所以无法被记录下来,从而比SYN扫描隐蔽的多。FIN数据包能够通过只检测SYN包的包过滤器。
缺点:1.跟SYN扫描类似,需要自己构造数据包,要求由超级用户或者授权用户访问专门的系统调用;
2.通常使用于UNIX主机,除过少量的应当丢弃数据包却发送RST包的操作系统(包括CISCO、HP/UX、MVS和IRIX)。但在Windows95/NT环境下,该方法无效,
以为不论目标端口是否打开,操作系统都返回RST。
TCP Xmax和TCP Null扫描
原理:TCP Xmax和Null是FIN扫描的两个变种。Xmas扫描打开FIN,URG和PUST标记,而Null扫描关闭所有标记。这些组合的目的是为了通过对FIN标记数据包的过滤。
当一个这种数据包到达一个关闭的端口,数据包会被丢掉,并且返回一个RST数据包。否则,若是打开的端口,数据包只是简单的丢掉(不返回RST)。
优点:隐蔽性好
缺点:需要自己构造数据包,要求由超级用户或者授权用户访问专门的系统调用;
通常适用于UNIX目标主机,而Window系统不支持。
分段扫描
原理:并不直接发送TCP探测数据包,是将数据包分成两个较小的IP段。这样就将一个TCP头分成好几个数据包,从而包过滤器就很难探测到。
优点:隐蔽性好,可穿越防火墙。
缺点:1.可能被丢弃。2.某些程序在处理这些小数据包时会出现异常。
总结:
实际使用时应是几种扫描机制的综合使用。
很多是针对UNIX/Linux系列系统的
Windows下:间接扫描+TCP SYN扫描+分段扫描
(使用间接扫描隐藏IP,SYN扫描避免产生大量日志,分段扫描用于穿过防火墙)
UNIX下:间接扫描 +(TCP FIN或TCP Xmas 或TCP Null)+ 分段扫描
反监测扫描技术
慢速扫描
随机地址扫描(IP隐藏)
分片扫描
分布式扫描