首页 理论教育 如何进行网络端口扫描?

如何进行网络端口扫描?

时间:2023-05-30 理论教育 版权反馈
【摘要】:雅鹿公司电商专员小王按照公司的安全规章制度,做好每日的计算机巡检工作,需要使用常用网络命令,扫描局域网中的每台计算机,查看常用端口的状态,关闭计算机中开放的危险端口。请帮助小王完成这一任务。网络扫描主要分为3个阶段:发现目标主机或网络。网络的TCP协议是面向连接服务的,UDP协议是面向无连接服务的,它们使用16 bit端口号区分网络中的不同应用程序。

如何进行网络端口扫描?

【任务描述】

雅鹿公司电商专员小王按照公司的安全规章制度,做好每日的计算机巡检工作,需要使用常用网络命令,扫描局域网中的每台计算机,查看常用端口的状态,关闭计算机中开放的危险端口。请帮助小王完成这一任务。

【任务分析】

网络扫描主要分为3个阶段:(1)发现目标主机或网络。(2)发现目标后进一步搜集目标信息,包括操作系统类型、运行的服务以及服务软件的版本等。如果目标是一个网络,还可以进一步发现该网络的拓扑结构、路由设备以及各主机的信息。(3)根据搜集到的信息判断或者进一步检测系统是否存在安全漏洞

【知识准备】

1.网络端口的基本知识

1)网络端口的概念

网络端口是计算机与外界通信交流的出口。其中硬件领域的端口又称为接口,如USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入/输出)缓冲区。

网络的TCP协议是面向连接服务的,UDP协议是面向无连接服务的,它们使用16 bit端口号区分网络中的不同应用程序。

2)常见的网络端口

TCP/UDP的端口号在0~65 535范围内,其中1 024以下的端口保留给常用的网络服务。常用的保留TCP端口号有:20/21端口(为FTP服务)、23端口(为Telnet服务)、25端口(为SMTP服务)、80端口(为HTTP服务)。常用的保留UDP端口号有:53端口(为DNS服务)、67端口(为DHCP server服务)/68端口(为DHCP client服务)、69端口(为TFTP服务)、161端口(为SNMP服务)。

3)TCP端口和UDP端口的区别

(1)TCP端口为TCP传输控制协议通信提供服务,提供的是面向连接、可靠的字节流服务。客户和服务器在彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发、丢弃重复数据、检验数据和流量控制等功能,保证数据能从一端传到另一端。

(2)UDP端口为用户数据报协议通信提供服务,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP端口在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故传输速度很快。

2.端口扫描

1)端口扫描的原理

端口和服务进程一一对应,通过扫描开放的端口,就可以判断出计算机中正在运行的服务进程。对网络端口进行扫描可以得到目标计算机开放的服务程序和运行的系统版本信息。

对网络端口的扫描可以通过执行手工命令来实现,但效率较低;也可以通过扫描工具实现,效率较高。扫描工具根据作用的环境不同,可分为两种类型:网络漏洞扫描工具和主机漏洞扫描工具。

2)TCP协议

端口扫描的方式有全连接扫描、半连接扫描、隐蔽扫描三类。为了理解扫描原理,下面简要介绍TCP协议。

(1)TCP头的数据包格式。一个TCP头的数据包包括6个标志位,其具体格式如图2-51所示。

图2-51 TCP头的数据包格式

序列号(seq):占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生。给数据字节编上序号后,就给每一个报文段指派一个序号。序列号(seq)就是这个报文段中的第一个字节的数据编号。

确认号(ack):占4个字节,其是指期待收到对方下一个报文段的第一个数据字节的序号,当前报文段最后一个字节的数据编号+1即确认号。

确认ACK:占1位,仅当ACK=1时,确认号字段才有效;当ACK=0时,确认号字段无效。

同步SYN:连接建立时用于同步序号。当SYN=1,ACK=0时,表示这是一个连接请求报文段。若同意连接,则在响应报文段中使SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接收报文。SYN这个标志位只有在TCP建立连接时才会被置1,握手完成后SYN标志位被置0。

