一、下载安装
1、官网下载地址:https://nmap.org/download.html
2、下载安装在方便自己查找的位置(在进入dos界面使用时更方便)
二、简介
Nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
Nmap是最受欢迎的开源网络映射器之一,此外,Nmap7这款自动化的扫描器能够轻易检测到Heartbleed、POODLE、FREAK等严重漏洞。Nmap7中对ssl-enum-ciphers(SSL枚举密码)脚本替换了新的实现算法,使得它能够通过枚举SSL/TLS协议版本和密码套件来快速分析TLS连接,它还能够迅速识别部署问题。另外,使用Nmap7能够轻易发现包含漏洞的服务器,Nmap7中包含了对提速和扫描实现的改进。这个工具的新版本包括一个更新、更快的Nmap脚本引擎(Nmap Scripting Engine,NSE),同时它还允许用户编写Lua脚本。
三、基础用法
此处介绍用法在dos界面使用
1、指定扫描主机
nmap -sP +ip #扫描单个主机
2、一个网段的所有主机
nmap -sP +ip/24 #用于探测局域网有哪些机器
3、一个范围的主机
nmap -sP +ip-254
4、探测端口范围
nmap -p 80, 3389 +ip #探测80,3389端口
nmap -p 22-25 +ip #探测22至25端口
5、服务版本探测
nmap -V +ip
6、扫描主机操作系统版本
nmap -O +ip
7、全面扫描
nmap -A +ip
8、保存结果
nmap -oN D:\test.txt #保存在本地
9、UDP(协议)端口扫描
--扫描单个端口
nmap +ip -sU -p 53
--扫描1-100端口
nmap +ip -sU -p 1-100
--扫描默认常用的1000个端口(如:80、3306 等)
nmap +ip -sU
--不对目标进行ping探测(不判断主机是否在线,直接扫描端口)
nmap -sU +ip -Pn
补充:
-sU:表示udp scan,udp端口扫描
-Pn:不对目标进行ping探测(不判断主机是否在线,直接扫描端口)
10、补充
--使用SYN扫描,半连接扫描,优点是扫描速度快,不容易被记录,适用于任何兼容TCP堆栈,
可以清晰可靠地区分端口开启、关闭和过滤状态,扫描完成后将报告保存在D盘
nmap -sS -v --reason -p- -n -Pn --max-scan-delay 10 -oX d:/tcp.xml 10.XX.XX.XX
--使用UDP协议进行扫描,扫描速度很慢,扫描完成后将报告保存在D盘
nmap -sU -v --reason -p- -n -Pn --max-scan-delay 10 -oX d:/udp.xml 10.XX.XX.XX
--验证http中开启的-methods方法
nmap -p 8080 --script http-methods +ip
四、nmap脚本命令行参数简介
nmap提供的脚本命令行参数如下:
-sC:等价于-script=default,使用默认类别的脚本进行扫描
-script=:使用某个或某类脚本进行扫描,支持通配符描述
-script-args=<n1=v1,[n2=v2,.....]>:为脚本提供默认参数
-script-args-file=filename:使用文件来为脚本提供参数
-script-trace:显示脚本执行过程中发送与接收的数据
-script-updatedb:更新脚本数据库
-script-help=:显示脚本的帮助信息,其中部分可以逗号分隔的文件或脚本类别
五、nmap脚本分类及用法简介
此处介绍用法在dos界面使用
nmap脚本主要分为以下几类,在扫描时可根据需要设置-script=类别这种比较笼统的扫描:
auth:负责处理鉴权证书(绕开鉴权)的脚本
nmap --script auth +ip[对主机进行一系列证书鉴权检查]
broadcast:在局域网内探查更多服务开启状态,如dhcp/dns/sqlserver等服务
nmap --script broadcast +ip[在局域网内探查更多服务开启情况]
brute:提供暴力破解方式,针对常见的应用如http/snmp等
nmap --script brute +ip[对常见服务进行暴力破解]
default:使用-sC或-A选项扫描时默认的脚本,提供基本脚本扫描能力
nmap --script default +ip[进行基本扫描]
nmap --sC +ip[进行基本扫描]
discovery:对网络进行更多的信息,如SMB枚举、SNMP查询等
nmap --script discovery +ip[进行信息挖掘]
dos:用于进行拒绝服务攻击
nmap --script dos +ip[进行拒绝服务攻击]
exploit:利用已知的漏洞入侵系统
nmap --script exploit +ip[利用已知漏洞入侵系统]
external:利用第三方的数据库或资源,例如进行whois解析
nmap --script external +ip[利用第三方的数据库或资源进行信息收集或者攻击]
fuzeer:模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞
nmap --script fuzeer +ip[模糊测试,发送异常的包到目标机,探测出潜在漏洞]
intrusive:入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
nmap --script intrusive +ip[进行入侵,此类脚本可能引发对方的IDS/IPS的记录或屏蔽]
malware:探测目标机是否感染了病毒、开启了后门等信息
nmap --script malware +ip[探测目标机是否感染了病毒、开启了后门等信息]
safe:此类与intrusive相反,属于安全性脚本
nmap --script safe +ip[对系统进行安全检查]
version:负责增强服务与版本扫描(Version Detection)功能的脚本
nmap --script version +ip[负责增强服务与版本扫描(Version Detection)功能的脚本]
vuln:负责检查目标机是否有常见漏洞(Vulnerability)
nmap -script vuln +ip[对目标机进行检查是否存在常见的漏洞]
六、补充
由于常见的漏洞问题非常多,此章节主要介绍漏洞扫描和渗透测试中会经常遇到的一些漏洞,并且尝试使用namp 对这些被扫描工具扫描出来的漏洞进行人工手动验证,这些仅是命令,至于如何根据出现的结果进行判断是否有漏洞,这个在结果中很容易看出,文中不做详细解释,例如出现 vulnerable—有漏洞;not vulnerable—无漏洞。有结果出来—有漏洞;无结果出来—无漏洞,往后在其他测试中,只需要将ip替换成需要验证的目标IP或者网站。
此处介绍用法在dos界面使用
nmap -p 80 --script http-iis-short-name-brute +ip[验证iss短文件名泄露]
nmap -sV -p 11211 -script memcached-info +ip[验证Memcached未授权访问漏洞]
nmap -sV - (-) script http-vuln-cve2015-1635 +ip[验证http.sys远程代码执行漏洞]
nmap -sV --script=ssl-heartbleed +ip[验证心脏出血漏洞]
nmap -p 27017 --script mongodb-info +ip[验证Mongodb未授权访问漏洞]
nmap -p 6379 --script redis-info +ip[验证Redis未授权访问漏洞]
nmap --script=http-vuln-cve2015-1427 --script-args command='ls' +ip[验证Elasticsearch未授权访问漏洞]
nmap -p 873 --script rsync-brute --script-args'rsync-brute.module=www'[验证Rsync未授权访问漏洞]
nmap --max-parallelism 800-script http-slowloris +ip[HTTP拒绝服务]
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 +ip[ftp弱口令暴力破解]
nmap -T2 --script ftp-vsftpd-backdoor +ip[检测CVE-2011-2523中的ftp-vsftpd-backdoor]
nmap -T3 --script http-methods --script-args http.test-all=true,http.url-path=/www.xxxxxx.com[验证HTTP中开启的method方法]
nmap -sV --script http-vuln-cve2015-1635 +ip[验证HTTP.sys远程代码执行]
nmap -sV -p 443 --version-light --script ssl-poodle +ip[验证SSL poodle information leak]
nmap --script http-put --script-args http-put.url=/uploads/testput.txt,http-put.file=/root/put.txt +ip[验证HTTP中开启了put方法]
nmap --script mysql-empty-password +ip[验证MySQL匿名访问]
nmap --script http-vuln-cve2015-1427 --script-args command=ls +ip[验证CVE2015-1427漏洞]
nmap -Pn --script http-vuln-cve2014-8877 --script-args http-vuln-cve2014-8877.cmd=dir,http-vuln-cve2014-8877.uri=/wordpress +ip[验证cve2014-8877漏洞]
nmap -p 443 --script http-vuln-cve2014-2126,http-vuln-cve2014-2127,http-vuln-cve2014-2128,http-vuln-cve2014-2129 +ip[验证Cisco ASA中的CVE2014-2126,CVE2014-2127,CVE2014-2128,CVE2014-2129漏洞]
nmap --script sshv1,sslv2 www.haoshangjia.com[验证低安全的sshv1.sslv2协议]
nmap -Pn --script ssl-ccs-injection +ip[验证CVE2014-0224 ssl-ccs-injection]
nmap -v -v --script ssl-cert +ip[验证ssl-cert证书问题]
nmap -Pn --script ssl-date www.haoshangjia.com[验证ssl证书的有限期]
nmap -p 443 --script ssl-heartbleed,ssl-know-key +ip[验证CVE2014-0160 openssl heartbleed bug]
nmap -p 443 --script ssl-know-key +ip[验证Debian openssl keys]
nmap --script ssl-enum-ciphers +ip[验证弱加密SSL套件]
nmap --script ssl-dh-params www.haoshangjia.com[验证CVE2015-4000]
nmap +ip --vv --script sshv1,ssl-ccs-injection,ssl-cert,ssl-date,ssl-dh-params,ssl-enum-cipher,ssl-google-cert-catalog,ssl-heartbleed,ssl-know-key,sslv2[验证多种SSL漏洞]
nmap --script sniffer-detect +ip[在网络中检测某主机是否在窃听他人流量]
nmap -p 23 --script telnet-brute --script-args userdb=myusers.lst,passdb=mypwds.lst --script-args telnet-brute.timeout=8s +ip[暴力破解telnet]
nmap --script telnet-encryption +ip[验证telnet是否支持加密]
nmap -sV --script unusual-port +ip[精准地确认端口上运行运行的服务]
nmap --script vnc-info +ip[收集VNC信息]
nmap --script vnc-brute --script-args brute.guesses=6,brute.emptypass=true,userdb=/root/dictionary/user.txt,brute.userspass=true,passdb=/root/dictionary/pass.txt,brute.retries=3,brute.theards=2,brute.delay=3 +ip[暴力破解VNC]
七、关于如何使用脚本
1、直接在dos界面
2、在nmap图形化界面进行使用(此处不做详细说明)
2.1在图形化界面(快捷键Ctrl+P)
2.2点击脚本,勾选自己需要使用的脚本,点击保存更改