主动扫描技术nmap详解

主动扫描与被扫描目标有一个互动的过程,目标是可能知道自己在被扫描的;主动扫描一般都是针对目标发送特制的数据包,然后根据目标主机的反应来获得一些信息,帮助我们过滤无意义的主机,建立目标的网络拓扑,主要功能包括:

1. 目标主机是否在线

2. 目标主机的制定端口是否开放

3. 目标主机的操作系统

4. 目标主机上运行的服务等

kali里最优秀的主动扫描工具一定是nmap,nmap最早开发出来就是用来扫描端口的,后来功能慢慢增加,现在也能够通过调用脚本扫描一些漏洞

如果不加任何参数只打命令nmap的话,可以看到nmap的参数使用说明 。包括几大类:

  • 主机发现 HOST DISCOVERY
  • 扫描技术(方式)SCAN TECHNIQUES
  • 端口规格和扫描顺序 PORT SPECIFICATION AND SCAN ORDER
  • 服务/版本检测 SERVICE/VERSION DETECTION
  • 脚本扫描 SCRIPT SCAN
  • 操作系统检测 OS DETECTION
  • TIMING AND PERFORMANCE
  • FIREWALL/IDS EVASION AND SPOOFING
  • 输出 OUTPUT
  • 杂项 MISC
  • 示例 EXAMPLES

最简单的命令:nmap [目标IP] :扫描目标IP,返回主机活动状态以及常见的1000个端口状态及对应的默认服务。多个扫描目标时,IP地址可以不连续形如192.168.100.1 192.168.100.2 192.168.100.5,IP之间以空格间隔,也可以是一段形如192.168.100.1-100,还可以使用CIDR形如192.168.100.0/24

-sn  ping scan and disable port scan   此参数只执行ping操作,主要用于主机发现

-P及由-P延伸出的其他组合参数主要是用来进行“【主机发现】”。

进行主机发现时,nmap发送信息报,然后根据是否获得被测主机的响应报来识别,那么可以利用arp协议,ICMP协议以及TCP等支持回应的协议来进行探测。

扫描同一网段的时候,默认都是使用ARP扫描(即与参数-PR等同,可以在kali里打开wireshark,然后ping 192.168.100.0/24 -sn 查看具体的数据包情况)

网络层适合用于扫描的主要是ICMP协议,ICMP有查询和查错两种功能,NMAP利用了ICMP协议的查询功能(分为回送请求应答 -PE、时间戳应答 -PP、掩码地址请求应答 -PM)。需要注意的是,NMAP在执行扫描的时候能用arp的就会采用arp,也就是说如果使用nmap -PE命令时,后面的目标应该是不同网段的,这样抓包的时候才能抓到ICMP包。

传输层的TCP/UDP都可以用于扫描。主要是利用SYN包和ACK包,常用参数如下

