Nmap的从0到1

第一部分:Nmap基础.

nmap基本用法
  • 1、全面扫描:nmap -A 192.168.12.131 可获取端口信息、服务名称、服务版本、主机MAC地址、操作系统及版本、设备类型等。
  • 2、多目标扫描:
nmap 192.168.12.0/24		#扫描C段
nmap 192.168.12.1-200		#扫描C段下1-200
nmap 192.168.12-150.1-200		#扫描B段下12-150的C段下1-200。
nmap -iL ip_list.txt		#扫描ip_list.txt里的ip,在ip_list.txt中可以是上述的多种混合形式。
nmap -sS -iR 100  -p22		 # -iR:随机选择目标100个 的22端口 
nmap 192.168.12.1-200 --exclude 192.168.12.110		#扫描C段下1-200,192.168.12.110除外
nmap -iL ip_list.txt --excludefile liwai.txt			#扫描ip_list.txt里的ip,但不扫liwai.txt里的主机。

主机发现

  • -sP (Ping 扫描)
    只进行ping扫描 (发现存活主机),然后打印出对扫描做出响应的那些主机。

  • -P0(无ping扫描)
    无ping扫描,通常用于防火墙禁止ping的情况下,它能确定正在运行的机器。可探测端口,服务、MAC、操作系统探测等。

  • -PS(TCP SYN Ping)
    当目标主机的防火墙阻止这些请求时,可以使用TCP SYN Ping扫描来判断主机是否存活。
    SYN 标志位告诉对方您正试图建立一个连接。通常目标端口是关闭的,一个 RST (复位) 包会发回来。 如果碰巧端口是开放的,目标会进行TCP三步握手的第二步,回应一个 SYN/ACK TCP 报文。然后运行Nmap的机器则会扼杀这个正在建立的连接,发送一个
    RST而非ACK报文,否则,一个完全的连接将会建立。
    默认ping的端口为80,但在特定情况下防火墙会丢弃RST包,这时结果会不准确,我们需要指定一个端口或端口范围来避免这种情况。如:nmap -PS 100-200 192.168.35.164

  • -PA(TCP ACK Ping)
    如果,目标主机阻止SYN包或ICMP Echo请求的主机。可以使用此方法。
    它与TCP SYN Ping扫描非常类似,区别在于设置的TCP标志位是ACK而不是SYN。

  • -PU (UDP Ping)
    如果,目标主机防火墙或过滤器只过滤了TCP,那么可以使用UDP进行扫描。
    nmap会向目标主机的默认端口(31338端口,极不可能被使用的端口)发送UDP报文。如果目标机器的端口是关闭的,UDP 探测应该马上得到一个 ICMP 端口无法到达的回应报文。 这对于 Nmap 意味着该机器正在运行。

  • -PR(ARP Ping)
    通常在扫描局域网时使用,在内网的情况下,使用ARP ping扫描方式是最有效的,在本地局域网中防火墙不会禁止ARP请求,这就使得它比其他ping扫描都更加高效。
    如果 Nmap 发现目标主机就在它所在的局域网上,即使指定了不同的 ping 类型(如 -PI 或者 -PS),它也会进行 ARP 扫描。

  • -PY(SCTP INIT Ping)
    SCTP(流控制传输协议)是IETF在2000年定义的一个传输层协议。SCTP可以看作是TCP协议的改进,它改进了TCP的一些不足,SCTP INIT Ping扫描通过向目标发送INIT包,根据目标主机的相应判断目标主机是否存活。

  • –traceroute 路由追踪
    查找出本地计算机到目标之间所经过的网络节点,并可以看到通过各个节点的时间。

  • -n 不用域名解析

  • -R 反向域名解析

  • -6 扫描IPv6,如: nmap -6 fe80::20c:29ff:fee0:2e76

