zoukankan      html  css  js  c++  java
  • 【命令汇总】nmap 使用教程


    日期:2019-07-03 21:23:39
    更新:
    作者:Bay0net
    介绍:汇总一下笔记里面的 nmap 使用方式


    0x01、 基本信息

    Nmap: the Network Mapper - Free Security Scanner
    Download the Free Nmap Security Scanner for Linux/Mac/Windows

    0x02、使用说明

    2.1 参数介绍

    -iL:扫描文件
    -V:输出版本信息
    -O:操作系统探测
    -R:总是使用域名解析
    -f:分片扫描,挺好用
    -A:同时输出-O和-sV 的信息
    -D:可以指定几个假的 IP,来扫描
    -n:不使用域名解析,可以加快速度。
    -sV:版本探测
    -sS:SYN 扫描
    -sT:TCP 扫描
    -sU:UDP 扫描
    -sF:FIN 扫描
    -sP:ping scan
    -sn: 跳过端口扫描
    -P0:不 ping,直接扫描,【默认主机是存活的】
    -F:默认扫描 1000 个端口,使用 -F 只扫描 100 个
    
    -oN:输出为普通文件
    -oX:输出为 xml 文件
    

    欺骗的艺术

    -f; --mtu value---------------- 指定使用分片、指定数据包的 MTU
    -D decoy1,decoy2,ME------------ 使用诱饵隐蔽扫描
    -S IP-ADDRESS------------------ 源地址欺骗
    -e interface------------------- 使用指定的接口
    -g / --source-port PROTNUM------ 使用指定源端口
    --proxies url1,[url2],...------ 使用 HTTP 或者 SOCKS4 的代理 
    --data-length NUM-------------- 填充随机数据让数据包长度达到 NUM
    --ip-options OPTIONS----------- 使用指定的IP选项来发送数据包
    --ttl VALUE-------------------- 设置 IP time-to-live 域
    --spoof-mac ADDR/PREFIX/VEBDOR- MAC 地址伪装
    --badsum----------------------- 使用错误的 checksum 来发送数据包
    

    2.2 举个栗子

    局域网扫描存活主机

    nmap -sP 172.16.1.0/24 |grep 172
    

    扫描多个主机

    nmap 192.168.1.2 192.168.1.5
    nmap -sn 192.168.1.100,101,102,103,105
    nmap 192.168.1.1-100
    nmap 192.168.1.1/24
    

    扫描时排除某主机

    nmap 192.168.1.1/24 -exclude 192.168.1.1
    

    猜测操作系统

    nmap -O --osscan-guess 192.168.1.1
    

    指定几个假 IP去做分片扫描

    nmap -D 192.168.0.1,192.168.0.250,192.168.0.254 10.211.55.3 -f
    

    2.3 常用脚本

    发现相关信息时,可以搜索可用的 nse.

    NSEDoc Reference Portal

    HTTP DOS 攻击

    nmap --script http-slowloris --max-parallelism 400  <target>
    

    IIS 短文件名

    nmap -p80 --script http-iis-short-name-brute <target>
    

    获取 HTTP 方法

    nmap --script http-methods <target>
    

    检测 HTTP.SYS 漏洞

    nmap -p80 --script http-vuln-cve2015-1635.nse <target>
    

    验证 SSL 各种漏洞

    nmap --vv --script sshv1,ssl-ccs-injection,ssl-cert,ssl-date,ssl-dh-params,ssl-enum-ciphers,ssl-heartbleed,ssl-known-key,sslv2 <target>
    

    识别端口的服务

    nmap --script unusual-port <ip>
    

    收集 VNC 信息

    nmap -sV -sC <target>
    

    各种爆破

    # ftp-brute
    nmap --script ftp-brute --script-args brute.emptypass=true,ftp-brute.timeout=30,userdb=/root/dirtionary/usernames.txt,brute.useraspass=true,passdb=/root/dirtionary/passwords.txt,brute.threads=3,brute.delay=6 <target>
    
    # mongodb-brute
    nmap -p 27017--script mongodb-brute <host>
    
    # mssql-brute
    nmap -p 445 --script ms-sql-brute --script-args mssql.instance-all,userdb=customuser.txt,passdb=custompass.txt <host>
    
    # mysql-empty-password
    nmap -sV --script=mysql-empty-password <target>
    
    # mysql-brute
    nmap --script=mysql-brute <target>
    
    # oracle-brute
    nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL <host>
    
    # pop3-brute
    nmap -sV --script=pop3-brute <target>
    
    # redis-brute
    nmap -p 6379 <ip> --script redis-brute
    # rsync-brute
    nmap -p 873 --script rsync-brute --script-args 'rsync-brute.module=www' <ip>
    
    # smtp-brute
    nmap -p 25 --script smtp-brute <host>
    
    # smb-brute
    nmap --script smb-brute.nse -p445 <host>
    
    # rsync-brute
    nmap -p 873 --script rsync-brute --script-args 'rsync-brute.module=www' <ip>
    
    # rlogin-brute
    nmap -p 513 --script rlogin-brute <ip>
    
    # ssh-brute
    nmap -p 22 --script ssh-brute --script-args userdb=users.lst,passdb=pass.lst --script-args ssh-brute.timeout=4s <target>
    
    # socks-brute
    nmap --script socks-brute -p 1080 <host>
    
    # telnet-brute
    nmap -p 23 --script telnet-brute --script-args userdb=myusers.lst,passdb=mypwds.lst --script-args telnet-brute.timeout=8s <target>
    
    # svn-brute
    nmap --script svn-brute --script-args svn-brute.repo=/svn/ -p 3690 <host>
    

    2.4 模糊扫描

    nmap 脚本主要分为以下几类,在扫描时可根据需要设置 --script= 类别这种方式进行比较笼统的扫描:

    auth--------负责处理鉴权证书(绕开鉴权)的脚本 
    broadcast---在局域网内探查更多服务开启状况,如 dhcp/dns/sqlserver 等服务  
    brute-------提供暴力破解方式,针对常见的应用如 http/snmp 等  
    default-----使用 -sC 或 -A 选项扫描时候默认的脚本,提供基本脚本扫描能力  
    discovery---对网络进行更多的信息,如 SMB 枚举、SNMP 查询等  
    dos---------用于进行拒绝服务攻击  
    exploit-----利用已知的漏洞入侵系统  
    external----利用第三方的数据库或资源,例如进行 whois 解析  
    fuzzer------模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞 
    intrusive---入侵性的脚本,此类脚本可能引发对方的 IDS/IPS 的记录或屏蔽  
    malware-----探测目标机是否感染了病毒、开启了后门等信息  
    safe--------此类与 intrusive 相反,属于安全性脚本  
    version-----负责增强服务与版本扫描(Version Detection)功能的脚本  
    vuln--------负责检查目标机是否有常见的漏洞(Vulnerability)
    

    一些参数

    -sC: 等价于--script=default,使用默认类别的脚本进行扫描。    
    --script=<Lua scripts>: <Lua scripts>使用某个或某类脚本进行扫描,支持通配符描述   
    --script-args=<n1=v1,[n2=v2,...]>: 为脚本提供默认参数   
    --script-args-file=filename: 使用文件来为脚本提供参数   
    --script-trace: 显示脚本执行过程中发送与接收的数据   
    --script-updatedb: 更新脚本数据库   
    --script-help=<Lua scripts>: 显示脚本的帮助信息,其中<Lua scripts>部分可以逗号分隔的文件或脚本类别。
    

    2.5 端口开放状态

    官方文章,推荐看英文版

    Port Scanning Basics | Nmap Network Scanning
    端口扫描基础 |

    其中的 open 和 closed 很好理解,就是开放和关闭,但是 Filtered 和 Unfiltered,个人见解如下。

    • Filtered:如果网络中有防火墙等安全设备,拦截下来了我们发送的探测包,这时我们收到的返回包可能是主机不可达,此时 nmap 就会把端口标记为 Filtered。

    • Unfiltered:只会发生在 TCP ack 扫描类型时当返回 RST 的报文,此时的端口,是能被 nmap 访问的,但是 nmap 无法通过返回的报文来判断端口是否开放,需要我们手工做探测。

    2.6 扫描方式

    Port Scanning Techniques | Nmap Network Scanning

    1、TCP 扫描(-sT)

    通过建立 TCP 的三次握手连接来进行信息的传递

    ① Client 端发送SYN;
    ② Server 端返回SYN/ACK,表明端口开放;
    ③ Client 端返回ACK,表明连接已建立;
    ④ Client 端主动断开连接。
    
    Client->Server:SYN
    Server->Client:SYN+ACK
    Client->Server:ACK
    note right of Client:Client closed connection,finish
    

    2、SYN 扫描(-sS)

    需要高权限,因为没有建立三次握手,所以一般无痕迹

    Client->Server:SYN
    Server->Client:SYN+ACK
    Client->Server:RST
    

    3、NULL 扫描、ACK 扫描

    发送一个没有任何标志位的数据包给服务器,然后等待服务器的返回内容。隐蔽,但准确率低。可以用来扫描 Windows,Windows 不遵守 RFC 793 标准,不论端口是开启还是关闭的都返回 RST 包

    Client->Server:NULL
    Server->Client:RST
    

    4、ACK 扫描

    通过判断 RST 包中的 TTL 来判断端口是否开启。

    Client->Server:ACK
    Server->Client:RST
    note left of Server:if ttl ≤ 64,host is alive
    

    0x03、其他内容

    目录相关

    Mac 下使用 brew 安装,默认的一些路径,注意版本

    # scripts 
    /usr/local/Cellar/nmap/7.70/share/nmap/scripts
    
    # nselib
    /usr/local/Cellar/nmap/7.70/share/nmap/nselib
    
    # 字典所在的目录
    /usr/local/Cellar/nmap/7.70/share/nmap/nselib/data
    
    # mac 地址厂家列表
    /usr/local/share/nmap/nmap-mac-prefixes
    
    # 端口和服务映射表
    /usr/local/share/nmap/nmap-services
    

    alias

    n='sodu nmap -sS -T4 -P0 -n -v'
    

    Reference

    Nmap Network Scanning—The Official Nmap Project Guide to Network Discovery and Security Scanning

    Index of /nsedoc/scripts

    端口扫描之王——nmap入门精讲(一) - 谢灿勇 - 博客园

  • 相关阅读:
    枚举--分巧克力--蓝桥杯--二分法
    枚举笔记之哈希表 四个平方和
    枚举 蓝桥杯 四个平方数和2--暴力解法 超时
    枚举例题之平方十位数思路无代码
    LeetCode----盛最多水的容器「贪心」
    2020校招笔试
    2020校招美团点评笔试
    2020校招搜狗笔试
    2020网易校招笔试
    2020校招途家名宿开发笔试
  • 原文地址:https://www.cnblogs.com/v1vvwv/p/nmap-usage-summary.html
Copyright © 2011-2022 走看看