• 渗透测试之nmap


    一,功能介绍

        Nmap是网络连接端口扫描软件,用来扫描网上电脑开放的哪些连接端口,并且确定哪些服务运行在哪些端口连接,推断是哪个操作系统,他是网络管理员必备的软件之一,以及用于评估网络系统安全。

    二,部署指南

        * kali集成坏境

        * 单独安装

    三,实战

        Nmap的参数选项繁多,功能非常丰富,Nmap的通用命令格式Nmap<扫描选项><扫描目标>

     (一)主机发现

       1)主机发现原理

        主机发现的原理和ping命令差不多,发送探测包到目标主机,如果收到回复,那表明主机是存在的。Nmap支持十多种不同的主机探测方式,如ICMP BCHO/TIMESYAMP/NETMASK报文,发送TCPSYN/AVCK包,发送SCTP INIT/COOKIE-ECHO包,用户可以在不同的条件下灵活选用不同的方式进行探测目标主机。

       2)主机发现的基本用法

    • -sL:List Scan   列表扫描,仅将扫描的主机列举出来,不进行主机发现。 
    • -sn:Ping Scan  只进行主机发现,不进行端口扫描。
    • -Pn:将指定的主机视为开启,跳过主机发现的过程。
    • -PS/PA/PU/PY:使用TCP SYN/ACK或SCTP INIT/ECHO方式进行主机发现。
    • -PE/PP/PM:使用ICMP echo,tmestamp,and netmask 请求发现主机。
    • -PO:使用IP协议包探测对方主机是否开启。
    • -n /-R:-n表示不进行DNS解析,-R表示总进行DNS解析。
    • --dns-server:指定dns服务器。
    • --system-dns:指定使用系统的DNS。
    • --traceroute:追踪每个路由节点。 

     (二)端口扫描

       1)端口扫描原理:

        端口扫描是Nmap最核心的功能,用于确定TCP/UDP端口的开放情况,默认情况下,Nmap会扫描1000个最有可能开放的TCP端口,Nmap将端口分为六个状态。

         open:端口是开放的。

         closed:端口是关闭的。

         filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态。

         unfiltered:端口没有被屏蔽,但是否开放需进一步确定。

         open/filtered:端口是开放的或被屏蔽。

         closed/unfiltered:端口是关闭的或没有被屏蔽。

        端口扫描非常强大,提供了很多的探测方式:

    • TCP  SYN scanning
    • TCP  connect scanning
    • TPC  ACK scanning
    • TCP  FIN/Xmas/NULl scanning
    • UDP scanning
    • 其他方式

       2)端口扫描用法

    •  -sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。 
    • -sU:指定使用UDP方式确定目标主机的UDP状况。
    • -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。 

    • --scanflags <flags>: 定制TCP包的flags。
    •  -sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)。

    • -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
    • -sO: 使用IP protocol 扫描确定目标机支持的协议类型。
    • -b <FTP relay host>: 使用FTP bounce scan扫描方式 。

      

      (三)版本侦测

       1)版本侦测原理

        

        简要的介绍版本的侦测原理。版本侦测主要分为以下几个步骤:

    •  首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。
    •  如果是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中Probe TCP NULL q||对应的  totalwaitms)。通常在等待时间内,会接收到目标机发送的“WelcomeBanner”信息。nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比。查找对应应用程序的名字与版本信息。
    •  如果通过“Welcome Banner”无法确定应用程序版本,那么nmap再尝试发送其他的探测包(即从nmap-services-probes中挑选合适的probe),将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。
    •  如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。
    •  如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。
    •  如果探测到应用程序是SunRPC,那么调用brute-force RPC grinder进一步探测具体服务。

       2)版本侦测用法: 

    •   -sV: 指定让Nmap进行版本侦测 
    •   --version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。 
    •   --version-light: 指定使用轻量侦测方式 (intensity 2) 
    •   --version-all: 尝试使用所有的probes进行侦测 (intensity 9) 
    •   --version-trace: 显示出详细的版本侦测过程信息。

      

      (四)os侦测

        1)os侦测原理

          

                       Nmap使用TCP/IP协议栈指纹来识别不同的操作系统和设备。在RFC规范中,有些地方对TCP/IP的实现并没有强制规定,

          由此不同的TCP/IP方案中可能都有自己的特定方式。Nmap主要是根据这些细节上的差异来判断操作系统的类型的。

                   具体实现方式如下:
                         Nmap内部包含了2600多已知系统的指纹特征(在文件nmap-os-db文件中)。将此指纹数据库作为进行指纹对比的样本库。

                          分别挑选一个open和closed的端口,向其发送经过精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。

          将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列举出可能的系统。

        2)os侦测用法

            

    •   -O: 指定Nmap进行OS侦测。 
    •   --osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。 
    •   --osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。 

      

       (五)漏洞扫描

          扫描端口并且标记可以爆破的服务

          

            nmap 目标 --script=ftp-brute,imap-brute,smtp-brute,pop3-brute,mongodb-brute,redis-brute,
                 ms-sql-brute,rlogin-brute,rsync-brute,mysql-brute,pgsql-brute,oracle-sid-brute,
                 oracle-brute,rtsp-url-brute,snmp-brute,svn-brute,telnet-brute,vnc-brute,xmpp-brute

          判断常见的漏洞并扫描端口

            nmap 目标 --script=auth,vuln

      

          精确判断漏洞并扫描端口

            nmap 目标 --script=dns-zone-transfer,ftp-anon,ftp-proftpd-backdoor,ftp-vsftpd-backdoor,
                 ftp-vuln-cve2010-
    4221,http-backup-finder,http-cisco-anyconnect,
                 http-iis-short-name-brute,http-put,http-php-version,http-shellshock,http-robots.
                txt,http-svn-enum,http-webdav-scan,iis-buffer-overflow,iax2-version,memcached-
    info,
                 mongodb-
    info,msrpc-enum,ms-sql-info,mysql-info,nrpe-enum,pptp-version,redis-info,
                 rpcinfo,samba-vuln-cve-
    2012-1182,smb-vuln-ms08-067,smb-vuln-ms17-010,snmp-info,sshv1,
                 xmpp-
    info,tftp-enum,teamspeak2-version

    四,Nmap的优劣势

      优势:

    •   功能灵活强大,支持多种目标,大量计算机的同时扫描;
    •   开源,相关帮助文档十分详细;
    •   流行,由于其具有强大的扫描机探测功能,,已被成千上万安全专家使用。

      劣势:

    •  Nmap参数众多,难以一一记忆;

           

  • 相关阅读:
    linux 系统下如何进行用户之间的切换
    Linux下如何切换用户
    判断php的运行模式
    一起谈.NET技术,Application、Session、Cookie、ViewState、Cache、Hidden的区别 狼人:
    一起谈.NET技术,HTTP协议及POST与GET操作差异,C#中如何使用POST、GET等 狼人:
    一起谈.NET技术,敏捷开发的26条至理名言 狼人:
    一起谈.NET技术,重温数据库访问——故事篇 狼人:
    一起谈.NET技术,WPF 基础到企业应用系列3——WPF开发漫谈 狼人:
    一起谈.NET技术,使命必达:深入剖析WCF的可靠会话 狼人:
    一起谈.NET技术,.NET中通过代理实现面向方面编程(AOP) 狼人:
  • 原文地址:https://www.cnblogs.com/msblue/p/13873229.html
Copyright © 2020-2023  润新知