网络扫描的研究Word文档下载推荐.docx
《网络扫描的研究Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《网络扫描的研究Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
但是,网络扫描软件事实上也是一把双刃剑:
入侵者利用它来寻找对系统发起攻击的途径,而系统管理员则利用它来有效防范黑客入侵。
通过网络扫描,扫描者能够发现远端网络或主机的配置信息、TCP/UDP端口的分配、提供的网络服务、服务器的具体信息等。
网络扫描可以划分为ping扫描、端口扫描、操作系统探测、弱点探测、防火墙规则探测五种主要技术,运用的原理各不相同。
一、扫描需要的协议
1、ICMP协议
Internet控制报文协议(InternetControlMessagesProtocol,ICMP)允许主机或路由器报告差错情况和提供有关异常情况的报告。
一般来说,ICMP报文提供针对网络层的错误诊断、拥塞控制、路径控制和查询服务四项功能。
ICMP协议扫描充分利用了ICMP协议的各种功能,在ICMP协议中定义了多种类型的ICMP报文。
一般的ICMP报文的首部如图6-2所示。
类型字段表示ICMP报文的种类,它是ICMP报文中的第一个字段。
代码字段进一步限定了ICMP报文种类。
校验和字段存储了ICMP所使用的校验和值。
ICMP报文大体可以分为两种类型,即ICMP差错报文和ICMP询问报文。
每个ICMP报头均包含类型、代码和校验和这三项内容,长度为8位、8位和16位,其余选项则随ICMP的功能不同而不同。
根据不同的功能需要,在ICMP中提供了多种ICMP报文数据格式。
2、TCP协议简介
TCP协议是TCP/IP协议族中的面向连接的、可靠的传输层协议。
TCP允许发送和接收字节流形式的数据。
TCP在报文中加上一个递进的确认序列号来告诉发送者,接收者期望收到的下一个字节,如果在规定时间内,没有收到关于这个包的确认响应,则重新发送此包,这保证了TCP是一种可靠的传输层协议。
图19-3-1
TCP报文格式
在TCP报文格式中,有一些关键的字段,其含义如下:
源端口:
该字段定义了发送这个报文的应用程序的端口号。
目的端口:
该字段定义了接收这个报文的应用程序的端口号。
控制:
该字段定义了8种不同的控制位或标志。
如图19-3-2所示。
在一个报文中可设置一位或多位标志。
这些位用在TCP的流量控制、连接建立和终止以及数据传送的方式等方面。
图19-3-2
控制字段
3、UDP协议简介
UDP(UserDatagramProtocol)用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。
包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
UDP协议直接位于IP(网际协议)协议的上层。
根据OSI参考模型,UDP和TCP都属于传输层协议。
UDP协议不提供端到端的确认和重传功能,它不保证信息包一定能到达目的地,因此称为不可靠协议。
图19-3-5显示了UDP报文格式。
每个UDP报文两个部分:
UDP首部和UDP数据区。
首部被分为四个16位的字段,分别代表源端口号﹑目的端口号﹑报文的长度以及UDP校验和。
源端口(16位)
目的端口(16位)
有效负载长度(16位)
校验和(16位)
数据
……
图19-3-5
UDP报文格式
在UDP报文格式中,有一些关键的字段,其含义如下:
源端口:
表示发送端的端口号。
如果源端口没有使用,那么此字段的值就被指定为0。
这是一个可选的字段。
目的端口:
表示目的端的端口号。
UDP协议使用端口号为不同的应用保留其各自的数据传输通道。
UDP和TCP协议正是采用这一机制实现对同一时刻内多个应用程序同时发送和接收数据的支持。
数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。
有的网络应用只能使用预先为其预留或注册的静态端口;
而另外一些网络应用则可以使用未被注册的动态端口。
因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。
二、常见的网络扫描技术分析及应用
1、PING扫描
1.1Ping基本原理
Ping利用ICMP协议包来侦测另一个主机是否可达。
原理是发送ICMP回送请求消息(类型码为8)给目的主机。
ICMP协议规定:
目的主机必须返回ICMP回送应答消息给源主机。
如果源主机在一定时间内收到类型码为0的ICMP回应信息,则认为主机可达。
Ping程序来计算间隔时间,并计算有多少个包被送达。
用户就可以判断网络大致的情况。
1.2Ping命令试验
试验环境:
扫描主机A:
172.16.1.5OS:
windowsXP
被扫描主机B:
172.16.1.3OS:
windowsXP
首先我们在B主机上不安装任何的防火墙,只安装wireshark检测网卡上收到的数据包
在没有开启防火墙的情况下主机A显示能扫描到主机B
同样主机B上的wireshark软件也检测到了主机A发送到B上的ICMP的请求数据包
现在再在B主机上安装瑞星防火墙,来对B主机开启安全防护
再用主机A对主机B进行ping操作
现在主机A上显示扫描不到主机B
同时防火墙上显示出对主机A的ping操作进行的拦截
1.3技术分析
最常用的ICMP扫描方法就是利用PING的原理,发送ICMP回显请求报文,然后监听是否有ICMP回显应答报文返回,如果没有就证明目标主机不存在或者已经停机,如果能够返回ICMP回显应答报文,就证明主机正在运行。
其过程如图3-9所示。
(点击查看大图)图3-9
ICMP回显探测
显然防火墙阻断了主机B的ICMP的回显请求,而导致主机A扫描不到主机B
2、TCP全扫描
2.1全扫描基本原理
TCP全扫描也叫做TCPConnect扫描,这种扫描方法很简单,直接连接到目标端口并完成一个完整的三次握手过程(SYN,SYN/ACK,和ACK)。
操作系统提供了“connect()”函数来完成系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。
如果端口处于侦听状态,那么connect()函数就能成功。
否则,connect()函数将调用失败。
这个技术的优点是不需要任何权限,系统中的任何用户都有权利使用这个调用。
另一个优点是速度。
如果对每个目标端口以线性的方式使用单独的connect()函数调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。
但这种方法的缺点是很容易被发觉,并且很容易被过滤掉。
目标计算机的日志文件会显示一连串的连接和连接出错的服务消息,目标计算机用户发现后就能很快使它关闭。
图19-3-3是端口开放与端口关闭时TCP全扫描情况。
图19-3-3
TCP全扫描
2.2Tcp全扫描试验
测试环境:
192.168.0.133OS:
windowsXP使用软件:
Zenmap
192.168.0.105OS:
windowsXP使用的检测软件:
萨客嘶入侵检测系统1.0wireshark1.8.3金山个人防火墙
再打开防火墙之前先用Zenmap对B主机进行扫描
扫描结果如下图,显示有135\139\445\2383号端口打开
同时主机B上显示有大量的来于192.168.0.133的初始化连接,但总是连接失败
打开防火墙重新重复以上操作
主机B上截获大量的未成功的Tcp连接,而且数据包里面内容长度都为0
入侵检测系统上面也显示有未连接成功的Tcp连接
同样,防火墙上有被恶意端口扫描的记录
2.3结果分析
主机A能成功扫描到主机B,但是大量的连接和连接出错的服务消息很快被防火墙给阻止
3、TCPSYN扫描
3.1SYN半扫描原理
TCPSYN扫描也叫做半开放式扫描(half-openscanning),因为它没有完成一个完整的TCP协议三次握手过程。
TCPSYN扫描方法向目标端口发送一个TCPSYN分组,如果目标端口返回SYN/ACK标志,那么可以肯定该端口处于侦听状态,接下来必须再向目标发送一个RST分组,来关闭这个连接;
返回RST/ACK标志则表示端口没有处于监听状态。
这种方法比TCP全扫描方法更具隐蔽性,可能不会在目标主机中留下扫描痕迹。
但这种方法实现比较复杂。
图19-3-4是端口开放与端口关闭时TCPSYN扫描情况。
图19-3-4
TCPSYN扫描
3.2SYN半扫描测试
主机A上同样能扫描到主机B上的端口信息
主机B上用wireshark软件记录了大量的半连接的Tcp记录
但是金山防火墙上却没有恶意扫描的记录
3.3结果分析
显然半扫描比全扫描更具隐蔽性
4、Null扫描
4.1null扫描原理
有时甚至SYN扫描都不够隐蔽,一些防火墙及信息包过滤装置会在重要端口守护,SYN包在此时会被截获,一些应用软件如Synlogger以及Courtney对侦测这类型的扫描都是行家。
关闭的端口会对你发送的探测信息包返回一个RST,而打开的端口则对其忽略不理(你可以参阅RFC973PP64)。
所以FIN扫描使用空的FIN信息包作为探针、Xmastree使用FIN,URG,PUSH标记、Null扫描则不用任何标记。
但是不幸的是微软以他们一贯的风格不理睬这一标准……所以这一扫描在WINDOWS9X以及NT下不能工作。
4.2null扫描测试
本机测试的平台测试的系统都是windows系统,所以Null扫描模式在实验的结果没有扫描到任何的端口,防火墙上也没有任何记录,但B主机上的网卡却有主机A发来的大量tcp数据包
Zenmap上没有扫描到任何信息
金山也没有捕获恶意扫描
大量的tcp连接成功的建立
4.3结果分析
这其实也是一个很好的区分平台的办法——如果扫描发现了打开的端口,那你就能明白这台机器不是运行WINDOWS。
如果的扫描显示所有端口都是关闭的但一个SYN扫描却显示有打开端口,那你就能大致推断它是WINDOWS平台。
5、UDP端口扫描
5.1udp扫描原理
UDP端口扫描方法向目标端口发送一个UDP协议分组。
如果目标端口以ICMP端口不可达(PortUnreachable)报文响应,那么说明该端口是关闭的;
反之,如果没有收到ICMP端口不可达响应报文,则可以肯定该端口是打开的。
由于UDP协议是面向无连接的协议,这种扫描技术的精确性高度依赖于网络性能和系统资源。
另外,如果目标系统采用了大量分组过滤技术,那么UDP协议扫描过程会变得非常慢。
如果你想对Internet进行UDP协议扫描,那么你不能指望得到可靠的结果。
图19-3-6是UDP端口关闭时的网络会话情况。
图19-3-6
UDP端口扫描
UDP扫描:
这一方法是用来确定哪个UDP(UserDatagramProtocol,RFC768)端口在主机端开放。
这一技术是以发送零字节的UDP信息包到目标机器的各个端口,如果我们收到一个ICMP端口无法到达的回应,那么该端