nmap的使用


Nmap相关参数

  • 设置扫描目标的相关参数

    • -iL: 从文件中导入目标主机或者目标网段
    • -iR: 随机选择目标主机
    • –exclude: 后面跟的主机或网段不在扫描范围内
    • –excludefile: 导入文件中的主机或网段
  • 与主机发现方法相关的参数

    • -sL: List Scan(列表扫描) ,仅列举制定目标的IP,不进行主机发现
    • -sn: Ping Scan, 值进行主机发现,不进行端口扫描
    • -Pn: 将所有制定的主机视作已开启,跳过主机发现的过程
    • -PS/PA/PU/PY[portlist]: 使用TCP SYN/ACK或SCTP INIT/ECHO方式来发现。
    • -PE/PP/PM: 使用ICMP echo, timestamp,netmask请求包发现主机。
    • -PO[portlist]: 使用IP协议包探测主机是否开启
    • -n/-R: -n表示不进行DNS解析,-R表示总是进行DNS解析
    • –dns-server <serv1[,serv2],…>: 指定dns服务器
    • –system-dns: 指定使用系统的dns
    • –traceroute: 追踪每个路由节点
  • 与常见的端口扫描方法相关的参数

    • -sS/sT/sA/sW/sM: 指定使用TCP SYN/Connect()/ACK/Window/Mainmon scans的方式对目标主机进行扫描
    • -sU: 指定使用UDP的方式确定目标主机的UDP端口状态
    • -sN/sF/sX: 指定使用TCP Null/FIN/Xmas scan秘密扫描的方式协助探测对方的TCP端口状态
    • –scanflags: 定制TCP包中的flags
    • -sI <zombie host[:probeport]>: 指定使用Idle scan的方式扫描目标主机(前提是需要找到合适的zombie host)
    • -sY/sZ: 使用SCTP INIT/COOKIE-ECHO扫描SCTP协议端口的开放状态
    • -sO: 使用IP protocol扫描确定目标机支持的协议类型
    • -b: 使用FTP bounce scan扫描方式
  • 跟端口参数与扫描顺序的设置相关的参数

    • -p :扫描指定的端口
    • -F : Fast mode(快速模式),仅扫描TOP 100的端口
    • -r: 不进行端口随机打乱的操作(如无该参数,Nmap会将要扫描的端口一随机顺序的方式进行扫描,让Nmap的扫描不易被对方防火墙检测到)
    • –top-ports:扫描开放概率最高的number个端口(Nmap的作者曾做过大规模的互联网扫描,以次统计网络上各种端口开放的的概率,并排列出最有可能开放的端口的列表,具体可以参见nmap-services文件。默认情况下,Nmap会扫描最有可能的1000个TCP端口)
    • –port-ratio:扫描指定频率以上的端口,与上述–top-port类似,这里以概率作为参数。概率大于–port-ratio的端口才被扫描,显然参数必须在0和1之间想了解概率的范围可以查看nmap-services文件
  • 与版本探测相关的参数

    • -sV: 指定让Nmap进行版本探测
    • –version-light: 使用轻量级探测方式
    • –version-intesity:指定版本探测的强度(0-9),默认为7,数值越高探测出的服务越准确,但是运行时间比较长
    • –version-all: 尝试所有的probes进行探测(intensity9)
    • –version-trace: 显示出详细的版本侦测过程的信息

扫描命令格式:

Nmap+扫描参数+目标地址或网段

nmap -T4 -A -v ip

其中-A表示使用进攻性(Agressive)方式扫描: -T4表示指定扫描过程中使用的时序(Timing),共有6个等级(0-5),级别高,扫描速度越快,但也容易被防火墙或者IDS检测并屏蔽掉,在通信网络状况良好的情况下推荐使用-T4 -v(verbosity)表示冗余信息,在扫描过程中显示扫描细节,有助于用户了解当前扫描状态

常用参数:

-sS:指定对主机扫描的方式

-Pn:跳过ping命令的逐句发现过程,认为主机全部存活

常用方法

Nmap参数较多但是通常用不到那么多

1. 扫描单个目标地址

在Nmap后面直接添加目标地址即可扫描

nmap 192.168.1.28

image-20210904011830903扫描结果

2. 扫描多个地址

如果目标地址不在同一个网段,或者在同一个网段但不连续且数量不多。可以使用该方法进行扫描

nmap 192.168.1.28 192.168.1.0

image-20210904011842375扫描两个地址

3. 扫描一个范围内的地址

可以指定扫描一个连续的网段,中间使用-连续,例如,下列命令表示扫描范围为192.168.1.20-192.168.1.30

nmap 192.168.1.20-30

image-20210904011858167扫描一个范围内的目标地址

4. 扫描目标地址所在的某个网段

以C段为列,如果目标是一个网段,则可以通过添加子网掩码的方式扫描,下列扫描的范围是192.168.1.0-192.168.1.255

nmap 192.168.1.20/24

image-20210904011912932扫描个C段的目标地址

5. 扫描主机列表targets.txt中的所有网址

扫描targets.txt中的地址或者网段,此处导入的是绝对路径,若targets.txt与nmap.app在同一目录下直接引用文件名即可

image-20210904011926319查看nmap的路径

nmap -iL /users/xxxxx/nmap/target.txt

image-20210904011940963扫描指定文本

6. 扫描除一个目标地址外的所有目标地址

下列命令表示扫描除192.168.1.1之外的其他192.168.1.x地址,

nmap 192.168.1.1/24 -exclude 192.168.1.1

image-20210904011959928扫描除一个目标地址之外的所有目标地址

7. 扫描除某一个文件的目标地址之外的所有目标地址

下列命令表示扫描除target.txt文件中涉及的地址或网段之外的目标地址

