nmap一般使用方法及其原理

Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具。软件名字Nmap是Network Mapper的简称。Nmap最初是由Fyodor在1997年开始创建的。随后在开源社区众多的志愿者参与下,该工具逐渐成为最为流行安全必备工具之一。最新版的Nmap6.0在2012年5月21日发布,详情请参见:www.nmap.org

一般情况下,Nmap用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。Nmap可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。

Nmap包含四项基本功能:

  1. 主机发现(Host Discovery)

  2. 端口扫描(Port Scanning)

  3. 版本侦测(Version Detection)

  4. 操作系统侦测(Operating System Detection)

所有功能也可以通过--help来展现

nmap --help

主机发现

主机发现发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。Nmap支持十多种不同的主机探测方式,比如发送ICMP ECHO/TIMESTAMP/NETMASK报文、发送TCPSYN/ACK包、发送SCTP INIT/COOKIE-ECHO包,用户可以在不同的条件下灵活选用不同的方式来探测目标机。

    -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 -sn 192.168.1.0/24



端口扫描

常见的扫描方式有TCP SYN scanning,TCP connect scanning,TCP ACK scanning,TCP FIN/Xmas/NULL scanning,UDP scanning等

Nmap通过探测将端口划分为6个状态:

    open:端口是开放的。

    closed:端口是关闭的。

    filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态。

    unfiltered:端口没有被屏蔽,但是否开放需要进一步确定。

    open|filtered:端口是开放的或被屏蔽。

    closed|filtered :端口是关闭的或被屏蔽。

扫描方式

      -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扫描方式

扫描参数

    -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文件。

基本用法   -sV是查看版本



版本侦测

版本侦测主要分为以下几个步骤:

  1. 首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。

  2. 如果是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中Probe TCP NULL q||对应的totalwaitms)。通常在等待时间内,会接收到目标机发送的“WelcomeBanner”信息。nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比。查找对应应用程序的名字与版本信息。

  3. 如果通过“Welcome Banner”无法确定应用程序版本,那么nmap再尝试发送其他的探测包(即从nmap-services-probes中挑选合适的probe),将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。

  4. 如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。

  5. 如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。

  6. 如果探测到应用程序是SunRPC,那么调用brute-force RPC grinder进一步探测具体服务。

参数

    -sV: 指定让Nmap进行版本侦测

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

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

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

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

基本用法

nmap -sV targetip



操作系统侦测

 


    -O: 指定Nmap进行OS侦测。

    –osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。

    –osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。

sudo nmap -O targetip

 

 

参考:https://blog.csdn.net/qq_34398519/article/details/89055991

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sweelg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值