原理
NMap,也就是Network Mapper,用来扫描网络上计算机开放的网络连接端口。它是网络管理员必用的软件之一,用以评估网络系统安全。
正如大多数被用于网络安全的工具,NMap也是不少黑客及骇客(又称脚本小子)爱用的工具 。
系统管理员可以利用NMap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。
Nmap指令介绍
指令意义 |
指令示例 |
扫描单机端口 |
nmap 192.168.1.12 |
扫描IP段端口 |
nmap 192.168.1.2-200 |
扫描指定端口 |
namp -p 21,80,3389 192.168.1.12 |
扫描端口段 |
nmap -p 1-65535 192.168.1.12 |
半开连接扫描 |
nmap -sS 192.168.1.12 |
全连接扫描 |
nmap -sT 192.168.1.12 |
显示banner信息 |
nmap -sV 192.168.1.12 |
TCP FIN 扫描Unix系统 |
nmap -sF 192.168.1.12 |
TCP NULL 扫描Unix系统 |
nmap -sN 192.168.1.12 |
TCP Xmax 扫描Unix系统 |
nmap -sX 192.168.1.12 |
扫描原理
全连接扫描
全连接扫描(TCP Connect扫描),通过调用socket函数connect()连接到目标计算机上,完成一次完整的三次握手过程。如果端口处于侦听状态,那么connect()就能成功返回。否则,这个端口不可用,即没有提供服务。
优点
稳定可靠,不需要特殊的权限。
缺点
扫描方式不隐蔽,服务器日志会记录下大量密集的连接和错误记录 ,并容易被防火墙发现和屏蔽。
半连接扫描
半连接扫描(TCP SYN扫描),扫描器向目标主机端口发送SYN包。如果应答是RST包,那么说明端口是关闭的;如果应答中包含SYN和ACK包,说明目标端口处于监听状态,再传送一个RST包给目标机从而停止建立连接。由于在SYN扫描时,全连接尚未建立,所以这种技术通常被称为半连接扫描。
优点 是隐蔽性较全连接扫描好,一般系统对这种半扫描很少记录。 |
缺点 通常构造SYN数据包需要超级用户或者授权用户访问专门的系统调用。 |
隐蔽扫描技术
隐蔽扫描是指在网络端口扫描过程中隐蔽自身的技术。具体来讲,就是能够不被目标系统的日志机制,扫描监测系统和入侵检测系统扑捉,绕过防火墙而侦测到目标主机运行服务的扫描技术。NMap下的相关扫描方式有TCP FIN扫描、TCP NULL 扫描和TCP Xmax扫描。
扫描方式 |
记号 |
反馈 |
FIN扫描 |
FIN |
若端口关闭,反馈RST数据包,否则无反馈 |
NULL扫描 |
均不标记 |
若端口关闭,反馈RST数据包,否则无反馈 |
Xmax扫描 |
URG、PSH、FIN |
若端口关闭,反馈RST数据包,否则无反馈 |
优点 扫描隐蔽 |
缺点 对于Unix系统有效,对于Windows系统无效。 |
实验步骤
Zenmap GUI
- 中找到NMap,并打开Zenmap GUI
- 点击菜单栏中的【Scan】,点击【New Windows】,即可创建新的扫描窗口,并可以输入192.168.1.3。如图2所示
图2 New Windows扫描窗口
- 在Profile框格中,点击右侧小三角号,即可选择扫描方式,在此处可以选择【Regular scan】。点击右侧【Scan】按钮即可进行扫描,经过一段时间之后,即可得到扫描结果,如图3。
图3选择扫描方式、开始扫描并得到扫描结果
- 点击【Services】和【Prots/Hosts】即可查看目标主机开启的服务所对应的窗口。
图4查看瘃开启的服务所对应的窗口
命令行模式
- 打开cmd,输入命令【nmap】即可得到命令帮助信息。如图5所示
图5 nmap的命令帮助信息
- 在命令行下输入命令【nmap 192.168.1.3】,进行Regular Scan。如图6所示
图6 Regular Scan的扫描结果
- 在命令行下输入命令【nmap -p 21,22,80,3389 192.168.1.3】,对指定的21,22,80,3389端口进行扫描。如图7所示
图7对指定端口进行扫描的结果
- 在命令行输入【nmap -sT 192.168.1.3】,对目标主机进行全连接扫描。全连接扫描完成完整的三次握手过程,稳定可靠但容易被日志记录。此种方法花费时间可能较长。如图8所示
图8对目标主机进行全连接扫描的结果
- 在命令行输入【nmap -sS 192.168.1.3】,对目标主机进行半开连接扫描。扫描器向目标主机发送SYN包测试主机是否监听某个端口而不进行全连接。此种方法比全连接扫描方式隐蔽。如图9所示
图9对目标主机进行半开连接扫描的结果
- 输入命令【nmap -sV 192.168.1.3】,用以显示banner信息。如图10所示
图10显示banner信息的结果
- 输入命令【nmap -oX 1.xml 192.168.1.3】,即将扫描结果以xml的形式输出,文件名为【1.xml】。如图11所示
图11使用以xml文件格式输出的命令
- 保存文档的位置在【C:\Documents and settings\Administrator】,双击保存好的【1.xml】文件,即可查看结果。如图12所示
图12查看保存的xml文件
- 在命令行界面,nmap命令也可以组合使用,在nmap命令行界面使用指定端口扫描、指定扫描类型为半开连接扫描的结果如下。如图13所示。
图13使用扫描目标端口的结果
思考题
❓使用NMap的目的在于什么?
❗使用NMap可以实现对主机名、域名、网络、IP地址的扫描,还可以扫描目标主机开启的端口、对方使用的系统信息、Banner信息,还支持基于TCP/UDP方式以及基于ARP的扫描,支持脚本扫描。对于这些功能的组合使用,可以实现下列功能:
- 探测一组主机是否在线;
- 扫描主机端口,嗅探所提供的网络服务;
- 可以推断主机所用的操作系统;
- 隐秘地探测工作环境中未经批准使用的服务器;
- 搜集目标电脑的设定;