Nmap
00x00 介绍
nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
00x01 功能介绍
基本功能有三个,一是探测一组主机是否在线;其次是扫描 主机端口,嗅探所提供的网络服务;还可以推断主机所用的操作系统 。Nmap可用于扫描仅有两个节点的LAN,直至500个节点以上的网络。Nmap 还允许用户定制扫描技巧。通常,一个简单的使用ICMP协议的ping操作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所 使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。
00x02 安装
可自行到官网下载https://nmap.org/download.html。安装后进行使用。
00x03、nmap的简单使用方法
1、 扫描参数介绍
命令行模式查看:nmap –help
Nmap 参数详解:
下面对参数进行介绍
Namp扫描目标的参数:
-iL filename:从文件中读取待检测的目标
-iR hostnum:随机选取,进行扫描.如果-iR指定为0,则无休止的扫描
--exclude host1[, host2]:从扫描任务中需要排除的主机
--exculdefile exclude_file:排除导入文件中的主机和网段
Nmap主机发现相关参数:
-sL :仅仅是显示,扫描的 IP 数目,不会进行任何扫描 。
-sn :ping 扫描,即主机发现 。
-Pn :不检测主机存活 。
-PS/PA/PU/PY[portlist] :TCP SYN Ping/TCP ACK Ping/UDP Ping 发现 。
-PE/PP/PM :使用 ICMP echo, timestamp and netmask 请求 包发现主机 。
-PO[prococollist] :使用 IP 协议包探测对方主机是否开启 。
-n/-R :不对 IP 进行域名反向解析/为所有的 IP 都进行域名 的反向解析
--dns-servers<serv1[,serv2],...>:指定自定义DNS服务器
--system-dns:使用操作系统的DNS解析器
--traceroute:跟踪到每个主机的跳路径
常见端口扫描方法:
-sS/sT/sA/sW/sM :指定使用TCP SYN/ACK/Connect()/Window/Maimon scans的方式进行扫描
-sU :UDP 扫描
-sN/sF/sX :TCP Null,FIN,and Xmas 扫描
--scanflags<flags>:自定义 TCP 包中的 flags
-sI<zombie host[:probeport]>:空闲扫描
-sY/sZ:SCTP INIT/COOKIE - ECHO 扫描
-sO:使用IP protocol扫描确定目标机支持 的协议类型
-b<FTP relay host>:使用 FTP bounce scan 指定端口和扫描顺序
指定端口和扫描顺序参数:
-p<port ranges>:特定的端口 -p80,443 或者 -p1-65535
--exclude-ports<port ranges>:排除指定端口扫描
-F:快速扫描模式,比默认的扫描端口还少
-r :不随机扫描端口,默认是随机扫描的
--top-ports < number >:扫描开放概率最高的 number 个端口,出现的概率需要参考nmap-services文件,ubuntu中该文件位于/usr/share/nmap.nmap默认扫前1000个
--port-ratio<ratio>:扫描指定频率以上的端口
服务版本识别参数:
-sV :开放版本探测,可以直接使用-A同时打开操作系统探测和版本探测
--version-intensity<level>:设置版本扫描强度,强度水平说明了应该使 用哪些探测报文。数值越高,服务越有可能被正确识别。默认是7
--version-light :打开轻量级模式,为--version-intensity 2 的别名
--version-all :尝试所有探测,为--version-intensity 9 的别名
--version-trace :显示出详细的版本侦测过程信息
2、 常用方法
Nmap参数比较繁多,日常渗透通常使用得不多,针对常用的命令,这边列举一些,等熟悉使用了,可加深学习。(此处小编偷懒,便不一一截图了)
1)进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):
nmap -sP 192.168.1.0/24
2)仅列出指定网络上的每台主机,不发送任何报文到目标主机:
nmap -sL 192.168.1.0/24
3)探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):
nmap -PS 192.168.1.234
4)使用UDP ping探测主机:
nmap -PU 192.168.1.0/24
5)使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:
nmap -sS 192.168.1.0/24
6)当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:
nmap -sT 192.168.1.0/24
7)UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:
nmap -sU 192.168.1.0/24
8)确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):
nmap -sO 192.168.1.19
9)探测目标主机的操作系统:
nmap -O 192.168.1.19
nmap -A 192.168.1.19
00x04 nmap的进一步用法
上面介绍的是参数的使用,Nmap更进一步的用法,就会用到脚本,下面对脚本扫描进行简单的介绍。
Nmap的脚本默认存放在安装目录下/nmap/scripts文件夹下
1、Nmap提供的命令行参数如下:
-sC :根据端口识别的服务,调用默认脚本
--script=<Lua scripts>:调用的脚本名
--script-args=<n1=v1,[n2=v2,...]>:调用的脚本传递的参数
--script-args-file=filename:使用文本传递参数
--script-trace :显示所有发送和接收到的数据
--script-updatedb :更新脚本的数据库
--script-help=<Lua scripts>:显示指定脚本的帮助
2、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),如是否有MS08_067
3、运用实例
应用弱口令
nmap --script=auth 192.168.1.1
暴力破解攻击
nmap --script=brute 192.168.1.1
扫描常规漏洞
nmap --script=vuln 192.168.1.1
应用服务扫描
nmap --script=realvnc-auth-ypass 192.168.1.1
探测局域网内更多服务开启的情况
nmap -n -p 445 --script=broadcast 192.168.1.1
whois解析
nmap -script external baidu.com
IIS 短文件泄露
nmap -p 8080 --script http-iis-short-name-brute 192.168.1.1
检测CVE-2011-2523中的ftp-vsftpd-backdoor
nmap -T2 --script ftp-vsftpd-backdoor 192.168.1.1
验证HTTP.sys 远程代码执行
nmap -sV --script http-vuln-cve2015-1635 192.168.1.1
验证http中开启的-methods 方法
nmap -T3 --script http-methods --script-args http.test-all=true,http.url-path=/www.haoshangjia.com
验证 SSL POODLE information leak
nmap -sV -p 443 --version-light --script ssl-poodle 218.19.141.16
验证mysql 匿名访问
nmap --script mysql-empty-password 203.195.139.153
验证cve2015-1427 漏洞
nmap --script http-vuln-cve2015-1427 --script-args command=ls 203.195.139.153
验证cve2014-8877漏洞
nmap -Pn --script http-vuln-cve2014-8877 --script-args http-vuln-cve2014-8877.cmd=dir,http-vuln-cve2014-8877.uri=/wordpress 42.96.170.128
验证低安全的 SSHv1,sslv2协议
nmap --script sshv1,sslv2 www.haoshangjia.com
验证Cisco ASA中的CVE-2014-2126,CVE-2014-2127,CVE-2014-21,CVE-2014-2129漏洞
nmap -p 443 --script http-vuln-cve2014-2126,http-vuln-cve2014-2127,http-vuln-cve2014-2128,http-vuln-cve2014-2129 203.195.139.153
验证CVE-2014-0224 ssl-ccs-injection
nmap -Pn --script ssl-ccs-injection 203.195.139.153
验证ssl-cert证书问题
nmap -v -v --script ssl-cert 203.195.139.153
验证SSL证书的有限期
nmap -Pn --script ssl-date www.haoshangjia.com
验证CVE-2014-0160 OpenSSL Heartbleed bug
nmap -p 443 --script ssl-heartbleed,ssl-known-key 203.195.139.153
验证 Debian OpenSSL keys
nmap -p 443 --script ssl-known-key 203.195.139.153
验证弱加密SSL套件
nmap --script ssl-enum-ciphers 203.195.139.153
验证CVE 2015-4000
nmap --script ssl-dh-params www.haoshangjia.com
验证多种SSL漏洞问题
nmap 203.195.139.153 --vv --script sshv1,ssl-ccs-injection,ssl-cert,ssl-date,ssl-dh-params,ssl-enum-ciphers,ssl-google-cert-catalog,ssl-heartbleed,ssl-known-key,sslv2
在网络中检测某主机是否存在窃听他人流量
nmap --script sniffer-detect 10.10.167.5
验证telnet是否支持加密
nmap --script telnet-encryption 203.195.139.153
收集VNC信息
nmap --script vnc-info 203.195.139.153
暴力破解VNC
nmap --script vnc-brute --script-args brute.guesses=6,brute.emptypass=true,userdb=/root/dictionary/user.txt,brute.useraspass=true,passdb=/root/dictionary/pass.txt,brute.retries=3,brute.threads=2,brute.delay=3 42.96.170.128
使用nmap对某主机进行一系列的证书鉴权检查
nmap --script auth 203.195.139.153
使用nmap在局域网内探查更多服务开启情况
nmap --script broadcast 10.10.167.6
使用nmap 对常见的服务进行暴力破解
nmap --script brute 203.195.139.153
使用nmap 进行基本的扫描
nmap --script default 203.195.139.153
#nmap --sC 203.195.139.153
使用nmap 进行信息挖掘
nmap --script discovery 203.195.139.153
使用nmap 进行拒绝服务攻击
nmap --script dos 203.195.139.153
使用nmap 利用已知的漏洞入侵系统
nmap --script exploit 203.195.139.153
使用nmap 进行利用第三方的数据库或资源进行信息收集或者攻击
nmap --script external 203.195.139.153
使用nmap 进行模糊测试,发送异常的包到目标机,探测出潜在漏洞
nmap --script fuzzer 203.195.139.153
使用nmap 进行入侵,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
nmap --script intrusive 203.195.139.153
使用nmap 探测目标机是否感染了病毒、开启了后门等信息
nmap --script malware 203.195.139.153
使用nmap 对系统进行安全检查
nmap --script safe 203.195.139.153
使用nmap 对目标机进行检查是否存在常见的漏洞
nmap --script vuln 203.195.139.153
使用nmap 负责增强服务与版本扫描(Version Detection)功能的脚本
nmap --script version 203.195.1
00x05写在最后
Nmap的使用方法还有很多很多,包括参数使用,脚本使用等,在这里只是起到一个抛砖引玉的作用,更多的方法还需自己多加摸索学习。更多的使用方法,可前往官网https://nmap.org/nsedoc/categories进行翻阅学习。