前言

用nmap扫描域名整理下一些细节参数

1、语法

1
nmap [扫描类型] [选项] {目标规格}

2、选项

目标规格: 可以通过主机名,IP地址,网络等

例如:

1
2
3
4
5
scanme.nmap.org,microsoft.com/24,192.168.0.1; 10.0.0-255.1-254
  -iL <inputfilename>:从主机/网络列表输入
  -iR <num hosts>:选择随机目标
  --exclude <host1 [,host2] [,host3],...>:排除主机/网络
  --excludefile <exclude_file>:从文件中排除列表

2.1 主机发现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
  -sL:列表扫描 - 只需列出要扫描的目标
  -sn:Ping扫描 - 禁用端口扫描
  -Pn:将所有主机视为在线 - 跳过主机发现
  -PS / PA / PU / PY [portlist]:向给定端口发送TCP SYN / ACK,UDP或SCTP
  -PE / PP / PM:ICMP回显,时间戳和网络掩码请求发现探测
  -PO [协议列表]:IP协议Ping
  -n / -R:不要做DNS解析/总是解决[默认:有时]
  --dns-servers <serv1 [,serv2],...>:指定自定义DNS服务器
  --system-dns:使用操作系统的DNS解析器
  --traceroute:跟踪每个主机的跳转路径

2.2 扫描技术

1
2
3
4
5
6
7
8
  -sS / sT / sA / sW / sM:TCP SYN / Connect()/ ACK / Window / Maimon扫描
  -sU:UDP扫描
  -sN / sF / sX:TCP Null,FIN和Xmas扫描
  --scanflags <flags>:自定义TCP扫描标志
  -sI <zombie host [:probeport]>:空闲扫描
  -sY / sZ:SCTP INIT / COOKIE-ECHO扫描
  -sO:IP协议扫描
  -b <FTP中继主机>:FTP跳转扫描

2.3 端口规格和扫描订单

1
2
3
4
5
6
  -p <端口范围>:仅扫描指定的端口
    例如:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
  -F:快速模式 - 扫描比默认扫描更少的端口
  -r:连续扫描端口 - 不要随机化
  --top-ports <number>:扫描<number>最常用的端口
  --port-ratio <ratio>:扫描端口比<ratio>更常见

2.4 服务/版本检测

1
2
3
4
5
  -sV:探测打开端口以确定服务/版本信息
  --version-intensity <level>:从0(亮)到9(尝试所有探针)
  - 变换光:极限探测器(强度2)
  --version-all:尝试每一个探针(强度9)
  --version-trace:显示详细的版本扫描活动(用于调试)

2.5 脚本扫描

1
2
3
4
5
6
7
8
  -sC:相当于--script = default
  --script = <Lua scripts>:<Lua scripts>是逗号分隔的列表目录,脚本文件或脚本类别
  --script-args = <n1 = v1,[n2 = v2,...]>:为脚本提供参数
  --script-args-file = filename:在文件中提供NSE脚本参数
  --script-trace:显示发送和接收的所有数据
  --script-updatedb:更新脚本数据库。
  --script-help = <Lua脚本>:显示有关脚本的帮助。
                          <Lua脚本>是一个逗号分隔的脚本文件列表脚本的类别。

2.6 操作系统检测

1
2
3
  -O:启用操作系统检测
  --osscan-limit:将操作系统检测限制为有希望的目标
  - 可以猜测:猜测操作系统更积极

2.7 时间和性能

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
  采取<time>的选项以秒为单位,或追加“ms”(毫秒)
  '(秒),'m'(分钟)或'h'(小时)到该值(例如30m)。
  -T <0-5>:设置时间模板(越高越好)
  --min-hostgroup / max-hostgroup <size>:并行主机扫描组大小
  --min-parallelism / max-parallelism <numprobes>:探针并行化
  --min-rtt-timeout / max-rtt-timeout / initial-rtt-timeout <time>:指定
      探测往返时间。
  --max-retries <attempts>:端口扫描探测重传的Caps number。
  --host-timeout <time>:在此之后放弃目标
  --scan-delay /  -  max-scan-delay <time>:调整探测器之间的延迟
  --min-rate <number>:发送速度慢于<number>每秒
  --max-rate <number>:发送数据包速度不超过每秒的<number>

2.8 防火墙/IDS逃避和SPOOFING

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
  -F; --mtu <val>:片段数据包(可选地,给定MTU)
  -D <decoy1,decoy2 [,ME],...>:用诱惑遮掩扫描
  -S <IP_Address>:欺骗源地址
  -e <iface>:使用指定的接口
  -g /  -  source-port <portnum>:使用给定的端口号
  --data-length <num>:将随机数据附加到发送的数据包
  --ip-options <options>:使用指定的ip选项发送数据包
  --ttl <val>:设置IP生存时间字段
  --spoof-mac <mac address / prefix / vendor name>:欺骗您的MAC地址
  --badsum:发送具有假TCP / UDP / SCTP校验和的数据包

