Nmap (“Network Mapper”) is an open source tool for network exploration and security auditing. It was designed to rapidly scan large networks, although it works fine against single hosts. While Nmap is commonly used for security audits, many systems and network administrators find it useful for routine tasks such as network inventory, managing service upgrade schedules, and monitoring host or service uptime.

一句话,Nmap 是一款开源的网络探测及安全审核工具.可以在这里看到具体说明,可以在这里下载到最新版本。

nmap的使用方法:

-sT	TCP connect()扫描,这是最基本的TCP扫描方式。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。
-sS	TCP同步扫描(TCP SYN),因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包。
-sF,-sX,-sN	秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式。这些扫描方式的理论依据是:关闭的端口需要对你的探测包回应RST包,而打开的端口必需忽略有问题的包(参考RFC 793第64页)。
-sP	ping扫描,用ping方式检查网络上哪些主机正在运行。当主机阻塞ICMP echo请求包是ping扫描是无效的。nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。
-sU	如果你想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以使用此选项。
-sA	ACK扫描,这项高级的扫描方法通常可以用来穿过防火墙。
-sW	滑动窗口扫描,非常类似于ACK的扫描。
-sR	RPC扫描,和其它不同的端口扫描方法结合使用。
-b	FTP反弹攻击(bounce attack),连接到防火墙后面的一台FTP服务器做代理,接着进行端口扫描。
-P0	在扫描之前,不ping主机。
-PT	扫描之前,使用TCP ping确定哪些主机正在运行。
-PS	对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。
-PI	设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。
-PB	这是默认的ping扫描选项。它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。
-O	这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志,也就是操作系统类型。
-I	打开nmap的反向标志扫描功能。
-f	使用碎片IP数据包发送SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度,使其无法知道你的企图。
-v	冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。
-S <IP>	在一些情况下,nmap可能无法确定你的源地址(nmap会告诉你)。在这种情况使用这个选项给出你的IP地址。
-g port	设置扫描的源端口。一些天真的防火墙和包过滤器的规则集允许源端口为DNS(53)或者FTP-DATA(20)的包通过和实现连接。显然,如果攻击者把源端口修改为20或者53,就可以摧毁防火墙的防护。
-oN	把扫描结果重定向到一个可读的文件logfilename中。
-oS	扫描结果输出到标准输出。
-oX 扫描结果输出到XML文件
--host_timeout	设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制。
--max_rtt_timeout	设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约9000毫秒。
--min_rtt_timeout	设置nmap对每次探测至少等待你指定的时间,以毫秒为单位。
-M count	置进行TCP connect()扫描时,最多使用多少个套接字进行并行的扫描。
-iL filename	从filename文件中读取扫描的目标。
-iR	让nmap自己随机挑选主机进行扫描。
-p	端口 这个选项让你选择要进行扫描的端口号的范围。如:-p 20-30,139,60000。
-exclude	排除指定主机。
-excludefile	排除指定文件中的主机。

eg:

nmap  xx.xx.xx.1-254 (scan all of 254 ip port)

Nmap 在root权限下可以提供更多的信息,例如判断对端操作系统,发送 SYN-PACKET 接受ACK,基于上面所说的”这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包” client端在接收到scan端的SYN packet之后 会回复一个ACK 响应

eg:

[root@db-41 ~]# nmap -sS -O 10.0.0.14

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2013-03-13 00:14 CST
Interesting ports on dca-srv-0153.idc.yihaodian.com (10.0.0.14):
Not shown: 1677 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
1521/tcp open  oracle
3306/tcp open  mysql
MAC Address: F0:4D:A2:3C:BE:07 (Unknown)
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.7 - 2.6.11
Uptime 5.344 days (since Thu Mar  7 15:59:46 2013)

Nmap finished: 1 IP address (1 host up) scanned in 3.355 seconds

你也可以使用-oX 将输出结果写入到file中。

eg:

[root@db-41 ~]# nmap -sS -O -oX louis.xml 10.0.1.10

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2013-03-13 00:17 CST
Interesting ports on dcb-srv-0177-lp2.idc.yihaodian.com (10.0.1.10):
Not shown: 1662 closed ports
PORT      STATE SERVICE
13/tcp    open  daytime
22/tcp    open  ssh
25/tcp    open  smtp
37/tcp    open  time
111/tcp   open  rpcbind
199/tcp   open  smux
427/tcp   open  svrloc
512/tcp   open  exec
513/tcp   open  login
514/tcp   open  shell
657/tcp   open  unknown
1522/tcp  open  rna-lm
6112/tcp  open  dtspc
9090/tcp  open  zeus-admin
32770/tcp open  sometimes-rpc3
32771/tcp open  sometimes-rpc5
32772/tcp open  sometimes-rpc7
32777/tcp open  sometimes-rpc17
Device type: general purpose
Running: FreeBSD 5.X
OS details: FreeBSD 5.0-RELEASE

Nmap finished: 1 IP address (1 host up) scanned in 2.245 seconds

之前的一个RAC 案例中 即使用了Nmap 来tracing了 HAIP的问题