端口扫描基础

  • -sS (TCP SYN 扫描)
    半开放扫描,建立不完整的“三次握手”了,类似于TCP SYN ping
    特点:扫描速度快、不易被发现、较准确的分辨端口状态。

  • -sT (TCP connect()扫描)
    直接与被扫描的端口建立tcp连接,如果成功,则说明端口开放,如果不成功则说明端口关闭的。这种扫描的特点是与被扫描端口建立完成的tcp连接,完整的tcp三次握手。但,容易被目标主机发现。

  • -sU(UDP扫描)
    UDP扫描非常缓慢,UDP端口扫描通过发送UDP数据包到目标主机并等待响应。它将判断目标端口是否开放状态,如果目标返回ICMP不可达的错误(类型 3,代码 3),说明端口是关闭的;如果得到正确的适当的响应,这说明端口是开放的。

  • -sN(Null扫描)
    原理:将一个没有设置任何标志位的数据包发送给TCP端口。在正常的通信中至少要设置一个标志位,根据FRC 793标准的要求,在端口关闭的情况下,若收到一个没有设置标志位的数据字段,那么主机应该舍弃这个分段,并发送一个RST数据包,否则不会响应发起扫描的客户端计算机。

    也就是说:如果TCP端口处于关闭,则响应一个RST数据包,如果处于开放,则无响应。所以,NULL扫描要求所有的主机都符合RFC 793标准。但是Windows系统主机不遵从RFC 793标准,且只要收到没有设置任何标志位的数据包时,不管端口是处于开放还是关闭都响应一个RST数据包。但是基于Unix(*nix,如Linux)遵从RFC 793标准,所以可以用NULL扫描。

    经过上面的分析,NULL可以辨别某台主机运行的操作系统是什么操作系统:是Windows,还是Unix。

  • -sX(Xmas扫描)
    XMAS扫描原理和NULL扫描的类似,将TCP数据包中的ACK、FIN、RST、SYN、URG、PSH标志位置1后发送给目标主机。在目标端口开放的情况下,目标主机将不返回任何信息。

  • -sF(FIN扫描),
    当我们使用TCP SYN扫描时可能会被目标主机的防火墙发现,会阻止SYN数据包,这时我们使用TCP FIN扫描方式会有很好的穿透效果,因为TCP FIN扫描并不需要完成TCP握手。TCP FIN扫描就是向目标端口发送一个FIN包,若响应RST数据包,则表示端口关闭,没有响应则表示开放。
    仅适用于目标内核为Unix的主机。

  • -sA (TCP ACK 扫描)
    该扫描不能确定端口的开启状态。多用于发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的。

  • –scanflags(自定义TCP扫描)
    根据扫描的实际需要,基于TCP协议可自定义TCP标志位:URG、 ACK、PSH、 RST、SYN、 FIN。扫描形式如下:

nmap -v --scanflags SYN www.test.com
nmap -v --scanflags ACK www.test.com
nmap -v --scanflags SYNACKFIN www.test.com		#可自由组合定义TCP标志位。
  • -sI(僵尸扫描)
    僵尸扫描需要有三个角色:Scanner(扫描者)、Target(目标主机)、Zombie(僵尸机:并非传统意义上的僵尸主机,而是闲置机,无人访问它)。

    僵尸扫描虽极度隐蔽不易被发觉,但实施条件苛刻。一是,扫描者可伪造源IP地址。二是,僵尸机系统可以IPID(Identification)递增。

    首先Scanner向Zombie发送SYN/ACK数据包,Zombie会向Scanner发送RST数据包,同时Scanner记录RST中的IPID=x。

    然后Scanner伪造成Zombie的IP地址后再向Target的某个端口发送SYN数据包,如果Target的这个端口开启了,就会向源IP(Scanner伪造的Zombie的IP地址)发送SYN/ACK数据包,Zombie会向Target发送RST数据包其中IPID=x+1。

    最后Scanner再向Zombie发送SYN/ACK数据包,Zombie会向Scanner发送RST数据包,同时Scanner记录RST中的IPID=x+2。此时,就可以间接的判定Target的某个端口是开启的。

    僵尸机选取:win XP、2003
    在这里插入图片描述
    在这里插入图片描述

  • -sO(IP协议扫描)
    扫描IP协议号。IP协议扫描可以帮助用户确定目标主机哪些是支持IP协议的,例如TCP、ICMP、IGMP。虽然它遍历的是IP协议号并不是TCP或UDP端口,但仍可以使用-p选项选择需要扫描的协议号。它不是在UDP报文的端口域上循环,而时在IP协议域的2位上循环,发送空的IP报文头。

端口说明和扫描顺序

  • 默认情况下,Nmap 用指定的协议对端口 1 到 1024 以及 nmap-services 文件中列出的更高的端口在扫描。
  • -p 只扫描指定的端口
  • -r (不要按随机顺序扫描端口)
    默认情况下,Nmap按随机顺序扫描端口 (除了出于效率的考虑,常用的端口前移)。这种随机化通常都是受欢迎的, 但您也可以指定-r来顺序端口扫描。

服务和版本探测

