kali之Nmap (Network Mapper(网络映射器)

眼前多少难甘事,自古男儿当自强。这篇文章主要讲述kali之Nmap (Network Mapper(网络映射器)相关的知识,希望能为你提供帮助。
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
MS SQL* SEVER数据库sever
1433
mysql 数据库sever
3306
Nmap进行完整全面的扫描
nmap –T4 –A –v
其中-A选项用于使用进攻性(Aggressive)方式扫描;-T4指定扫描过程使用的时序(Timing),总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4;-v表示显示冗余(verbosity)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。
Nmap输出的是扫描目标的列表,以及每个目标的补充信息,至于是哪些信息则依赖于所使用的选项。  状态可能是  open(开放的),filtered(被过滤的),  closed(关闭的),或者unfiltered(未被过滤的)。  Open(开放的)意味着目标机器上的应用程序正在该端口监听连接/报文。  filtered(被过滤的) 意味着防火墙,过滤器或者其它网络障碍阻止了该端口被访问,Nmap无法得知 它是  open(开放的) 还是  closed(关闭的)。  closed(关闭的) 端口没有应用程序在它上面监听,但是他们随时可能开放。 当端口对Nmap的探测做出响应,但是Nmap无法确定它们是关闭还是开放时,这些端口就被认为是  unfiltered(未被过滤的) 如果Nmap报告状态组合  open|filtered  和  closed|filtered时,那说明Nmap无法确定该端口处于两个状态中的哪一个状态。 当要求进行版本探测时,端口表也可以包含软件的版本信息。当要求进行IP协议扫描时 (-sO),Nmap提供关于所支持的IP协议而不是正在监听的端口的信息。
除了所感兴趣的端口表,Nmap还能提供关于目标机的进一步信息,包括反向域名,操作系统猜测,设备类型,和MAC地址。
参数搭配:
Nmap 7.60SVN(https://nmap.org)
用法:nmap [扫描类型] [选项] {目标规格}
目标规格:
    可以通过主机名,IP地址,网络等
    例如:scanme.nmap.org,microsoft.com/24,192.168.0.1; 10.0.0-255.1-254
    -iL < 输入文件名> :从主机/网络列表中输入
    -iR < num hosts> :选择随机目标
    - 排除< host1 [,host2] [,host3],...> :排除主机/网络
    --excludefile < exclude_file> :从文件中排除列表
主机发现:
    -sL:列表扫描 - 只需列出要扫描的目标
    -sn:Ping扫描 - 禁用端口扫描
    -Pn:将所有主机视为联机 - 跳过主机发现
    -PS / PA / PU / PY [portlist]:对给定端口的TCP SYN / ACK,UDP或SCTP发现
    -PE / PP / PM:ICMP回显,时间戳和网络掩码请求发现探测
    -PO [协议列表]:IP协议Ping
    -n / -R:永远不要做DNS解析/总是解决[默认:有时]
    --dns-servers < serv1 [,serv2],...> :指定自定义DNS服务器
    --system-dns:使用操作系统的DNS解析器
    --traceroute:跟踪每个主机的跳转路径
扫描技术:
    -sS / sT / sA / sW / sM:TCP SYN / Connect()/ ACK / Window / Maimon扫描
    -sU:UDP扫描
    -sN / sF / sX:TCP空,FIN和圣诞节扫描
    --scanflags < flags> :自定义TCP扫描标志
    -sI < 僵尸主机[:探测端口]> :空闲扫描
    -sY / sZ:SCTP INIT / COOKIE-ECHO扫描
    -sO:IP协议扫描
    -b < FTP中继主机> :FTP反弹扫描
港口规格和扫描订单:
    -p < 端口范围> :仅扫描指定的端口
        例如:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
    --exclude-ports < 端口范围> :从扫描中排除指定的端口
    -F:快速模式 - 扫描比默认扫描更少的端口
-r:连续扫描端口 - 不要随机化
    --top-ports < number> :扫描< number> 最常见的端口
    - 端口比率< 比率> :扫描端口比< 比率> 更普遍
服务/版本检测:
    -sV:探测打开的端口以确定服务/版本信息
    --version-intensity < level> :从0(亮)到9(尝试所有探针)
    --version-light:限制为最有可能的探针(强度2)
    --version-all:尝试每一个探针(强度9)
    --version-trace:显示详细版本的扫描活动(用于调试)
脚本扫描:
    -sC:等同于--script = default
    --script = < Lua scripts> :< Lua scripts> 是逗号分隔的列表
                      目录,脚本文件或脚本类别
    --script-args = < n1 = v1,[n2 = v2,...]> :为脚本提供参数
    --script-args-file = filename:在文件中提供NSE脚本参数
    --script-trace:显示所有发送和接收的数据
    --script-updatedb:更新脚本数据库。
    --script-help = < Lua scripts> :显示有关脚本的帮助。
                      < Lua scripts> 是脚本文件或者逗号分隔的列表
                      脚本的类别。
操作系统检测:
    -O:启用操作系统检测
    --osscan-limit:限制操作系统检测到有前途的目标
    --osscan-guess:猜测操作系统更积极
时间和表现:
    采用< time> 的选项以秒为单位,或附加“ms”(毫秒),
    (秒),\'m\'(分钟)或\'h\'(小时)的值(例如30m)。
    -T < 0-5> :设定时间模板(越快越快)
    --min-hostgroup / max-hostgroup < size> :并行主机扫描组大小
    --min-parallelism / max-parallelism < numprobes> :探测器并行化
    --min-rtt-timeout / max-rtt-timeout / initial-rtt-timeout < time> :指定
            探测往返时间。
    --max-retries < tries> :端口扫描探测重传次数的上限。
    --host-timeout < time> :在此之后放弃目标
    - 扫描延迟/   - 最大扫描延迟< 时间> :调整探头之间的延迟
    --min-rate < number> :发送不低于每秒< number> 的数据包
    --max-rate < number> :发送数据包不会比每秒< number> 更快
防火墙/ IDS消除和防盗:
    -F; --mtu < val> :分段数据包(可选w /给定MTU)
    -D < decoy1,decoy2 [,ME],...> :用诱饵隐形扫描
    -S < IP_Address> :欺骗源地址
    -e < iface> :使用指定的接口
    -g /   -   source-port < portnum> :使用给定的端口号
    --proxies < url1,[url2],...> :通过HTTP / SOCKS4代理中继连接
    --data < 十六进制字符串> :附加一个自定义的有效载荷到发送的数据包
    --data-string < string> :附加一个自定义的ASCII字符串到发送的数据包
    --data-length < num> :追加随机数据到发送的数据包
    --ip-options < options> :发送指定ip选项的数据包
    --ttl < val> :设置IP生存时间字段
    --spoof-mac < mac地址/前缀/供应商名称> :欺骗您的MAC地址
    --badsum:发送具有伪造的TCP / UDP / SCTP校验和的数据包
OUTPUT:
    -oN / -oX / -oS / -oG < file> :输出扫描正常,XML,s | < rIpt kIddi3,
          和Grepable格式,分别给定的文件名。
    -oA < basename> :一次输出三种主要格式
    -v:提高详细程度(使用-vv或更多来获得更大的效果)
    -d:增加调试级别(使用-dd或更多以获得更好的效果)
    --reason:显示端口处于特定状态的原因
    - 打开:只显示打开(或可能打开)的端口
    --packet-trace:显示所有发送和接收的数据包
    --iflist:打印主机接口和路由(用于调试)
    --append-output:附加到指定的输出文件而不是clobber
    --resume < 文件名> :恢复中止的扫描
    --stylesheet < path / URL> :将XML输出转换为html的XSL样式表
    --webxml:Nmap.Org的参考样式表,以获得更多可移植的XML
    --no-stylesheet:阻止与XML输出相关联的XSL样式表
MISC:
    -6:启用IPv6扫描
    -A:启用操作系统检测,版本检测,脚本扫描和跟踪路由
    --datadir < dirname> :指定自定义Nmap数据文件的位置
    --send-eth /   -   send-ip:使用原始以太网帧或IP数据包进行发送
    - 特权:假设用户是完全特权的
    --unprivileged:假设用户缺少原始套接字权限
    -V:打印版本号
    -h:打印此帮助摘要页面。
例子:
    nmap -v -A scanme.nmap.org
    nmap -v -sn 192.168.0.0/16 10.0.0.0/8
    nmap -v -iR 10000 -Pn -p 80
-h;   --help  (打印帮助摘要面)打印一个短的帮助屏幕,列出大部分常用的 命令选项,这个功能与不带参数运行Nmap是相同的。
实例:
Nmap用于主机发现的一些用法
-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: 追踪每个路由节点
Nmap用于端口扫描的一些用法
1、扫描方式选项
-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、 端口参数与扫描顺序
[plain] view plain copy-p < port ranges> : 扫描指定的端口  
   
实例: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP协议、U代表UDP协议、S代表SCTP协议)  
    -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、 版本侦测的用法
版本侦测方面的命令行选项比较简单。
[plain] view plain copy-sV: 指定让Nmap进行版本侦测  
    --version-intensity < level> : 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。  
    --version-light: 指定使用轻量侦测方式 (intensity 2)  
    --version-all: 尝试使用所有的probes进行侦测 (intensity 9)  
    --version-trace: 显示出详细的版本侦测过程信息。
 
10、其他扫描方式
SYN扫描:利用基本的SYN扫描方式测试其端口开放状态
namp -sS -T4 < target ip>
FIN扫描:利用FIN扫描方式探测防火墙状态。FIN扫描方式用于识别端口是否关闭,收到RST回复说明该端口关闭,否则说明是open或filtered状态
namp -sF -T4 < target ip>
ACK扫描:利用ACK扫描判断端口是否被过滤。针对ACK探测包,为被过滤的端口(无论打开或关闭)会回复RST包
namp -sA -T4 < target ip>
扫描前不进行Ping扫描测试
nmap -Pn < target ip>
如果有一个ip地址列表,将这个保存为一个txt文件,和nmap在同意目录下,扫描这个txt的所有主机,命令为
nmap -iL target.txt
版本检测扫描
kali之Nmap (Network Mapper(网络映射器)

文章图片

【kali之Nmap (Network Mapper(网络映射器)】 

    推荐阅读