安全技术扫描 第3章_第1页
安全技术扫描 第3章_第2页
安全技术扫描 第3章_第3页
安全技术扫描 第3章_第4页
安全技术扫描 第3章_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第3章章 端口扫描端口扫描 3.1 端口扫描的概述端口扫描的概述 3.2 常见端口扫描技术常见端口扫描技术 3.3 其他端口扫描技术其他端口扫描技术 3.4 端口扫描工具端口扫描工具 3.5 小结小结 网络出现故障时,人们总习惯先用网络出现故障时,人们总习惯先用ping命令检测目命令检测目 标系统是否有所反应,如果要进一步了解目标系统标系统是否有所反应,如果要进一步了解目标系统 的网络连接状况,黑客最常使用的一种手段就是端的网络连接状况,黑客最常使用的一种手段就是端 口扫描。对目标主机进行全面的端口扫描不仅是为口扫描。对目标主机进行全面的端口扫描不仅是为 了确定其开放的网络服务,而更基本的还

2、在于确定了确定其开放的网络服务,而更基本的还在于确定 其是否真正处于激活状态。其是否真正处于激活状态。 当然,端口扫描最大的作用是提供目标主机网络服当然,端口扫描最大的作用是提供目标主机网络服 务的清单。务的清单。 总之,端口扫描是一种非常重要的预攻击探测手段,总之,端口扫描是一种非常重要的预攻击探测手段, 几乎是黑客攻击的通用手段。同时通过使用端口扫几乎是黑客攻击的通用手段。同时通过使用端口扫 描技术,可以在主机或系统在被攻击前得到一些警描技术,可以在主机或系统在被攻击前得到一些警 告和预报,尽可能在早期预测攻击者的行为并获得告和预报,尽可能在早期预测攻击者的行为并获得 一定的证据,从而对攻

3、击进行预警或采取一定的防一定的证据,从而对攻击进行预警或采取一定的防 御措施。御措施。 为了更好地理解端口扫描的技术细节,有必要先回为了更好地理解端口扫描的技术细节,有必要先回 顾一下关于顾一下关于TCP/IP以及端口的一些基本知识。对以及端口的一些基本知识。对 于端口扫描,其实现原理是和于端口扫描,其实现原理是和TCP/IP格式以及通格式以及通 信过程直接相关的;而有关信过程直接相关的;而有关TCP状态转换的内容,状态转换的内容, 则有助于理解后面章节的扫描技术中对操作系统类则有助于理解后面章节的扫描技术中对操作系统类 型的判断。型的判断。 3.1 端口扫描的概述端口扫描的概述 1. IP数

4、据报数据报 因特网在网络层定义了标准的因特网在网络层定义了标准的IP数据报格式和数据报格式和IP协协 议。议。IP协议已经成为世界上最重要的网际协议。协议已经成为世界上最重要的网际协议。IP 的功能由的功能由IP头结构中的数据定义。头结构中的数据定义。IP头结构及其功头结构及其功 能由一系列能由一系列RFC文档和文档和IETF创建时公开发表的一创建时公开发表的一 系列文档所定义。系列文档所定义。IP数据报被划分成数据报被划分成IP报头和数据报头和数据 区,其中区,其中IP报头的具体格式如图报头的具体格式如图3-1所示。所示。 3.1.1 TCP/IP相关知识相关知识 图图3-1 IP报头报头

5、2. TCP报文格式报文格式 TCP数据报文包含在数据报文包含在IP数据报中的数据部分。在数据报中的数据部分。在IP 头部,头部,TCP类型为类型为6。 图图3-2 TCP数据报格式数据报格式 3. UDP数据报格式数据报格式 UDP数据报包含于数据报包含于IP数据报中的数据部分。在数据报中的数据部分。在IP头头 部,部,UDP类型为类型为17。 图图3-3 UDP数据报格式数据报格式 4. TCP通信过程通信过程 TCP的通信过程大体分为如下几个步骤,假设通信的通信过程大体分为如下几个步骤,假设通信 双方分别为主机双方分别为主机A和主机和主机B。 主机主机A首先向主机首先向主机B发出连接请求

6、报文发出连接请求报文(SYN), 主机主机B对主机对主机A的请求发出确认,主机的请求发出确认,主机A接收到主机接收到主机 B的确认包后,对接收到的主机的确认包后,对接收到的主机B的数据包,也向的数据包,也向 主机主机B发出确认包。当主机发出确认包。当主机B收到收到A再次发送的数据再次发送的数据 包后,连接建立完成。包后,连接建立完成。 主机主机A向主机向主机B发送应用数据。应用数据被分割发送应用数据。应用数据被分割 成成TCP认为最适合发送的数据块。这和认为最适合发送的数据块。这和UDP完全不完全不 同,应用程序产生的数据包长度将保持不变。由同,应用程序产生的数据包长度将保持不变。由 TCP传

7、递给传递给IP的信息单位称为报文段或段。的信息单位称为报文段或段。 当主机当主机A发出一个发出一个TCP段后,它启动一个定时器,段后,它启动一个定时器, 等待目的端等待目的端(主机主机B的端口的端口)确认收到这个报文段。确认收到这个报文段。 如果不能及时收到一个确认,将重发这个报文段。如果不能及时收到一个确认,将重发这个报文段。 通常称为超时重传。通常称为超时重传。 当主机当主机B收到发自收到发自TCP连接另一端连接另一端(主机主机A)的数的数 据,它将发送一个确认。这个确认不是立即发送,据,它将发送一个确认。这个确认不是立即发送, 通常将推迟几分之一秒。这是为了节省带宽,确认通常将推迟几分之