在用某种其它类型的扫描方法发现TCP和UDP端口后,对这些这些端口进行版本探测,确定正在运行的服务。 nmap-service-probes 数据库包含查询不同服务的探测报文和解析识别响应的匹配表达式。
Nmap试图确定服务协议,如:ftp,ssh,telnet,http;应用程序名,如:ISC Bind,Apache httpd,Solaris telnetd;设备类型,如:打印机,路由器;操作系统家族 ,如:Windows,Linux以及其它的细节;版本号;主机名等。

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

  • –allports (全端口探测)
    默认情况下,Nmap 版本探测会跳过 9100 TCP端口,因为一些打印机简单地打印送到该端口的任何数据,这回导致数十页HTTP get请求,二进制SSL 会话请求等等被打印出来。这一行为可以通过修改或删除 nmap-service-probes 中的 Exclude 指示符改变, 您也可以不理会任何 Exclude 指示符,指定–allports 扫描所有端口。
    在这里插入图片描述

  • –version-intensity (设置版本扫描强度)
    执行版本扫描(-sV)时,Nmap发送一系列探测,每个探测都被分配一个介于1到9之间的值。编号较低的探测器可有效应对各种常见服务,而编号较高的探测器则很少使用。强度级别指定应使用的探针。数字越高,准确度就越高,但耗时也越久。强度必须在0到9之间,默认值为7。

  • –version-light (启用灯光模式)
    别名:–version-intensity 2。这种轻模式使版本扫描快得多,但是识别服务的可能性却稍低。

  • –version-all (尝试每个探针)
    别名:–version-intensity 9,确保对每个端口尝试每个探测。

  • –version-trace (跟踪版本扫描活动)
    这将导致Nmap打印出有关正在进行的版本扫描的大量调试信息。

操作系统探测

  • -O (启用操作系统检测)
    也可以使用-A 来同时启用操作系统检测和版本检测。

  • –osscan-limit (针对指定的目标进行操作系统检测)
    当发现一个打开和关闭的 TCP 端口时,操作系统检测会更有效。这个选项,Nmap只对满足这个条件的主机进行操作系统检测,这样可以 节约时间,特别在使用-P0扫描多个主机时。这个选项仅在使用-O或-A进行操作系统检测时起作用。

  • –osscan-guess; --fuzzy(猜测操作系统检测结果)
    Nmap对系统进行识别时并不一定都能准确识别,当无法准确识别的时候,Nmap会从最近的数据中取值,猜测系统。并针对每个猜测显示其置信度(百分比)。
    两个选项(–osscan-guess; --fuzzy)等价。
    在这里插入图片描述

