目录
Nmap扫描结果,目标主机192.168.56.1有五个端口处于开放状态:
(3)服务识别:通过 -sV 参数,获取端口对应的服务版本。
(5)结果导出:将扫描结果导出为文本格式和 XML 格式,便于后续分析。
实 验 报 告 单
实验名称: Nmap的使用
同组人: 实验课时:
实验室: 报告日期:
一、实验目的
- 掌握Nmap工具的基本使用方法。
- 学习如何进行端口扫描、主机探测、服务识别和系统识别。
- 了解不同扫描方式的区别和应用场景。
- 学会将扫描结果导出为文本格式和XML格式。
二、实验内容
- 使用Nmap进行端口扫描,包括默认扫描、指定端口扫描和指定扫描方式。
- 使用Nmap进行主机探测,扫描网段中的存活主机。
- 使用Nmap进行服务识别,识别端口对应的服务版本。
- 使用Nmap进行系统识别,识别操作系统版本。
- 将Nmap的扫描结果导出为文本格式和XML格式。
三、实验思路
- 首先,安装并配置好Nmap工具。
- 然后,按照实验内容的顺序依次进行实验操作。
- 在每个实验步骤中,观察并分析Nmap的输出结果,以便更好地理解其功能和用法。
- 最后,将实验结果整理成报告,总结实验心得和改进思路。
四、遇到问题及解决办法
- 问题:在使用Nmap进行端口扫描时,发现有些端口的状态显示为"filtered",无法判断其是否开放。 解决办法:尝试使用不同的扫描方式(如SYN半链接扫描或隐秘扫描)来获取更准确的结果。
五、核心代码与实验结果展示
-
(1)端口扫描:观察扫描结果的变化
-
Nmap(kali中自带)
-
端口扫描
-
扫描主机的「开放端口」,在nmap后面直接跟主机IP或者域名(默认扫描1000个端口)
-
-
-
Nmap扫描结果,目标主机192.168.56.1有五个端口处于开放状态:
- 135/tcp - 开放,提供 Microsoft RPC(远程过程调用)服务。
- 139/tcp - 开放,提供 NetBIOS 会话服务(Netbios-ssn),常用于网络邻居和旧式Windows文件共享。
- 445/tcp - 开放,提供 Microsoft Directory Services,用于Active Directory和其他目录服务。
- 902/tcp - 开放,似乎运行的是ISS RealSecure服务,这是一种早期的网络安全服务,现可能已不常用。
- 912/tcp - 开放,运行 Apex Mesh 服务,这是Apex Mesh Point的通信端口,一个无线mesh网络系统。
-
-
指定端口
-
扫描「指定端口」,使用 -p 参数,可以一次扫描单个端口、多个端口、或扫描一个范围的端口
nmap 192.168.0.100 -p 80
nmap 192.168.0.100 -p 1-80
nmap 192.168.0.100 -p 80,3389,22,21
nmap 192.168.0.100 -p 1-65535
nmap 192.168.0.100 -p- # -p- 等价于 -p 1-65535
-
-
-
指定扫描方式
-
「wireshark」抓包分析不同扫描方式的请求信息,判断这些方式的区别。
-
-
-
物理机阻止Ping探测的可能原因
- 防火墙设置
- 许多操作系统自带防火墙,默认情况下可能会阻止ICMP(Internet Control Message Protocol,Internet控制消息协议,Ping命令基于此协议)请求。
- 安全软件
- 安装的第三方安全软件也可能会阻止Ping探测。
- 网络策略或路由器设置
- 在企业或家庭网络中,如果路由器开启访问限制功能,也可能会影响Ping探测。
- 防火墙设置
- 虚拟机中 -Pn 选项的作用
- 在Nmap扫描工具中,-Pn选项的含义是将目标主机视为在线状态,跳过主机发现阶段(通常主机发现阶段会发送Ping请求来判断主机是否存活)。
- 举例说明
- 假设你在虚拟机中有一个运行特定服务的目标主机,由于虚拟机的网络设置或者主机内部的防火墙设置,该主机可能会阻止Ping请求。当你使用常规的Nmap扫描命令(如
nmap 192.168.x.x
)时,Nmap会先发送Ping请求来确定主机是否存活,如果Ping被阻止,Nmap可能会错误地判断主机为不存活状态。但是,当你使用nmap -Pn 192.168.x.x
命令时,Nmap会跳过Ping探测步骤,直接对目标主机的端口进行扫描,这样就可以获取到目标主机上端口的开放情况等信息,即使目标主机阻止了Ping请求。
- 假设你在虚拟机中有一个运行特定服务的目标主机,由于虚拟机的网络设置或者主机内部的防火墙设置,该主机可能会阻止Ping请求。当你使用常规的Nmap扫描命令(如
-
-
1 TCP全连接扫描
-
使用 -sT 参数进行TCP全连接扫描。
「全连接扫描」使用完整的三次握手建立链接,能够建立链接就判定端口开放,否则判定端口关闭。
-
-
- 如果端口开放,就会进行完整的三次握手,成功建立链接,扫描结果中,STATE字段显示为 open 。
-
-
2 SYN半链接扫描
-
使用 -sS 参数进行SYN半链接扫描。
「半链接扫描」只进行两次握手,对方返回确认帧(ACK=1)就判定端口开放,否则判定端口关闭。
-
-
3 隐秘扫描
-
隐秘扫描,只适用于Linux系统。
「隐秘扫描」向目标主机的端口发送TCP FIN包 或 Xmas tree包 或 Null包,如果收到RST响应包,就判定端口关闭,否则就判定端口开放或被屏蔽(open/filtered)
-
-
-
-
(2)主机探测:判断网段中有哪些主机在线。
-
扫描网段中有哪些主机在线,使用 -sP 参数,不扫描端口,只扫描「存活主机」。
本质上是Ping扫描,能Ping通有回包,就判定主机在线。
-
-
-
(3)服务识别:通过
-sV
参数,获取端口对应的服务版本。-
扫描端口时,默认显示端口对应的服务,但不显示服务版本。
想要识别具体的「服务版本」,可以使用 -sV 参数。
-
-
-
显示了端口 135 处于开放状态,服务为 msrpc(Microsoft Windows RPC),操作系统为 Windows。
-
-
(4)系统识别:通过
-O
参数,获取操作系统的版本信息。-
想要识别「操作系统版本」,可以使用 -O 参数。
-
-
使用 nmap 对 IP 地址 192.168.56.1 的 135 端口进行了扫描。结果显示该主机处于开机状态,135 端口开放,服务为 msrpc。操作系统检测为 Microsoft Windows 10 或 11,具体版本为 Windows 10 1607 - 11 23H2。扫描在 1.77 秒内完成。
-
提示:
- Nmap扫描出的系统版本并完全准确,仅供参考。
- 当识别不出具体版本时,Nmap会以概率的形式列举出可能的操作系统,如上图所示。
-
-
(5)结果导出:将扫描结果导出为文本格式和 XML 格式,便于后续分析。
-
Nmap的扫描结果可以保存到文件中,比如文本格式、XML格式。
-
1)将扫描结果导出为「文本格式」,结果原样保存。nmap 192.168.0.100 -p 80 -oN result.txt
-
-
-
2)将扫描结果导出为「xml格式」,结果的保存格式会发生变化。
-
-
-
六、思路改进与总结
- 在进行端口扫描时,可以尝试多种扫描方式以获取更准确的结果。
- 在进行主机探测时,可以考虑使用其他工具辅助判断主机状态。
- 在进行服务识别和系统识别时,要注意Nmap的结果可能不完全准确,需要结合其他信息进行判断。
- 在导出扫描结果时,可以根据实际需求选择合适的格式(如文本格式或XML格式)。
总结:通过本次实验,掌握了 Nmap 的基本使用方法,理解了不同扫描方式的原理和区别,能够使用 Nmap 进行端口扫描、主机探测、服务识别和系统识别,并能将扫描结果导出为文本格式和 XML 格式。
七、参考文献
- Nmap 官方文档:https://nmap.org/book/man.html
- Wireshark 官方文档:https://www.wireshark.org/docs/
- TCP/IP 协议详解:https://www.tcpipguide.com/
- Namp的使用.docx