nmap 192.168.1.1/24 -excludefile /users/xxxx/nmap/target.txt

image-20210904012013721扫描某一个文件之外的目标地址

8. 扫描某一个目标地址的21,22,23,80端口

如果不需要对目标主机进行全端口扫描,只想探测他是否开放了某一端口,那么使用-p参数指定端口号

nmap 192.168.43.60 -p 80,21,22,23

image-20210904012023837扫描指定的端口

9. 对目标地址进行路由跟踪

下列命令表示对目标地址进行路由跟踪

nmap --traceroute 192.168.43.60

image-20210904012033707对目标地址进行路由跟踪

10. 扫描目标地址所在的C段的在线状况

下列目标表示扫描目标地址所在的C段的在线状况

nmap -sP 192.168.43.60/24

image-20210904012044284扫描目标地址所在C段的在线状况

11. 目标地址的操作系统指纹识别

下列命令表示通过指纹识别技术识别目标地址的操作系统的版本

nmap -O 192.168.43.60

image-20210904012054867扫描目标地址的操作系统

12. 目标地址提供额服务版本检测

下列命令表示目标地址开放的端口对应的服务版本信息

nmap -sV 192.168.43.60

image-20210904012111473检测目标地址开放端口对应的服务版本

13. 探测防火墙的状态

在实战中,可以利用FIN扫描的方式探测防火墙的状态。FIN扫描用于识别端口是否关闭,收到RST恢复说明端口关闭,否则就是open或者filtered的状态

nmap -sF -T4 192.168.43.60

image-20210904012123221探测防火墙的状态

状态识别

Nmap输出的是扫描的列表,包括端口号,端口状态,服务名称,服务版本以及协议

状态 含义
open 开放的,表示应用程序正在监听该端口的连接,外部可以访问
filtered 被过滤的,表示端口被防火墙或者其他网络设备阻止,不能访问
closed 关闭的,表示目标主机未开启端口号
unfiltered 未被过滤的,表示Nmap无法确定端口的所在状态,需进一步探测
open|filtered 开放的或被过滤的,Nmap不能被识别
closed|filtered 关闭的或被过滤的,Nmap不能被识别

常见的6种Nmap端口状态及其含义

Nmap进阶

脚本介绍

Nmap的脚本默认存在/usr/local/share/nmap/scripts(MAC)文件夹下面,

Nmap脚本主要分为以下几类:

  • Auth:负责处理鉴权证书(绕过鉴权)的脚本
  • Broadcast:在局域网内探测更多服务的开启情况,如DHCP/DNS/SQLServer等
  • Brute:针对常见的应用提供暴力破解的方式,如HTTP/SMTP等
  • Default:使用-sC或-A选项扫描时默认的脚本,提供基础的脚本扫描能力
  • Discover:对网络进行更多的信息收集,如SMB美剧,SNMP查询等
  • Dos:用于进行拒绝服务攻击
  • Exploit:利用已知的漏洞入侵系统
  • External:利用第三方的数据库或资源,例如进行whois解析
  • Fuzzer:模糊测试脚本,发送异常的包到目标机,探测出潜在的漏洞
  • Intrusive:入侵性脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
  • Malware:探测目标机是否感染了病毒,开启后门等信息
  • Safe:此类的与Intrusive相反,属于安全性脚本
  • Version:负责增强服务与版本扫描功能的脚本
  • Vuln:负责检查目标机是否有常见的漏洞

2. 常用脚本

用户可以根据需要设置–script=类别进行扫描,常用的参数如下所示

  • -sC/–script=default: 使用默认的脚本进行扫描
  • –script=: 使用某个脚本进行扫描
  • –script-args=key1=value1,key2=value2……:改参数用于传递脚本里的参数,key1是参数名,该参数对用value这个值,如有更多的参数,使用逗号连接。
  • -script-args-file=filename: 使用文件为脚本提供参数
  • –script-trace: 如果设置该参数,则显示脚本执行过程中发送与接收的数据
  • –script-updatedb: 在Nmap的scripts目录里有一个script.db文件,该文件保存了当前Nmap可用的脚本,类似一个小型数据库,如果我们开启Nmap并调用了次参数, 则Nmap会自省扫描scripts的目录中的扩展脚本,进行数据苦更新。
  • –script-help: 调用该参数之后,Nmap会输出该脚本对应的脚本使用参数,以及详细的介绍信息

实例

1. 鉴权扫描

使用–scrip=tauth,可以对目标主机或目标主机所在的网段进行弱口令检测

nmap --script=auth 192.168.1.28

image-20210904012141979鉴权扫描

2. 暴力破解攻击

Nmap具有暴力破解的功能,可对数据库,SMB,SNMP等进行简单密码的暴力破解

nmap --script=brute 192.168.43.60

image-20210904012155157暴力破解攻击

3. 扫描常见的漏洞

Nmap具有漏洞扫描功能,可以检查目标主机或网段是否存在常见的漏洞

nmap --script=vuln 192.168.43.60

image-20210904012207752扫描常见的漏洞

4. 应用服务扫描

Nmap具有很多常见的应用服务扫描脚本,例如VNC服务,MySQL服务,Telnet服务,Rsync服务等,此处以VNC为例

map --script=realvnc-auth-bypasss 192.168.1.28

image-20210904012218387应用服务扫描

5. 探测局域网内更多应用服务开启的情况

输入以下的命令即可探测局域网内更多服务开启的状况

nmap -n -p 445 --script=broadcast 192.168.1.28

image-20210904012240261探测局域网内更多服务开启的状况

6. whois解析

利用第三方的数据库或资源查询目标地址的信息,例如进行Whosi解析

nmap -script external baidu.com

文章作者: 尘落
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 尘落 !
评论
  目录