首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

2.3  端口扫描

网络中的每一台计算机如同一座城堡,在这些城堡中,有的对外完全开放,有的却是紧锁城门。入侵者们是如何找到,并打开它们的城门的呢?这些城门究竟通向城堡的何处呢?

在网络技术中,把这些城堡的“城门”称之为计算机的“端口”。端口扫描是入侵者搜集信息的几种常用手法之一,也正是这一过程最容易使入侵者暴露自己的身份和意图。一般来说,扫描端口有如下目的:

è 判断目标主机上开放了哪些服务;

è 判断目标主机的操作系统。

如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他们就能够使用相应的手段实现入侵。

本节将会详尽地分析端口扫描所涉及的问题,并以实用为主要目的来介绍一些基本概念,以便更加清楚地了解入侵者如何扫描目标主机的端口。

2.3.1  网络基础知识

本书尽量避免使用较大篇幅来介绍理论知识,但为了让大家更透彻地了解入侵者的手段,这里给大家介绍一些网络的基础知识。只对应用感兴趣的读者可以略过这部分。

1.端口的基本概念

“端口”在计算机网络领域中是个非常重要的概念。它是专门为计算机通信而设计的,它不是硬件,不同于计算机中的“插槽”,可以说是个“软插槽”。如果有需要的话,一台计算机中可以有上万个端口。

端口是由计算机的通信协议TCP/IP协议定义的。其中规定,用IP地址和端口作为套接字,它代表TCP连接的一个连接端,一般称为Socket。具体来说,就是用[IP:端口]来定位一台主机中的进程。可以做这样的比喻,端口相当于两台计算机进程间的大门,可以随便定义,其目的只是为了让两台计算机能够找到对方的进程。计算机就像一座大楼,这个大楼有好多入口(端口),进到不同的入口中就可以找到不同的公司(进程)。如果要和远程主机A的程序通信,那么只要把数据发向[A:端口]就可以实现通信了。

可见,端口与进程是一一对应的,如果某个进程正在等待连接,称之为该进程正在监听,那么就会出现与它相对应的端口。由此可见,入侵者通过扫描端口,便可以判断出目标计算机有哪些通信进程正在等待连接。

2.端口的分类

端口是一个16 bit的地址,用端口号进行标识不同作用的端口,参见表2-2和表2-3。端口一般分为两类。

熟知端口号(公认端口号):由因特网指派名字和号码公司ICANN负责分配给一些常用的应用层程序固定使用的熟知端口,其数值一般为01023

一般端口号:用来随时分配给请求通信的客户进程。

2-2  常见TCP公认端口号

服务名称

  

   

FTP

21

文件传输服务

续表 

服务名称

  

   

Telnet

23

远程登录服务

HTTP

80

网页浏览服务

POP3

110

邮件服务

SMTP

25

简单邮件传输服务

Socks

1080

代理服务

2-3  常见UCP公认端口号

服务名称

  

   

RPC

111

远程调用

SNMP

161

简单网络管理

TFTP

69

简单文件传输

3TCP/IP协议基础知识

首先简要介绍Internet的基本通信协议TCP/IP协议。TCP/IP,即传输控制协议/网际互连协议,它把整个计算机通信网划分为应用层、运输层、网际层、网络接口层。按照这种层次划分的通信模式如图2-44所示。

应用层

(应用层协议如HTTPFTPSMTPTelnet等)

 

应用层

(应用层协议如HTTPFTPSMTPTelnet等)

运输层TCPUDP

 

运输层TCPUDP

网际层IP

32 Bit

 

网际层IP

网络接口层

网络接口层

2-44

Internet的网络通信大多是建立在这个协议之上的,各个主机遵循着TCP/IP协议封装数据包进行通信。

由图2-44可见,TCP/IP在运输层包括两个协议TCPUDP,并且TCPUDP都使用相同的网际层IPTCPUDP协议各自特点如下。

用户数据报协议UDPUser Datagram Protocol):UDP在传送数据之前不需要先建立连接。远地主机的运输层在收到UDP数据报后,不需要给出任何确认。广泛应用于只需一次的客户/服务器模式的请求-应答查询,或者要求提供高效率数据传输的场合。

传输控制协议TCPTransmission Control Protocol):TCP提供可靠的、面向连接的运输服务,用于高可靠性数据的传输。TCP具有完善的错误检测与恢复、顺序控制和流量控制等功能。

TCPUDP协议说明如下。