8、一秒。这是为了节省带宽,确认 常常会和后面的常常会和后面的TCP分段一同发送。分段一同发送。 TCP报文段保持它的首部和数据的校验和。主报文段保持它的首部和数据的校验和。主 机机A和主机和主机B会检测到数据在传输过程中的任何变会检测到数据在传输过程中的任何变 化。如果收到段的校验和有差错,化。如果收到段的校验和有差错,TCP将丢弃这个将丢弃这个 报文段并且不确认收到此报文段报文段并且不确认收到此报文段(希望发送端超时希望发送端超时 并重发并重发)。 TCP报文段使用报文段使用IP数据包来传输,而数据包来传输,而IP数据包数据包 的到达可能会失序,因此,的到达可能会失序,因此,TCP报文段的到达

9、也可报文段的到达也可 能会失序。如果必要,能会失序。如果必要,TCP将对收到的数据进行重将对收到的数据进行重 新排序,将收到的数据以正确的顺序交给应用层。新排序,将收到的数据以正确的顺序交给应用层。 每个每个TCP报文的首部都有传输数据的序号。报文的首部都有传输数据的序号。 如果如果IP数据包发生重复,数据包发生重复,TCP的接收端会丢弃的接收端会丢弃 重复的数据。重复的数据。 TCP还能提供流量控制。还能提供流量控制。TCP连接的每一方都连接的每一方都 有固定大小的缓冲空间。有固定大小的缓冲空间。TCP的接收端只允许另一的接收端只允许另一 端发送接收端缓冲区所能接纳的数据。这将防止发端发送接

10、收端缓冲区所能接纳的数据。这将防止发 送较快的主机导致接收较慢的主机的缓冲区溢出。送较快的主机导致接收较慢的主机的缓冲区溢出。 接收一方会动态通知发送端接收缓冲区内还有多少接收一方会动态通知发送端接收缓冲区内还有多少 空闲空间可以接收数据,这个缓冲空间称为滑动窗空闲空间可以接收数据,这个缓冲空间称为滑动窗 口。口。 主机主机A发送数据完毕后,将发送连接结束报文发送数据完毕后,将发送连接结束报文 (FIN)给主机给主机B。主机主机B对收到的对收到的FIN报文进行确认,报文进行确认, 同时也发送同时也发送FIN报文给主机报文给主机A。当主机当主机A也对此也对此FIN 报文段完成确认后,此报文段完成

11、确认后,此TCP连接宣告结束。连接宣告结束。 如果在传输中出现某些异常,如果在传输中出现某些异常,TCP连接的一方连接的一方 也可以发送复位报文也可以发送复位报文(RST),立刻关闭连接。立刻关闭连接。 5. TCP中建立连接和断开连接过程中建立连接和断开连接过程 TCP建立连接过程,如图建立连接过程,如图3-4所示。所示。 图图3-4 TCP建立连接过程建立连接过程 TCP断开连接过程,如图断开连接过程,如图3-5所示。所示。 图图3-5 TCP断开连接过程断开连接过程 TCP协议建立连接和断开连接的过程可以用有限状协议建立连接和断开连接的过程可以用有限状 态机态机(finite state

12、 machine,FSM)的转换来表示,具的转换来表示,具 体的体的TCP状态转换过程如图状态转换过程如图3-6所示。所示。 图图3-6 TCP协议状态转换协议状态转换 互联网上通信的双方不仅需要知道对方的地址,也互联网上通信的双方不仅需要知道对方的地址,也 需要知道通信程序的端口号。在同一时间内,两台需要知道通信程序的端口号。在同一时间内,两台 主机之间可能不仅仅只有一种类型的通信,例如,主机之间可能不仅仅只有一种类型的通信,例如, 同时进行同时进行Telnet和和FTP连接。为区别通信的程序,连接。为区别通信的程序, 在所有在所有IP数据报文中不仅仅有源地址和目的地址,数据报文中不仅仅有源

13、地址和目的地址, 而且也有源端口号与目的端口号。众所周知,公共而且也有源端口号与目的端口号。众所周知,公共 的的IP地址受控于世界范围的注册机构,而且每个地址受控于世界范围的注册机构,而且每个IP 地址也具有全球内惟一性的特点。端口的数目不像地址也具有全球内惟一性的特点。端口的数目不像 IP地址这样被控制管理,但是,近年来,特定端口地址这样被控制管理,但是,近年来,特定端口 被指定用于特定的服务,而地址和端口一起组成一被指定用于特定的服务,而地址和端口一起组成一 个套接字地址,在网络上惟一标识该服务。个套接字地址,在网络上惟一标识该服务。 3.1.2 端口介绍端口介绍 目前使用的目前使用的IP

14、v4协议支持协议支持16位的端口,也就是说可位的端口,也就是说可 使用的端口号为使用的端口号为065 535。并且被分为。并且被分为3个范围:个范围: 知名端口、注册端口和动态端口或专用端口。表知名端口、注册端口和动态端口或专用端口。表3- 1是文件中包含的一些常用端口及其对应的服务。是文件中包含的一些常用端口及其对应的服务。 任何无特权的用户程序如果企图打开范围在任何无特权的用户程序如果企图打开范围在0 1023的知名端口,都会以失败告终。而一个用户程的知名端口,都会以失败告终。而一个用户程 序可以打开端口号高于序可以打开端口号高于1023的未分配端口,这些端的未分配端口,这些端 口号高于口

