1-1 nmap

1-1 nmap

建议使用真实机的nmap进行扫描,如果使用虚拟机中的nmap进行扫描时,网络模式建议使用桥接(如kali虚拟机中自带的nmap),不然会发生一些错误,如在虚拟机NAT模式下跨网段扫描时,发现对方网段主机全部在线,但实际没有。

1. nmap原理

nmap有各种扫描方式,但原理都是通过构造并发送不同的网络探测包来实现的。

nmap工具执行我们的扫描命令的执行顺序:

  1. 先对目标进行主机扫描

  2. 再对目标进行端口扫描

  3. 最后对目标进行其他扫描

如:nmap -p 1-80 -sS -O 192.168.1.200,先执行-sS,再执行-p 1-80,最后执行-O。

因此有时候可以通过-Pn命令跳过主机发现,直接进入端口扫描阶段。

1.1 主机发现技术原理

主机发现是为了发现网段内的活跃主机(活跃主机是指这台主机是运行的),主机发现原理如下表所示。

扫描方式发送报文活跃响应不活跃响应被过滤响应备注
ARP扫描ARP请求报文ARP响应报文超时不会被过滤精准
ICMP扫描ICMPtype=8 code=0type=13 code=0type=17 code=0ICMPtype=0 code=0type=14 code=0type=18 code=0超时超时可能会被防火墙过滤
端口扫描TCP SYNTCP SYN+ACK超时超时或ICMP type=3 code=3或13可能会被过滤

由表可知:

  1. ARP扫描是最精准的扫描方式,并且不会被过滤,因此会被强制有限使用。

  2. ICMP扫描是最常见的扫描方式,和ping命令原理一致,但现有很多防火墙和IPS设备会禁用ICMP扫描,使得ICMP主机发现失败。

  3. 端口扫描技术是另一种发现主机的方式,准确且不容易被防火墙过滤,这种方式被经常使用,端口扫描原理见以下。

1.2 端口扫描技术原理

端口扫描可以分为TCP端口扫描和UDP端口扫描,由于TCP能够提供更多的协议字段,因此TCP端口扫描更准确,如今的端口扫描技术主要是指TCP端口扫描。

在TCP端口扫描中,探测报文组合不同flags位,不同的flags在端口开放、端口关闭、防火墙过滤时的响应是不一样的,通过区分不同的响应来检测端口的状态,具体如下所示。(tcp flags有syn、ack、rst、fin、psh、urg共6种置位)

扫描方式置为1的TCP Flag开放时响应关闭时响应过滤时响应特征
-sT,TCP全连接扫描报文1:syn报文2:acksyn+ack,完成3次握手rst+ack一般不会被过滤精准、费时、可能会被日志记录
-sS,TCP半连接扫描synsyn+ackrst+ackICMP type=3 code=3、13或超时精准、快速、无日志记录,最常见且默认的扫描方式
-sA,TCP ack扫描ackrstrst不准确、只能判断是否加防火墙,即端口状态filtered或unfiltered判断防火墙
-sW,TCP window扫描ackrst,window不为0rst,window为0不准确、有的情况下window都为0判断防火墙
-sMfin+ack未收到rstrst不准确
-sN无置位无响应rstICMP type=3 code=3或13或超时无响应不准确,只能判断closed和open|filtered
-sFfin无响应rst
-sXfin+psh+urg无响应rst
-sU,UDP端口扫描不相关有UDP响应或无响应icmp type=3 code=3ICMP type=3 code=1,2,9,10,13不准确,通常只能判断closed和open|filtered

由表可知:

  1. -sS扫描最常用,快速、精准,且无日志;-

  2. -sT方式最精准,但有日志记录;

  3. -sA/-sW能够识别是否有防火墙,对于识别windows防火墙非常有效。

1.3 其他技术原理

Nmap还包括操作系统指纹识别技术、服务识别技术、防火墙绕过技术以及NSE(Nmap Scripting Engine)脚本引擎。

其原理大致是通过一些签名比对匹配之类的来识别。

2. 常用参数与命令

一条Nmap命令主要由以下几个部分组成:

nmap 主机发现参数 端口扫描参数 其他参数 目标主机(/网段)

2.1 主机发现参数

