Nmap网络扫描工具

可以扫描到的信息

  • 开放的端口及在此端口上运行的服务协议 (如 ftp,ssh,telnet,http),及应用程序(如ISC Bind,Apache httpd,Solaris telnetd)
  • MAC地址
  • 网络距离(跳数)
  • 设备类型(如 打印机,路由器,多媒体设备|手机,通用)
  • 操作系统家族 (如Windows,Linux),版本号,主机名等信息

基本原理

  • 主机发现
    Nmap会发送四种不同类型的数据包来探测目标主机是否在线。
    1. ICMP echo request
    2. a TCP SYN packet to port 443
    3. a TCP ACK packet to port 80
    4. an ICMP timestamp request
  • 端口扫描
    确定目标主机的TCP/UDP端口的开放情况
    1. TCP SYN scanning。该方式发送SYN到目标端口,如果收到SYN/ACK回复,那么判断端口是开放的;如果收到RST包,说明该端口是关闭的。
    2. TCP connect scanning。使用系统网络API connect向目标主机的端口发起连接,如果无法连接,说明该端口关闭。
    3. TCP ACK scanning。向目标主机的端口发送ACK包,如果收到RST包,说明该端口没有被防火墙屏蔽;没有收到RST包,说明被屏蔽。
    4. TCP FIN/Xmas/NULL scanning。FIN扫描向目标主机的端口发送的TCP FIN包或Xmas tree包/Null包,如果收到对方RST回复包,那么说明该端口是关闭的;没有收到RST包说明端口可能是开放的或被屏蔽的(open|filtered)。
    5. UDP scanning。向目标主机的UDP端口发送探测包,如果收到回复“ICMP port unreachable”说明该端口关闭。
  • 版本侦测
    用于确定目标主机开放端口上运行的具体的应用程序及版本信息。
    原理为向TCP端口或UDP端口发送探测包,对收到的回复包进行对比匹配。
  • OS侦测
    操作系统侦测用于检测目标主机运行的操作系统类型及设备类型等信息。
    Nmap内部包含了2600多已知系统的指纹特征。将此指纹数据库作为进行指纹对比的样本库。分别挑选目标主机的一个open和closed的端口,向其发送经过精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹,然后进行匹配。

参考文献