15、号高于1023的端口,通常也称它们为不标准端口。的端口,通常也称它们为不标准端口。 在这个范围的一些端口对应的服务却是在这个范围的一些端口对应的服务却是“标准标准”的,的, 表表3-2列出该端口范围内的部分端口及它们对应的列出该端口范围内的部分端口及它们对应的 服务。服务。 注册端口由注册端口由IANA记录和追踪,动态端口或专用端记录和追踪,动态端口或专用端 口提供给专用应用程序。口提供给专用应用程序。RFC1700是相关端口信息是相关端口信息 的规范文档。端口与服务的对照表见教材附录。的规范文档。端口与服务的对照表见教材附录。 端口扫描技术是一项自动探测本地和远程系统端口端口扫描技术是一项自

16、动探测本地和远程系统端口 开放情况的策略及方法,它使系统用户了解系统目开放情况的策略及方法,它使系统用户了解系统目 前向外界提供了哪些服务,从而为系统用户管理网前向外界提供了哪些服务,从而为系统用户管理网 络提供了一种手段。络提供了一种手段。 端口扫描向目标主机的端口扫描向目标主机的TCP/IP服务端口发送探测服务端口发送探测 数据包,并记录目标主机的响应。通过分析响应来数据包,并记录目标主机的响应。通过分析响应来 判断服务端口是打开还是关闭,就可以得知端口提判断服务端口是打开还是关闭,就可以得知端口提 供的服务或信息。端口扫描也可以通过捕获本地主供的服务或信息。端口扫描也可以通过捕获本地主

17、机或服务器的流入流出机或服务器的流入流出IP数据包来监视本地主机的数据包来监视本地主机的 运行情况,它仅能对接收到的数据进行分析,从而运行情况,它仅能对接收到的数据进行分析,从而 发现目标主机的某些内在的弱点,而不会提供进入发现目标主机的某些内在的弱点,而不会提供进入 一个系统的详细步骤。一个系统的详细步骤。 3.1.3 端口扫描的概念端口扫描的概念 图图3-7 端口扫描分类端口扫描分类 3.1.4 端口扫描的分类端口扫描的分类 常见的端口扫描技术包括有常见的端口扫描技术包括有TCP connect扫描、扫描、 TCP SYN扫描以及秘密扫描。扫描以及秘密扫描。 3.2 常见端口扫描技术常见端

18、口扫描技术 通过进行端口扫描,根据远程主机开放的端口,可通过进行端口扫描,根据远程主机开放的端口,可 以初步确定对方提供的服务类型。进行端口扫描最以初步确定对方提供的服务类型。进行端口扫描最 常用的方式就是尝试与远程主机的端口建立一次正常用的方式就是尝试与远程主机的端口建立一次正 常的常的TCP连接。若连接成功则表示目标端口开放。连接。若连接成功则表示目标端口开放。 这种扫描技术称为这种扫描技术称为“TCP connect扫描扫描”,TCP connect扫描是扫描是TCP端口扫描的基础,也是最直接端口扫描的基础,也是最直接 的端口扫描方法。它实现起来非常容易,只需要在的端口扫描方法。它实现起

19、来非常容易,只需要在 软件编程中调用软件编程中调用Socket API的的connect()函数去连接函数去连接 目标主机的指定端口,完成一次完整的目标主机的指定端口,完成一次完整的TCP 3次握次握 手连接建立过程,根据对方的反应,就可以简单地手连接建立过程,根据对方的反应,就可以简单地 判断出目标端口是否开放。判断出目标端口是否开放。 3.2.1 TCP connect扫描扫描 扫描主机通过扫描主机通过TCP/IP协议的协议的3次握手与目标主机的次握手与目标主机的 指定端口建立一次完整的连接。连接由系统调用指定端口建立一次完整的连接。连接由系统调用 connect()开始。如果端口开放,则

20、连接建立成功;开始。如果端口开放,则连接建立成功; 否则,则返回否则,则返回-1,表示端口关闭。,表示端口关闭。 TCP connect端口扫描服务端与客户端建立连接成端口扫描服务端与客户端建立连接成 功(目标端口开放)的过程:功(目标端口开放)的过程: Client端发送端发送SYN; Server端返回端返回SYN/ACK,表明端口开放;表明端口开放; Client端返回端返回ACK,表明连接已建立;表明连接已建立; Client端主动断开连接。端主动断开连接。 建立连接成功(目标端口开放)如图建立连接成功(目标端口开放)如图3-8所示。所示。 图图3-8 TCP connect扫描建立连

21、接成功扫描建立连接成功 TCP connect端口扫描服务端与客户端未建立连接端口扫描服务端与客户端未建立连接 成功(目标端口关闭)过程:成功(目标端口关闭)过程: Client端发送端发送SYN; Server端返回端返回RST/ACK,表明端口未开放。表明端口未开放。 未建立连接成功未建立连接成功(目标端口关闭目标端口关闭)如图如图3-9所示。所示。 图图3-9 TCP connect扫描建立连接未成功扫描建立连接未成功 这种扫描方法的优点是实现简单,对操作者的权限这种扫描方法的优点是实现简单,对操作者的权限 没有严格要求(有些类型的端口扫描需要操作者具没有严格要求(有些类型的端口扫描需要

22、操作者具 有有root权限),系统中的任何用户都有权力使用这权限),系统中的任何用户都有权力使用这 个调用,而且如果想要得到从目标端口返回个调用,而且如果想要得到从目标端口返回 banners信息,也只能采用这一方法。另一优点是信息,也只能采用这一方法。另一优点是 扫描速度快。如果对每个目标端口以线性的方式,扫描速度快。如果对每个目标端口以线性的方式, 使用单独的使用单独的connect()调用,可以通过同时打开多个调用,可以通过同时打开多个 套接字,从而加速扫描。这种扫描方法的缺点是会套接字,从而加速扫描。这种扫描方法的缺点是会 在目标主机的日志记录中留下痕迹,易被发现,并在目标主机的日志记

