• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Nmap全参数学习笔记

武飞扬头像
Blank_Crow
帮助1

目录

目标说明

主机发现

端口扫描

端口说明和扫描顺序

服务和版本探测

操作系统探测

时间和性能

防火墙/IDS逃逸

输出

其它选项


目标说明

-iL <inpputfilename> - 从列表中读取目标

        可以指定一个文件读取,也可以用-代替文件名,通过标准输入读取目标

-iR <hostnum> - 随机选择目标

        <hostnum>指定生成多少个IP

--exclude <host1[,host2][,host3],...> - 排除主机/网络

    --exclude 192.168.1.1

--excludefile <excludefile> - 排除文件中的目标


主机发现

如果没有给出主机发现的选项,Nmap就发送一个TCP ACK报文到80端口和一个ICMP回声请求到每台机器

-sL - 列表扫描

        仅仅列出指定网络上的每台主机,不发送任何报文到目标主机。默认下,Nmap仍对主机进行反向域名解析以获取目标主机的名字

-sP - Ping扫描

        仅进行ping扫描(主机发现),不对端口或操作系统等进行扫描

        默认情况下,发送一个ICMP回声请求和一个TCP报文到80端口,如果非管理员执行,就发送一个SYN报文到目标的80端口

学新通

-P0 - 无Ping

        完全跳过Nmap发现阶段,通常在进行高强度的扫描时用它确定正在运行的机器

        通常,Nmap只对正在运行的主机进行高强度的探测,-P0会把主机当作正在运行的主机进行扫描

-PS [portlist] - TCP SYN Ping

        发送一个设置SYN标志位的空TCP报文,默认目的端口为80,可以指定一个以逗号分隔的端口列表

        -PS22,23,80,8080,8088 - 这种情况下,每个端口都会被并发地扫描

        SYN标志向目标发起连接建立请求,如果目标端口是关闭的,则回返回一个RST(复位)包,如果端口开放,目标会回应SYN/ACK TCP报文,然后Nmap会直接返回一个RST包,不返回ACK完成TCP三次握手

        这里无论目标回应的是RST还是SYN/ACK都说明了目标主机存活

学新通

 学新通

这里是使用-PS80指定80端口进行扫描的,但实际上Nmap也同样对一些常见端口进行了扫描

-PA [portlist] - TCP ACK Ping

        类似-PS,只是发送TCP报文的标志位为ACK,ACK报文表示确认一个建立连接的尝试,但目标主机突然接收到ACK报文时并不能理解,因为它并没有向本机请求过建立TCP连接,此时,目标主机通常(没有特殊设置的情况下)会返回一个RST报文

        在目标主机有防火墙的情况下,可以尝试交换使用-PA或-PS

-PU [portlist] - UDP Ping

        发送一个空的(除非指定--data-length)UDP报文到给定的端口,不同版本Nmap默认端口不同,但通常都是大数字端口

        如果目标机器的端口是关闭的,UDP探测应该马上得到一个ICMP端口不可达的回应报文,如果到达一个开放的端口,大部分服务仅仅忽略这个空报文而不做回应

        可以穿透某些只过滤TCP的防火墙和过滤器

学新通

—PE;-PP;-PM - ICMP Ping Types

Nmap发送一个ICMP type8(回声请求)报文到目标IP地址,期待从运行的主机得到一个type 0(回声响应)报文,该报文容易被防火墙封锁,判断不够准确

学新通

学新通

         

        而-PP和-PM分别为时间戳请求(type 13)和地址掩码请求(type 17)

-PR - ARP Ping

        通常在扫描局域网时使用,在本地局域网中防火墙不会禁止ARP请求,在默认情况下,如果nmap发现目标主机就在它所在的局域网上,会进行ARP扫描。即使指定了不同的ping类型,如果不想使用,则可以指定--send-ip

        当Nmap试图发送一个原始IP报文(如ICMP回声请求)时,操作系统必须确定对应目标IP的硬件地址(ARP)

        ARP(地址解析协议)是根据IP地址获取物理地址的一个TCP/IP协议,其功能是:主机将ARP请求广播到峁上的所有主机,并接收返回消息,确定目标IP地址的物理地址,同时将IP地址和硬件地址存入本机ARP缓存中,下次请求直接查询ARP缓存。

-n - 不用域名解析

        不对nmap发现的活动IP进行反向域名解析

-R - 为所有目标解析域名

        对目标IP地址作反向域名解析

--system-dns - 使用系统域名解析器

        默认情况下,nmap通过主机上配置的域名服务器来解析域名,也可以使用该参数来指定使用系统自带的解析器(速度慢,一般不使用,系统解析器是用IPv6进行扫描)


端口扫描

