实验二 扫描技术的原理与应用
一、实验目的
- 了解扫描的一般步骤
- 掌握zenmap的基本使用方法
- 能够利用Zenmap进行端口扫描
- 能够利用wireshark捕获扫描过程的数据包并进行简单分析
- 掌握端口扫描的基本原理
二、实验原理
1.Nmap介绍
nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取哪台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫描,通过并行ping扫描探测关闭的主机,诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口映射),碎片扫描,以及灵活的目标和端口设定。
nmap运行通常会得到被扫描主机端口的列表。nmap总会给出well known端口的服务名(如果可能)、端口号、状态和协议等信息。每个端口的状态有:open、filtered、unfiltered。open状态意味着目标主机能够在这个端口使用accept()系统调用接受连接。filtered状态表示:防火墙、包过滤和其它的网络安全软件掩盖了这个端口,禁止nmap探测其是否打开。unfiltered表示:这个端口关闭,并且没有防火墙/包过滤软件来隔离nmap的探测企图。通常情况下,端口的状态基本都是unfiltered状态,只有在大多数被扫描的端口处于filtered状态下,才会显示处于unfiltered状态的端口。
根据使用的功能选项,nmap也可以报告远程主机的下列特征:使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址、以及其它一些东西。
2.Nmap常用命令选项
执行命令:nmap[扫描类型][扫描选项]。常用命令选项见下表。
类型
说明
-sT
TCP connect()扫描:这是最基本的TCP扫描方式
-sS
TCP同步扫描(TCP SYN)
-sF -sN
秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式
-sP
ping扫描
-sU
UDP扫描
-sA
ACK扫描
-sW
对滑动窗口的扫描
-sR
RPC扫描
-b
FTP反弹攻击(bounce attack)
通用选项
说明
-P0
在扫描之前,不必ping主机
-PT
扫描之前,使用TCP ping确定哪些主机正在运行
-PS
对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描
-PI
设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行
-PB
这是默认的ping扫描选项。它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行扫描
-O
这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志
-sO
这个选项可以对远程主机所支持的IP协议进行扫描。
-I
这个选项打开nmap的反向标志扫描功能
-f
这个选项使nmap使用碎片IP数据包发送SYN、FIN、XMAS、NULL
-oN
把扫描结果重定向到一个可读的文件logfilename中
-oM
把扫描结果重定向到logfilename文件中,这个文件使用主机可以解析的语法
-oS
把扫描结果重定向到一个文件logfilename中
-iL
从inputfilename文件中读取扫描的目标
-iR
让nmap自己随机挑选主机进行扫描
-p <端口范围>
这个选项让你选择要进行扫描的端口号的范围
-F
快速扫描模式,只扫描在nmap-services文件中列出的端口
-D
使用诱饵扫描方法对目标网络/主机进行扫描
-e
告诉nmap使用哪个接口发送和接受数据包
-g
设置扫描的源端口
-r
告诉nmap不要打乱被扫描端口的顺序
-T <0-5>
[0-5]设置调速模板,级别越高扫描速度越快
三、实验预习
- TCP协议三次握手过程
- TCP SYN扫描、TCP Connect扫描基本原理
四、实验设备:
电脑(电脑上安装软件Zenmap和Wireshark)
五、实验内容:
电脑端使用Zenmap,扫描本地路由器端口信息,捕获扫描过程的数据包,分析相应扫描技术的基本原理和特点。
六、实验过程:
(一)电脑端启动Zenmap,如下图所示;
(二)TCP connect扫描
1.对路由器的80号端口使用TCP connect扫描方式进行端口扫描
(1)电脑端启动wireshark软件准备捕包。
(2)电脑端使用Zenmap,采用TCP connect扫描方式对本局域网路由器(注:一般路由器的IP地址为电脑端WLAN接口的默认网关地址)的80号端口进行端口扫描(在上图中蓝色框标记出的位置输入nmap相应的扫描命令,点击scan即可进行扫描)。
实验记录:电脑端使用的扫描命令为nmap -sT -p 80 192.168.31.1,
扫描结果为80/tcp open。
(3)电脑端停止Wireshark捕包,以协议类型(tcp)和路由器的IP地址为过滤条件,查看所捕获的数据包。
实验记录:附截图(图中应能查看到与此次扫描相关的数据包信息);
实验分析:针对本次扫描,数据包交互是如何体现TCP CONNECT扫描的特征的?试通过数据包的交互情况分析路由器的80端口是否开放。
通过这两个扫描,数据包的交互是以connect()函数为基础,向目标主机端口建立正常的三次握手来确认目标端口状态。80端口建立正常的三次握手,说明端口开放****。
2.对路由器的53号端口使用TCP connect扫描方式进行端口扫描
(1)电脑端启动wireshark软件准备捕包;
(2)电脑端使用Zenmap,采用TCP connect扫描方式对本地路由器的53号端口进行端口扫描(在上图中蓝色框标记出的位置输入nmap相应的扫描命令,点击scan即可进行扫描)。
实验记录:主机使用的扫描命令为nmap -sT -p 53 192.168.31.1,扫描结果为53/tcp open。(53也是开放,尝试50端口)
主机使用的扫描命令为nmap -sT -p 50 192.168.31.1,扫描结果为50/tcp filtered**** 。
(3)电脑端停止Wireshark捕包。以协议类型(tcp)和路由器的IP地址为过滤条件,查看所捕获的数据包。
实验记录:附截图(图中应能查看到与此次扫描相关的数据包信息);
53端口:
50端口:
实验分析:本次扫描与前一次相比,交互的数据包有何不同?试根据数据包交互情况并分析53号端口的开放情况。
尝试53也是开放,与前一次相同。尝试50端口:
50端口被过滤掉,客户端向服务端发送请求建立连接的的SYN后,直接被返回[RST,ACK],表明窗口关闭或者被过滤。不会进行三次握手更不会建立tcp连接。
两次向50端口发送SYN数据包是为了确认50端口是关闭状态.
3.对路由器的(学号后两位)~(学号后两位+10)端口使用TCP connect扫描方式进行端口扫描,并且设定扫描时按照从小到大的顺序依次进行扫描
(1)电脑端启动wireshark软件准备捕包;
(2)电脑端使用Zenmap,采用TCP connect扫描方式对路由器的(学号后两位)~(学号后两位+10)端口进行端口扫描,并且设定扫描时按照从小到大的顺序依次进行扫描(在上图中蓝色框标记出的位置输入nmap相应的扫描命令,点击scan即可进行扫描)。
实验记录:主机使用的扫描命令为nmap -sT -r -p15-25 192.168.30.1****,扫描结果为:
(3)电脑端停止Wireshark捕包。以协议类型(tcp)和路由器的IP地址为过滤条件,查看所捕获的数据包。
实验记录:附截图(图中应能查看到与此次扫描相关的数据包信息);
实验分析:本次扫描过程中交互的数据包有何特点?
SYN包是逐端口发送,而非乱序。并且为5个一组进行发送。开放端口正常三次握手建立连接,过滤端口不作回复,关闭端口回复RST。
(二)TCP SYN扫描
1.对路由器的80号端口使用TCP SYN扫描方式进行端口扫描
(1)电脑端启动wireshark软件准备捕包。
(2)电脑端使用Zenmap,采用TCP SYN扫描方式对路由器的80号端口进行端口扫描(在上图中蓝色框标记出的位置输入nmap相应的扫描命令,点击scan即可进行扫描)。
实验记录:电脑端使用的扫描命令为nmap -sS -p80 192.168.31.1,扫描结果为80/tcp open。
(3)电脑端停止Wireshark捕包,以协议类型(tcp)和相应IP地址为过滤条件,查看所捕获的数据包。
实验记录:附截图(图中应能查看到与此次扫描相关的数据包信息);
实验分析:分析所捕获到的扫描相关的数据包与使用TCP connect扫描80端口相比较,此次扫描捕获的数据包有何不同?根据数据包交互情况并分析80号端口的开放情况。
TCP connect扫描时全开扫描,建立正常的三次握手,易被察觉记录。
SYN(半开扫描)客户端向服务端发送SYN后,服务端返回一个[SYN,ACK]后没有三次握手。没有形成三次握手,因此也没有建立一个正常的TCP连接。
用半开扫描的端口,如果端口是开放状态,会有两次握手,不会形成三次握手,也不会建立tcp连接。而-sS采用半开扫描,自主构建SYN包,若主机回复SYN|ACK表明其监听此端口,若回复RST则未监听此端口,并且半开扫描不做任何回复,因此主机会发重传包。在****本次,主机80端口回复SYN|ACK说明80端口被监听,表示开放。
2.对路由器的53号端口使用TCP SYN扫描方式进行端口扫描
(1)电脑端启动wireshark软件准备捕包;
(2)电脑端使用Zenmap,采用TCP SYN扫描方式对路由器的53号端口进行端口扫描(在上图中蓝色框标记出的位置输入nmap相应的扫描命令,点击scan即可进行扫描)。
实验记录:主机使用的扫描命令为nmap -sS -p53 192.168.31.1,扫描结果为53/tcp open****。因为与(1)结果相同,所以扫扫描53.
主机使用的扫描命令为nmap -sS -p35 192.168.31.1,扫描结果为35/tcp closed****。
(3)电脑端停止Wireshark捕包。以协议类型(tcp)和路由器的IP地址为过滤条件,查看所捕获的数据包。
实验记录:附截图(图中应能查看到与此次扫描相关的数据包信息);
端口53:
端口35:
实验分析:本次扫描与TCP CONNECT扫描53端口相比,捕获到的扫描数据包有何不同?根据数据包交互情况并分析53号端口的开放情况。
因53端口与(1)80端口相同,现对35端口分析。半开扫描不会建立正常的连接,只是运用了第一次握手,独立构造SYN包,因此发现对面回复RST|ACK后就知道对方主机端口关闭,不再处理。而TCP CONNECT扫描则会要求对方主机重传,因为未收到ACK包。
3.对路由器的(学号最后两位+100)~(学号最后两位+110)端口使用TCP SYN扫描方式进行端口扫描,并且限定主机A进行扫描时始终以“学号后四位”为源端口
(1)电脑端启动wireshark软件准备捕包;
(2)电脑端使用Zenmap,采用TCP SYN扫描方式对路由器(学号最后两位+100)~(学号最后两位+110)端口进行端口扫描,并且限定主机A进行扫描时始终以“学号后四位”为源端口。
实验记录:主机使用的扫描命令为nmap -sS -p 115-125 -g 4315 192.168.31.1,扫描结果为
(3)电脑端停止Wireshark捕包。以协议类型(tcp)和路由器的IP地址为过滤条件,查看所捕获的数据包。
实验记录:附截图(图中应能查看到与此次扫描相关的数据包信息);
实验分析:本次扫描所捕获到的扫描相关数据包有何特点?
端口的扫描顺序比较无序。
所有的扫描流量都使用了源端口为4315的TCP数据包。
所有的扫描流量都使用了TCP SYN标志位,并没有完成TCP连接。
所有的扫描流量都是针对115~125端口的。如果有其它端口正在被扫描,那么它们将不会在这个流量中出现。
对于网络管理员来说,可以通过观察这些特点来检测和识别扫描活动,并采取防御措施,如限制源端口、阻止扫描IP地址、掩盖目标端口等。而对于攻击者来说,也需要根据这些特点考虑如何避免被检测,如通过随机源端口、减少扫描频率等手段。
(三)扫描操作系统
实验记录:主机使用的扫描命令为****nmap ********-O ****192.168.10.1,(在校园网环境操作,地址为192.168.10.1)
扫描结果为:
Wireshark抓包:
七、实验体会
通过本次实验,熟悉了nmap的用法,同时也感受到命令行其实比起程序来的要灵活一点,不需要点过多的内容。并且通过这次实验更深入了解了扫描器技术的特点以及对计算机网络方面知识的深究与进步,了解得更细了。
通过对全开扫描和半开扫描的具体实践,其实不难发现全开扫描依赖于connect函数以及三次握手达到获取目标端口的开放情况,但是容易被发现过滤。而半开扫描是依托root权限自己构造SYN包及相关实现,摒弃了全开扫描的一些缺点,首先不再建立完整的连接,通过第一次握手来判定端口状况,提高了效率和隐蔽性。是一种很好的端口扫描技术。同时对于重传了解得更深,当主机没有正常收到ACK时就会要求重传,以免出错。
八、思考题:
分析Zenmap扫描报告的内容,思考其中端口与服务的关系。
通信的实质是两端进程之间的连接与通信。而进程是为了实现服务所运行的程序。而进程是需要加不同的编号以区分,也就是端口号。
所以服务遵从协议规定的规则,依托实现程序——进程。而端口则对应不同服务进程的通信。
根据这些扫描,我们可以通过目标主机的响应,推断出目标主机上开放的端口所对应的网络服务。
例如,在执行TCP SYN端口扫描时,如果目标主机返回SYN/ACK数据包,则表示该端口开放。通过端口号与对应的网络服务列表进行比对,可以确定该端口所对应的服务类型。例如:
- 如果开放的端口为80,则可能对应HTTP服务,即目标主机可能正在运行web服务器。
- 如果开放的端口为22,则可能对应SSH服务,即目标主机可能开放了SSH协议的远程访问端口。
- 如果开放的端口为135,则可能对应RPC服务,即目标主机可能运行Windows操作系统并提供远程过程调用服务。
但是****并非所有端口都与固定的服务类型相关联,并且同一服务可能会使用不同的端口。因此,对于未能识别出服务类型的端口,需要进行进一步的探测和分析才能确定其所代表的服务类型。
版权归原作者 古️方源 所有, 如有侵权,请联系我们删除。