注重可靠性的场合一般使用TCP协议,例如FTPTelnet,而在那些更注重实时性、传输率、吞吐量的场合一般使用UDP,如QQTCP报文分为首部和数据两部分。TCP报文段首部的前20个字节是固定的,后面有4n字节(n为整数)是可有可无的选项。因此TCP首部的最小长度是20字节。

TCP报文结构如图2-45所示。

SYN:该标志位用来建立连接,让连接双方同步序列号。如果SYN=1ACK=0,则表示该数据包为连接请求,如果SYN=1ACK=1则表示接受连接。

FIN:表示发送端已经没有数据要求传输了,希望释放连接。

RST:用来复位一个连接。RST标志置位的数据包称为复位包。一般情况下,如果TCP收到的一个分段明显不是属于该主机上的任何一个连接,则向远端发送一个复位包。

URG:为紧急数据标志。如果它为1,表示本数据包中包含紧急数据。此时紧急数据指针有效。

ACK:为确认标志位。如果为1,表示包中的确认号时有效的。否则,包中的确认号无效。

PSH:如果置位,接收端应尽快把数据传送给应用层。

源端口

目的端口

序号

确认序号

数据偏移

保留

URG

ACK

PSH

RST

SYN

FIN

窗口

检验和

紧急指针

选项和填充

数据

2-45

3.三次握手

当使用TCP协议的时候,需要双方计算机建立TCP连接,把这个建立过程形象地称为“三次握手”。

三次握手的过程如图2-46所示。

 
 
 

2-46

第一次:主机ATCP向主机BTCP发出连接请求报文段,其首部中的同步比特SYN=1ACK=0,同时选择一个序号x,表明在后面传送数据时的第一个数据字节的序号是x

第二次:主机BTCP收到连接请求报文段后,如同意,则发回确认。在确认报文段中应将SYN=1ACK=1,确认序号应为x+1,同时也为自己选择一个序号y

第三次:主机ATCP收到此报文段后,还要向B给出确认ACK=1,其确认序号为y+1

三次握手后,主机A和主机B就可以相互进行数据传输。

三次握手的功能:保证双方都相互知道对方已准备好进行数据传输,双方确认一个数据传输的初始序列号。例如,发送方的初始序列号为x,接收方初始序列号为y,均被对方确认。

此外,这里简单介绍一下最近比较流行的IPv6协议。IPv6协议全称Internet Protocol Version 6,即IP协议的6.0版本,通常又称为下一代因特网协议,IPv6Internet工程任务组(IETF)开发设计的用来替代现行IPv4协议的一种新IP协议。IPv6IPv4作用大致相同,开发的目的主要是为了缓解IPv4地址空间的压力,另外还弥补了IPv4协议的一些问题,包括端对端IP连接、服务质量(QoS)、安全性、扩展性及即插即用等。

2.3.2  端口扫描原理

前面简要地介绍了计算机之间是如何通信的,从中可以看出,入侵者如果想要探测目标计算机都开放了哪些端口、提供了哪些服务,就需要先与目标端口建立TCP连接,这也就是“扫描”的出发点。

1.端口扫描原理

尝试与目标主机的某些端口建立连接,如果目标主机该端口有回复(见三次握手中的第二次),则说明该端口开放,即为“活动端口”。

2.扫描原理分类

1)全TCP连接

这种扫描方法使用三次握手,与目标计算机建立标准的TCP连接。需要说明的是,这种古老的扫描方法很容易被目标主机记录。

2)半打开式扫描(SYN扫描)

在这种扫描技术中,扫描主机自动向目标计算机的指定端口发送SYN数据段,表示发送建立连接请求。

a如果目标计算机的回应TCP报文中SYN=1ACK=1,则说明该端口是活动的,接着扫描主机传送一个RST给目标主机拒绝建立TCP连接,从而导致三次握手过程的失败。

b如果目标计算机的回应是RST,则表示该端口为“死端口”,这种情况下,扫描主机不用做任何回应。

由于扫描过程中,全连接尚未建立,所以大大降低了被目标计算机的记录的可能性,并且加快了扫描的速度。

3FIN扫描

在前面介绍过的TCP报文中,有一个字段为FINFIN扫描则依靠发送FIN来判断目标计算机的指定端口是否活动。

发送一个FIN=1TCP报文到一个关闭的端口时,该报文会被丢掉,并返回一个RST报文。但是,如果当FIN报文到一个活动的端口时,该报文只是简单的丢掉,不会返回任何回应。