Nmap共识别6个端口状态:

  • open - 开放的:该端口正在接收TCP连接或UDP报文

  • closed - 关闭的:nmap可以访问该端口,但没有应用程序监听该端口,也可能只是暂时没有程序监听

  • filtered - 被过滤的:无法确定端口是否开放(将Nmap的探测帧丢弃,不做任何响应,因此无法判断)

  • unfiltered - 未被过滤的:端口可以访问,但无法确定端口是否开放

  • open|filtered - 开放或被过滤的:如开放的端口不响应

  • closed|filtered - 关闭或被过滤的:不能确定端口是关闭还是被过滤的,只可以出现在IPID Idle扫描中

-sS - TCP SYN扫描

        SYN扫描作为默认扫描选项,也被称为半开放扫描(不完成三次握手),速度快、不易被发现,可以应对任何兼容的TCP协议栈,可以明确可靠地区分open/closed/filtered状态

-sT - TCP connect()扫描

        当SYN扫描不能用时,TCP connect()扫描就是默认的TCP扫描

        Nmap会在每个扫描端口上完成三次握手,且花费时间比SYN扫描更长,且目标主机更容易记录下连接。在许多UNIX系统上的服务会在syslog留下记录

-sU - UDP扫描

        可以和TCP扫描(如-sS)结合来同时检查两种协议

        UDP扫描发送空的UDP报头到每个目标端口

        如果返回ICMP端口不可达(类型3,代码3),则说明该端口是关闭的

        其他的ICMP不可达(类型3,代码1,2,9,10,13)说明该端口被过滤。

        响应UDP报文,则说明该端口是开放的

        如果重试几次后还没有响应,则认为该端口为open|filtered

        在使用UDP扫描时,最好使用-p参数指定端口进行扫描,因为速度会很慢,且会向目标发送大量的数据包

        也可以使用--host-timeout跳过慢速的主机

学新通

-sN;-sF;-sX - TCP Null,FIN,Xmas扫描

        Null扫描(-sN)

                不设置任何标志位(tcp标志头是0)

        FIN扫描(-sF)

                只设置TCP FIN标志位

        Xmax扫描(-sX)

                设置FIN,PSH和URG标志位

        如果目标系统遵循RFC,当端口关闭时,任何不包含SYN,RST或ACK位的报文会导致一个RST返回,而当端口开放时,应该没有任何响应

学新通

                除了报文的标志位不同,这三种扫描在行为上完全一致,这些扫描能躲过一些无状态防火墙和报文过滤路由器,且甚至比SYN扫描还要隐秘一些

        另外不遵循RFC 793标准的主机的响应会导致误判,且多数IDS可以发现这种扫描

-sA - TCP ACK扫描

        这种扫描不能确定端口的open或open|filtered状态,通常用于发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的

        ACK扫描报文只设置ACK标志位,当扫描未过滤的系统时,open和closed端口都会返回RST报文,Nmap将之标记为unfiltered,不响应的端口或者发送特定的ICMP错误消息(type3,code 1,2,3,9,10,13)的端口,标记为filtered

学新通

-sW - TCP窗口扫描

        窗口扫描方式与ACK扫描方式的原理几乎是一样的,它通过检查返回的RST报文的TCP窗口域判断目标端口是否是开放的

        有时,开放端口用正数表示窗口大小,关闭端口的窗口大小为0,所以,当收到RST包时,根据TCP窗口的值是正数还是0来判断目标端口是开放还是关闭的

学新通

        这种扫描方式依赖于少数的操作系统,如果系统不支持这种扫描,会发现所有的端口都是关闭的

-sM - TCP Maimon扫描

        这种扫描和Null,FIN及Xmas扫描完全一样,除了探测报文是FIN/ACK。

        根据RFC 793(TCP),无论端口开放或者关闭,都应该对这样的探测响应RST报文,然后,如果端口开放,许多基于BSD的系统只是丢弃该探测报文

        BSD系统是Unix的衍生系统,多用于政府机构

--scanflags - 定制的TCP扫描

        该参数可以指定TCP Flags标志位,选项可以是一个数字标记值,但使用字符名更容易一些,只要是URG,ACK,PSH,RST,SYN,FIN的任何组合就行

        标志位的顺序不重要,且标志位之间没有空格

-sl <zombie host[:probeport]> - Idlescan(空闲扫描)

        空闲扫描是Nmap的高级用法,允许进行端口完全欺骗扫描,可以使攻击者能够不使用自己的IP向目标主机发送数据包,它可以利用不活跃的僵尸主机反弹给攻击者一个旁通信道,从而进行端口扫描。

        IDS会把不活跃的僵尸主机当作攻击者

