Nmap简介与使用方法

简介

Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具,但是nmap也是有一些缺点的,比如说上手较难,但是难上手是相对的,与其他达到这种功能性的软件产品相比,还是比较容易上手的,但是这也不妨碍nmap成为世界千万安全专家列为必备的工具之一。

目前在市面上主要的端口扫描工具是X_Scan、SuperScan、nmap,其中在这里主推的是nmap,因为nmap具有以下的这一些优点:

1、多种多样的参数,丰富的脚本库,满足用户的个人定制需求,其中脚本库还提供了很多强大的功能任你选择

2、强大的可移植性,基本上能在所有的主流系统上运行,而且代码是开源的

3、详细的文档说明,和强大的社区团队进行支持,方面新人上手

安装

Nmap的图形化界面是Zenmap,分布式框架为Dnamp

使用

Nmap可以完成以下任务:

  • 主机探测
  • 端口扫描
  • 版本检测
  • 系统检测
  • 支持探测脚本的编写

Nmap在实际中应用场合如下:

  • 通过对设备或者防火墙的探测来审计它的安全性
  • 探测目标主机所开放的端口
  • 通过识别新的服务器审计网络的安全性
  • 探测网络上的主机

端口扫描工具,即借助工具,试图了解所扫描IP提供的计算机网络服务类型(网络服务均与端口号相关),从而发现攻击弱点,常见服务对应端口号:

服务 端口号
HTTP 80
HTTPS 443
Telnet 23
FTP 21
SSH, SCP, 端口重定向 22
SMTP 25
POP3 110
WebLogic 7001
TOMCAT 8080
WIN2003远程登录 3389
Oracle数据库 1521
MSSQL 1433
MYSQL 3306

主机发现的一些用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-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. 扫描方式选项

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    -sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。  

    -sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。

    -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。

    --scanflags <flags>: 定制TCP包的flags。

    -sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)

    -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。

    -sO: 使用IP protocol 扫描确定目标机支持的协议类型。

    -b <FTP relay host>: 使用FTP bounce scan扫描方式
  2. 端口参数与扫描顺序

    1
    2
    3
    4
    5
    6
    7
    8
    9
    -p <port ranges>: 扫描指定的端口  

    -F: Fast mode – 快速模式,仅扫描TOP 100的端口

    -r: 不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)。

    --top-ports <number>:扫描开放概率最高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口)

    --port-ratio <ratio>: 扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件。
  3. 版本侦测

    1
    2
    3
    4
    5
    6
    7
    8
    9
    -sV: 指定让Nmap进行版本侦测  

    --version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。

    --version-light: 指定使用轻量侦测方式 (intensity 2)

    --version-all: 尝试使用所有的probes进行侦测 (intensity 9)

    --version-trace: 显示出详细的版本侦测过程信息。

部分操作具体演示

  1. 用Nmap扫描特定IP地址

    1
    nmap <target ip>

  2. -vv对结果进行详细输出

  3. 自行设置端口范围进行扫描

    1
    nmap -p指定端口范围 <target ip>

  4. 指定端口号进行扫描

    1
    nmap -p指定端口 <target ip>

  5. 对目标进行Ping扫描

    1
    nmap -sP <target ip>

  6. 路由跟踪

    1
    nmap -traceroute <target ip>

  7. 扫描一个段的主机在线状况

    1
    nmap -sP <network address > </CIDR>

  8. 操作系统探测

    1
    nmap -O <target ip>

  9. 万能开关扫描

    1
    nmap -A <target ip>

  10. 其他扫描方式

SYN扫描:利用基本的SYN扫描方式测试其端口开放状态

1
namp -sS -T4 <target ip>

FIN扫描:利用FIN扫描方式探测防火墙状态。FIN扫描方式用于识别端口是否关闭,收到RST回复说明该端口关闭,否则说明是open或filtered状态

1
namp -sF -T4 <target ip>

ACK扫描:利用ACK扫描判断端口是否被过滤。针对ACK探测包,为被过滤的端口(无论打开或关闭)会回复RST包

1
namp -sA -T4 <target ip>

扫描前不进行Ping扫描测试

1
nmap -Pn <target ip>

如果有一个ip地址列表,将这个保存为一个txt文件,和nmap在同意目录下,扫描这个txt的所有主机,命令为

1
nmap -iL target.txt

版本检测扫描

1
nmap -sV <target ip

Nmap的帮助文档

1
nmap -help

refer: 扫描工具——Nmap用法详解

梦想还是要有的,万一实现了呢?