终止FIN:用来释放一个连接。当FIN=1时,表示此报文段的发送方的数据已经发送完毕,并要求释放运输连接。

注:ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq这些小写的单词表示序号。

(2)TCP建立连接的3次握手。TCP建立连接需要通过3次握手实现,其过程如图2-52所示。

图2-52 TCP建立连接的3次握手过程

第1次握手:主机A向主机B发送TCP连接请求数据包,其中包含主机A的初始序列号seq(A)=x。(其中报文中同步标志位SYN=1,ACK=0,表示这是一个TCP连接请求数据报文;序号seq=x,表明传输数据时的第一个数据字节的序号是x)。

第2次握手:主机B收到请求后,会发回连接确认数据包(其中确认报文段中,标识位SYN=1,ACK=1,表示这是一个TCP连接响应数据报文,并含主机B的初始序列号seq(B)=y,以及主机B对主机A初始序列号的确认号ack(B)=seq(A)+1=x+1)。

第3次握手:主机A收到主机B的确认报文后,还需作出确认,即发送一个序列号seq(A)=x+1;确认号为ack(A)=y+1的报文。

(3)TCP释放连接的4次挥手。假设主机A为客户端,主机B为服务器,TCP释放连接的过程如图2-53所示。

图2-53 TCP释放连接的4次挥手

第1次挥手(关闭客户端到服务器的连接):首先客户端A发送一个FIN,用来关闭客户端到服务器的数据传送,然后等待服务器的确认。其中终止标志位FIN=1,序列号seq=u。

第2次挥手:服务器收到这个FIN,它发回一个ACK,确认号ack为收到的序号加1。

第3次挥手(关闭服务器到客户端的连接):也是发送一个FIN给客户端。

第4次挥手:客户端在收到FIN后,并发回一个ACK报文确认,并将确认序号seq设置为收到序号加1。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

客户端发送FIN后,进入终止等待状态,服务器收到客户端的连接释放报文段后,就立即给客户端发送确认,然后服务器就进入close-wait状态,此时TCP服务器进程就通知高层应用进程,因而从客户端到服务器的连接就释放了。此时是“半关闭”状态,即客户端不可以发送数据报给服务器,但是服务器可以发送数据报给客户端。(www.xing528.com)

此时,若服务器没有数据报要发送给客户端,其应用进程就通知TCP释放连接,然后发送给客户端连接释放报文段,并等待确认。客户端发送确认后,进入time-wait状态,注意,此时TCP连接还没有释放掉,然后经过时间等待计时器设置的2MSL后,客户端才进入close状态。

3)端口扫描

(1)TCP扫描。与目标主机建立正常的TCP连接,以判断指定端口是否开放。这种方法的缺点是非常容易被记录或者被检测出来。

(2)TCP SYN扫描。本地主机向目标主机发送SYN数据段,如果远端目标主机端口开放,则回应SYN=1,ACK=1,此时本地主机发送RST给目标主机,拒绝连接。如果远端目标主机端口未开放,则会回应RST给本地主机。由此可知,根据回应的数据段可判断目标主机的端口是否开放。由于TCP SYN扫描没有建立TCP正常连接,所以降低了被发现的可能,同时提高了扫描性能。

(3)TCP FIN扫描。本地主机向目标主机发送FIN=1,如果远端目标主机端口开放,就丢弃此包,不回应;如果远端目标主机端口未开放,就返回一个RST包。TCP FIN扫描通过发送FIN的反馈判断远端目标主机的端口是否开放。由于这种扫描方法没有涉及TCP的正常连接,所以使扫描更隐秘,也称为秘密扫描。

(4)UDP ICMP扫描。这种扫描方法利用了UDP协议,当向目标主机的一个未打开的UDP端口发送一个数据包时,会返回一个ICMP_PORT_UNREACHABLE错误,这样就会发现关闭的端口。