23、录中留下痕迹,易被发现,并 且数据包会被过滤掉。目标主机的且数据包会被过滤掉。目标主机的logs文件会显示文件会显示 一连串的连接和连接出错的服务信息,并且能很快一连串的连接和连接出错的服务信息,并且能很快 地使它关闭。图地使它关闭。图3-10是是TCP connect扫描的一个程扫描的一个程 序简单流程图。序简单流程图。 图图3-10 TCP connect扫描程序简单流程扫描程序简单流程 下面是一个简单的端口扫描器的源代码中的主函数下面是一个简单的端口扫描器的源代码中的主函数 部分,程序清单如下所示:部分,程序清单如下所示: int main(intargc,char*argv) int

24、probeport=0; struct hostent host;/*这里定义这里定义socket主机结构主机结构*/ int err,I,net; struct sockaddr_in sa;/*socket地址结构地址结构*/ if(argc!=2) printf(用法:用法: s hostnamen,argv0; exit(1); for(I=1;Ih_addr,sizeof sa.sin_addr); else herror(argv1); exit(2); sa.sin_port = htons(i);/*本次扫描的端口号本次扫描的端口号*/ net = socket(AF_INET

25、,SOCK_STREAM,0); /*建立一个建立一个socket套接字套接字 */ if(net0) perror(nsocket); exit(2); err = connect(net,(struct sockaddr) /*本连接到本端口本连接到本端口*/ if(err0) printf(%s %-5d %sr,argv1,I,strerror(errno); /*如果端口关闭则显示如果端口关闭则显示*/ fflush(stdout); else printf(%s %-5d accepted.n,argv1,i); /*开放的端口显示开放的端口显示*/ if(shutdown(net

26、,2)0 perror(nshutdown); exit(2); close(net);/*关闭连接关闭连接*/ printf(r); fflush(stdout); return(0); 编译后运行,假设输出结果如下:编译后运行,假设输出结果如下: target.host7 accepted target.host9 accepted target.host13 accepted target.host19 accepted target.host21 accepted target.host23 accepted target.host25 accepted target.host37 a

27、ccepted target.host79 accepted target.host80 accepted target.host110 accepted 从上面的扫描结果可以看出,这台主机提供了端口从上面的扫描结果可以看出,这台主机提供了端口 21(FTP)、)、23(Telnet)、)、25(SMTP)和和80 (WWW)等服务。鉴于等服务。鉴于TCP/IP协议和客户协议和客户/服务服务 器模式的实现方式,目标主机通常必须响应这种扫器模式的实现方式,目标主机通常必须响应这种扫 描,除非对被扫描的那个端口的数据包进行过滤。描,除非对被扫描的那个端口的数据包进行过滤。 目标主机惟一可以保护自己

28、的只能是记录下连接请目标主机惟一可以保护自己的只能是记录下连接请 求发起主机的求发起主机的IP地址。地址。 TCP通信双方是使用通信双方是使用3次握手来建立次握手来建立TCP连接。申连接。申 请建立连接的客户端需要发送一个请建立连接的客户端需要发送一个SYN数据报文给数据报文给 服务端,服务端会回复服务端,服务端会回复ACK数据报文。半开放扫数据报文。半开放扫 描就是利用描就是利用3次握手的弱点来实现的。扫描器向远次握手的弱点来实现的。扫描器向远 程主机的端口发送一个请求连接的程主机的端口发送一个请求连接的SYN数据报文,数据报文, 如果没有收到目标主机的如果没有收到目标主机的SYN/ACK确

29、认报文,而确认报文,而 是是RST数据报文,就说明远程主机的这个端口没有数据报文,就说明远程主机的这个端口没有 打开。而如果收到远程主机的打开。而如果收到远程主机的SYN/ACK应答,则应答,则 说明远程主机端口开放。扫描器在收到远程主机的说明远程主机端口开放。扫描器在收到远程主机的 SYN/ACK后,不会再回复自己的后,不会再回复自己的ACK应答,这样,应答,这样, 3次握手并没有完成,正常的次握手并没有完成,正常的TCP连接无法建立,连接无法建立, 3.2.2 TCP SYN扫描扫描 因此这个扫描信息不会被记入系统日志。这种扫描因此这个扫描信息不会被记入系统日志。这种扫描 技术一般不会在目

30、标计算机上留下记录。技术一般不会在目标计算机上留下记录。TCP SYN扫描建立连接成功(目标端口开放)如图扫描建立连接成功(目标端口开放)如图3-11 所示。所示。 TCP SYN扫描建立未连接成功(目标端口关闭)扫描建立未连接成功(目标端口关闭) 如图如图3-12所示。所示。 TCP SYN扫描的优点是比扫描的优点是比TCP connect扫描更隐蔽,扫描更隐蔽, Server端可能不会留下日志记录。其缺点是在大部端可能不会留下日志记录。其缺点是在大部 分操作系统下,扫描主机需要构造适用于这种扫描分操作系统下,扫描主机需要构造适用于这种扫描 的的IP包,而通常情况下,构造自己的包,而通常情况

31、下,构造自己的SYN数据包必数据包必 须要有须要有root权限。权限。 图图3-11 TCP SYN扫描建立连接成功扫描建立连接成功 图图3-12 TCP SYN扫描建立连接未成功扫描建立连接未成功 秘密扫描是一种不被审计工具所检测的扫描技术。秘密扫描是一种不被审计工具所检测的扫描技术。 它通常用于在通过普通的防火墙或路由器的筛选它通常用于在通过普通的防火墙或路由器的筛选 (filtering)时隐藏自己。时隐藏自己。 秘密扫描能躲避秘密扫描能躲避IDS、防火墙、包过滤器和日志审防火墙、包过滤器和日志审 计,从而获取目标端口的开放或关闭的信息。由于计,从而获取目标端口的开放或关闭的信息。由于

32、没有包含没有包含TCP 3次握手协议的任何部分,所以无法次握手协议的任何部分,所以无法 被记录下来,比半连接扫描更为隐蔽。但是这种扫被记录下来,比半连接扫描更为隐蔽。但是这种扫 描的缺点是扫描结果的不可靠性会增加,而且扫描描的缺点是扫描结果的不可靠性会增加,而且扫描 主机也需要自己构造主机也需要自己构造IP包。现有的秘密扫描有包。现有的秘密扫描有TCP FIN扫描、扫描、TCP ACK扫描、扫描、NULL扫描、扫描、XMAS扫扫 描和描和SYN/ACK扫描等。扫描等。 3.2.3 秘密扫描秘密扫描 (1) TCP FIN扫描扫描 很多的过滤设备能过滤很多的过滤设备能过滤SYN数据报文,但是允许

33、数据报文,但是允许 FIN数据报文通过。因为数据报文通过。因为FIN是中断连接的数据报是中断连接的数据报 文,所以很多日志系统都不记录这样的数据报文。文,所以很多日志系统都不记录这样的数据报文。 利用这一点的扫描就是利用这一点的扫描就是TCP FIN扫描。扫描。TCP FIN扫扫 描的原理是扫描主机向目标主机发送描的原理是扫描主机向目标主机发送FIN数据包来数据包来 探听端口,若探听端口,若FIN数据包到达的是一个打开的端口,数据包到达的是一个打开的端口, 数据包则被简单地丢掉,并不返回任何信息,如图数据包则被简单地丢掉,并不返回任何信息,如图 3-13所示。所示。 当当FIN数据包到达一个关

34、闭的端口,数据包到达一个关闭的端口,TCP会把它判会把它判 断成是错误,数据包会被丢掉,并且返回一个断成是错误,数据包会被丢掉,并且返回一个RST 数据包,如图数据包,如图3-14所示。所示。 图图3-13 TCP FIN扫描建立连接成功扫描建立连接成功 图图3-14 TCP FIN扫描建立连接未成功扫描建立连接未成功 这种方法与系统的这种方法与系统的TCP/IP实现有一定的关系,并实现有一定的关系,并 不是可以应用在所有的系统上,有的系统不管端口不是可以应用在所有的系统上,有的系统不管端口 是否打开,都回复是否打开,都回复RST,这样,这种扫描方法就不这样,这种扫描方法就不 适用了。但这种方

35、法可以用来区别操作系统是适用了。但这种方法可以用来区别操作系统是 UNIX还是还是Windows。 这种方法与系统的这种方法与系统的TCP/IP实现有一定的关系,并实现有一定的关系,并 不是可以应用在所有的系统上,有的系统不管端口不是可以应用在所有的系统上,有的系统不管端口 是否打开,都回复是否打开,都回复RST,这样,这种扫描方法就不这样,这种扫描方法就不 适用了。但这种方法可以用来区别操作系统是适用了。但这种方法可以用来区别操作系统是 UNIX还是还是Windows。 (2) TCP ACK扫描扫描 扫描主机向目标主机发送扫描主机向目标主机发送ACK数据包。根据返回数据包。根据返回 的的R

36、ST数据包有两种方法可以得到端口的信息。方数据包有两种方法可以得到端口的信息。方 法一是:法一是: 若返回的若返回的RST数据包的数据包的TTL值小于或等值小于或等 于于64,则端口开放,反之端口关闭,如图,则端口开放,反之端口关闭,如图3-15所示。所示。 图图3-15 TCP ACK扫描建立连接成功扫描建立连接成功 方法二是:方法二是: 若返回的若返回的RST数据包的数据包的WINDOW值非值非 零,则端口开放,反之端口关闭,如图零,则端口开放,反之端口关闭,如图3-16所示。所示。 图图3-16 TCP ACK扫描建立连接成功扫描建立连接成功 (3) NULL扫描扫描 扫描主机将扫描主机

37、将TCP数据包中的数据包中的ACK(确认)、确认)、FIN (结束连接)、结束连接)、RST(重新设定连接)、重新设定连接)、SYN(连连 接同步化要求)、接同步化要求)、URG(紧急)、紧急)、PSH(接收端将接收端将 数据转由应用处理数据转由应用处理)标志位置空后(保留的标志位置空后(保留的RES1和和 RES2对扫描的结果没有任何影响)发送给目标主对扫描的结果没有任何影响)发送给目标主 机。若目标端口开放,目标主机将不返回任何信息,机。若目标端口开放,目标主机将不返回任何信息, 如图如图3-17所示。所示。 若目标主机返回若目标主机返回RST信息,则表示端口关闭,如图信息,则表示端口关闭