-PS/PA/PU [portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports

从上图可以看出,执行SYN扫描时,扫描主机向被侦测主机发送一个SYN数据包,然后被测主机回一个SYN/ACK包,然后扫描主机不会回ACK包,而是回一个RST包,中断连接

 从上图可以看出,执行ACK扫描时,扫描主机向被侦测主机发送一个ACK数据包,被测主机因为没找到对应的SYN包,就会回一个RST包。

 UDP扫描是通过发送UDP数据包到目标主机并等待响应,来判断目标端口是否开放。如果目标返回ICMP不可达的错误(类型3,代码3),则说明端口是关闭的;如果得到正确的或适当的响应,则说明端口是开放的。

-PU:扫描只会对目标进行UDP Ping扫描。这种类型的扫描会发送UDP包来获得一个响应。注意:使用UDP Ping扫描方式,在NAT网络中会影响扫描结果。【经抓包试验,-PU不是进行udp扫描,还是进行类似-PS的扫描】

-sU表示这种扫描技术是用来寻址目标主机打开的UDP端口。它不需要发送任何的SYN包,因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机,并等待响应。如果返回ICMP不可达的错误消息,说明端口是关闭的;如果得到正确的或适当的回应,则说明端口是开放的。

【端口扫描】端口扫描的参数是-s以及由-s延伸出的其他组合参数,如-sS -sT -sA -sF -sN -sU等等

-sS是默认参数,即nmap不带任何参数时采用的就是-sS

例如: nmap -sS -p 443 www.baidu.com

-sS(SYN) -sA(ACK) -sF(FIN) 均是发送不完整的握手包

-sS俗称半开扫描。由于三次握手就没有完成,无法建立正常的TCP连接,因此这次扫描不会被记录到系统日志中。SYN扫描是nmap所采用的默认扫描方式,扫描速度极快,可以在一秒钟扫描上千个端口,也不容易被网络中的安全设备发现。

-sF FIN扫描方式是向目标端口发送一个FIN数据包,对于所有关闭的端口,目标系统应该返回RST标志,经常被用来探测防火墙。

-sN NULL扫描方式是向目标端口发送一个不包含任何标志的数据包,对于所有关闭的端口,目标系统应该返回RST标志。

nmap中对于端口给出了6种不同的状态:

  • open——在该端口有应用程序接收TCP连接或者UDP报文。
  • closed——closed并不意味着没有任何反应,状态为closed的端口是可访问的,这种端口可以接收nmap探测报文并做出响应。只是没有应用程序在open上监听。
  • filtered——存在目标网络数据包过滤,导致nmap无法确定该端口是否开放。
  • unfiltered——表明目标端口是可以访问的,但是nmap却无法判断它到底是open还是closed的。
  • open|filtered——无法确定端口是开放的还是被过滤了。
  • closed|filtered——无法确定端口是关闭的还是被过滤了。

-sT 执行了完整的三次握手 nmap -sT -p 443 www.baidu.com

-sU  udp端口扫描 ,这个扫描速度是相当慢的,也不可靠

其他一些常用的扫描端口的命令:

nmap -F [目标IP]            //扫描常见的100个端口

nmap -p [端口号] [目标IP]   //指定某一个端口

nmap -p "*"   //扫描所有端口

nmap --top-ports [number] [目标]   //扫描常用端口

nmap -p U:[UDP ports],T:[TCP ports] [目标]   //使用协议指定扫描端口

【操作系统扫描】

  -O: Enable OS detection
  --osscan-limit: Limit OS detection to promising targets //将操作系统检测限制在有希望的目标上
  --osscan-guess: Guess OS more aggressively  //更积极地猜测操作系统

后面这两个参数要有效,命令里必须有-O参数

nmap安装目录下有一个nmap-os.db的文件(可用记事本打开),里面存放了已收集到的各种操作系统的指纹。

nmap在执行操作系统扫描时会发送“探针”,然后根据回复的数据包与文件进行比对,从而猜测出目标主机的操作系统。同一个windows操作系统有很多版本,有很多不同的补丁,不同的语言,安装不同的软件,这些都会造成猜测无法很准确

【服务扫描】 -sV

使用nmap [目标IP]、nmap -sV [目标IP] 两种扫描出现的端口对应的服务版本有可能不一样。因为前者使用了nmap-services数据库(在namp安装目录下)中常用的端口-服务,可能并不是正在该端口监听的服务(服务的端口可能被改了);而使用-sV之后,才是真正的对目标服务进行了扫描。服务探针则存放于nmap-probes数据库里(在namp安装目录下)。

进行服务发现的顺序:

1.首先进行端口扫描:默认情况下使用SYN扫描。

2.其次进行服务识别:发送探针报文,根据得到的返回确认值确认服务。

3.最后进行版本识别:发送探针报文,根据得到的返回报文信息分析得出服务版本。

可以使用以下选项打开和控制版本检测:

  • -sV——进行版本探测
  • --allports——不为版本探测排除任何端口。nmap在进行版本探测时不会对目标的全部端口进行扫描,而是会跳过一些端口,如果确实有必要的话,可以使用这个参数来扫描所有的端口
  • --version-intensity [数字]——设置版本扫描强度,数值越高,服务越有可能被正确设别。然而,高强度扫描花更多的时间。强度值必须在0~9之间,默认值为7
  • --version-light——打开轻量级模式,相当于--version-intensity 2
  • --version-all——尝试每个探测,相当于--version-intensity 9
  • --version-trace——跟踪版本扫描活动,打印出关于正在进行的扫描的详细调试信息
  • -sR——RPC扫描,判断端口是否为RPC端口,是则可以确定版本号

 【输出】: -oX  [存放路径和文件名]          //将结果输出到指定路径下的XML文件

【脚本功能】 nmap通过NSE脚本,扩展了其漏洞扫描的能力。脚本存放于nmap目录下的scripts目录里。可以到官网下载更新的脚本

  •  nmap -p 80,443 --script http-methods [目标]            #通过使用脚本的名字来调用脚本
  • nmap --script safe,discovery [目标]                    #使用种类的名字来调用一个分类中的全部脚本
  • nmap --script /Nmap/scripts/banner.NSE [目标]          #使用指定路径的方式来执行NSE脚本
  • nmap --script /NSE/user-defined/ [目标]                #执行文件夹中的全部脚本
  • nmap -sV --script "not exploit" [目标]           #使用除了exploit分类意外的所有脚本对目标进行检测
  • nmap --script "snmp-*" [目标]                          #使用所有与SNMP相关的脚本

例子: nmap --script ftp-vsftpd-backdoor 192.168.107.130 

  这里显示了该漏洞存在以及对应的CVE编号

 脚本扫描常用命令:

nmap --script=auth [目标IP]       //弱口令扫描

nmap --script=vuln [目标IP]   //扫描常见漏洞

nmap --script=ftp-brute.nse [目标IP]  //扫描弱口令账号,但是所用字典很小

nmap -p 80 --script=http-enum.nse ip  //扫描WEB敏感目录

其他常用参数:

-T4   //针对TCP端口禁止动态扫描延迟超过10ms

-iL   //读取主机列表,例如,“nmap -iL d:\ip.txt”

-A   //全面系统检测、启用脚本检测、扫描等

-v   // 显示扫描过程,推荐使用

-Pn //有些防火墙禁止ping命令。可以使用此选项进行扫描

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Nmap是一款著名的端口扫描工具,其最初是运行在Unix系统下的,但后来也有用户将其移植到Windows等操作系统中。 端口扫描是指扫描目标主机的端口开放情况,以便判断该主机所运行的服务。Nmap可以通过TCP、UDP等不同的扫描方式进行端口扫描,并提供了多种不同的扫描模式,比如快速扫描模式、基础扫描模式、操作系统指纹识别等。在使用Nmap进行端口扫描时,用户可以选择不同的扫描选项,如指定扫描端口范围、扫描速度、是否进行IP地址解析等。 Nmap常用于网络渗透测试、漏洞扫描等安全领域,因其具有灵活性和强大的功能而备受青睐。在使用Nmap时,用户需要了解其基本原理和操作技巧,以便更好地利用其功能进行安全评估和漏洞发现。此外,Nmap也有一些相应的GUI工具和第三方扩展可供使用,以帮助用户更加便捷、高效地使用该工具。 ### 回答2: Nmap是一款流行的网络安全工具,主要用于端口扫描、OS侦测和服务识别等。其可以在Windows操作系统下运行,并提供了Graphical User Interface(GUI)和Command Line Interface(CLI)两种操作方式。 在使用Nmap进行端口扫描时,用户可以通过设置不同的扫描选项来满足不同的需求。例如,用户可以使用-sS选项进行TCP SYN扫描,使用-sU选项进行UDP扫描,使用-Pn选项跳过主机存活性检测等。同时,用户还可以使用不同的扫描程序进行快速或全面的扫描。 除了端口扫描外,Nmap还提供了OS侦测和服务识别等功能。其通过对目标主机的网络活动进行分析,判断目标主机的操作系统类型和版本、开放的服务及其版本等信息。 不过,需要注意的是,使用Nmap进行端口扫描可能会触犯法律,特别是未经授权扫描对方网络。因此,在使用Nmap时需要遵守相关法规和道德规范,避免给自己和他人带来不必要的麻烦。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值