Nmap是由Gordon Lyon设计,用来探测计算机网络上的主机和服务的一种安全扫描器。为了绘制网络拓扑图,Nmap发送特制的数据包到目标主机,而后对返回数据包进行分析。Nmap是一款枚举和测试网络的强大工具。咱们俗称:网络扫描和嗅探工具。shell
从 https://nmap.org 这里下载。由于我是ubuntu系统,因此下载了:nmap-6.49BETA4.tar.bz2。编程
安装
ubuntu
$ 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编程语言。spa
扫描
用主机名,域名和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