nmap
Posted 2013040742 贾林彬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nmap相关的知识,希望对你有一定的参考价值。
nmap
文章目录
- 主机探测
- 端口扫描
- 版本检测
- 支持探测脚本的编写
基本扫描
# 基本快速扫描, 默认发送 一个 ARP 的 ping 数据包,探测目标主机在 1-10000 范围内开放的所有端口
nmap IP
# 快速扫描多个目标
nmap IP1 IP2....
# 详细描述输出扫描, 简单扫描,并对返回的结果详细描述输出
nmap [ -v | -vv ] IP
# 指定端口和范围扫描
nmap -p [port, port...] IP
# 扫描除某一个 IP 外的所有子网主机
nmap IP/24 -exclude IP
# 显示扫描的所有主机的列表
nmap -sL IP/24
# Ping 扫描,只检测主机是否存在于网络中
nmap -sP IP
# SYN 半开放扫描, 不会在目标主机上产生记录
nmap -sS IP
# TCP 扫描
nmap -sT IP
# UDP 扫描
nmap -sU IP
# FIN 标志的数据报扫描, 不会在目标主机创建日志
nmap -sF IP
# Version 版本检测扫描
nmap -sV IP
# 操作系统探测
nmap -O IP
# 猜测匹配操作系统
nmap -O --osscan-guess IP
# NO Ping 扫描
nmap -O -PN IP
# 设置时间模板
nmap -sS -T<0-5> IP
# 网段扫描格式
nmap -sP IP/CIDR
# 从文件中读取需要扫描的 IP 列表
nmap -iL file
# 路由跟踪扫描
nmap -traceroute IP
# 包含 OS 识别、版本探测、脚本扫描、traceroute 综合扫描
nmap -A IP
脚本使用
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
常见的一些脚本使用
# 扫描服务器常见漏洞
nmap --script vuln IP
# 检查 FTP 是否开启匿名登陆
nmap --script ftp-anon IP
# 对 mysql 进行暴力破解
nmap --script mysql-brute IP
# 对 MSSQL 进行暴力破解
nmap -p 1433 --script ms-sql-brute --script-args userdb=customuser.txt,passdb=custompass.txt IP
# 对 Oracle 数据库进行暴力破解
nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL IP
# 对 抛光SQL 暴力破解
nmap -p 5432 --script pgsql-brute IP
# 对 SSH 暴力破解
nmap -p 22 --script ssh-brute --script-args userdb=users.lst,passdb=pass.lst --script-args ssh-brute.timeout=4s IP
# 使用 DNS 进行子域名暴力破解
nmap --script dns-brute www.baidu.com
# 检查VMWare ESX,ESXi和服务器(CVE-2009-3733)中的路径遍历漏洞
nmap --script http-vmware-path-vuln -p80,443,8222,8333 IP
# 查询VMware服务器(vCenter,ESX,ESXi)SOAP API以提取版本信息。
nmap --script vmware-version -p443 10.0.1.4
参数详解
Nmap 支持主机名 IP 网段表示方式
blah.highon.coffee, namp.org/24, 192.168.0.1;10.0.0-25.1-254
-iL filename 从文件中读取待检测的目标,文件中的表示方法支持机名,ip,网段
-iR hostnum 随机选取,进行扫描.如果-iR指定为0,则是无休止的扫描
--exclude host1[, host2] 从扫描任务中需要排除的主机
--exculdefile exclude_file 排除文件中的IP,格式和-iL指定扫描文件的格式相同
1. 主机发现
-sL 仅仅是显示,扫描的IP数目,不会进行任何扫描
-sP ping扫描,即主机发现,显对扫描做出响应的主机
-P0 Nmap 默认只对确定正在运行的主机进行高强度扫描,使用该命令可以对每一个目标进行扫描
-Pn 不检测主机存活
-PS/PA/PU TCP SYN Ping/TCP ACK Ping/UDP Ping
-PE/PP/PM 使用ICMP echo, timestamp and netmask 请求包发现主机
-PR ARP Ping 扫描,
-n 不对IP进行域名反向解析
-R 对目标 IP 地址进行反向域名解析,一般只有当发现机器正在运行时才进行这步操作
--system-dns 使用系统域名解析器
2. 端口扫描
状态 | 描述 |
---|---|
open | 这表明与扫描端口的连接已建立。这些连接可以是TCP 连接、UDP 数据报以及SCTP 关联。 |
closed | 当端口显示为关闭时,TCP 协议表明我们收到的数据包包含一个RST标志。这种扫描方法也可以用来确定我们的目标是否还活着。 |
filtered | Nmap 无法正确识别扫描的端口是打开还是关闭,因为要么没有从目标返回该端口的响应,要么我们从目标获得错误代码。 |
unfiltered | 端口的这种状态只发生在TCP-ACK扫描期间,表示该端口是可访问的,但无法确定它是打开还是关闭。 |
open|filtered | 如果我们没有得到特定端口的响应,Nmap则将其设置为该状态。这表明防火墙或数据包过滤器可以保护端口。 |
closed|filtered | 此状态仅出现在IP ID 空闲扫描中,表示无法确定扫描的端口是否已关闭或被防火墙过滤。 |
-sS/sT/sA/sW/sM TCP SYN/TCP connect()/ACK/TCP窗口扫描/TCP Maimon扫描
-sU UDP扫描
-sN/sF/sX TCP Null,FIN,and Xmas扫描
--scanflags 自定义TCP包中的flags
-sI zombie host[:probeport] Idlescan
-sY/sZ SCTP INIT/COOKIE-ECHO 扫描
-sO 使用IP 协议扫描确定目标机支持的协议类型
-b <ftp relay host> 使用FTP 弹跳扫描
3. 端口说明和扫描顺序
-p 特定的端口 -p80,443 或者 -p1-65535
-p U:PORT 扫描udp的某个端口, -p U:53
-F 快速扫描模式,比默认的扫描端口还少
-r 不随机扫描端口,默认是随机扫描的
--top-ports "number" 扫描开放概率最高的number个端口,出现的概率需要参考nmap-services文件,ubuntu中该文件位于/usr/share/nmap.nmap默认扫前1000个
--port-ratio "ratio" 扫描指定频率以上的端口
4. 服务版本识别
-sV 开放版本探测,可以直接使用-A同时打开操作系统探测和版本探测
--allports 不为版本探测排除任何端口
--version-intensity [0~9] 设置版本扫描强度,强度水平说明了应该使用哪些探测报文。数值越高,服务越有可能被正确识别。默认是7
--version-light 打开轻量级模式,为--version-intensity 2的别名
--version-all 尝试所有探测,为--version-intensity 9的别名
--version-trace 显示出详细的版本侦测过程信息
5. 脚本扫描
-sC 根据端口识别的服务,调用默认脚本
--script=”Lua scripts” 调用的脚本名
--script-args=n1=v1,[n2=v2] 调用的脚本传递的参数
--script-args-file=filename 使用文本传递参数
--script-trace 显示所有发送和接收到的数据
--script-updatedb 更新脚本的数据库
--script-help=”Lua script” 显示指定脚本的帮助
6. OS 识别
-O 启用操作系统检测,-A来同时启用操作系统检测和版本检测
--osscan-limit 针对指定的目标进行操作系统检测(至少需确知该主机分别有一个open和closed的端口)
--osscan-guess 推测操作系统检测结果,当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配,Nmap默认进行这种匹配
7. 时间和性能
--min-hostgroup <size>; --max-hostgroup <size> 调整并行扫描组的大小
--min-parallelism <numprobes>; --max-parallelism <numprobes> 调整探测报文的并行度
--min-rtt-timeout <milliseconds>, --max-rtt-timeout <milliseconds>, --initial-rtt-timeout <milliseconds> 调整探测报文超时
--host-timeout <milliseconds> 放弃低速目标主机
--scan-delay <milliseconds>; --max-scan-delay <milliseconds> 调整探测报文的时间间隔
-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane> 设置时间模板, Nmap提供了一些简单的 方法,使用6个时间模板,使用时采用-T选项及数字(0 - 5) 或名称。模板名称有paranoid (0)、sneaky (1)、polite (2)、normal(3)、 aggressive (4)和insane (5)。前两种模式用于IDS躲避,Polite模式降低了扫描 速度以使用更少的带宽和目标主机资源。默认模式为Normal,因此-T3 实际上是未做任何优化。Aggressive模式假设用户具有合适及可靠的网络从而加速 扫描。Insane模式假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性。
8. 防火墙/IDS躲避和哄骗
-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来发送数据包
9. Nmap 输出
# XML 转换为 html 展示
xsltproc target.xml -o target.html
-oN 将标准输出直接写入指定的文件
-oX 输出xml文件
-oS 将所有的输出都改为大写
-oG 输出便于通过bash或者perl处理的格式,非xml
-oA BASENAME 可将扫描结果以标准格式、XML格式和Grep格式一次性输出
-v 提高输出信息的详细度
-d level 设置debug级别,最高是9
--reason 显示端口处于带确认状态的原因
--open 只输出端口状态为open的端口
--packet-trace 显示所有发送或者接收到的数据包
--iflist 显示路由信息和接口,便于调试
--log-errors 把日志等级为errors/warings的日志输出
--append-output 追加到指定的文件
--resume FILENAME 恢复已停止的扫描
--stylesheet PATH/URL 设置XSL样式表,转换XML输出
--webxml 从namp.org得到XML的样式
--no-sytlesheet 忽略XML声明的XSL样式表
10. 其他 nmap 选项
-6 开启IPv6
-A OS识别,版本探测,脚本扫描和traceroute
--datedir DIRNAME 说明用户Nmap数据文件位置
--send-eth / --send-ip 使用原以太网帧发送/在原IP层发送
--privileged 假定用户具有全部权限
--unprovoleged 假定用户不具有全部权限,创建原始套接字需要root权限
-V 打印版本信息
-h 输出帮助
参考文章
- nmap 超详细使用教程
ang/article/details/106841466?ops_request_misc=&request_id=&biz_id=102&utm_term=nmap%20%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-106841466.142v63pc_rank_34_queryrelevant25,201v3control_1,213v1t3_control2&spm=1018.2226.3001.4187) - NMAP 官网
nmap实验
1.nmap语法
-A 全面扫描/综合扫描
例如:nmap -A 127.0.0.1
扫描指定段
例如:nmap 127.0.0.1-200&nmap 127.0.0.1/24
2.Nmap 主机发现
-sP
-sP ping扫描
例如:nmap -sP 127.0.0.1
-P0
-P0 无ping扫描 备注:【协议1,协议2】【目标】扫描
例如:nmap -P0 127.0.0.1
如果想知道这些协议是如何判断目标主机是否存在可以使用--packet-trace选项。
例如:nmap -p0 --packet-trace 127.0.0.1
-PS
-PS TCP SYN Ping扫描
例如:nmap -PS -v 127.0.0.1 && 指定端口:nmap -PS80,100-200 -v 127.0.0.1
-PA
-PA TCP ACK Ping扫描
例如:nmap -PA -v 127.0.0.1
-PU
-PU UDP Ping扫描
例如:nmap -PU -v 127.0.0.1
-PE;-PP;-PM
-PE;-PP;-PM ICMP Ping Types 扫描
使用ICMP Echo扫描方式
例如:nmap -PE -v 127.0.0.1
使用ICMP时间戳Ping扫描
例如:nmap -PP -v 127.0.0.1
使用ICMP地址掩码Ping扫描
例如:nmap -PM -v 127.0.0.1
-PR
-PR ARM Ping扫描
例如:nmap -PR 127.0.0.1
-n
-n 禁止DNS反向解析(使用该选项的时候Nmap永远不对目标ip地址作反向域名解析)
例如:nmap -n 127.0.0.1
-R
-R 反向解析域名(使用该选项的时候Nmap永远对目标ip地址作反向域名解析)
例如:nmap -R -sL 127.0.0.1
--system-dns
--system-dns 使用系统域名解析器(如果你希望使用系统自带的解析器,就制定该选项(通过getnameinfo()调用一次解析一个IP)
例如:nmap --system-dns 127.0.0.1 127.0.0.2
--sL
--sL 列表扫描
例如:nmap -sL 127.0.0.1
禁止反向域名解析(使用该选项的时候Nmap永远不对目标ip地址作反向域名解析)
例如:nmap -n -sL 127.0.0.1
-6
-6 扫描IPv6地址
例如:nmap -6 fe80::d920:6c18:1f7f:3d7c
--traceroute
--traceroute 路由跟踪(使用--traceroute选项即可进行路由追踪.)使用路由追踪功能可以帮助用户了解网络的同行情况,通过此选项可以轻松地查出从计算机到目标之间所经过的网络节点,并可以看到通过各个节点的时间.
例如:nmap --traceroute -v 127.0.0.1
-PY
-PY SCTP INIT Ping扫描(通过向目标发送INIT包,根据目标主机的相应判断目标主机是否存活.)
例如:nmap -PY -v 127.0.0.1
3.探索网络
-T
-T 时序选项
例如:nmap -T0 127.0.0.1
例如:nmap -T1 127.0.0.1
同上
Nmap使用-T(0-5)可以启用时序选项)对于时序想选这里有0~5不同的选项.
-T0(偏执的):非常慢的扫描,用于IDS逃避.
-T1(鬼崇的):缓慢的扫描,用于IDS逃避.
-T2(文雅的):降低速度以降低对带宽的消耗,此选项一般不常用.
-T3(普通的):默认,根据目标的反应自动调整时间.
-T4(野蛮的):快速扫描,常用扫描方式,需要在很好的网络环境下进行扫描,请求可能会淹没目标.
-T5(疯狂的):急速扫描,这种扫描方式以牺牲准确度来提升扫描速度.
-p
-p 常用扫描方式(-p指定扫描端口如80,1433,1521,3306,3389等等)
例如:nmap -p 3389 127.0.0.1
-F 选项 使用该选项可以快速扫描端口,但并不是所有端口都会扫描,智慧扫描有限的端口,在Nmap中nmap-services包含了默认扫描的端口,也可以用--datadir选项指定自己的nmap-services文件.
--top-ports选项
例如:nmap --top-ports 100 127.0.0.1 (输出结果扫描100个开放率最高的端口.)
-sS
-sS TCP SYN扫描
例如:nmap -sS 127.0.0.1
-sT
-sT TCP连接扫描
例如:nmap -sT 127.0.0.1
-sU
-sU UDP扫描
例如:nmap -sU -p 80-500 127.0.0.1
-sN;-sF;-sX
-sN;-sF;-sX 隐蔽扫描
-sN是Null扫描,是通过发送非常规的TCP通信数据包对计算机进行探测.
nmap -sN 127.0.0.1
-sF是FIN扫描,当我们使用TCP SYN扫描时可能会被目标主机的防火墙发现,会阻止SYN数据包,这时我们使用TCP FIN扫描方式会有很好的穿透效果.
nmap -sF 127.0.0.1
-sX是Xmas扫描
nmap -sX 127.0.0.1
-sA
-sA TCP ACK扫描
例如:nmap -sA -v 127.0.0.1
-sW
-sW TCP窗口扫描
例如:nmap -sW -v -F 127.0.0.1
-sM
-sM TCP Maimon扫描
例如:nmap -sM -T4 127.0.0.1
--scanflags
--scanflags 自定义TCP扫描(--scanflags选项可以是一个数字标记值.
nmap -sT --scanflags SYNURG 127.0.0.1
-sI
-sI 空闲扫描
例如:nmap -sI 192.168.1.100:80 127.0.0.1
-sO
-sO IP协议扫描
例如:nmap -sO -T4 127.0.0.1
-b
-b FTP Bounce扫描(使用-b选项就可以进行FTP Bounce Scan扫描,它允许用户连接到一台FTP服务器,然后要求文件送到一台第三方服务器,这种扫描方式很少被支持,但是也是躲避防火墙的办法.)
例如:nmap -b 127.0.0.1
4.指纹识别与探测
-sV
-sV 版本探测
例如:nmap -sV 127.0.0.1
可以借助-A选项进行操作系统探测和版本探测.结果信息更详细和直观.
例如:nmap -sV -A 127.0.0.1
--allports
--allports 全端口版本探测
例如:nmap -sV --allports 127.0.0.1
--version-intensity
--version-intensity 设置扫描强度(赋予的值越高,服务越有可能被正确识别,但是时间也较长,强度在0~9之间,默认强度是7.0代表最低强度,9代表最高强度.)
例如:nmap -sV --version-intensity 5 127.0.0.1
--version-light
--version-light 轻量级扫描(--version-intensity有0~9的测试等级,--version-intensity则是对应的--version-intensity 2的快捷方式,轻量级扫描会节省时间,但是准确性会降低.使用以下选项可以节约部分时间和不会牺牲太多准确性.)
例如:nmap -sV --version-light 127.0.0.1
--version-all
--version-all 重量级扫描
例如:nmap -sV --version-all 127.0.0.1
--version-trace
--version-trace 获取详细版本信息
例如:nmap -sV --version-trace 127.0.0.1
-sR
-sR RPC扫描
例如:nmap -sV -sR 127.0.0.1
-O
-O 启用操作系统探测
例如:nmap -O 127.0.0.1
--osscan-limit
--osscan-limit 对指定的目标进行操作系统检测(该选项仅在使用-O或-A进行操作系统检测时起作用.)
例如:nmap -O --osscan-limit 127.0.0.1/24
--osscan-guess;--fuzzy
--osscan-guess;--fuzzy 推测系统版本(当无法准确识别的时候,nmap会从最接近数据中取值,大胆的猜测目标系统.)
例如:nmap -O --osscan-guess 127.0.0.1
5.伺机而动
--min-hostgroup
--min-hostgroup 调整并行扫描组的大小(扫nmap默认情况下载进行扫描的是,首先开始扫描较小的组,最小为5,会在最短的时间产生一个想要的结果,随后慢慢增加大小,最大为1024.为了保证效率,会针对UDP或少量端口的TCP扫描.)
例如:nmap --min-hostgroup -30 127.0.0.1/24
--min-parallelism
--min-parallelism 调整探测报文的并行度
例如:nmap --min-parallelism 100 127.0.0.1/24
--max-parallelism
--max-parallelism 调整探测报文的并行度
例如:nmap --max-parallelism 100 127.0.0.1
--min-rtt-timeout
--min-rtt-timeout 调整探测报文超时(使用该选项时,规定100毫秒是比较合适的,rtt值不得小于100,也最好不要大于1000毫秒.)
例如:nmap --min-rtt-timeout 500ms 127.0.0.1
--max-rtt-timeout
--max-rtt-timeout 调整探测报文超时
例如:nmap --max-rtt-timeout 500ms 127.0.0.1
--initial-rtt-timeout
--initial-rtt-timeout 调整探测报文超时
例如:nmap --initial-rtt-timeout 500ms 127.0.0.1
--host-timeout
--host-timeout 放弃低速目标主机(单位是毫秒,一般我们设置为1800000毫秒,保证nmap在对单个主机扫描的时间不会超过半个小时.在半小时后的时间内其他主机也会同时扫描.)
例如:nmap --host-timeout 100ms 127.0.0.1/24
--scan-delay
--scan-delay 调整探测报文的时间间隔(该选项可以控制Nmap对一个或多个主机发送探测报文的等待时间.等待时间可以毫秒为单位.)
例如:nmap --scan-delay 1s 127.0.0.1
--max-scan-delay
--max-scan-delay 调整探测报文的时间间隔
例如:nmap --max-scan-delay 30s 127.0.0.1
6.防火墙/IDS逃逸
-f
-f 报文分段
例如:nmap -sX -v -F 127.0.0.1(ping扫描目标主机)
如果在无法获知目标主机的端口是否开放.此时尝试使用报文分段进行扫描.
例如:nmap -f -v 127.0.0.1
--mtu
--mtu 指定偏移大小
例如:nmap --mtu 16 127.0.0.1
-D
-D IP欺骗(IP欺骗的语法如下:Nmap -D [decoy1,decoy2...|RND: number][目标])
(使用-D选项可以指定多个ip地址,或者使用RND随机生成几个地址,在指定的诱饵之间使用逗号进行分割,需要注意的是在进行版本检测或者TCP扫描的时候诱饵是无效的.)
例如:nmap -D RND:11 127.0.0.1
随机的方法容易发现,接下来将指定几个IP地址对目标实施扫描来达到更好的效果.
例如:nmap -D 127.0.0.1,127.0.0.2,127.0.0.253 127.0.153.1
通过抓包的方法看到nmap正在使用我们指定的ip进行对目标主机的扫描,可以使用ME选项指定自己的真实IP.
例如:nmap -D 127.0.0.1,127.0.0.2,127.0.0.253,ME 127.0.153.1
-sI
-sI 原地址欺骗(使用-sI选项可以进行源地址欺骗,如果Nmap无法确定你的原地址,Nmap会给出相应的提示,我们使用-sI选项指定需要发包的接口ip地址.)
例如:nmap -sI xssm.me:80 127.0.0.1
--source-port
--source-port 源端口欺骗(使用--source-port选项可以进行源地址欺骗,也可以用-g选项,只需要提供端口,nmap就可以从端口发sing数据,)
例如:nmap --source-port 53 127.0.0.1
--data-length
--data-length 指定发包长度(使用--datalength可以在发送报文的时候指定发包长度,tcp包是40字节,ICMP Echo有28个字节.)
例如:nmap --data-length 30 127.0.0.1
--randomize-hosts
--randomize-hosts 目标主机随机排序(使用该选项可以对比主机书序进行随机的排序,最多可达8096个主机,单方面使用这个选项对防火墙/IDS逃逸效果不大.配合时间选项会有很好的效果.)
例如:nmap --randomize-hosts 127.0.0.1-200
--spoof-mac
--spoof-mac MAC地址欺骗
使用该选项就可以进行MAC地质欺骗,冒失指定一个MAC地质会引起管理员怀疑,这是可以用字符串‘0‘随机分配一个MAC地址,也可以指定一个MAC地址进行欺骗,.MAC地址最好是存在的,这样才能起到欺骗的效果,使用--spoof-mac选项可以用参数包括0,MAC Address,Vendor Name.0表示随机生成一个MAC地址,MAC Address表示用户手动指定一个MAC地址,Vendor Name表示从指定厂商生成一个MAC地址.
例如:nmap -sT -PN --spoof-mac 0 127.0.0.1
7.信息搜集
--script ip-geolocation-*
--script ip-geolocation-* IP信息搜集
例如:nmap --script ip-geolocation-* www.xssm.me
whois
whois WHOIS查询(查询目标域名whois信息)(有时候whois查询到信息并不准确,我们更热衷于查询历史whois记录.)
例如:nmap --script whois www.xssm.me
大部分网站启用了whois保护或隐藏电话,姓名等信息,我们可以查询历史whois,例如whois可能还没有启用whois保护,我们可以启用其他几个whois查询脚本.)
例如:nmap --script whois --script-args whois.whodb=nofollow www.xssm.me
如果域名比较多,我们可以使用列表的方式进行查询.
例如:nmap --sn --script whois -v -iL host.txt
http-email-harvest
http-email-harvest 搜集E-mail信息(Email查询)
例如:nmap --script http-email-harvest www.xssm.me
hostmap-ip2hosts
hostmap-ip2hosts IP反查
例如:nmap -sn --script hostmap-ip2hosts www.xssm.me
dns-brute
dns-brute DNS信息搜集(域名系统是因特网的一项服务,他作为将域名和Ip地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,dns使用tcp和udp端口53,当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符.)
例如:nmap --script dns-brute www.xssm.me
该脚本的默认现成是5,如果是扫描一个大型网站,速度可能会较慢,可以设置一下扫描线程,nmap--script dns-brute dns-brute.threads=10 www.xssm.me,设置10个线程时相应扫描速度回增加很多,如果需要查询多个域名可以指定一个列表:nmap --script dns-brute dns-brute.threads=10,dns-brute.hostlist www.xssm.me.
membase-http-info
membase-http-info 检索系统信息
例如:nmap -p 445 127.0.0.1 --script membase-http-info
smb-security-mode.nse
smb-security-mode.nse 后台打印机服务漏洞
例如:nmap --script smb-security-mode.nse -p 445 127.0.0.1
smb-check-vulns.nse
smb-check-vulns.nse 系统漏洞扫描(可以使用U:或者T:进行配合,这样会得到意想不到的效果.)
例如:nmap --script smb-check-vulns.nse -p445 127.0.0.1
http-stored-xss.nse
http-stored-xss.nse 扫描Web漏洞
例如:nmap -p80 --script http-stored-xss.nse www.xssm.me
snmp-win32-services
snmp-win32-services 通过Snmp列举Windows服务/账户
例如:nmap -sU -p 161 --script=snmp-win32-services 127.0.0.1
dns-brute
dns-brute 枚举DNS服务器的主机名(下面的示例是对baidu.com子域名的枚举.)
例如:nmap --script dns-brute --script-args dns-brute.domain=baidu.com
所有有关子域名及服务器都被dns-brute脚本枚举出来,该脚本可以使用"dns-brute.threads=线程"指定线程来加快或较少破解速度,使用dns-brute.hostlist=./hostfile.txt指定一个需要枚举的列表.
http-header/http-sitmap-generator
http-header/http-sitmap-generator HTTP信息搜集
使用nmap扫描http版本,得知当前版本漏洞,例如Apache,IIS7,Nginx的畸形漏洞在相应的低版本中都会存在.nmap可以非常简单的发泄这些漏洞.
例如:nmap -sV -p 80 www.xssm.me
使用命令"nmap -p 80 --script=http-headers目标地址"即可对目标地址进行HTTP头信息探测.
例如:nmap -p 80 --script=http-headers baidu.com
使用命令"nmap -p 80 --script=http-sitemap-generator目标地址"即可爬行Web目录结构.
例如:nmap -p 80 --script=http-sitemap-generator www.baidu.com
ssl-enum-ciphers
ssl-enum-ciphers 枚举SSL秘钥
例如:nmap -p 443 --script=ssl-enum-ciphers www.baidu.com
ssh-hostkey
ssh-hostkey SSH服务秘钥信息探测(sh-hosts可以查看SSH服务的秘钥信息.)
例如:nmap -p 22 --script ssh-hostkey --script-args ssh_hostkey=full 127.0.0.1
8.数据库渗透测试
mysql-databases
mysql-databases MYSQL列举数据库(如果目标端口改变组需要-p指定相应的端口.)
例如:nmap -p3306 --script mysql-databases --script-args mysqluser=root,mysqlpass 127.0.0.1
mysql-variables
mysql-variables 列举MYSQL变量(如果目标端口改变组需要-p指定相应的端口.)
例如:nmap -p3306 --script=mysql-variables 127.0.0.1
mysql-empty-password
mysql-empty-password 检查MYSQL密码
例如:nmap -p3306 --script=mysql-empty-password 127.0.0.1
如果无法确定目标开放的端口号,可以用-sV选项进行扫描.
例如:nmap -sV --script=mysql-empty-password 127.0.0.1
mysql-brute
mysql-brute 审计MYSQL密码
例如:nmap --script=mysql-brute 127.0.0.1
该脚本用于MYSQL弱口令,默认查找全部端口查找MYSQL端口,但是我们可以用-p指定端口,也可以自定义账号密码字典.
例如:nmap -p 3306 --script=mysql-brute userdb=/root/passdb.txt passdb=/root/pass.txt 127.0.0.1
mysql-audit
mysql-audit 审计MYSQL安全配置
例如:nmap -p 3306 --script mysql-audit --script-args "mysql-audit.username=‘root‘,mysql-audit.password=‘‘,mysql-audit.filename=‘nselib/data/mysql-cis.audit‘" 127.0.0.1
oracle-brute
oracle-brute 审计Oracle密码
例如:nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=test 127.0.0.1
该脚本暴力破解Oracle密码,但是我们可以用-p指定端口,也可以自定义账号密码字典.需要userdb选项指定账号字典passdb指向密码字典.
例如:nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=test --script-args userdb=/tmp/usernames.txt,passdb=/tmp/passwords.txt 127.0.0.1
ms-sql-brute
ms-sql-brute 审计msSQL密码
例如:nmap -p 1433 --script ms-sql-brute --script-args userdb=name.txt,passdb=pass.txt 127.0.0.1
ms-sql-empty-password
ms-sql-empty-password 检查msSQL空密码
例如:nmap -p 1433 --script ms-sql-empty-password 127.0.0.1
ms-sql-tables
ms-sql-tables 读取msSQL数据
例如:nmap -p 1433 --script ms-sql-tables -scripts-args mssql.username=sq,mssql.password=sa 127.0.0.1
ms-sql-xp-cmdshell
ms-sql-xp-cmdshell msSQL执行系统命令
例如:nmap -p 1433 --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd="ipconfig" 127.0.0.1
pgsql-brute
pgsql-brute 审计PgSQL密码
例如:nmap -p 5432 --script pgsql-brute 127.0.0.1
9.渗透测试
http-brute
http-brute 审计HTTP身份验证
例如:nmap --script http-brute -p 80 www.xssm.me
ftp-brute
ftp-brute 审计FTP服务器
例如:nmap --script ftp-brute -p 21 127.0.0.1
如果上面没有破解成功,需要设置一个账号密码的字典进行破解.
例如:nmap --script ftp-brute --script-args userdb=user.txt,passdb=pass.txt -p 21 127.0.0.1
http-wordpress-brute
http-wordpress-brute 审计Wordpress程序
例如:nmap -p80 --script http-wordpress-brute 127.0.0.1
若是需要自定字典则需要设置userdb,passdb选项指定相应的字典.
例如:nmap -p80 --script http-wordpress-brute --script-args userdb=user.txt,passdb=passwd.txt 127.0.0.1
还可以设置线程数,减少破解的时间.
例如:nmap -p80 --script http-wordpress-brute --script-args http-wordpress-brute。threads=10 127.0.0.1
http-joomla-brute
http-joomla-brute 审计joomla程序
例如:nmap -p80 --script http-joomla-brute 127.0.0.1
自定义账号密码字典,进行高效率的破解.
例如:nmap -p80 --script http-joomlabrute --script-args userdb=users.txt,passdb=passwords.txt 127.0.0.1
设置线程让破解更加高效.
例如:nmap -p80 --script http-joomlabrute --script-args userdb=users.txt,passdb=passwords.txt,http-joomla-brute.threads=5 127.0.0.1
pop3-brute
pop3-brute 审计邮件服务器(如果需要自定义字典需要设置passdb,userdb两个选项指定相应的字典.)
例如:nmap -p110 --script=pop3-brute 127.0.0.1
smb-brute.nse
smb-brute.nse 审计SMB口令
例如:nmap --script smb-brute.nse -p445 127.0.0.1
可以使用passdb选项指向一个自定义字典.
例如:nmap --script smb-brute.nse --script-args passdb=pass.txt -p445 127.0.0.1
vnc-brute
vnc-brute 审计vnc服务器(如果需要自定义字典需要设置passdb,userdb两个选项指定相应的字典.)
例如:nmap --script vnc-brute -p 5900 127.0.0.1
smtp-brute
smtp-brute 审计SMTP服务器
例如:nmap -p 25 --script smtp-brute 127.0.0.1
smtp-enum-users
smtp-enum-users 审计SMTP服务器
若要进行邮件的接收与发送则需要有对应的邮箱账户,通过VRFY,EXPN,或RCPT命令,可以枚举邮箱用户,在nmap的脚本中smtp-enum-users则可以通过枚举远程系统所有的用户.
例如:nmap -p 25 --script=smtp-enum-users.nse smtp.xx.com
stuxnet-detect
stuxnet-detect 检测Stuxnet蠕虫
例如:nmap --script stuxnet-detect -p 445 127.0.0.1
snmp-netstat
snmp-netstat SNMP服务安全审计(获取目标主机网络连接状态)
例如:nmap -sU -p 161 --script=snmp-netstat 127.0.0.1
snmp-processes
snmp-processes SNMP服务安全审计(snmp-processes脚本可以通过SNMP服务协议枚举运行的系统进程)
例如:nmap -sU -p 161 --script=snmp-processes 127.0.0.1
snmp-win32-services
snmp-win32-services SNMP服务安全审计(snmp-win32-services脚本可以获得Windows服务器的服务)
例如:nmap -sU -p 161 --script=snmp-win32-services 127.0.0.1
snmp-brute
snmp-brute SNMP服务安全审计(snmp-brute可以对目标服务器的Snmp服务进行口令审计.)
例如:nmap -sU -p 161 --script=snmp-brute 127.0.0.1
10.Nmap技巧
--send-eth
--send-eth 发送以太网数据包
例如:nmap --send-eth 127.0.0.1
--send-ip
--send-ip 网络层发送
例如:nmap --send-ip 127.0.0.1
--privileged
--privileged 假定拥有所有权
例如:nmap --privileged 127.0.0.1
--interactive
--interactive 在交互模式中启动
--interactive告诉nmap在交互模式中启动,这时nmap会提供交互模式,便于扫描.
例如:nmap --interactive && n -T4 127.0.0.1
-V
-V 查看Nmap版本号(使用-V选项或者--version选项查看nmap的版本信息.)
例如:namp -V
-d
-d 设置调试级别(使用-d选项设置调试级别,可选有1~9,-d 9是最高级别,这时候产生的数据会非常多.)
例如:nmap -d 1 127.0.0.1
--packet-trace
--packet-trace 跟踪发送接受的报文
例如:nmap --packet-trace -p 20-30 127.0.0.1
--iflist
--iflist 列举接口和路由
例如:nmap --iflist 127.0.0.1
-e
-e 指定网络接口
nmap -e eth0 127.0.0.1
-oG
-oG 继续中断扫描(我们使用-oG将扫描结果保存为TXT,然后在扫描过程中按下Ctrl+C终端扫描.)
nmap --oG 1.txt -v 192.168.1.1/24
我们使用--resume选项继续扫描.
例如:nmap --resume 1.txt
firewalk
firewalk 探测防火墙
nmap --script=firewalk --traceroute 127.0.0.1
vmauthd-brute
vmauthd-brute VMWare认证破解
例如:nmap -p 902 --script vmauthd-brute 127.0.0.1
11.Nmap保存和输出
-oN
-oN 标准保存
例如:nmap -F -oN test1.txt 127.0.0.1
-oX
-oX XML保存
例如:nmap -F -oX test1.xml 127.0.0.1
-oS
-oS 133t保存
例如:nmap -F -oS test1.txt 127.0.0.1
-oG
-oG Grep保存
例如:nmap -F -oG test1.txt 127.0.0.1
-oA
-oA 保存到所有格式
例如:nmap -F -oA testA 127.0.0.1
--append-output
--append-output 补充保存文件
例如:nmap -F --append-output -oN test1.txt 127.0.0.1
-oX
-oX 转换XML保存(--stylesheet可以将XSL样式表转为XML保存.)
例如:nmap -F -oX testB.xml --stylesheet http://www.insecure.org/nmap/data/nmap.xsl 127.0.0.1
--oX
--oX 忽略XML生命的XSL样式表(--no-styleshee选项禁止nmap的XML保存关联任何XSL样式表.)
例如:nmap -oX testC.xml --no-stylesheet 127.0.0.1
以上是关于nmap的主要内容,如果未能解决你的问题,请参考以下文章