时间和性能

  • –min-hostgroup [numhosts] (调整并行扫描组的大小,并行数下限

  • –max-hostgroup [numhosts] (调整并行扫描组的大小,并行数上限
    Nmap进行端口扫描或版本扫描多个主机时。Nmap通过将目标IP空间划分为多个组,然后一次扫描一个组来完成此操作。通常,较大的组效率更高。不利的一面是,直到整个小组结束后才能提供宿主结果。因此,如果Nmap的组大小为50,则用户将不会收到任何报告(详细模式下提供的更新除外),直到前50台主机完成为止。

    默认情况下,Nmap对这种冲突采取折衷方法。它以低至5个组的大小开始,因此第一个结果很快出现,然后将组大小增加到1024个。确切的默认数字取决于给定的选项。出于效率方面的考虑,Nmap将较大的组优先用于UDP、开放少数端口的TCP扫描。

  • –min-parallelism [milliseconds]; --max-parallelism [milliseconds] (调整探测报文的并行度)
    选项用于控制主机组的探测报文数量,可用于端口扫描和主机发现。默认状态下,Nmap 基于网络性能计算一个理想的动态的并行度。当有报文被丢弃时,Nmap会降
    低速度,探测报文数量减少。随着网络性能的改善,理想的探测报文数量会缓慢增加。这些选项确定这个变量的大小范围。默认状态下,当网络不稳定时,理想的并行度值可能为1,在好的条件下,可能会增长至几百。

    最常见的应用是–min-parallelism 值大于1,以加快性能不佳的主机或网络的扫描。如果–min-parallelism值过高则影响准确度,同时也会降低 Nmap 基于网络条件动态控制并行度的能力。这个值设为10较为合适,这个值的调整往往作为最后的手段。

    –max-parallelism选项通常设为1,以防止Nmap在同一时间 向主机发送多个探测报文,和选择–scan-delay同时使用非常有用,虽然 这个选项本身的用途已经很好。

  • –min_rtt_timeout [milliseconds], (调整探测报文超时)

  • –max-rtt-timeout [milliseconds],

  • –initial-rtt-timeout [milliseconds]
    使用–max-rtt-timeout选项时,规定100毫秒比较合适。一般情况下,rtt值不得小于100毫秒,也最好不要超过1000毫秒。

  • –host-timeout (放弃缓慢的目标主机)
    在一些情况下,扫描一些主机可能是由于性能差、网络硬件或软件差、包速率或防火墙限制等因素导致扫描时间超长。可以通过该选项设置最大超时时长。如:nmap --host timeout 30m 192.168.83.138指定Nmap不会在单个主机上浪费超过半小时的时间。请注意,在这半小时内,Nmap可能同时扫描其他主机,因此这不是完全丢失。将跳过超时的主机。或主机、操作系统的检测结果都是打印出来的。

  • –scan-delay
    此选项使Nmap在发送到给定主机的每个探测之间至少等待给定的时间量。这在速率限制的情况下特别有用。

  • –max-scan-delay
    此选项使Nmap在发送到给定主机的每个探测之间允许的最大延迟。

防火墙/IDS躲避和哄骗

  • -f (报文分段)
    在Nmap使用-f选项时会将TCP头分段在几个包中,使得包过滤器、IDS以及其他工具的检测更加困难。Nmap在IP头后会将包分为8个字节或更小。
    一些主机会禁止相应ICMP请求,对于这种情况就可以使用报文分段的方法来逃避目标防火墙的规则。

  • -D [decoy1], [decoy2],[decoy3],[me] [target-ip] (用诱饵掩盖扫描)
    通过伪造大量的IP与自己真实的IP一起访问网站,从而混淆管理员的判断,其中问你们使用ME来代表自己的真实地址。

nmap -D RND:11 192.168.83.139		#RND:11随机生成11个ip对目标扫描
nmap -D 192.168.0.1,192.168.0.2,192.168.0.254,ME  192.168.83.139
  • 注意:作为诱饵的主机须在工作状态,否则会导致目标主机的 SYN 洪水攻击。使用过多的诱饵没有任何价值,反而导致扫描变慢并且结果不准确。 此外,一些 ISP会过滤哄骗的报文,但很多对欺骗 IP 包没有任何限制。

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

  • –source-port (源端口欺骗)
    使用–source-port选项就可以进行源端口欺骗,也可以使用-g,我们只需提供一个端口号,Nmap就可以从这些端口中发送数据,因为防火墙对服务器的设置会根据端口选择是否信任数据流,管理员可能会认为这些端口不会有攻击发生,可以利用这些端口进行扫描。nmap --source-port 53 192.168.83.139

  • –data-length (指定发包长度)
    通常情况下,TCP包时40个字节,ICMP Echo 有28个字节,所以在原来的报文基础上附加随机数据达到规避防火墙的效果。nmap --data-length 30 192.168.83.139

  • -randomize-hosts (目标主机随机排序)
    使用–randomize-hosts选项就可以对目标主机的顺序进行随机排序,最多可达8096个主机。单方面使用这个选项对防火墙/IDS逃逸效果不大,如果配合时间选项则会有很好的效果。nmap -randomize-hosts 192.168.83.1/24

  • –spoof-mac (MAC地址欺骗)
    使用–spoof-mac选项就可以进行MAC欺骗。随意的指定一个MAC定制反而会引起管理员的怀疑,这时我们可以使用字符串“0”随机分配一个MAC地址。指定的MAC地址最好真实存在,这样才能起到欺骗效果。

    • –spoof-mac选项可以使用的参数包括0、MAC Address、Vendor Name。
    • 0表示:随机生成一个MAC地址,
    • MAC Address表示:用户手动指定一个MAC地址,
    • Vendor Name表示:从指定的厂商生成一个MAC地址。
      nmap -sT -PN --spoof-mac 0 192.168.83.138

输出

-v		#显示详细的扫描信息
-vv		#显示更详细的扫描信息
-oX		#输出扫描结果以xml格式保存
-oA		#输出扫描结果以标准格式、XML格式和Grep格式一次性保存,分别放在.nmap,.xml和.gnmap文件中
-oN		#标准输出(黑框所显示的)
-d [level] 	#提高或设置调试级别
  • -d :提高或设置调试级别
    当详细模式也不能为用户提供足够的数据时,使用调试可以得到更 多的信息。使用细节选项(-v )时,可启用命令行参数 (-d ),多次使用可提高调试级别。也可在-d 后面使用参数设置调试级别。例如,-d9 设定级别9。这是 最高的级别,将会产生上千行的输出,除非只对很少的端口和目标进行简单扫描

  • –packet-trace (跟踪发送和接收的报文)
    要求Nmap打印发送和接收的每个报文的摘要,通常用于 调试,有助于新用户更好地理解Nmap的真正工作。为避免输出过 多的行,可以限制扫描的端口数,如-p20-30 。 如果只需进行版本检测,使用–version-trace 。

  • –iflist (列举接口和路由)
    输出Nmap检测到的接口列表和系统路由,用于调试路由 问题或设备描述失误(如Nmap把PPP连接当作以太网对待)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值