namp工具


title: nmap工具
tags:

  • 安全工具
    date: 2021-03-18 16:35:04
    keywords: nmap

nmap工具

nmap简介

官方介绍: Nmap(“网络映射器”)是免费开放源代码(许可证)实用程序,用于网络发现和安全审核。许多系统和网络管理员还发现它对于诸如网络清单,管理服务升级计划以及监视主机或服务正常运行时间之类的任务很有用。

Nmap以新颖的方式使用原始IP数据包来确定网络上可用的主机,这些主机提供的服务(应用程序名称和版本),它们正在运行的操作系统(和OS版本),包过滤器/防火墙的类型。

正在使用中,还有许多其他特性。它旨在快速扫描大型网络,但可以在单个主机上正常运行。Nmap可在所有主要的计算机操作系统上运行,并且官方二进制程序包可用于Linux,Windows和Mac OSX。除了经典的命令行Nmap可执行文件之外,Zenmap),灵活的数据传输,重定向和调试工具(Ncat),用于比较扫描结果的实用程序(Ndiff)以及数据包生成和响应分析工具(Nping)。

官网

我的理解:nmap一个强大的网络扫描器,在网络安全中它是一个非常重要的工具

nmap下载

nmap下载非常简单,去官网找到它的安装包下载下来,安装一切ok,同时nmap也有图形化界面zenmap.