38、,如图 3-18所示。所示。 图图3-17 NULL扫描建立连接成功扫描建立连接成功 图图3-18 NULL扫描建立连接未成功扫描建立连接未成功 (4) XMAS扫描扫描 XMAS扫描原理和扫描原理和NULL扫描的类似,将扫描的类似,将TCP数据数据 包中的包中的ACK、FIN、RST、SYN、URG、PSH标志标志 位置位置1后发送给目标主机。在目标端口开放的情况后发送给目标主机。在目标端口开放的情况 下,目标主机将不返回任何信息,如图下,目标主机将不返回任何信息,如图3-19所示。所示。 图图3-19 XMAS扫描建立连接成功扫描建立连接成功 若目标端口关闭,则目标主机将返回若目标端口关闭

39、,则目标主机将返回RST信息,如信息,如 图图3-20所示。所示。 图图3-20 XMAS扫描建立连接未成功扫描建立连接未成功 这里要说明的是,这里要说明的是,MS Windows、Cisco、BSDI、 HP/UX、MVS以及以及IRIX等操作系统如果通过等操作系统如果通过TCP FIN、XMAS以及以及NULL扫描等方式进行扫描的话,扫描等方式进行扫描的话, 对于打开的端口也会发送对于打开的端口也会发送RST数据包,即使所有端数据包,即使所有端 口都关闭,也可以进行应答。根据制作口都关闭,也可以进行应答。根据制作Nmap的的 Fyodor的方案,使用的方案,使用FIN、XMAS或者或者NU