2.9 OUTPUT

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
  -oN / -oX / -oS / -oG <file>:正常输出扫描,XML,s | <rIpt kIddi3,
     和Grepable格式,分别给给定的文件名。
  -oA <basename>:一次输出三种主要格式
  -v:增加详细程度(使用-vv或更多的效果)
  -d:增加调试级别(使用-dd或更多更大的效果)
  --reason:显示端口处于特定状态的原因
  --open:仅显示打开(或可能打开)的端口
  --packet-trace:显示发送和接收的所有数据包
  --iflist:打印主机接口和路由(用于调试)
  --log错误:将错误/警告记录到正常格式的输出文件中
  --append-output:追加而不是clobber指定的输出文件
  --resume <filename>:恢复中止的扫描
  --stylesheet <path / URL>:将XML输出转换为HTML的XSL样式表
  --webxml:来自Nmap.Org的引用样式表,用于更多的便携式XML
  --no-stylesheet:防止XSL样式表与XML输出关联

2.10 MISC

1
2
3
4
5
6
7
8
  -6:启用IPv6扫描
  -A:启用操作系统检测,版本检测,脚本扫描和跟踪路由
  --datadir <dirname>:指定自定义Nmap数据文件位置
  --send-eth /  -  send-ip:使用原始以太网帧或IP数据包发送
  --privileged:假设用户是完全特权的
  --unprivileged:假设用户缺少原始套接字权限
  -V:打印版本号
  -h:打印此帮助摘要页面。

2.11 例子

1
2
3
  nmap -v -A scanme.nmap.org
  nmap -v -sn 192.168.0.0/16 10.0.0.0/8
  nmap -v -iR 10000 -Pn -p80

3、常见的nmap例子

我们要进行对icmp的扫描,我们可以这样写

1
nmap -sP ipaddress

我们要对目标半开放式端口扫描不想在留下日志记录怎么整

1
namp -sS -p port ipadress

下面介绍一些nmap的审计脚本

snmp默认团体名/弱口令漏洞及安全加固

审计snmp弱口令

1
nmap –sU –p161 –script=snmp-brute ipaddress 

iis短文件名泄露

1
nmap -p 80 --script http-iis-short-name-brute ipaddress

Memcached未授权访问漏洞

1
nmap -sV -p 11211 -script memcached-info ipaddress

验证https.sys远程代码执行漏洞

1
nmap -sV - (-) script http-vuln-cve2015-1635 ipaddress

心脏出血

1
nmap -sV --scipt=ssl-heartbleed ipaddress

mongodb未授权访问

1
nmap -p 27017 --script mongodb-info ipaddress

redis未授权访问

1
nmap -p 6370 --script redis-info ipaddress

elastticsearch未授权访问

1
nmap --script=http-vuln-cve2015-1427 --script-args command='ls' ipaddress

rsync未授权漏洞

1
nmap -p 873 --script rsync=brute ==script=args 'rsync-brute.module=www'

http拒绝服务

1
nmap --max-paralleism 800-script http=slowloris siteaddress

ftp弱口令暴力破解

1
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 ipaddress

检测CVE-2011-2523中的ftp-vsftpd-backdoor

1
nmap -T2 --script ftp-vsftpd-backdoor ipaddress

验证http中开启的-methods 方法

1
nmap -T3 --script http-methods --script-args http.test-all=true,http.url-path=/siteaddress

验证HTTP.sys 远程代码执行

1
nmap -sV --script http-vuln-cve2015-1635 ipaddress

验证 SSL POODLE information leak

1
nmap -sV -p 443 --version-light --script ssl-poodle ipaddress

验证http 中开启了put 方法

1
nmap --script http-put --script-args http-put.url=/uploads/testput.txt,http-put.file=/root/put.txt ipaddress

验证mysql 匿名访问

1
nmap --script mysql-empty-password ipaddress

验证cve2015-1427 漏洞

1
nmap --script http-vuln-cve2015-1427 --script-args command=ls ipaddress

验证cve2014-8877漏洞

1
nmap -Pn --script http-vuln-cve2014-8877 --script-args http-vuln-cve2014-8877.cmd=dir,http-vuln-cve2014-8877.uri=/wordpress ipaddress

验证Cisco ASA中的CVE-2014-2126,CVE-2014-2127,CVE-2014-21,CVE-2014-2129漏洞

1
nmap -p 443 --script http-vuln-cve2014-2126,http-vuln-cve2014-2127,http-vuln-cve2014-2128,http-vuln-cve2014-2129 ipaddress

验证低安全的 SSHv1,sslv2协议

1
nmap --script sshv1,sslv2 siteadress

验证CVE-2014-0224 ssl-ccs-injection

1
nmap -Pn --script ssl-ccs-injection ipaddress

验证ssl-cert证书问题

1
nmap -v -v --script ssl-cert ipaddress

验证SSL证书的有限期

1
nmap -Pn --script ssl-date siteadress

验证 Debian OpenSSL keys

1
nmap -p 443 --script ssl-known-key ipaddress

验证弱加密SSL套件

1
nmap --script ssl-enum-ciphers ipaddress

验证CVE 2015-4000

1
nmap --script ssl-dh-params siteadress

验证多种SSL漏洞问题

1
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

在网络中检测某主机是否存在窃听他人流量

1
nmap --script sniffer-detect ipaddress

暴力破解telnet

1
nmap -p 23 --script telnet-brute --script-args userdb=myusers.lst,passdb=mypwds.lst --script-args telnet-brute.timeout=8s ipaddress

验证telnet是否支持加密

1
nmap --script telnet-encryption ipaddress

精准地确认端口上运行的服务

1
nmap -sV --script unusual-port ipaddress

收集VNC信息

1
nmap --script vnc-info ipaddress

暴力破解VNC

1
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 ipaddress

Web敏感目录扫描

1
nmap -p 80 --script=http-enum.nse XXX.XXX.XXX.XXX