参数描述是否常用
-sL列表扫描。仅列出指定目标有哪些IP,不进行主机发现一般
-sn默认的主机发现方式。组合ARP扫描,ICMP扫描,端口扫描3种技术(表1原理)进行主机发现常用
-Pn不进行主机发现,直接进入端口扫描阶段。能绕过ICMP过滤,老版本为-P0。常用
-PS/-PA/-PU/-PY分别用TCP SYN/TCP ACK/UDP/SCTP技术进行主机发现。常用
-PE/-PP/-PM分别用ICMP ECHO/ICMP TIMESTAMP/ICMP MASK技术进行主机发现。一般
-PO使用参数指定的协议(如TCP)对主机进行扫描。不常用

2.2 端口扫描参数

参数描述是否常用
-p指定端口扫描。格式:-p 21,22,80,3389、-p 1-80等
-sT/-sSTCP全连接扫描(不隐蔽)/ TCP半连接扫描(隐蔽)。常用
-sA/-sWTCP ACK/TCP WINDOW扫描,用于确定目标主机是否有开启防火墙。一般
-sMFIN、ACK同时置位1的扫描。一般
-sN/-sF/-sXNULL/FIN/XMAS扫描。一般
-sUUDP扫描。常用
-sI盲扫描。不常用
-sO协议扫描,用于确定目标主机支持哪些协议。一般
-sY/-sZSCTP/COOKIE-ECHO扫描。不常用
-bFTP代理扫描。不常用

2.3 其他参数

参数描述是否常用
-OOS(操作系统)指纹识别扫描常用
-AOS指纹识别、服务版本扫描、脚本扫描、traceroute(相当于全面扫描)常用
-sA/-sW探测主机是否开启防火墙常用
-f使用分片报文扫描目标主机常用
-sC使用脚本对目标主机进行安全扫描一般
-sV探测主机端口上运行的服务的版本信息常用
-oN/-oX/-oS/-oG将扫描结果导出为txt、Xml、Script kIddi3、Grepable格式一般
-v显示扫描过程的详情
-T0~-T5设置扫描时序

2.4 常用命令

Nmap的一些常见扫描语句如下:

  1. nmap –sn 192.168.1.200/24 //扫描目标网段中有哪些主机是活跃的,可以快速收集到活跃主机。

  2. nmap –Pn –p 80,443,8080 192.168.1.200/24 //快速定位目标网段中的WEB服务器。

  3. nmap –sS –sU –A –v –T4 192.168.1.200 //对目标主机进行完整扫描,包括知名端口的TCP、UDP扫描,操作系统探测,服务探测,常见漏洞探测。

  4. nmap –sS –p 1-65535 –v –T4 192.168.1.200 //对目标主机所有端口进行TCP端口扫描。

  5. nmap –sA/-sW 192.168.1.200 //识别目标主机是否在防火墙之后。

3. 注意事项

1.宏观细节:

  • 如果在同一网段,则无论主机发现参数如何指定,Nmap都使用ARP扫描完成主机发现。

  • 如果没有指定任何参数(如:nmap 192.168.1.1),默认扫描目标主机的1-1000端口。

  • 如果未指定主机发现方式,则使用-sn参数进行主机发现。

  • 如果未指定端口扫描方式,则使用-sS参数进行端口扫描。

2. 微观细节:

  • -sW,TCP window扫描。是指发送一个构造好的TCP探测包,看对方TCP响应包里window字段(窗口字段)的内容来判断端口状态,而不是说和Windows系统有关。

  • -T0~-T5 设置的扫描时序详情

    -T0(偏执的) 非常慢的扫描,用于IDS逃避(IDS,入侵检测系统)

    -T1(鬼祟的) 较慢的扫描,用于IDS逃避

    -T2(文雅的) 降低速度以降低对宽带的消耗,一般不常用

    -T3(普通的) 默认,根据目标的反应自动调整时间

    -T4(野蛮的) 快速扫描,常用的扫描方式,网络条件好时用,请求可能会淹没目标

    -T5(疯狂的) 极速扫描,以牺牲准确度来提升扫描速度

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

  1. open:端口是开放的。
  2. closed:端口是关闭的。
  3. filtered:端口有防火墙IDS/IPS过滤,无法确定其状态。
  4. unfiltered:端口没有过滤,但是否开放需要进一步确定。
  5. open|filtered:端口是开放的或有过滤。
  6. closed|filtered :端口是关闭的或有过滤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值