40、LL方式方式 进行扫描的话,如果所有端口都关闭,那么就可以进行扫描的话,如果所有端口都关闭,那么就可以 进行进行TCP SYN扫描。如果出现打开的端口,操作扫描。如果出现打开的端口,操作 系统就会知道是属于系统就会知道是属于MS Windows、Cisco、BSDI、 HP/UX、MVS以及以及IRIX中的哪类了。中的哪类了。 (5) SYN/ACK扫描扫描 这种扫描故意忽略这种扫描故意忽略TCP的的3次握手。原来正常的次握手。原来正常的 TCP连接可以简化为连接可以简化为SYN- SYN /ACK-ACK形式的形式的 3次握手来进行。这里,扫描主机不向目标主机发次握手来进行。这里,扫描主机不

41、向目标主机发 送送SYN数据包,而先发送数据包,而先发送SYN/ACK数据包。目标数据包。目标 主机将报错,并判断为一次错误的连接。若目标端主机将报错,并判断为一次错误的连接。若目标端 口开放,目标主机将返回口开放,目标主机将返回RST信息,如图信息,如图3-21所示。所示。 图图3-21 SYN/ACK扫描建立连接成功扫描建立连接成功 若目标端口关闭,目标主机将不返回任何信息,数若目标端口关闭,目标主机将不返回任何信息,数 据包会被丢掉,如图据包会被丢掉,如图3-22所示。所示。 图图3-22 SYN/ACK扫描建立连接未成功扫描建立连接未成功 UDP是无连接不可靠的协议,因此,是无连接不可

42、靠的协议,因此,UDP端口扫描端口扫描 也是不可靠的。也是不可靠的。 (1) UDP ICMP端口不可到达扫描端口不可到达扫描 扫描主机发送扫描主机发送UDP数据包给目标主机的数据包给目标主机的UDP端口,端口, 等待目标端口的端口不可到达等待目标端口的端口不可到达 (ICMP_PORT_UNREACH)的的ICMP信息。若超信息。若超 时也未能接收到端口不可到达的时也未能接收到端口不可到达的ICMP信息,则表信息,则表 明目标端口可能处于监听的状态。建立连接如图明目标端口可能处于监听的状态。建立连接如图3- 23所示。所示。 3.3 其他端口扫描技术其他端口扫描技术 3.3.1 UDP扫描扫

43、描 图图3-23 UDP ICMP扫描建立连接成功扫描建立连接成功 若这个若这个ICMP信息及时接收到,则表明目标端口处信息及时接收到,则表明目标端口处 于关闭的状态,如图于关闭的状态,如图3-24所示。所示。 图图3-24 UDP ICMP扫描建立连接未成功扫描建立连接未成功 这种扫描方法可以扫描非这种扫描方法可以扫描非TCP端口,避免了端口,避免了TCP的的 入侵检测,但是由于是基于简单的入侵检测,但是由于是基于简单的UDP协议,扫描协议,扫描 相对困难,速度很慢而且需要相对困难,速度很慢而且需要root权限。同时这种权限。同时这种 方法十分不可靠。方法十分不可靠。 (2) UDP rec

44、vfrom()和和write()扫描扫描 当非当非root用户不能直接读到端口不可到达错误时,用户不能直接读到端口不可到达错误时, Linux能间接地在它们到达时通知用户。比如,对能间接地在它们到达时通知用户。比如,对 一个关闭的端口的第二个一个关闭的端口的第二个write()调用将失败。在非调用将失败。在非 阻塞的阻塞的UDP套接字上调用套接字上调用recvfrom()时,如果时,如果 ICMP出错还没有到达时会返回出错还没有到达时会返回eagain(重试)。重试)。 如果如果ICMP到达时,将返回到达时,将返回econnrefused(连接被连接被 拒绝),这样就能查看目标端口是否打开。拒