FIN扫描可以看出,这种扫描没有涉及任何TCP连接部分,因此,这种扫描比前两种都安全,可以称之为秘密扫描。

4)第三方扫描

第三方扫描又称“代理扫描”,这种扫描是利用第三方主机来代替入侵者进行扫描。这个第三方主机一般是入侵者通过入侵其他计算机而得到的,该“第三方”主机常被入侵者称之为“肉鸡”。这些“肉鸡”一般为安全防御系数极低的个人计算机。

2.3.3  端口扫描应用

1.工具一:X-Port

1)功能简介

多线程方式扫描目标主机开放端口,扫描过程中根据TCP/IP堆栈特征被动识别操作系统类型,若没有匹配记录,尝试通过NetBIOS判断是否为Windows系列操作系统并尝试获取系统版本信息。

该工具提供了两种端口扫描方式供选择:标准TCP连接扫描; SYN方式扫描。

其中“SYN扫描”和“被动识别操作系统”功能实现均使用“Raw Socket”构造数据包,不需要安装额外驱动程序,但必须运行于Windows 2000系统之上。

2)使用方法

C:\x-port>xport

X-Port v1.2 - command line port scanner, code by glacier

http://www.xfocus.org

glacier@xfocus.org

Usage: xport <Host> <Ports Scope> [Options]

<Ports Scope> means:

<Start Port>[-<End Port>][,Port1,Port2-Port3,...]

[Options] means:

-m [mode] : specify scan mode (tcp/syn), default is tcp connect mode

-t [count]: specify threads count, default is 50

-v        : display verbose information

例:xport www.xxx.com 80 -m syn

xport 192.168.1.1 2-1024 -t 200 -v

3)实例

使用命令:

xport www.****.edu.cn 2-90

如图2-47所示。

2-47

从结果可以看出,前90个端口中开放了7个:

è  Port 9 is opened: Discard

è  Port 13 is opened: Daytime

è  Port 21 is opened: FTP <Control>

è  Port 22 is opened: SSH

è  Port 25 is opened: SMTP

è  Port 37 is opened: Time

è  Port 80 is opened: HTTP

从扫描结果可知,该服务器提供的服务还是相当齐全的。但是要注意到,这里是以TCP全连接方式进行的端口扫描,这样的话,入侵者的IP很可能被目标计算机记录下来,因此,X-Port还可以按照SYN的方式进行扫描,也就是半打开式扫描。在这种扫描方式下,入侵者的扫描行为不容易被目标主机察觉,但可能存在漏报的现象。

2.工具二:PortScanner

1简介

PortScanner是由StealthWasp编写的一款基于图形界面的端口扫描软件,界面如图2-48所示。

2)使用方法

在“Target IP”中填入目标IP,在“Scan port”中填入扫描端口范围。最后单击“scan”按钮开始扫描,如图2-49所示。

            

2-48                                   2-49

3.工具三:SuperScan

1)简介

SuperScan是一个集“端口扫描”、“ping”、“主机名解析”于一体的扫描器。

2)功能

è 检测主机是否在线。

è  IP和主机名之间的相互转换。

è 通过TCP连接试探目标主机运行的服务。

è 扫描指定范围的主机端口。

è 支持使用文件列表来指定扫描主机范围。

其界面如图2-50所示。

3)界面说明

IP地址栏:

“开始IP”:填入目标网段起始IP

“结束IP”:填入目标网段结束IP

4)实例

扫描一个网段,探测该网段有哪些活动主机,活动主机开放了哪些端口。

  填入目标网络IP范围,如图2-51所示。

        

2-50                                      2-51

  进行主机和服务扫描设置,如图2-52所示。

  设置扫描选项,如图2-53所示。

     

2-52                                          2-53

  单击“开始”按钮,开始扫描,得到的扫描结果可通过查看HTML结果来进行查看。

2.3.4  操作系统识别

每种操作系统都开放有不同的端口供系统间通信使用,因此从端口号上也可以大致判断目标主机的操作系统。一般认为开有135139端口的主机为Windows系统。如果除了135139外,还开放了5000端口,则该主机为Windows XP操作系统。

2.3.5  常见问题与解答

问:使用端口扫描器为何扫不出QQ端口?

答:QQ通信时候使用的是UDP协议。前面介绍过,UDP协议在通信的时候是不建立连接的。而端口扫描器是基于TCP协议的,通过“连接”或“半连接”测试方式来确定端口是否开放。所以,端口扫描器扫不出QQ开放的端口。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论