-sO - IP协议扫描

        该选项会确定目标端口的协议类型,IP协议扫描可以帮助用户确定目标主机哪些是支持IP协议的,如TCP,ICMP,IGMP

        虽然它遍历的是IP协议号而不是TCP或UDP端口,但也可以使用—p选项选择要扫描的协议号

        协议扫描关注的不是ICMP端口不可达,而是ICMP协议不可达的消息

        Nmap从目标主机接收到任何协议的响应,就会把那个协议标记为open。ICMP不可达错误(type3,code2)则标记为closed,其他不可达协议会标记为Filtered,如果一接受不到响应,Nmap会标记为Open|Filtered

-b <ftp relay host> - FTP弹跳扫描

        FTP协议中支持代理FTP连接,允许用户连接到一台FTP服务器,然后要求文件送到一台第三方服务器,但这种扫描方式已经很少被支持了,可以尝试用于躲避防火墙。


端口说明和扫描顺序

        默认情况下,Nmap用指定的协议对端口1到1024以及nmap-services文件中列出的更高端口进行扫描

-p <port ranges> - 只扫描指定的端口

        如-p 1-1024

        -p U:53,111,125 - 扫描指定UDP端口

-F - 快速扫描

        只扫描nmap-services文件中指定的端口,也可以使用--datadir指定自己定制的nmap-services文件

        

-r - 不按随机顺序扫描端口

        默认情况下,Nmap按随机顺序扫描端口


服务和版本探测

-sV - 版本探测

        打开版本探测,也可以用-A同时打开操作系统探测和版本探测

学新通

        假如目标主机上存在的服务版本较旧,可以尝试利用旧版本服务中存在的漏洞进行攻击

        不过-sV和-A选项获得的结果也是绝对准确的

--allports - 不为版本探测排除任何端口

--version-intensity <intensity> - 设置版本扫描强度

        当进行版本扫描时,nmap发送一系列探测报文,每个报文都被赋予一个1-9之间的值,数值越大,服务越有可能被正确识别,同时花费时间更长,默认值为7

--version-light - 打开轻量级模式

        轻量级模式使版本扫描快许多,但识别服务的可能性也小一些,对应的--version-intensity 2强度

--version-all - 尝试每个探测

        保证对每个端口尝试每个探测报文,对应--version-intensity 9强度

--version-trace - 跟踪版本扫描活动

        Nmap将打印出详细的关于正在进行的扫描的调试信息

-sR - RPC扫描

        该选项多用于与其他端口扫描选项结合使用,对所有被发现为开放的TCP/UDP端口执行SunRPC程序NULL命令,来试图确定它们是否为RPC端口,如果是,则返回程序和版本号


操作系统探测

-O - 开启操作系统检测

--osscan-limit - 针对指定的目标进行操作系统检测

        Nmap对已经发现打开或关闭端口的主机进行操作系统检测时会更有效,使用该参数后,Nmap只对满足了条件(发现打开或关闭的端口)的主机进行操作系统检测

        特别是在使用-P0扫描多个主机时

        该选项仅在-O或-A的检测时起作用

--osscan-guess;--fuzzy - 推测操作系统检测结果

        当Nmap无法确定所检测的操作系统时,会从最接近的数据中取值,使用该参数可以提高推测的准确度


时间和性能

--min-hostgroup;--max-hostgroup - 调整并行扫描组的大小

        Nmap会将多个目标IP地址分成组,然后在同一时间对一个组进行扫描,只有当整个组扫描结束后才会提供主机的扫描结果

        默认情况下,Nmap在进行扫描时,首先开始扫描较小的组,最小为5,随后慢慢增长组的大小,最大为1024

        为保证效率,Nmap会针对UDP或少量端口的TCP扫描

        --max-hostgroup用于指定使用最大的组

        --min-hostgroup用于指定最小的组

--min-parallelism;--max-parallelism - 调整探测报文的并行度

        默认情况下,Nmap会根据网络性能计算出一个理想的并行度,默认状态下,当网络不可靠时,理想的并行度可能为1,在好的条件下,可能会增长至几百

        --min-parallelism大于1以加快性能不佳的主机或网络的扫描,这个值过高会影响度,也会降低Nmap动态控制并行度的能力

        --max-parallelism通常设为1,以防止Nmap在同一时间向主机发送多个探测报文

 --min-rtt-timeou;--max-rtt-timeout;--initial-rtt-timeout - 调整探测报文超时

        这些选项以毫秒为单位,需要在数字后加上单位ms

        --max-rtt-timeout为100毫秒比较合适,一般不超过1000,使用较小的值,使--initial-rtt-timeout值大于默认值可以减少扫描时间

--host-timeout - 放弃低速目标主机

        设置一个超时时间(毫秒),超过则放弃对该目标主机的扫描

--scan-delay;--max-scan-delay - 调整探测报文的时间间隔

        该选项用于控制发送探测报文的时间间隔,让Nmap处于低速运行状态

        --scan-delay的另一个用途是躲避基于阈值的入侵检测和预防系统(IDS/IPS)