45、绝),这样就能查看目标端口是否打开。 dumb主机与一般的主机相比,网络接收或发出通主机与一般的主机相比,网络接收或发出通 信量很少,是参与配合扫描的第三方主机。信量很少,是参与配合扫描的第三方主机。 首先扫描主机首先扫描主机A向向dumb主机主机B发送连续的发送连续的ping数据数据 包,包,dumb主机主机B接收到后,会返回包含有接收到后,会返回包含有ID头的头的 顺序数据包,每一顺序数据包的顺序数据包,每一顺序数据包的ID头的值会顺序增头的值会顺序增 1。扫描主机。扫描主机A为了测试出目标主机为了测试出目标主机C任一端口任一端口 (165 535)是开放还是关闭,就会使用)是开放还是关闭

46、,就会使用dumb主主 机机B的源地址向目标主机的源地址向目标主机C的该端口发送欺骗性的的该端口发送欺骗性的 SYN数据包。此时,目标主机数据包。此时,目标主机C向向dumb主机主机B发送发送 的数据包有两种可能的结果:的数据包有两种可能的结果: 3.3.2 IP头信息头信息dumb扫描扫描 (1) SYN/ACK 若目标主机若目标主机C向向dumb主机主机B响应的是响应的是SYN/ACK, 则表明目标端口处于监听(打开)状态,则表明目标端口处于监听(打开)状态,dumb主主 机机B将返回将返回RST响应,连接自动被切断。响应,连接自动被切断。 (2) RST/ACK 若目标主机若目标主机C向

47、向dumb主机主机B响应的是响应的是RST/ACK, 则表明端口处于关闭状态,则表明端口处于关闭状态,dumb主机主机B会忽略发会忽略发 送的数据包而不作任何响应。送的数据包而不作任何响应。 扫描主机从后面连续的响应扫描主机从后面连续的响应ping数据包的数据包的ID头的值,头的值, 可以判断目标端口的开放与否。若可以判断目标端口的开放与否。若ID头的值不是递头的值不是递 增增1,而是大于,而是大于1,则表明目标端口是处于监听(开,则表明目标端口是处于监听(开 放)状态的;若放)状态的;若ID头的值规律的递增头的值规律的递增1,则表明目,则表明目 标端口是关闭的。标端口是关闭的。 IP分段扫描

48、不能算是新方法,只是其他技术的变化。分段扫描不能算是新方法,只是其他技术的变化。 扫描主机并不是直接发送扫描主机并不是直接发送TCP探测数据包,而是将探测数据包,而是将 数据包分成两个较小的数据包分成两个较小的IP段。这样就将一个段。这样就将一个TCP头头 分成好几个数据包,从而过滤器就很难探测到,扫分成好几个数据包,从而过滤器就很难探测到,扫 描就可以在不被发现的情况下进行。但是需要注意描就可以在不被发现的情况下进行。但是需要注意 的是,一些程序在处理这些小数据包时会有些麻烦,的是,一些程序在处理这些小数据包时会有些麻烦, 并且不同的操作系统在处理这个数据包的时候,通并且不同的操作系统在处理

49、这个数据包的时候,通 常会出现问题。常会出现问题。 3.3.3 IP分段扫描分段扫描 随着防火墙的广泛应用,普通的扫描很难穿过防火随着防火墙的广泛应用,普通的扫描很难穿过防火 墙去扫描受防火墙保护的网络。即使扫描能穿过防墙去扫描受防火墙保护的网络。即使扫描能穿过防 火墙,扫描的行为仍然有可能会被防火墙记录下来。火墙,扫描的行为仍然有可能会被防火墙记录下来。 如果扫描是对非连续性端口、源地址不一致、时间如果扫描是对非连续性端口、源地址不一致、时间 间隔很长且没有规律的扫描的话,这些扫描的记录间隔很长且没有规律的扫描的话,这些扫描的记录 就会淹没在其他众多杂乱的日志内容中。使用慢速就会淹没在其他众

50、多杂乱的日志内容中。使用慢速 扫描的目的也就是这样,骗过防火墙和入侵检测系扫描的目的也就是这样,骗过防火墙和入侵检测系 统而收集信息。虽然扫描所用的时间较长,但这是统而收集信息。虽然扫描所用的时间较长,但这是 一种比较难以被发现的扫描。一种比较难以被发现的扫描。 3.3.4 慢速扫描慢速扫描 乱序扫描也是一种常见的扫描技术,扫描器扫描的乱序扫描也是一种常见的扫描技术,扫描器扫描的 时候不是进行有序的扫描,扫描端口号的顺序是随时候不是进行有序的扫描,扫描端口号的顺序是随 机产生的,每次进行扫描的顺序都完全不一样,这机产生的,每次进行扫描的顺序都完全不一样,这 种方式能有效地欺骗某些入侵检测系统而

51、不会被发种方式能有效地欺骗某些入侵检测系统而不会被发 觉。觉。 3.3.5 乱序扫描乱序扫描 进行扫描的方法很多,可以是手工方式,也可以利进行扫描的方法很多,可以是手工方式,也可以利 用端口扫描软件。在手工进行扫描时,需要熟悉各用端口扫描软件。在手工进行扫描时,需要熟悉各 种命令,对命令执行后的输出进行分析。用扫描软种命令,对命令执行后的输出进行分析。用扫描软 件进行扫描时,可以使用许多扫描器软件提供的分件进行扫描时,可以使用许多扫描器软件提供的分 析数据功能。析数据功能。 3.4 端口扫描工具端口扫描工具 1. ping命令命令 ping命令经常用来对命令经常用来对TCP/IP网络进行诊断。