nmap使用

  • 主机发现

    • 一些参数命令的解释

      nmap提供了非常多的命令参数,来供使用者使用

      下面介绍几个常用的参数

      ip/24 :探查子网主机

      -O :探查操作系统

      -A:启用OS检测和版本检测

      -sL:列表扫描-仅列出要扫描的目标

      -sP:Ping扫描-只能确定主机是否在线,快速扫描

      -P0:将所有主机视为在线-跳过主机发现

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

      –excludefile <exclude_file>:从文件中排除列表

      –exclude 排除单个ip

      -T [0-6]:设置计时模板(越高速度越快)

      -e :使用指定的接口nmap -e wlan0 ip

      -p :只扫描指定端口

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

      :这个选项使用两次,会提供更详细的信息。这个选 项使用两次以上不起作用。

    • 一些扫描常用语句

      nmap ip           #经典命令
      nmap -O ip           #探测目标操作系统
      nmap -A ip
      nmap ip/24        #通常用于探测子网
      nmap  -sP   ip     #快速探测网络中存活的主机
      nmap 192.168.1.1/24 --exclude 192.168.1.106      #主机过滤
      nmap --stats-every 2s  192.168.1.1/24       #每隔两秒输出探测进度
      nmap -sI 伪装ip  目标ip           #伪装探测
      nmap 192.168.1.1/24 --excludefile   文件名
      nmap  -sT -Pn 172.23.1-255.*
      nmap --iflist
      
    • 一些常用命令的详细解释

      • -iR (随机选择目标)

        对于互联网范围内的调查和研究,您也许想随机地选择目标。**选项告诉Nmap的生成多少个IP。不合需要的IP如特定的私有,组播或者未分配的地址自动略过。选项0意味着永无休止的扫描。记住,一些网管对于未授权的扫描可能会很感冒并引起重叠。如果在某个雨天的下午,您觉得实在无聊,试试这个命令nmap -sS -PS80 -iR 0 -p 80随机地找一些网站浏览

      • -sS(TCP SYN扫描)

        它常常被称为半开放扫描,因为它不打开一个完全的TCP连接。

        Tcp SYN Scan (sS) 这是一个基本的扫描方式,它被称为半开放扫描,因为这种技术使得Nmap不需要通过完整的握手,就能获得远程主机的信息。Nmap发送SYN包到远程主机,但是它不会产生任何会话.因此不会在目标主机上产生任何日志记录,因为没有形成会话。这个就是SYN扫描的优势.如果Nmap命令中没有指出扫描类型,默认的就是Tcp SYN.

      • -sT(TCP connect()扫描)

        Tcp connect() scan(sT)如果不选择SYN扫描,TCP connect()扫描就是默认的扫描模式.不同于Tcp SYN扫描,Tcp connect()扫描需要完成三次握手,并且要求调用系统的connect().Tcp connect()扫描技术只适用于找出TCP和UDP端口.

      • -sU(UDP扫描)

        Udp scan(sU)顾名思义,这种扫描技术用来寻找目标主机打开的UDP端口.它不需要发送任何的SYN包,因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机,并等待响应,如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的.

      • -FIN扫描(-sF)

        FINscan(sF)

        有时候TcpSYN扫描不是最佳的扫描模式,因为有防火墙的存在.目标主机有时候可能有IDS和IPS系统的存在,防火墙会阻止掉SYN数据包。发送一个设置了FIN标志的数据包并不需要完成TCP的握手.

      • 空扫描(-sN)

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

      • -sA(TCP ACK扫描)

        这种扫描与目前为止讨论的其他扫描的不同之处在于它不能确定open(开放的)或者open | filtered(开放或过滤的)端口。无状态的,某些端口是被过滤的。ACK扫描探测报文只设置ACK标志位(除非您使用–scanflags)。为unfiltered(准确过滤的),意思是ACK报文不能到达,但至于它们是open(开放的)或者closed(关闭的)无法确定。代号1,2,3,9,10,或13)的端口,标记为filtered(被过滤的)。

      • 版本检测(sV)

        版本检测是用来扫描目标主机和端口上运行的软件的版本.它不同于其它的扫描技术,它不是用来扫描目标主机上开放的端口,不过它需要从开放的端口获取信息来判断软件的版本.使用版本检测扫描之前需要先用TCPSYN扫描开放了哪些端口.

      • Idlescan(-sL)

        Idlescan是一种先进的扫描技术,它不是用你真实的主机Ip发送数据包,而是使用另外一个目标网络的主机发送数据包.

        例如:

        nmap-sL  192.168.1.6   192.168.1.1
        

        Idlescan是一种理想的匿名扫描技术,通过目标网络中的192.168.1.6向主机192.168.1.1发送数据,来获取192.168.1.1开放的端口

      • -PN

        如果远程主机有防火墙,IDS和IPS系统,你可以使用-PN命令来确保不ping远程主机,因为有时候防火墙会组织掉ping请求.-PN命令告诉Nmap不用ping远程主机。

      • -sV (版本探测)

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

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

        当进行版本扫描(-sV)时,nmap发送一系列探测报文 ,每个报文都被赋予一个1到9之间的值。 被赋予较低值的探测报文对大范围的常见服务有效,而被赋予较高值的报文 一般没什么用。强度水平说明了应该使用哪些探测报文。数值越高, 服务越有可能被正确识别。 然而,高强度扫描花更多时间。强度值必须在0和9之间。 默认是7。当探测报文通过nmap-service-probes ports指示符 注册到目标端口时,无论什么强度水平,探测报文都会被尝试。这保证了DNS 探测将永远在任何开放的53端口尝试, SSL探测将在443端口尝试,等等。

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

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

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

        这导致Nmap打印出详细的关于正在进行的扫描的调试信息。 它是您用–packet-trace所得到的信息的子集。

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

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

    • nmap扫描时间和性能

      • –min-hostgroup ; --max-hostgroup (调整并行扫描组的大小)

        Nmap具有并行扫描多主机端口或版本的能力,Nmap将多个目标IP地址 空间分成组,然后在同一时间对一个组进行扫描。通常,大的组更有效。缺 点是只有当整个组扫描结束后才会提供主机的扫描结果。如果组的大小定义 为50,则只有当前50个主机扫描结束后才能得到报告(详细模式中的补充信息 除外)。

        默认方式下,Nmap采取折衷的方法。开始扫描时的组较小, 最小为5,这样便于尽快产生结果;随后增长组的大小,最大为1024。确切的 大小依赖于所给定的选项。为保证效率,针对UDP或少量端口的TCP扫描,Nmap 使用大的组。

        –max-hostgroup选项用于说明使用最大的组,Nmap不 会超出这个大小。–min-hostgroup选项说明最小的组,Nmap 会保持组大于这个值。如果在指定的接口上没有足够的目标主机来满足所 指定的最小值,Nmap可能会采用比所指定的值小的组。这两个参数虽然很少使用, 但都用于保持组的大小在一个指定的范围之内。

        这些选项的主要用途是说明一个最小组的大小,使得整个扫描更加快速。通常 选择256来扫描C类网段。对于端口数较多的扫描,超出该值没有意义。对于 端口数较少的扫描,2048或更大的组大小是有帮助的。

      • –min-parallelism ; --max-parallelism (调整探测报文的并行度)

        这个命令这些选项控制用于主机组的探测报文数量,可用于端口扫描和主机发现。

        这个值为10比较合适,

        –max-parallelism选项通常设为1,以防止Nmap在同一时间 向主机发送多个探测报文,和选择–scan-delay同时使用非常有用

        nmap --max-parallelism 4 192.168.1.103 #最大使用4个并发端口探测

      • –min-rtt-timeout , --max-rtt-timeout , --initial-rtt-timeout (调整探测报文超时)

        Nmap使用一个运行超时值来确定等待探测报文响应的时间,随后会放弃或重新 发送探测报文.

      • –host-timeout (放弃低速目标主机)

        这个选项用于Nmap控制针对一个主机发送探测报文的等待时间(毫秒),在带宽 控制的情况下这个选项非常有效。

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

      • –host-timeout (放弃低速目标主机)

        由于性能较差或不可靠的网络硬件或软件、带宽限制、严格的防火墙等原因, 一些主机需要很长的时间扫描。这些极少数的主机扫描往往占 据了大部分的扫描时间。因此,最好的办法是减少时间消耗并且忽略这些主机,使用 --host-timeout选项来说明等待的时间(毫秒)。

    • nmap与防火墙

      • 防火墙

        在网络中,注意隐藏自己,通过对防火墙的设置,可以让一般的ping扫描失效,对于自己不对外开放的端口也可以进行隐藏。

        但是道高一尺,魔高一丈,nmap有自带可以穿透一般防火墙检测的命令。

      • -f (报文分段); --mtu (使用指定的MTU)

        -f选项要求扫描时(包挺ping扫描)使用 小的IP包分段。其思路是将TCP头分段在几个包中,使得包过滤器、 IDS以及其它工具的检测更加困难.

        使用–mtu选项可 以自定义偏移的大小,使用时不需要-f,偏移量必须 是8的倍数.

        nmap -f   192.168.1.106
        
        nmap --mtu 8 192.168.1.105
        
      • -D <decoy1 [,decoy2]…> (使用诱饵隐蔽扫描)

        这是一种常用的隐藏自身IP地址的有效技术,

        使用逗号分隔每个诱饵主机,也可用自己的真实IP作为诱饵,这时可使用 ME选项说明。如果在第6个位置或 更后的位置使用ME选项,一些常用 端口扫描检测器(如Solar Designer’s excellent scanlogd)就不会报告 这个真实IP。如果不使用ME选项,Nmap 将真实IP放在一个随机的位置

        注意,作为诱饵的主机须在工作状态,否则会导致目标主机的SYN洪水攻击。 如果在网络中只有一个主机在工作,那就很容易确定哪个主机在扫描。也可 使用IP地址代替主机名(被诱骗的网络就不可能在名字服务器日志中发现)。

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

        nmap -D RND:10 192.168.1.1
        
      • -S <IP_Address> (源地址哄骗)

        在某些情况下,Nmap可能无法确定你的源地址(如果这样,Nmap会给出 提示)。此时,使用-S选项并说明所需发送包的接口IP地址。

        这个标志的另一个用处是哄骗性的扫描,使得目标认为是另 一个地址在进行扫描。可以想象某一个竞争对手在不断扫描某个公司! -e选项常在这种情况下使用,也可采用-P0选项。

      • –source-port ; -g (源端口哄骗)

        仅依赖于源端口号就信任数据流是一种常见的错误配置,这个问题非常 好理解。例如一个管理员部署了一个新的防火墙,但招来了很多用户的不满,因为 他们的应用停止工作了。可能是由于外部的UDP DNS服务器响应无法进入网络,而导致 DNS的崩溃。FTP是另一个常见的例子,在FTP传输时,远程服务器尝试和内部用 建立连接以传输数据。

        对这些问题有安全解决方案,通常是应用级代理或协议分析防火墙模块。 但也存在一些不安全的方案。注意到DNS响应来自于53端口,FTP连接 来自于20端口,很多管理员会掉入一个陷阱,即允许来自于这些端口的数据进入 网络。他们认为这些端口里不会有值得注意的攻击和漏洞利用。此外,管理员 或许认为这是一个短期的措施,直至他们采取更安全的方案。但他们忽视了安全的 升级。

        不仅仅是工作量过多的网络管理员掉入这种陷阱,很多产品本身也会有这类 不安全的隐患,甚至是微软的产品。Windows 2000和Windows XP中包含的IPsec过滤 器也包含了一些隐含规则,允许所有来自88端口(Kerberos)的TCP和UDP数据流。另 一个常见的例子是Zone Alarm个人防火墙到2.1.25版本仍然允许源端口53(DNS)或 67(DHCP)的UDP包进入。

        Nmap提供了-g和–source-port选项(它们是 等价的),用于利用上述弱点。只需要提供一个端口号,Nmap就可以从这些 端口发送数据。为使特定的操作系统正常工作,Nmap必须使用不同的端口号。 DNS请求会忽略–source-port选项,这是因为Nmap依靠系 统库来处理。大部分TCP扫描,包括SYN扫描,可以完全支持这些选项,UDP扫 描同样如此。

        nmap --source-port 54 192.168.1.106       #指定发送探测包到指定端口
        
      • –data-length (发送报文时 附加随机数据)

        正常情况下,Nmap发送最少的报文,只含一个包头。因此TCP包通常 是40字节,ICMP ECHO请求只有28字节。这个选项告诉Nmap在发送的报文上 附加指定数量的随机字节。操作系统检测(-O)包不受影响, 但大部分ping和端口扫描包受影响,这会使处理变慢,但对扫描的影响较小

        nmap --data-length 25 192.168.1.106      #在数据包中添加混淆数据长度为25的数据
        
      • –spoof-mac <mac address,prefix,or vendor name> (MAC地址哄骗)

    • nmap扫描结果的输出

      • -oN (标准输出)

        要求将标准输出直接写入指定 的文件.

        nmap -oN scan.txt 192.168.1.1/24

        nmap -oX scan.xml 192.168.1.1/24

      • -oX (XML输出)

      • -oA (输出至所有格式)

    • 细节与调试

      • –packet-trace (跟踪发送和接收的报文)

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

      • –iflist (列举接口和路由)

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

        nmap --iflist
        
      • -6 (启用IPv6扫描)

      • -A (激烈扫描模式选项)

        这个选项启用额外的高级和高强度选项,目前还未确定代表 的内容。目前,这个选项启用了操作系统检测(-O) 和版本扫描(-sV),以后会增加更多的功能。 目的是启用一个全面的扫描选项集合,不需要用户记忆大量的 选项。这个选项仅仅启用功能,不包含用于可能所需要的 时间选项(如-T4)或细节选项(-v)。

    • nmap自带的脚本库

      • 常用扫描脚本

        留待后续补充

      • 常用扫描

        nmap --script 脚本 ip #使用脚本对目标ip进行扫描

        nmap --script “http*” ip #使用所有以http开头的脚本进行扫描

        nmap --script-updatedb #更新脚本库

nmap --randomize-hosts 192.168.1.1-100

nmap --badsum 192.168.1.106

nmap -Pn -sS -p 80 -iR 0 --open #随机探测80端口开放的主机

nmap --inital-rtt-timeout 6000 192.168.1.1

nmap --rtt-timeout 350 192.168.1.105 #超时350毫秒

nmap --max-retries 3 192.168.1.105 #进行至少3次尝试

nmap --ttl 100 192.168.1.105 #发送数据包

nmap --host-timeout 1m ip

nmap --min-rate 50 ip

nmap --max-rate 10 ip

nmap --script 脚本 ip

  • nmap踩过的坑

    nmap 扫描报错

    原因:使用拨号上网,协议 使用的是ppp,nmap不识别

    解决:加上 -sT -Pn 两个参数即可

官方文档

中文官方文档

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值