zoukankan      html  css  js  c++  java
  • Nmap学习使用指南

    本博客严重参考 Nmap使用指南1.0:

    https://github.com/scanfsec/penetration/blob/master/Nmap%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%971.0(%E4%B8%AA%E4%BA%BA%E7%B2%BE%E5%BF%83%E6%95%B4%E7%90%86).pdf

    自己之前零星学习的各类知识点,在这个暑假想要将其系统地串在一起,形成自己学习的体系,一起来看各类文档学习趴

    关于Nmap安装方式网上多如牛毛,在此不再赘述,请往下看。

    Nmap (Network Mapper 网络映射器)

    端口扫描基础

    虽然Nmap这些年的功能越来越多,它也是从一个高效的端口扫描器开始的,并且那仍然是它的核心功能。

    nmap target 扫描目标主机上超过1660个TCP端口

    Nmap把端口分为六个状态:

    • open 开放的

    • closed 关闭的

    • filtered 被过滤的

    • unfiltered 未被过滤的

    • open | filtered 开放或者被过滤的

    • closed | filtered 关闭或者被过滤的

    这些状态描述Nmap怎么看待它们

    每个开放的端口都是攻击的入口

    Nmap指令语法

    nmap [<扫描类型> ... ] [<选项>] { <扫描目标说明>}

    端口扫描技术

    作为一个修车新手,我可能折腾几个小时来摸索怎样把基本工具(锤子,胶带,扳子等) 用于手头的任务。当我惨痛地失败,把我的老爷车拖到一个真正的技师那儿的时候 ,他总是在他的工具箱里翻来翻去,直到拽出一个完美的工具然后似乎不费吹灰之力搞定它。 端口扫描的艺术和这个类似。专家理解成打的扫描技术,选择最适合的一种 (或者组合)来完成给定的 任务。 另一方面,没有经验的用户和刚入门者总是用默认的SYN扫描解决每个问题。 既然Nmap是免费的,掌握端口扫描的唯一障碍就是知识。这当然是汽车世界所不能比的, 在那里,可能需要高超的技巧才能确定您需要一个压杆弹簧压缩机,接着您还得为它付数千美金。

    Nmap支持的扫描类型大概有十几种,一般一次只使用一种,不过UDP扫描(-sU)可以和任何一种TCP扫描类型结合使用

    端口扫描类型的选项格式是-s<C><C>通常是扫描类型的首字母

    操作系统非特权用户仅能执行connect()和ftp bounce()扫描

    部分扫描选项
    • -sS (TCP SYN 扫描/半开扫描)

      SYN扫描是默认的也是最受欢迎的扫描选项,优点:执行速度快,扫描痕迹浅,从来不打开一个完整的TCP连接,不依赖于任何的特定平台。

    • -sT (TCP connect()扫描)

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

      相对与SYN扫描的缺点:

      connect()扫描效率较低,因为它需要建立完整的TCP连接

      connect()扫描容易在目标机上留下记录,许多普通的UNIX系统上的服务会在syslog留下记录

    • -sU (UDP扫描)

      互联网基于UDP的服务也不少,最常见的如:DNS,SNMP,DHCP,注册端口分别为53,161/162,67/68

      UDP扫描一般比较慢,比TCP要困难

      UDP扫描可以与各种TCP扫描结合使用而同时检查两种协议

      注意:慎用UDP扫描,因为它的扫描速度受到操作系统的限制非常低,如果确实要使用可以采用优先扫描主要端口,并发扫描更多主机,从防火墙后面扫描,使用--host--timeout来跳过慢速主机等手段

    • -sN -sF -sX (TCP Null,Fin,Xmas扫描)

      这三种扫描方法利用了TCP RFC钟发掘出的一个微妙的方法来区分Open和Closed端口

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

      优势:

      能够躲过一些无状态防火墙和报文过滤路由器,甚至比SYN扫描还要隐蔽一些,但是现代的IDS产品可以发现他们

      不足:

      并非所有的系统都严格遵循RFC793,许多系统端口不管是开放还是关闭的都响应RST,结果导致所有的端口都标记为Closed

      它们不能辨别Open端口和一些特定的Filtered端口,从而返回相关信息

    • -sA (TCP ACK扫描)

      目的:

      发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的

      不足:

      无法确定Open或者Open|Filtered端口

    • -sW(TCP窗口扫描)

      与ACK扫描的唯一区别在于它利用了特定系统的实现细节来区分端口是Open还是Closed,而不是全部打印成Unfiltered

      不足:

      不支持它的系统通常返回所有端口都是Closed

    高级扫描方式
    • -sM (TCP Maimon扫描)

      这个扫描技术除了探测报文采用FIN/ACK之外与Null,FIN,Xmas扫描完全一样

    • --scanflags (定制的TCP扫描)

      这是真正的Nmap高手使用的,不受这些现成的扫描类型束缚,可以定义任意TCP标志位来设计自己的扫描

    • -sl (ldel扫描)

      这种高级扫描方法允许进行真正的TCP端口盲扫描,由于它不适用真实IP进行扫描,所以它是一种极端隐蔽的扫描方法

    • -sO(IP协议扫描)

      从技术上讲,这不是端口扫描

      用于确认目标机器支持哪些IP协议

    • -b (FTP弹跳扫描)

      通过FTP服务器做代理对其他目标主机进行扫描的技术,这是绕过防火墙的好方法,其实这算是服务器的一个弱点,当前大部分的服务器都被修补了,本弱点利用就困难了,不过可以使用这个选项来判断服务器是否脆弱

    端口说明和扫描顺序

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

    • -p <port range>(只扫描指定的端口)

      port range 使用单个端口和用连字符表示的端口范围都可以

      可以通过再端口号上添加T: 或者U: 指定协议

      例如: -p U:53,111,137,T:21-25,80,139,8080

    • -F (快速(有限的端口)扫描):

      在Nmap的nmap-services文件中指定想要扫描的端口,这个列表中包含1200多TCP端口,比扫描所有的65535个端口要快得多

      如果使用--datadir选项指定自己的小小的nmap-services文件,则差别会很惊人了。

    • -r(不要按随机顺序扫描端口):

      默认情况下,Nmap按随机顺序扫描端口(除了处于效率的考虑部分端口前移),这种随机化通常是不错的,但是我们可以指定-r来进行顺序端口扫描

    Nmap的扩展功能

    服务版本探测

    人们完全可以在一些奇怪的端口上运行服务

    知道正在运行什么邮件和域名服务器以及它们的版本,有一个精确的版本号对了解服务器有什么漏洞有巨大帮助

    nmap-service-probes数据库包含查询不同服务的探测报文和解析识别相应的匹配表达式。

    • -sV (版本探测)

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

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

        指定--allports扫描所有端口

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

        当进行版本扫描时,nmap发送一系列探测报文,每个报文都被赋予一个1到9之间的值,被赋予较低值的探测报文对大范围的常见服务有效,而被赋予较高值的报文一般没什么用。

        强度水平说明应该使用哪些探测报文,数值越高,服务越有可能被正确识别,当然,高强度扫描花更多的时间,强度值在0到9之间,默认是7

      • --version-light (打开轻量级模式)

        这是--version-intensity 2 的一个别名,这使得版本扫描快很多,但他识别服务的可能性也相对较小一些

      • --version-all (尝试每个探测)

        这是--version-intensity 9 的一个别名,保证对每个端口尝试每个测试报文

      • --version-trace (跟踪版本扫描活动)

        是会让Nmap打印出详细的关于正在运行的扫描的调试信息,它是使用--packet-trace所得到的信息的子集

    • -sR (RPC扫描)

      这种方法和许多端口扫描方法联合使用,对所有被发现开放的TCP/UDP端口执行SunRPC程序NULL命令,来试图确定它们是否为RPC端口,如果是,是什么程序和版本号。这作为版本扫描(-sV)的一部分自动打开。由于版本探测包括它并且全面的多,所以-sR很少被用到。

    操作系统探测

    Nmap最著名的功能之一就是用TCP/IP协议栈fingerprinting进行远程操作系统探测

    Nmap发送一系列TCP和UDP报文到远程主机,检查响应中的每一个比特,再进行一打测试之后,Nmap把结果和数据库nmap-os-fingerprints中超过1500个已知的操作系统的fingerprints进行比较,如果有匹配,就打印出操作系统的详细信息。

    • -O (启用操作系统探测)

      也可以使用-A来同时启用操作系统和版本探测

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

        采用这个选项,Nmap只对满足这个条件的主机进行操作系统检测,这样可以节约时间

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

        当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配,Nmap默认进行这种匹配,使用上述任一个选项使得Nmap的推测更加有效

    其他选项
    • -6 (启用IPv6扫描)

      ping扫描(TCP-only),连接扫描以及版本检测都支持IPv6,除了增加-6选项之外,其他命令语法相同

    • -A(激烈模式扫描 )

      这个选项启用额外的高级和高强度选项,目前这个选项启用了操作系统探测 -O 和版本扫描 -sV

      该选项的目的是启用一个全面的扫描选项集合,不需要用户记忆大量的选项。

      这个选项仅仅启用功能,不包含可能用到的所有需要的时间选项或者细节选项

    • -V;--version (打印版本信息)

      打印Nmap版本号并退出

    • -h;--help (打印帮助摘要)

      打印一个短的帮助屏幕,列出大部分常用的命令选项,这个功能和不带参数运行Nmap是相同的。

     

     

     

     

  • 相关阅读:
    形象理解ERP(转)
    禁用windows server 2008 域密码复杂性要求策略
    How to adding find,filter,remove filter on display method Form
    Windows Server 2008 R2激活工具
    How to using bat command running VS development SSRS report
    Creating Your First Mac AppGetting Started
    Creating Your First Mac AppAdding a Track Object 添加一个 Track 对象
    Creating Your First Mac AppImplementing Action Methods 实现动作方法
    Creating Your First Mac AppReviewing the Code 审查代码
    Creating Your First Mac AppConfiguring the window 设置窗口
  • 原文地址:https://www.cnblogs.com/Cl0ud/p/13225286.html
Copyright © 2011-2022 走看看