52、通过向网络进行诊断。通过向 目标计算机发送一个数据包,让它将这个数据包返目标计算机发送一个数据包,让它将这个数据包返 回,如果返回的数据包和发送的数据包一致,那就回,如果返回的数据包和发送的数据包一致,那就 表明表明ping命令成功了。通过这种方式对返回的数据命令成功了。通过这种方式对返回的数据 进行分析,就能判断目标计算机是否在线,或者这进行分析,就能判断目标计算机是否在线,或者这 个数据包从发送到返回需要多少时间。个数据包从发送到返回需要多少时间。 ping命令的基本格式:命令的基本格式: ping hostname 。ping命令命令 可以带一些参数,常用的两个参数是可以带一些参数,常用

53、的两个参数是“-n”和和“-l”。 3.4.1 常用网络扫描命令常用网络扫描命令 对目标主机执行对目标主机执行ping命令,但是没有收到目标主机命令,但是没有收到目标主机 返回的任何信息返回的任何信息,并不一定表示这个并不一定表示这个IP不存在或者不存在或者 没有连接到网络上,因为对方主机可能做了限制,没有连接到网络上,因为对方主机可能做了限制, 比如安装了防火墙,因此,比如安装了防火墙,因此,ping不通不表示不能使不通不表示不能使 用用FTP或者或者Telnet连接。连接。ping得到的结果包括字节得到的结果包括字节 数、反应时间以及生存时间。数、反应时间以及生存时间。ping程序通过在程

54、序通过在 ICMP报文数据中存放发送请求的时间来计算返回报文数据中存放发送请求的时间来计算返回 时间。当应答返回时,根据当时时间减去报文中存时间。当应答返回时,根据当时时间减去报文中存 放的发送时间就得到反应时间了。生存时间放的发送时间就得到反应时间了。生存时间 (TTL),),本来就存放在本来就存放在IP数据包的头部,直接就数据包的头部,直接就 能够获取。能够获取。 2. tracert命令命令 Windows下下tracert命令的作用是跟踪一个消息从一命令的作用是跟踪一个消息从一 台计算机到另一台计算机所走的路径,它可以用来台计算机到另一台计算机所走的路径,它可以用来 确定某个主机的位置

55、。确定某个主机的位置。 图图3-25 Windows下使用下使用tracert命令命令 3. net命令系列命令系列 很多很多Windows 2000的网络命令都是以的网络命令都是以net开头的。开头的。 利用利用net开头的命令,可以实现很多的网络管理功开头的命令,可以实现很多的网络管理功 能。下面介绍几个比较常用的能。下面介绍几个比较常用的net命令。命令。 net start server命令,可以用来启动服务器。命令,可以用来启动服务器。 net use命令,可以通过使用这个命令将计算机与共命令,可以通过使用这个命令将计算机与共 享资源连接或断开,或者显示关于计算机连接的信享资源连接或

56、断开,或者显示关于计算机连接的信 息。息。 net user命令,是用来添加或修改账户或者显示用命令,是用来添加或修改账户或者显示用 户账户信息。户账户信息。 4. rusers和和finger命令命令 这两个都是这两个都是UNIX命令。通过这两个命令,可以收命令。通过这两个命令,可以收 集目标计算机上有关用户的消息。使用集目标计算机上有关用户的消息。使用rusers命令,命令, 会产生类似下面的结果:会产生类似下面的结果: gajake : ttyp1 Nov 13 15: 42 7: 30 (remote) root : ttyp2 Nov 13 14: 57 7: 21 (remote)

57、 robo : ttyp3 Nov 15 01: 04 01 (remote) angel111 : ttyp4 Nov 14 23: 09 (remote) pippen : ttyp6 Nov 14 15: 05 (remote) root : ttyp5 Nov 13 16: 03 7: 52 (remote) gajake : ttyp7 Nov 14 20: 20 2: 59 (remote) dafr : ttyp15 Nov 3 20: 09 4: 55 (remote) dafr : ttyp1 Nov 14 06: 12 19: 12 (remote) dafr : ttyp

58、19 Nov 14 06: 12 19: 02 (remote) 最左边的是通过远程登录的用户名,还包括上次登最左边的是通过远程登录的用户名,还包括上次登 录时间,使用的录时间,使用的SHELL类型等信息。类型等信息。 使用使用finger可以产生类似下面的结果:可以产生类似下面的结果: user S00 PPP ppp-122-pm1.wiza Thu Nov 14 21: 29: 30 - still logged in user S15 PPP ppp-119-pm1.wiza Thu Nov 14 22: 16: 35 - still logged in user S04 PPP pp

59、p-121-pm1.wiza Fri Nov 15 00: 03: 22 - still logged in user S03 PPP ppp-112-pm1.wiza Thu Nov 14 22: 20: 23 - still logged in user S26 PPP ppp-124-pm1.wiza Fri Nov 15 01: 26: 49 - still logged in user S25 PPP ppp-102-pm1.wiza Thu Nov 14 23: 18: 00 - still logged in user S17 PPP ppp-115-pm1.wiza Thu N

60、ov 14 07: 45: 00 - still logged in user S-1 Sat Aug 10 15: 50: 03 - still logged in user S23 PPP ppp-103-pm1.wiza Fri Nov 15 00: 13: 53 - still logged in user S12 PPP ppp-111-pm1.wiza Wed Nov 13 16: 58: 12 - still logged in 这个命令能显示用户的状态。该命令是建立在客户这个命令能显示用户的状态。该命令是建立在客户 服务器模型之上的。用户通过客户端软件向服务器服

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论