一般情况下,Nmap用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。Nmap可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。
  功能:主机探测:探测网络上的主机,例如列出响应TCP和ICMP请求、icmp请求、开放特别端口的主机。 端口扫描:探测目标主机所开放的端口。 版本检测:探测目标主机的网络服务,判断其服务名称及版本号。 系统检测:探测目标主机的操作系统及网络设备的硬件特性。 支持探测脚本的编写:使用Nmap的脚本引擎(NSE)和Lua编程语言。主机发现原理:Nmap支持十多种不同的主机探测方式,比如发送ICMP ECHO/TIMESTAMP/NETMASK报文、发送TCPSYN/ACK包、发送SCTP INIT/COOKIE-ECHO包默认情况下,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
  依次发送四个报文探测目标机是否开启。只要收到其中一个包的回复,那证明目标机开启。使用四种不同类型的数据包可以避免因防火墙或丢包造成的判断错误。
  一、主机探测:
  命令参数
  -sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
  -sn: Ping Scan 只进行主机发现,不进行端口扫描。
  -Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。
  -PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。
  -PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。-PO[protocollist]: 使用IP协议包探测对方主机是否开启。
  -n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。
  --dns-servers <serv1[,serv2],...>: 指定DNS服务器
  --system-dns: 指定使用系统的DNS服务器
  --traceroute: 追踪每个路由节点
  例:
  1.nmap ip/域名
  针对ip地址或者域名进行扫描,确定主机在线情况及其端口的具体情况
  以下为扫描www.hnu.cn的端口情况

  2.全面扫描
  nmap -T4 -A -v ip/域名
  -A选项用于使用进攻性(Aggressive)方式扫描;-T4指定扫描过程使用的时序(Timing),总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4;-v表示显示冗余(verbosity)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。
  此命令对目标主机进行全面扫描,可以得到比较全面的信息,如主机是否开机,开放的端口以及该端口运行的应用程序、版本信息,主机设备类型,操作系统类型,路由路径等
  如下图对www.hnu.cn进行全面扫描,可以发现其开机状态,端口协议的版本,所用的加密方式,操作系统为linux等信息