-T - 设置时间模板

        分别有6个时间模拟,使用时采用-T加数字0-5

        paranoid(0),sneaky(1),polite(2),normal(3),aggressive(4),insane(5)

        0-1用于IDS躲避

        2降低了扫描速度以减少带宽和目标主机资源

        3为默认值

        4加速扫描

        5更多的加速扫描,可能会牺牲一部分准确性


防火墙/IDS逃逸

-f - 报文分段

        -f选项会将TCP头分段在几个包中,使得包过滤器、IDS以及其他工具的检测更加困难

        一些主机会禁止相应ICMP请求,对于这种情况就可以使用报文分段的方法来逃避目标防火墙的规则

--mtu - 指定偏移大小

        MTU - Maximum Transmission Unit(最大传输单元)

        此值设定TCP/IP协议传输数据报时的最大传输单元,使用指定的MTU可以达到逃逸防火墙/IDS的目的,需要注意的是偏移量必须是8的倍数

-D - IP欺骗

        对目标进行扫描时,会让目标主机误认为是在利用诱饵进行扫描,而不是一个真实的扫描,但这种方式可以通过路由跟踪、响应丢弃及其它主动机制解决

        可以使用逗号对每个诱饵主机进行分割,也在最后使用ME选项指定自己的真实IP(如果不指定,nmap会将真实IP放在一个随机的位置)

        可以指定多个IP地址,或者使用RND随机生成几个地址

        诱饵主机必须处于工作状态,否则会导致目标主机的SYN洪水攻击

        诱饵可用在初始的ping扫描(ICMP,SYN,ACK)阶段或真正的端口扫描阶段,也可以用于远程操作系统检测,在进行版本检测或TCP连接扫描的时候诱饵是无效的

        namp -D RND:10 192.168.1.11

学新通

-S - 源地址欺骗

        指定一个IP地址进行欺骗性的扫描,-e选项常在这种情况下使用,也可以使用-P0选项

-e - 使用指定的接口

        指定用于接收和发送报文的网卡接口

--source-port;-g - 源端口欺骗

        指定一个端口号,Nmap从指定的端口中发送数据,因为防火墙对服务器的设置会根据端口选择是否信任数据流

--data-length - 发送报文时附加随机数据

        正常情况下,Nmap发送最小的报文,只含一个包头,因为TCP包通常是40字节,ICMP ECHO请求只有28字节

        该选项可以在发送报文时附加指定数量的随机字节,操作系统检测包不受影响,但大部分的ping和端口扫描受影响,会使处理变慢

--ttl - 设置IP time-to-live域

        TTL是IP数据包在计算机网络中可以转发的最大跳数,TTL字段由IP数据包的发送者设置,每经过一个路由,TTL值减1,如果IP包在到达目的IP之前,TTL值为0,路由器将丢弃这个IP包,并向IP包的发送者发送ICMP time exceeded消息

--randomize-hosts - 对目标主机的顺序随机排列

        在扫描主机前对每个组中的主机随机排列,最多可达8096个主机

--spoof-mac <mac address,prefix,or vendor name> - MAC地址欺骗

        要求Nmap在发送原以太网帧时使用指定的MAC地址,使用字符串0代替MAC地址将会随机分配一个MAC地址,也可以自己指定一个MAC地址(最好是真实存在的)

        nmap - sT -PN --spoof-mac 0 192.168.1.11


输出

-oN - 标准输出

        将标准输出直接写入指定文件

-oX - XML输出

-oS - 133t输出

-oG - Grep输出

-oA - 输出至所有格式

        以标准格式、XML格式和Grep格式一次性输出,分别存放不同的文件中

-v - 提高输出信息的详细度

        该选项使用两次会提供更详细的信息,最多可使用两次

-d - 提高或设置调试级别

        最高为-d9,使用后可以得到更多的调试信息

--packet-trace - 跟踪发送和接收的报文

        打印发送和接收的每个报文的摘要,通常用于调试和学习理解

--iflist - 列举接口和路由

        列出Nmap检测到的接口列表和系统路由,用于调试路由问题或设备描述失误

--append-output - 在输出文件中追加

        将输出内容追加进文件中,默认是覆盖内容

--resume - 继续中断的扫描

--stylesheet - 设置XSL样式表,转换XML输出

--no-stylesheet - 忽略XML声明的XSL样式表


其它选项

-6 - 启用IPv6扫描

-A - 激烈扫描模式

        启用额外的高级和高强度选项(-O,-sV)

--datadir - 说明用户Nmap数据文件位置

--send-eth - 使用原以太帧发送

        要求Nmap在数据链路层而不是网络层发送报文

--send-ip - 在原IP层发送

--privileged - 假定用户具有全部权限

--interactive - 在交互模式中启动

-V;--version - 打印版本信息

-h;--help - 帮助信息

        

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfkkfge
系列文章
更多 icon
同类精品
更多 icon
继续加载