网络安全实验3:网络扫描
网络扫描实验
实验目的
用Nmap对主机进行主机扫描、ping扫描、端口扫描、TCP connect扫描、操作系统识别、漏洞扫描等,获取尽可能全面的主机信息,抓包分析扫描原理;
实验环境
(1) 扫描机:Kali,配置nmap工具;
(2) 靶机:Windows XP;
(3) 软件:Nmap、wireshark
实验过程与结果
步骤一:查看主机信息
1.在扫描机Kali中打开终端,输入“ifconfig”命令查看扫描机信息,如下图所示可知扫描机的ip地址为192.168.204.134。
2.在靶机windows XP中打开命令行,使用“ipconfig”命令查看靶机信息,如下图所示可知靶机的ip地址为192.168.204.135。
3.在扫描机kali终端中使用ping 192.168.204.135命令ping靶机,按“ctrl+c”停止,如下图所示,收到来自靶机的答复,说明扫描机ping通靶机。
4.在靶机windows XP命令行中使用ping 192.168.204.134命令ping扫描机,如下图所示,收到来自扫描机的答复,说明靶机ping通扫描机。至此,两主机实现ping通。
步骤二:Nmap Ping扫描
1.在扫描机终端中使用nmap -sP 192.168.204.135/24命令,对靶机进行Ping扫描,收集C段内部属 于目标的IP地址。如下图终端输出的扫描结果可知,成功扫描到网关192.168.204.2、靶机192.168.204.135、扫描机192.168.204.134。
2.在扫描机kali终端输入sudo su获取超级用户权限,接着输入wireshark,在超级用户权限下打开wireshark。
3.进行扫描的同时打开wireshark捕获报文,捕获结果如下图所示。
4.在上图中可以看到,wireshark在此次主机扫描过程中捕获到若干TCP包、DNS包和大量由物理地址00:0c:29:a5:82:6c广播的ARP包。
(1)前三个TCP包:由扫描机kali向IP地址192.168.204.1和198.168.204.2的80端口均发出TCP请求SYN,稍后由192.168.204.2回复给扫描机[RST,ACK]。说明此IP地址对应网关,且网关的80端口未打开。
(2)由扫描机kali广播发送若干ARP包:扫描机依次对IP地址192.168.204.3-253进行查询,要求查询结果发送回扫描机192.168.204.134。
(3)靶机发送ARP包:当扫描机发出查询IP地址192.168.117.133的ARP包后,靶机向扫描机发送ARP包,告知扫描机其IP地址所对应的Mac地址为00:0c:29:a5:82:6c。
(4)扫描机和靶机间交换TCP包:扫描机向靶机80端口发送TCP建立连接请求,稍后由靶机80端口返回[RST,ACK],说明此主机是开启的。
(5)扫描机和网关间交换DNS包:在发送ARP包对c段各IP地址都进行了一遍查询之后,扫描机192.168.204.134和网关192.168.204.2之间交换DNS报文进行域名解析。
5.由以上分析可知,Nmap Ping扫描的原理是通过发送ARP包对c段所有IP进行查询,主机回复ARP包告知其Mac地址后,对查询到的主机80端口进行TCP连接请求,若收到回复则确认该主机开启。最终终端查询结果输出全部查询到的主机IP地址。
步骤三:Nmap主机扫描
1.使用nmap -A 192.168.204.135命令对靶机Windows XP进行主机扫描。
2.对靶机主机进行扫描的同时打开wireshark捕获报文,捕获结果如下图所示。
3.由上图可知,捕获到两个ARP包、若干TCP包和若干DNS协议包。
(1)ARP包:首先由Mac地址为00:0c:29:a5:82:6c的扫描机广播发出ARP包,查询扫描目标IP地址所对应的Mac地址,靶机收到后向扫描机回复ARP包说明其Mac地址为00:0c:29:5d:e8:c3。
(2)TCP包:查看发送方地址Source和接收方地址Destination可知,这些TCP包在扫描机kali和靶机windows XP之间传送。
a)首先由扫描机发出TCP请求包,分别向靶机80和443端口发送SYN,这两个端口是常用的HTTP和HTTPs服务端口。
b)靶机80和443端口均回复扫描机[RST,ACK]拒绝建立连接,说明主机在线。
3.DNS包:同主机扫描中的分析,扫描机192.168.204.134和网关192.168.204.2交换DNS协议包进行域名解析。
4.由以上分析可知,Nmap主机扫描的原理是发送ARP包确定扫描目的IP所对应的Mac地址后,向目标IP的80和443端口发送建立TCP连接请求,收到TCP应答报文则说明主机在线。
5.由Ping扫描和主机扫描分析的共同点可知,每次对靶机进行扫描前都需要扫描机发送ARP包查询靶机Mac地址,收到靶机ARP回复后开始扫描;而每次扫描也都需要扫描机与网关交换DNS报文进行域名解析。这些共同点在接下来的扫描原理分析中不再赘述。
步骤四:端口扫描
-sV:探测开放端口以确定服务/版本信息
1.在扫描机kali终端使用nmap -sV 192.168.204.135命令对靶机进行端口扫描,在终端输出的扫描结果如下图所示。
2.扫描结果显示,靶机所开启的端口有135、139、445端口,并列出了端口对应的服务和版本。
3.验证靶机以上端口打开:在靶机命令行中输入telnet 192.168.204.135+端口号检测对应端口是否打开,如下两图所示,端口号为80时输出“连接失败”说明靶机80端口未开放;而端口号为135时跳转到“Telnet 192.168.204.135”界面说明靶机135端口已开放,端口139、445同理。
4.在进行上述端口扫描的同时使用wireshark捕获网络流量,如下图所示。
5.由上图可知,除了用于查询靶机和网关Mac地址的ARP包以及用于域名解析的DNS包,wireshark还捕获到若干TCP包。这些TCP包均为扫描机和靶机之间交换的,每次由扫描机向靶机各个端口发送TCP建立连接请求。
(1)若靶机此端口未开放,则回复给扫描机[RST,ACK]连接失败。如下图所示,靶机443端口关闭。
(2)若靶机此端口已开放,则回复给扫描机[SYN,ACK],再由扫描机发送给靶机[ACK],完成三次握手建立TCP连接。如下图所示,扫描机33136端口成功和靶机135端口建立TCP连接,说明靶机135端口已开放。
同理如下两图所示,可以看到扫描机成功和139端口、445端口建立TCP连接。
(3)扫描结束时,靶机的135端口、139端口和445端口都向扫描机发送[FIN,ACK],扫描机回复[ACK],再由靶机发送[FIN,ACK],扫描机最终发送[ACK],完成四次挥手,TCP连接终止。
6.由以上分析可知,Nmap -sV端口扫描的原理是由扫描机向靶机各端口发送TCP建立连接请求,若经历三次握手建立连接则说明此端口开启,最终通过四次挥手终止连接,否则说明此端口关闭。
-sS:TCP SYN扫描,半开扫描
1.在扫描机kali终端输入nmap -sS 192.168.204.135命令对靶机端口进行TCP SYN扫描。终端输出的扫描结果如下图所示,可知靶机135端口、139端口、445端口开启,并列出了端口对应的版本信息。
2.在上述TCP SYN端口扫描的同时,使用wireshark捕获网络流量,捕获结果如下图所示。
3.由上图可知,捕获到了大量扫描机和靶机间交换的TCP包。扫描机向靶机各个端口发送TCP建立连接请求[SYN]。
(1)若端口关闭,则回复给扫描机TCP报文[RST,ACK],连接失败说明靶机该端口关闭。如下图的3306端口
(2)若端口开放,则靶机回复给扫描机[SYN,ACK],稍后由主机回复[RST]终止建立连接。如下图所示靶机139端口为例。
4.由以上分析可知,Nmap -sS端口扫描(TCP SYN扫描,半开扫描)由扫描机向靶机各个端口发送TCP建立连接请求,若靶机端口回复[SYN,ACK]则说明该端口开启,扫描机回复[RST]终止连接,并不完整地建立TCP连接。
5.将两种端口扫描进行比较,-sV端口扫描耗时7.74秒,-sS端口扫描耗时仅1.42秒,可知由于TCP SYN端口扫描未建立完整的TCP连接,扫描速度更快、更加省时高效;而-sV模式由于建立了完整的TCP连接,相对更加完整可靠。
步骤五:操作系统扫描
1.在扫描机终端输入sudo su进入超级用户权限,在root权限下使用nmap -O 192.168.204.135命令启用操作系统检测,对靶机进行操作系统扫描。
2.由上图终端输出的扫描结果可知,操作系统扫描得出靶机的开放端口分别是135、139、445端口,并输出其Mac地址、设置类型、操作系统类型及其CPE信息、操作系统细节,并说明靶机与扫描机的网络距离为1跳。
3.在进行上述操作系统扫描的同时,在扫描机中打开wireshark对网络流量进行捕获,捕获结果如下图所示。
4.由上图捕获结果可知,除了进行主机发现的ARP包和与网关间进行域名解析的DNS包,wireshark还捕获到若干TCP包、一个UDP包和几个ICMP包。
(1)TCP包:在扫描机192.168.204.134和靶机192.168.204.135之间交换。
a)建立TCP连接请求部分与TCP SYN半开端口扫描同理,由扫描机向靶机各个端口发送[SYN]请求,若靶机该端口开放则回复[SYN,ACK],再由扫描机回复[RST]拒绝TCP连接;若靶机该端口关闭则回复[RST,ACK],建立TCP连接失败。
b)在对靶机端口全部扫描完毕后,扫描机向已知开放的靶机139端口再次发送[SYN],收到[SYN,AKC]回复后向其回复[SYN]经历三次握手成功建立TCP连接。随后扫描机又向靶机139端口发送了了[SYN,ECN,CWR,Reserved],表示拥塞通知,告诉靶机139端口减小拥塞窗口,在靶机回复[SYN,ACK]后扫描机仍回复[RST]拒绝连接。
(2)UDP包:在对靶机端口半开扫描结束后,扫描机发送UDP报文到靶机主机32652端口,靶机随后回复ICMP包显示端口不可达。
(3)ICMP包:利用ping命令验证网络的连通性并统计响应时间和TTL(IP包生存周期)。
5.由以上分析可知,Nmap操作系统扫描通过发送一系列TCP和UDP报文到远程主机并检查响应中的每一个比特,将其与TCP/IP协议栈fingerprinting数据库中的已知操作系统进行比较,打印匹配出的操作系统详细信息即可告知用户靶机操作系统的详细信息。
步骤六:漏洞扫描
1.在扫描机kali终端使用nmap 192.168.204.135 -script=vuln命令进行靶机常见漏洞扫描,终端输出的扫描结果如下三图所示。
2.在以上扫描过程中,打开wireshark对网络流量进行捕获,捕获结果如下两图所示。
3.由图中捕获结果可知,除了进行主机发现的ARP包和与网关间进行域名解析的DNS包,wireshark还捕获到大量TCP包、SSLv3包、SMB包和NBNS包。
(1)TCP包:在扫描机192.168.204.134和靶机192.168.204.135之间交换数据,扫描机向靶机各端口发送TCP连接建立请求[SYN],若靶机该端口开放则回复[SYN,ACK],再由扫描机回复[ACK]完成三次握手,成功与此端口建立 TCP连接;若该端口未开放则回复[RST,ACK]建立TCP连接失败。
(2)SSLv3包、SMB包和NBNS包:首先由扫描机向靶机发送内容未Client Hello的SSLv3包建立连接;随后由扫描机向靶机发送NBNS包请求NBSTAT端口查询服务,靶机收到后发送NBNS包回复NBSTAT服务开启;之后由扫描机向靶机发送SMB negotiate protocol request请求数据报并列出它所支持的所有的SMB协议版本,靶机收到请求信息后响应请求并列出希望使用的协议版本。
(3)在收到靶机回复前,扫描机向靶机445端口发送TCP连接建立请求[SYN],收到445端口回复的[SYN.ACK]后向靶机回复[ACK]成功建立TCP连接进行通信。
4.由以上分析可知,Nmap漏洞扫描是扫描机首先通过向各端口发送TCP连接建立请求扫描靶机开放的端口,随后每次向靶机发送SMB报文并与开放的445端口建立TCP连接进行通信后,靶机回复SMB报文即为对相应漏洞的扫描结果。
步骤七:主机全面扫描
1.在扫描机kali终端输入nmap -T4 -A 192.168.204.135对靶机进行完整全面的扫描。其中-A选项用于使用进攻性方式扫描;-T4指定扫描过程使用的时序,总共6个级别(0-5),级别越高扫描速度越快,但也越易被防火墙/IDS检测并屏蔽掉,在网络状况良好的情况推荐使用T4。终端输出的扫描结果如下两图所示。
2.由扫描结果可知,全面扫描靶机得到主机发现的结果为“Host is up”;端口扫描的结果为共997个关闭端口、3个开放端口分别为135、139、445端口,并列出开放端口的对应服务和版本信息;操作系统扫描的结果为靶机OS为windows XP并输出其CPE信息等;版本侦测扫描的结果为对扫描到的开放状况进一步探测端口上运行的具体的应用程序和版本信息;并调用NSE脚本进行进一步的信息挖掘的显示结果。
3.在进行上述扫描的同时,打开wireshark对网络流量进行捕获,捕获结果如下图所示。
4.由上图捕获结果可知,wireshark捕获到ARP包及DNS包还有大量TCP和UDP包、ICMP包、SMB包、SMB2包及NBSS包。
(1)ARP包:主机发现。
(2)TCP包:端口扫描。
(3)TCP和UDP包、ICMP包:操作系统扫描及版本侦测。
(4)SMB包、SMB2包、NBSS包:调用NSE脚本进行进一步的信息挖掘。
实验总结
本次实验使我得以将网络扫描技术从理论层面延伸至具体的动手实践,完成了一次对目标靶机的系统性探测与分析。我以Nmap为核心工具,展开了一条从宏观发现到深度探测的完整路径。实验始于基础的主机发现,通过Ping扫描快速定位了网络中的活跃设备;继而深入到端口扫描,对比体验了TCP SYN半开扫描的高效与TCP Connect全连接扫描的可靠性,并尝试了探测UDP服务这一更具挑战性的任务;随后,通过服务版本侦测和操作系统识别,将单纯的端口号转化为更具价值的情报信息;最终,借助Nmap强大的脚本引擎,我对靶机进行了初步的漏洞扫描,将之前获取的信息与已知的安全风险关联起来。
整个过程中,我同步使用Wireshark进行网络流量抓取与分析,这项工作是本次实验的精华所在。当在终端中执行一条条Nmap命令时,Wireshark如同一个高精度的“显微镜”,让我得以窥见命令背后真实的网络对话。例如,我清晰地观察到TCP SYN扫描如何通过发送SYN包、接收SYN/ACK包后即刻发送RST包来中断连接,从而验证了其“半开扫描”的高效原理。与之形成鲜明对比的是,TCP Connect扫描则展示了完整的三次握手过程,这使我深刻理解了两种扫描方式在系统调用层级和隐蔽性上的根本差异。而对操作系统识别过程的抓包分析则更为有趣,我看到Nmap并非进行单一请求,而是发送一系列精心构造的、带有特殊TCP参数的探测包,通过分析目标系统独特的响应“指纹”来推断其操作系统。这种将扫描命令与底层网络流量相互印证的过程,极大地深化了我对网络协议和扫描技术内在机制的理解。
经过这次亲自动手的实验,我所获得的远不止是几个命令的使用技巧。它让我真切地体会到,一次看似简单的扫描背后,是大量网络数据包的交互与博弈,信息安全的攻防在最底层便已悄然展开。这极大地提升了我对网络安全隐患的警觉性。我认识到,网络中开放的端口、未更新补丁的服务、甚至是系统本身透露的指纹信息,都可能成为攻击者利用的突破口。因此,作为一名安全实践者,必须时刻保持主动防御的意识,不仅要熟练掌握漏洞扫描这一关键技能,更要理解其原理以应对可能的规避手段,同时还要坚持定期更新漏洞库,不断提升扫描技术的深度与广度。唯有如此,才能在这场动态的攻防较量中,更有效地发现隐患、评估风险,从而切实提升网络的整体安全水位。
















































