zoukankan      html  css  js  c++  java
  • 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=0 ICMPtype=0 code=0type=14 code=0type=18 code=0 超时 超时 可能会被防火墙过滤
    端口扫描 TCP SYN TCP 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:ack syn+ack,完成3次握手 rst+ack 一般不会被过滤 精准、费时、可能会被日志记录
    -sS,TCP半连接扫描 syn syn+ack rst+ack ICMP type=3 code=3、13或超时 精准、快速、无日志记录,最常见且默认的扫描方式
    -sA,TCP ack扫描 ack rst rst 不准确、只能判断是否加防火墙,即端口状态filtered或unfiltered 判断防火墙
    -sW,TCP window扫描 ack rst,window不为0 rst,window为0 不准确、有的情况下window都为0 判断防火墙
    -sM fin+ack 未收到rst rst 不准确  
    -sN 无置位 无响应 rst ICMP type=3 code=3或13或超时无响应 不准确,只能判断closed和open|filtered
    -sF fin 无响应 rst    
    -sX fin+psh+urg 无响应 rst    
    -sU,UDP端口扫描 不相关 有UDP响应或无响应 icmp type=3 code=3 ICMP 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/-sS TCP全连接扫描(不隐蔽)/ TCP半连接扫描(隐蔽)。 常用
    -sA/-sW TCP ACK/TCP WINDOW扫描,用于确定目标主机是否有开启防火墙。 一般
    -sM FIN、ACK同时置位1的扫描。 一般
    -sN/-sF/-sX NULL/FIN/XMAS扫描。 一般
    -sU UDP扫描。 常用
    -sI 盲扫描。 不常用
    -sO 协议扫描,用于确定目标主机支持哪些协议。 一般
    -sY/-sZ SCTP/COOKIE-ECHO扫描。 不常用
    -b FTP代理扫描。 不常用

     

    2.3 其他参数

    参数描述是否常用
    -O OS(操作系统)指纹识别扫描 常用
    -A OS指纹识别、服务版本扫描、脚本扫描、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 :端口是关闭的或有过滤。

  • 相关阅读:
    AFNetwork 作用和用法详解
    IOS AFNetWorking 通过body传递参数给服务器
    ios开发 WKWebView 与 H5交互
    Android 穿山甲广告联盟接入
    IOS 监听锁屏
    cocoa pods 升级
    《从零开始学Swift》学习笔记(Day43)——构造函数继承
    《从零开始学Swift》学习笔记(Day 42)——构造函数调用规则
    《从零开始学Swift》学习笔记(Day 41)——类的继承
    《从零开始学Swift》学习笔记(Day 40)——析构函数
  • 原文地址:https://www.cnblogs.com/P201821460033/p/13699519.html
Copyright © 2011-2022 走看看