Nmap是由Gordon Lyon设计,用来探测计算机网络上的主机和服务的一种安全扫描器。为了绘制网络拓扑图,Nmap发送特制的数据包到目标主机,然后对返回数据包进行分析。Nmap是一款枚举和测试网络的强大工具。我们俗称:网络扫描和嗅探工具。
从 https://nmap.org 这里下载。因为我是ubuntu系统,所以下载了:nmap-6.49BETA4.tar.bz2。
安装
$ tar xvf nmap-6.49BETA4.tar.bz2 $ cd nmap-6.49BETA4 $ ./configure && make $ sudo make install
当然你也可以直接用安装包管理器来安装:
$ sudo aptitude -y install nmap
nmap特点
主机探测 :探测网络上的主机,例如列出响应TCP和ICMP请求,开放特别端口的主机。
端口扫描 :沉测目标主机所开放的端口。
版本检测 :探测目标主机的网络服务,判断其服务名称及版本号。
系统检测 :探测目标主机的操作系统及网络设备的硬件特性。
支持探测脚本的编写 :使用Nmap的脚本引擎(NSE)和 Lua编程语言。
扫描
用主机名,域名和IP地址来扫描
用IP地址扫描
Nmap默认发送一个arp的ping数据包,来探测目标主机在1~10000范围内所开放的端口。示例:
$ nmap 192.168.137.1
用主机名扫描
$ nmap wwos
用域名扫描
$ nmap www.baidu.com
扫描使用"-v"选项
你可以看到下面的命令使用"-v"选项后给出了远程机器更详细的信息:
$ nmap -v www.baidu.com
加上-vv参数获得更加详细的信息
$ nmap -vv www.baidu.com
扫描多个IP
$ nmap 192.168.1.187 192.168.1.23
扫描整个子网
你可以使用*通配符来扫描整个子网或某个范围的IP地址
$ nmap 192.168.137.*
使用IP地址的最后一个字节扫描多台服务器
你可以简单的指定IP地址的最后一个字节来对多个IP地址进行扫描.例如:
$ nmap 192.168.137.195,196,197
从一个文件中扫描主机列表
如果你有多台主机需要扫描且所有主机信息都写在一个文件中,那么你可以直接让nmap读取该文件来执行扫描。先创建一个有IP地址的文件:
$ cat > ip localhost 192.168.137.195
接下来运行带“iL”选项的nmap命令来扫描文件中列出的所有IP地址。
$ nmap -iL ip
扫描一个IP地址范围
你可以在nmap执行扫描时指定IP范围
$ nmap 192.168.137.190-200
排除一些远程主机后再扫描
在执行全网扫描或用通配符扫描时你可以使用“-exclude”选项来排除某些你不想扫描的主机:
$ nmap 192.168.3.* -exclude 192.168.3.4
扫描操作系统信息和路由跟踪
使用nmap,你可以检测远程主机上运行的操作系统和版本。为了启用操作系统和版本检测,脚本扫描和路由跟踪功能,我们可以使用nmap的“-A”选项。
$ nmap -A www.baidu.com
从上面的输出你可以看到,nmap显示出了远程主机操作系统的TCP/IP协议指纹,并且更加具体的显示出远程主机上的端口和服务。
启用nmap的操作系统探测功能
使用选项“-O”和“-osscan-guess”也帮助探测操作系统信息。
$ sudo nmap -O www.baidu.com
扫描主机侦测防火墙
下面的命令将扫描远程主机以探测该主机是否使用了包过滤器或防火墙。使用“-sA”选项:
$ sudo nmap -sA www.baidu.com
扫描主机检测是否有防火墙保护
扫描主机检测其是否受到数据包过滤软件或防火墙的保护。使用-PN选项:
$ nmap -PN 192.168.3.4
找出网络中的在线主机
使用“-sP”选项,我们可以简单的检测网络中有哪些在线主机,该选项会跳过端口扫描其他一些检测。
$ nmap -sP 192.168.3.*
执行快速扫描
你可以使用“-F”选项执行一次快速扫描,仅扫描列表在nmap-services文件中的端口而避开所有其他端口。
$ nmap -F www.baidu.com
查看nmap的版本
你可以使用“-V”选项来检测你机子上nmap的版本。
$ nmap -V
顺序扫描端口
使用“-r”选项表示不会随机的选择端口扫描。
$ nmap -r www.baidu.com
打印主机接口和路由
你可以使用nmap的“-iflist”选项检测主机接口和路由信息。下面的输出你可以看到,nmap列举出了你系统上的接口以及它们各自的路由信息。
$ nmap --iflist
扫描特定端口
使用nmap扫描远程机器的端口有各种选项,你可以使用“-p”选项指定你想要扫描的端口,默认情况下nmap只扫描TCP端口。
$ nmap -p 80 www.baidu.com
扫描TCP端口
你可以指定具体的端口类型和端口号来nmap扫描。
$ nmap -p T:8888,80 www.baidu.com
扫描UDP端口
nmap -sU www.baidu.com
扫描多个端口
你可以使用选项“-p”来扫描多个端口。
$ nmap -p80,443 192.168.3.4
扫描指定范围内的端口
你可以使用表达式来扫描某个范围内的端口
$ nmap -p1-160 www.baidu.com
查找主机服务版本号
我们可以使用“-sV”选项找出远程主机上运行的服务版本。
使用TCP ACK(PA)和TCP Syn(PS)扫描远程主机
有时候包过滤防火墙会阻断标准的ICMP ping请求,在这种情况下,我们可以使用TCP ACK和TCP Syn方法来扫描远程主机。
$ nmap -PS www.baidu.com
$ nmap -PA www.baidu.com
使用TCP ACK扫描远程主机上特定的端口
$ nmap -PA -p22,80 www.baidu.com
路由跟踪
路由追踪功能,能够帮助你了解网络通行情况。通过路由追踪可以轻松的查出从我们电脑所在地到目标地之间所经过的网络节点,并可以看到通过各个节点所花费的时间。
$ sudo nmap --traceroute www.baidu.com
使用TCP Syn扫描最常用的端口
$ nmap -sT www.baidu.com