nmap是什么?
nmap(Network)是一款开源免费的网络设备发现和安全审查工具。
nmap能干什么?
Nmap用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。Nmap可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。
【主机发现】
目的:发现目标是否在线
原理:通过向网络上发送特定的数据包,并根据响应信息分析设备网络情况。
发的包主要包括 ICMP ECHO、TIMESTAMP、NETMASK、TCPSYN、ACK、SCTP INIT、COOKIE-ECHO
通过RST方式拒绝建联,确保扫描的安全性。
【端口扫描】
目的:用于确定目标主机的TCP/UDP端口的开放情况。
原理1:向目标端口发送TCP SYN包,不建立连接,隐蔽,效率高,安全。
1)收到SYN/ACK:端口开放,状态为 open
2)收到RST包:端口关闭,状态为 closed
3)未收到回复:端口被屏蔽,状态为 filtered
原理2:TCP connecting ,与目标设备建立TCP连接,如果无法连接,说明端口关闭。速度慢,低效,不安全。
原理3:TCP ACK,向目标端口发送ACK包,收到RST说明端口没有被防火墙屏蔽,否则被防火墙屏蔽。只能用于确定防火墙是否屏蔽某个端口。
原理4:还有好几种,待理解 ......
【版本侦测】
目的:用于确定目标主机开放端口上运行的应用程序及版本信息。
原理:
1)检查存活端口,过滤掉不存活的端口
2)TCP端口建立TCP连接。等待过程中接收到banner信息。nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比。查找对应应用程序的名字与版本信息。
3)如果2步骤中 banner 无法确定版本信息,发送其它探测包(即从nmap-services-probes中挑选合适的probe)
4)如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。
5)如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。
6)如果探测到应用程序是SunRPC,那么调用brute-force RPC grinder进一步探测具体服务。
【OS侦测】
目的:用于检测目标主机运行的操作系统类型及设备类型等信息。
原理:
1)Nmap内部包含了2600多已知系统的指纹特征(在文件nmap-os-db文件中)。将此指纹数据库作为进行指纹对比的样本库。
2)分别挑选一个open和closed的端口,向其发送经过精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。
3)将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列举出可能的系统。
【关键名词】
banner
参考:https://blog.csdn.net/aspirationflow/article/details/7694274