(5)ICMP扫描。这种扫描方法利用了ICMP协议的功能,如果向目标主机发送一个协议项存在错误的IP数据包,那么根据反馈的ICMP错误报文,可判断目标主机使用的服务。

(6)间接扫描。入侵者间接利用第三方主机进行扫描,以隐藏真正入侵者的痕迹。第三方主机是通过其他入侵方法控制主机的,扫描的结果最终会从第三方主机发送给真正的入侵者。扫描往往是入侵的前奏,所以如何有效地屏蔽计算机的端口,保护自身计算机的安全,成为计算机管理人员首先考虑的问题。常用的端口扫描监测工具包括ProtectX、PortSentry等。此外,安装防火墙也是防止端口扫描的有效方法。

【任务实施】

1.了解网络安全漏洞

计算机网络安全漏洞主要来源于3个方面:(1)软件设计时的瑕疵,例如NFS系统本身不包括身份认证机制;(2)软件本身的瑕疵,例如没有进行数据内容和大小检查,没有进行成功/失败检查等;(3)系统和网络的错误配置,例如使用默认设置等。

网络扫描的主要技术有主机扫描、端口扫描和操作系统指纹扫描。

(1)主机扫描:确定在目标网络上的主机是否可达,同时尽可能多地映射目标网络的拓扑结构,主要利用ICMP数据包。

(2)端口扫描:发现远程主机开放的端口以及服务。

(3)操作系统指纹扫描:根据协议栈判别操作系统。

2.检测本机常用端口

(1)使用ping\arp\tracert\net命令查看网络连接情况。

说明:ping是用来测试网络连通性的命令,一旦发出ping命令,主机会发出连续的测试数据包到网络中,在通常的情况下,主机会收到回应数据包,ping命令采用的是ICMP协议。

(2)使用ipconfig命令查看网络配置。

单击“开始”按钮,在“运行”文本框中输入“cmd”,在打开的命令行窗口中输入“ipconfig”,按回车键即可查看本机的网络配置。

(3)使用netstat命令查看端口。

①netstat-nab命令用于查看端口情况。

②netstat-an命令用于查看开放的端口。

3.检测本机的危险,提高系统的安全性

1)检测本地共享资源

在运行cmd命令后输入“net share”,如果看到有异常的共享,就应该关闭。但是有时此次关闭了共享,下次开机时又会出现,那么应该考虑机器是否已经被黑客所控制或者中了病毒。

2)删除共享(每次输入一个)

net share admin$/delete

net share c$/delete(如果有d,e,f,……可以继续删除)

3)删除ipc$空连接

利用ipc$,连接者无须用户名与密码,就可以与目标主机建立一个空连接。为了防止别人用ipc$和默认共享入侵,需要禁止ipc$空连接,方法如下:

(1)在Windows系统桌面,选择“开始”→“运行”选项,在弹出的文本框中输入“regedit”,打开注册表

(2)在注册表中找到“HKEY-LOCAL_MACHINESYSTEMCurrentControSetControlLSA”项并将数值名称为“RestrictAnonymous”的数值数据由0改为1,最后单击“确定”按钮即可。这样重新启动计算机后就不会再生成IPC$空连接了。

4)使用TCPView查看开放端口

TCPView是一款静态显示当前PC的端口与线程的工具,占用资源少,在含NT内核的系统,如Windows 2000、Windows XP、Windows 2003等操作系统中使用可以显示端口所对应的程序图标,从而能看出某个端口是什么程序所打开的,如图2-54所示。

图2-54 使用TCPView查看本机端口

有些运行的程序名称可能与系统内的程序名称一样或者类似,但实际上却是黑客软件。其实,可以从硬盘的路径判断出来,在某个程序上单击鼠标右键,在弹出的菜单中选择“进程属性”,如图2-55所示。只要查看程序路径就可知道其是否为正常程序。

图2-55 查看程序路径

【动手做一做】

选定某一网站,使用端口扫描工具(X-Scan)进行漏洞扫描,设置好检测范围,开始扫描,查找有漏洞的端口,扫描结束后完成该网站的端口扫描报告。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