信息收集技术
-
主动信息搜集与目标主机进行直接交互,从而拿到目标信息,缺点是会记录自己的操作信息。而被动信息搜集不与目标主机进行直接交互,通过搜索引擎或者社会工程学等方式间接的获取目标主机的信息。
-
僵尸扫描是非常隐蔽的,而且实施的条件非常严格。如果要实施僵尸扫描,则必须先找到合适的僵尸机。僵尸机必须符合以下两个条件:它需要是一个空闲主机,很少发送和接收数据包、它的IPID必须是递增的,0和随机都不可以。现在大部分主流操作系统的PID都是随机产生的,但是早期的Windows XP系统(如Windows 2000、Windows 2003)都是递增的IPID。
- 扫描者主机对Zombie(僵尸机)发送SYN/ACK包,然后Zombie(假设此时系统产生的IPID为x)会返回主机一个RST,主机将会得到Zombie的IPID。
-
扫描主机向目标机器发送一个SYN包。此时扫描主机会伪装成Zombie的IP(即是x)向目标主机发送SYN包。
- 如果目标的端口开放,便会向Zombie返回一个SYN/ACK包。但是Zombie机并没有发送任何的包,Zombie会觉得莫名其妙,于是向目标主机发送一RST进行询问。此时Zombie的IPID将会增加1(x+1)。如果目标主机的端口并未开放,那么目标主机也会向Zombie机发送一个RST包。但是Zombie收到RST包不会有任何反应,所以IPID不会改变(依旧是x)。
-
扫描者主机再向Zombie发送一个SYN/ACK。同样Zombie机会摸不着头脑,然后再向扫描者主机发送一个RST包。此时,Zombie的IPID将变成(x+2)。
服务扫描策略集
-
LLTD(Link Layer Topology Discovery,链路层拓扑结构发现)作为Windows Rally技术的关键部分,主要完成网络设备的发现和网络拓扑结构图的绘制。
服务名称 服务类型 传输协议 服务端口 服务描述 AFP服务 文件共享服务 TCP协议 548 DAAP服务 文件共享服务 TCP协议 3689 NFS服务 文件共享服务 TCP协议 111 SSL服务 文件共享服务 TCP协议 443 为网络通信提供安全及数据完整性 AJP服务 WEB服务 TCP协议 8009 HTTP服务 WEB服务 TCP协议 80 IBM DB2服务 数据库服务 TCP协议 523 SQL Server服务 数据库服务 TCP协议 1433 Cassandra服务 数据库服务 TCP协议 9160 CouchDB服务 数据库服务 TCP协议 5984 MySQL服务 数据库服务 TCP协议 3306 Oracle服务 数据库服务 TCP协议 1521 RDP服务 远程登录服务 TCP协议 3389 SSH服务 远程登录服务 TCP协议 22 VMware服务 远程登录服务 TCP协议 443 VNC服务 远程登录服务 TCP协议 5900 IMAP 邮件服务 TCP协议 143、993 POP3 邮件服务 TCP协议 110、995 SMTP 邮件服务 TCP协议 25 字典DICT 其他服务 TCP协议 2628 IRC 其他服务 TCP协议 6667 硬盘监测 其他服务 TCP协议 7634 NTP服务 其他服务 UDP协议 123 DHCP 其他服务 UDP协议 67 DHCP客户端广播请求 DHCP 其他服务 UDP协议 68 DHCP服务器回应广播请求 NetBIOS 其他服务 UDP协议 137(netbios-ns) 提供NetBIOS名称解析服务,负责短名字解析为IP地址 NetBIOS 其他服务 UDP协议 138(netbios-dgm) 用户数据报服务,提供NetBIOS环境下的计算机名浏览功能 NetBIOS 其他服务 TCP协议 139(netbios-ssn) 提供会话服务,在有打印和文件共享数据传输的时候发挥作用 Daytime服务 其他服务 TCP|UDP 13 一旦有连接建立就返回ASCII形式的日期和时间
Use Nmap
-
nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。
nmap -V # 查看版本 man nmap # 查看手册 nmap -h # 查看帮助 nmap --iflist # 查看主机网路接口和路由信息 nmap -e eth0 192.168.1.1 # 扫描指定网卡上的指定address开放端口 nmap -6 fe80::20c:29ff:fe2e:25d9 # 指定ipv6格式 nmap --packet-trace 192.168.1.1 # 查看Nmap发送和接收的所有包 # Nmap在运行过程中会输出大量的提示信息,用户可以通过键盘输入来动态调整 v/V # 增加/减少冗余信息。 d/D # 提高/降低调试级别。 p/P # 打开/关闭报文跟踪。 ? # 显示交互键命令信息。 stats # 显示每次扫描的状态信息。 # 单目标扫描 nmap 192.168.1.1 # 指定ipv4格式 nmap baba # 指定hostname格式 nmap --dns-servers 114.114.114.114 www.baidu.com # 指定dns服务器解析域名 nmap --system-dns www.baidu.com # 指定系统dns解析域名 # 多目标扫描 # 无类别域间路由(Classless Inter-Domain Routing,CIDR)可以将路由集中起来,在路由表中更灵活地定义地址。用户通过使用CIDR格式,可以指定一个网络内的所有主机。下面介绍CIDR格式的换算方式及指定方法。 netmask [options] [address] -d,--debug # 显示调试信息。 -s,--standard # 输出“地址/掩码对”。 -c,--cidr # 输出CIDR格式地址列表。 -i,--cisco # 输出Cisco类地址列表。 -r,--range # 输出一个IP地址范围。 -x,--hex # 以十六进制格式输出“地址/掩码对”。 -o,--octal # 以十进制格式输出“地址/掩码对”。 -b,--binary # 以二进制格式输出“地址/掩码对”。 -n,--nodns # 禁用DNS查询。 nmap -sL 192.168.1.1/24 # 查看扫描列表 nmap -sL 192.168.1.1-10 # 查找连续的主机 nmap -sL 192.168.1.1 192.168.1.2 # 查找不连续的主机 nmap -iL host.txt -sL # 查找主机或网络列表文件 nmap --resolve-all www.baidu.com -sL # 查找域名下的所有ip地址 nmap 192.168.198.0/24 --exclude 192.168.198.1-100 -sL # 排除扫描指定主机或段 nmap 192.168.198.0/24 --excludefile exclude.txt -sL # 排除扫描文件中的主机 nmap -iR 5 -sL # 随机扫描5个主机 nmap -A 192.168.198.1 # 对目标主机全部搜索 nmap --send-eth 192.168.198.132 # 以以太网帧模式发包 nmap --send-ip 192.168.198.132 # 以ip模式发包 nmap --privileged 192.168.1.1 # 假设用户拥有所有权限 nmap --unprivileged 192.168.1.1 # 假设用户缺少构建原始套接字权限 nmap -oG nmap.txt -v 192.168.198.0/24 # 将扫描结果存入nmap.txt文件 nmap --resume nmap.txt # 恢复被中断的扫描文件nmap.txt nmap --packet-trace -PO 10.10.1.1 # 使用默认的IP探测一个主机 -PO <protocol list> # 使用IP数据包探测目标主机是否开启。用户可以指定多个IP编号,如6(TCP)、17(UDP)、1(ICMP)和2(IGMP) nmap --packet-trace -sn www.baidu.com # 实施Ping并禁止端口扫描。Nmap默认发送4个请求(ICMP Echo、TCP SYN、TCP ACK、ICMP时间戳。当特权用户扫描局域网中的主机时,将会发送ARP请求来发现主机。如果不希望使用ARP请求,则可以使用--send-ip选项指定发送IP包。 nmap --packet-trace -PE www.baidu.com # 实施ICMP Echo探测请求发现。如果目标主机响应ICMP Reply报文,则目标主机在线; nmap --packet-trace -sn -PP --send-ip 192.168.198.144 # 使用ICMP时间戳实施主机发现 nmap --packet-trace -sn -PM www.baidu.com # 使用ICMP地址掩码请求进行主机发现 nmap --packet-trace -sn -PS www.baidu.com # 使用TCP SYN方式发现主机 nmap --packet-trace -sn -PA www.baidu.com # 使用TCP ACK方式发现主机 nmap --packet-trace -sn -PU --send-ip 192.168.198.133 # 实施UDP发现 -PU <portlist> # 进行UDP Ping扫描默认将向目标主机的40125发送探测报文 --data-length <num> # 在发送的UDP报文中追加随机的数据。 nmap --packet-trace -sn -PR 192.168.198.144 -PR # 实施ARP Ping发现 --disable-arp-ping # 不使用ARP发现和ICMPv6邻居发现。扫描局域网时,默认使用ARP发现探测主机状态。 nmap --packet-trace -sn -PY --send-ip 192.168.198.1 # 使用SCTP探测目标主机是否在线 -PY <portlist> # 实施SCTP INIT Ping扫描 nmap --packet-trace -sn -PS www.baidu.com # 扫描域名并进行域名解析 -R # 对IP地址进行反向域名解析。它是默认选项 -n # 禁止域名解析 nmap --packet-trace --traceroute -sn -PS -R www.qq.com # 对目标主机进行路由跟踪并反向解析 --traceroute # 实施路由跟踪 nmap --packet-trace -P0 www.baidu.com # 跳过主机发现,直接对目标进行高强度的扫描 -P0 or -Pn # 跳过主机发现 --open # 仅显示开放或可能开放的端口 --reason # 显示端口处于特定状态的原因 nmap --packet-trace -p 80 www.baidu.com # 扫描目标主机中的80号端口 nmap --packet-trace -Pn -p75-80 www.baidu.com # 扫描目标主机中的75-80号端口 nmap --packet-trace -Pn -p21,22,80 192.168.198.137 # 扫描目标主机中的21,22,80号端口 nmap --packet-trace -Pn -p T:22,80 www.baidu.com # 当用户根据协议类型指定端口时,指定的协议类型分别对应为T(TCP)、U(UDP)和S(SCTP),协议和端口之间使用冒号(:)分隔 nmap -F www.baidu.com # 快速扫描端口,仅扫描Nmap中nmap-services包含的默认端口。另外,也可以使用--datadir选项指定自己的nmap-services文件 nmap --packet-trace -Pn --send-ip --top-ports 5 192.168.1.1 # 开放率最高的5个端口 --top-ports # 扫描开放率最高的N个端口,默认扫描可能性最大的1 000个TCP端口 nmap --packet-trace -Pn --send-ip --port-ratio 0.2 192.168 # 频率为0.2以上的端口 --port-ratio # 扫描指定频率以上的端口,取值范围在0~1之间 nmap -p20-100 --exclude-ports 80 192.168.198.132 # 扫描20~100端口,不扫描80端口 nmap --packet-trace -Pn --send-ip -p21,23,80 -r 192.168.1.1 # 实施顺序扫描 nmap --packet-trace -P0 --send-ip -sS -p80 192.168.1.1 # TCP SYN扫描目标中端口80的状态 nmap --packet-trace -P0 --send-ip -sT -p80 192.168.198.149 # TCP连接扫描目标主机中端口80的状态 nmap --packet-trace -P0 --send-ip -sA -p80 192.168.198.149 # TCP ACK扫描目标主机中80端口的状态 nmap --packet-trace -P0 --send-ip -sW -p80 192.168.198.147 # TCP窗口扫描目标主机中的80端口 nmap --packet-trace -P0 --send-ip -sN -p80 192.168.198.149 # TCP NULL方式扫描目标主机中的80端口 nmap --packet-trace -P0 --send-ip -sF -p80 192.168.198.149 # TCP FIN方式扫描目标主机中的80端口 nmap --packet-trace -P0 --send-ip -sX -p80 192.168.198.149 # TCP Xmas方式扫描目标主机中的80端口 nmap --packet-trace -P0 --send-ip -sM -p80 192.168.198.149 # TCP Maimon方式扫描目标主机的80端口 # 空闲扫描就是攻击者冒充一台空闲主机的IP地址对目标进行更为隐蔽的扫描。空闲主机是一台可用于欺骗目标IP地址且具有可预设的IP ID序列号的主机 nmap -p80 --script ipidseq -iR 200 # 寻找空闲主机 nmap --packet-trace -P0 --send-ip -p22,80 -sI 193.183.99.116 192.168.198.137 # 目标主机192.168.198.137实施空闲扫描,探测22和80端口的状态 nmap --packet-trace -Pn --send-ip --scanflags FINACK -p22 # 定制一个发送FIN和ACK标志位的TCP报文,指定的标志位可以是URG、ACK、RST、SYN和FIN的任何组合,而且不区分标志位顺序 nmap --packet-trace -Pn --send-ip -sU -p137 192.168.198.1 # 对目标主机的137端口实施UDP扫描 # SCTP INIT扫描通过向目标端口发送一个INIT(初始化)消息来判断端口的状态。如果收到目标主机的INIT ACK消息,则说明目标端口是开放的。 nmap --packet-trace -Pn --send-ip -sY -p80 192.168.198.148 # 实施SCTP INIT扫描 nmap --packet-trace -Pn --send-ip -sZ -p80 192.168.198.148 # SCTP COOKIE ECHO方式扫描 nmap --packet-trace -p1,6 -sO www.baidu.com # IP扫描,并且指定使用ICMP和TCP nmap -p21,22,80 -b 192.168.198.133 -Pn 192.168.198.137 -v # 利用FTP服务器(192.168.198.133)对目标主机(192.168.198.137)实施FTP转发扫描 # 当用户使用-sV选项探测服务版本时,Nmap会根据nmap-service-probes服务探测文件里存储的服务类型的指纹信息,以判断具体扫描到的是哪种服务。如果用户了解某种运行的服务,则可以把对应的指纹信息写入nmap-service-probes文件。如果用户不想使用默认的服务探测文件,则可以自己创建文件,并使用--versiondb选项指定。 nmap --versiondb < service probes file > <target> # 文件编写格式 Exclude <port> # Exculde是一个排除指令,用于指定探测服务时排除的端口。该指令只能使用一次,一般放在文件的头部,即所有的探针之前。 #nmap-service-probes文件默认排除了TCP 9100~9107之间的端口。这些端口一般用于打印机中,如果向这些端口发送数据,则监听的端口会将这些数据打印出来。 Exclude 53,T:9100,U:30000-40000 Probe <pattern> # Probe是一个探测指令,告诉Nmap发送哪种字符串来识别服务,即定义了一个探测包。 Probe protocol probename probestring protocol # 指定探针的协议。只能指定TCP或UDP,因为只会对这两种协议的服务进行探测 probename # 设置探针的名称。如果某个服务设置了fallback(回退指令),则会使用探针的名称 probestring # 指定Nmap探测服务发送的字符串。发送的字符格式类似于C和Perl的字符格式,而且支持转义字符,如\0、\a、\n、\r等。如果是空探针,则分隔符之间的字符串为空,即Probe TCP NULL q||。 # 例如,设置一个TCP的探针用来识别HTTP服务 Probe TCP GetRequest q|GET / HTTP/1.0\r\n\r\n| totalwaitms <value> # totalwaitms指令表示探针探测的超时等待时间。在Nmap中,默认值为6000ms totalwaitms <milliseconds> # 设置超时等待时间为6000ms totalwaitms 6000 tcpwrappedms <value> # tcpwrappedms指令表示一个计时器时间,仅用于空探针。如果服务器在计时器结束之前关闭了TCP连接,则该服务标记为tcpwrapped。在Nmap中,默认值为3000ms tcpwrappedms < milliseconds> # 设置探针超时时间为3000ms tcpwrappedms 3000 match <pattern> # match是一个匹配指令,告诉Nmap如何从目标主机返回的字符串中识别出服务 match service pattern [versioninfo] service # 与pattern匹配成功的服务名称,如FTP、SSH和HTTP等。 pattern # 用于识别返回的字符串是否匹配对应的服务。pattern的格式和Perl类似,语法为m/[regex]/[opts]。其中:m表示字符串的开始;/是分隔符,这个分隔符可以是其他可打印的字符,只要和接下来的分隔符相匹配即可;[regex]部分是一个Perl格式的表达式,目前仅支持i和s两个选项。i表示匹配不区分大小写;s表示在“.”字符后面有新行。另外,[regex]还支持分组。 versioninfo # 该部分包含几个可选的字段,每个字段都由一个标识符开始(如h表示hostname),接着是分隔符,建议使用斜线,最后是字段值。其中,p/厂商或服务信息/、v/服务版本/、i/杂乱信息/、h/主机名称/、o/操作系统/、d/设备类型/、cpe:/CPE name/[a] # 识别FTP服务的匹配指纹信息 match ftp m/^220.*Welcome to .*Pure-?FTPd (\d\S+\s*) match ftp m/^220.*Welcome to .*Pure-?FTPd (\d\S+\s*)/ p/Pure-FTPd/ v/$1/ cpe:/a:pureftpd:pure-ftpd:$1/ softmatch <pattern> # softmatch指令和match指令类似。不同的是,softmatch指令只用来匹配服务类型,而不提供服务版本信息。Nmap可以根据服务类型搜索对应的探针,做进一步的判断,以获取版本信息。 softmatch <service> <pattern> # 例如,设置一个匹配FTP服务的软匹配指纹信息 softmatch ftp m|^220 Welcome to ([-.\w]+) FTP.*\r\n$|i h/$1/ rarity rarity指令表示该探针被调用的优先级。数值越高表示被调用的优先级越低,也就是说该探针的准确性越低,或者识别的服务不常见 rarity <0-9> # 设置优先级为7 rarity 7 ports and sslports # ports和sslports指令指定Nmap探针所要发送数据的端口。该指令仅使用一次,放在每个探针的后面。 ports <portlist> sslports <portlist> # 指定Nmap探针发送数据的端口为12345 ports 12345 fallback # fallback是一个回滚指令。如果当前定义的指纹信息匹配失败,但是指定了fallback指令,将会退到指定的探针再次进行匹配。 fallback <comma separated list of probes> nmap -sV 192.168.198.136 # 对目标192.168.198.136实施服务探测 nmap -sV --allports 192.168.198.137 # 探测目标主机中的所有端口 -sV # 扫描服务的版本信息 --allports # 扫描所有端口 nmap -sV --version-intensity 5 www.baidu.com # 设置版本扫描强度值为5,对目标实施服务探测 --version-intensity # 设置版本扫描强度值,范围为0~9。其中,默认值为7。 --version-light # 打开轻量级模式。相当于--version-intensity 2的别名。这种模式扫描速度非常快 --version-all # 尝试使用所有的探针进行探测。该选项相当于--version-intensity 9的别名 nmap -sV --version-trace 192.168.198.137 # 探测目标主机的服务信息,并显示其调试信息 --version-trace # 跟踪版本扫描活动 nmap -sR 192.168.198.137 # 使用RPC方式探测服务信息 nmap --packet-trace -Pn --send-ip -O 192.168.198.1 # 对目标主机实施系统探测 -O # 实施操作系统探测 nmap -O --osscan-limit 192.168.198.137 # 根据TCP端口探测方式实施系统探测 --osscan-limit # 针对指定的目标进行操作系统检测。其中,该选项仅根据TCP端口进行探测。当用户使用-P0选项扫描多个主机时,使用这个选项可以节约大量时间。另外,该选项只有在使用-O或-A进行操作系统检测时起作用。 --osscan-guess,--fuzzy # 实施模糊测试,推测操作系统检测结果。当Nmap无法确定所检测的操作系统时,使用该选项可以尽可能地提供最相近的匹配信息。Nmap默认将使用这种匹配方式。但是指定任意一个选项会使测试结果更加有效。 nmap --version-trace -sn --min-hostgroup 30 192.168.198.0/24# 设置最小扫描分组数为30,对192.168.198.0/24网络实施扫描 --min-hostgroup <msec> # 指定在同一时间内扫描的最小分组数。如果指定的接口上没有足够的目标主机来满足所指定的最小值,Nmap将使用实际数目数作为分组值。 --max-hostgroup <msec> # 指定在同一时间内扫描的最大分组数。 nmap --version-trace -sn --min-parallelism 100 192.168.198.0/24 # 设置同一时间最少发包数为100,对目标实施扫描 --min-parallelism <numprobes> # 指定并行发包的最小数。建议将该选项设置为大于1的数,以加快性能不佳的主机的网络扫描速度。不过,并行扫描会影响扫描的准确度。 --max-paralelism <numprobes> # 指定并行发包的最大数。该选项通常设置为1,以防止Nmap在同一时间向主机发送多个探测报文。该选项与--scan-delay选项同时使用效果更佳。 nmap --version-trace -sn --scan-delay 10000ms 192.168.198.0/24 # 设置探测报文等待时间间隔为10000ms --scan-delay <tiem> # 设置探测报文的时间间隔,默认单位为s --max-scan-delay <time> # 设置探测帧最长时间间隔,默认单位为s nmap --version-trace -sn --min-rate 50 192.168.198.0/24 # 设置每秒最少发送50个数据包,实施主机发现 --min-rate <number> # 设置每秒发送的最少数据包数 --max-rate <number> # 设置每秒发送的最多数据包数 nmap --version-trace -sS --max-rtt-timeout 1s 192.168.198.0/24 # 实施TCP端口扫描,并设置报文最大超时时间为1s --min-rtt-timeout <time> # 设置探测报文的最小超时时间,单位为ms --max-rtt-timeout <time> # 设置探测报文的最多超时时间。单位为ms --initial-rtt-timeout <time> # 设置探测报文的初始化超时时间,单位为ms nmap --version-trace -sn --host-timeout 5m 192.168.198.0/24 # 探测网络内的活动主机,并设置忽略5min没有响应的主机 --host-timeout <time> # 设置主机响应超时时间,单位为ms nmap --version-trace --host-timeout 1m --max-retries 0 -sU # 设置超时重试次数为0,实施UDP端口扫描 --max-retries <tries> # 设置扫描的重发次数 nmap -sS --defeat-rst-ratelimit 192.168.198.0/24 # 设置忽略系统RST包的速率限制,实施主机发现 --defeat-rst-ratelimit # 忽略系统RST包的速率限制 --defeat-icmp-ratelimit # 忽略系统ICMP错误消息速率限制 nmap -version-trace -sS -T0 www.baidu.com # 使用时间模板paranoid实施端口扫描 -T <0-5> # 设置时间模板:paranoid(0)、sneaky(1)、polite(2)、normal(3)、aggressive(4)和insane(5),默认为Normal nmap --packet-trace -sn -PS --source-port 67 www.daxueba.net# 使用被信任的源端口67对目标实施主机发现 -g <portnum>,--source-port <portnum> # 指定信任的源端口 nmap --packet-trace --badsum -sn -PS www.baidu.com # 使用伪校验值对目标主机实施主机发现 --badsum # 使用一个伪TCP/UDP/SCTP校验值来发送探测数据包 --adler32 # 用于指定SCTP校验值 nmap --packet-trace -sn -PS --ip-options "\x01\x07\x04\x00\x00\x00\x00\x00" www.baidu.com # 指定一个IP字符串,对目标实施端口扫描 --ip-options <S|R[route]|L[route]|T|U...>,<hex string> # 使用指定的IP选项发送数据包,可以指定的值有S、R、L、T、U。其中,S表示严格源路由,R表示记录路由,L表示松散源路由,T表示记录时间戳,U表示记录时间戳和路由。用户还可以指定十六进制字符串,而且该字符串的长度必须是4的倍数。另外,当指定十六进制字符串时,字节的值使用\x分隔。 nmap --packet-trace -sn -PS --data-length 25 www.daxueba.net# 向探测报文中随机附加一个长度为25的数据 --data-length <num> # 指定数据包长度的随机值 --data <hex string> # 指定一个十六进制值的数据 --data-string # 指定一个文本值的数据 nmap --packet-trace -sn -PS --mtu 16 www.daxueba.net # 设置数据偏移大小为16 -f <val> # 设置分片大小。Nmap默认在IP头后会分成8字节的分片或更小的分片,因此一个20字节的TCP头会被分成3个包。其中,前两个包分别包含TCP头的8字节,最后一个包只包含TCP头剩下的4字节 --mtu <val> # 设置最大传输单元值,即数据偏移大小。使用该选项时不需要-f选项,并且指定的偏移量必须是8的倍数。 nmap --packet-trace -sn -PS --proxies http://www.baidu.com # 使用HTTP代理转发规避防火墙 --proxies <url1,[url2],...> # 指定使用HTTP/SOCKS4代理转发。 nmap --packet-trace -sn -PS --ttl 10 www.daxueba.net # 指定TTL值为10,扫描目标主机 --ttl <val> # 设置一个TTL值。其中,TTL值的范围为0~255 nmap --packet-trace -sn -PS --randomize-hosts 61.135.169.121 182.16.21.51 112.121.182.166 # 对目标主机随机排列并实施扫描 --randomize-hosts # 对目标主机的顺序随机排列并进行扫描 nmap --packet-trace -sn -PS -D 61.135.169.121 www.baidu.net # 指定一组诱骗IP地址,以实施诱饵扫描 -D <decoy1,decoy2[,ME],...>,RND:number # 指定一组诱骗的IP地址,以实现诱饵扫描 nmap --packet-trace -S 192.168.198.142 -sn -PS www.baidu.com# 指定伪造的源地址对目标主机实施扫描 -S # 指定一个伪造的源IP地址。如果指定一个伪造的源地址,则需要结合-e和-Pn选项一起使 nmap --packet-trace -sn -PS --spoof-mac 00:0c:29:11:24:22 # 使用伪造的MAC地址对目标主机实施扫描 --spoof-mac # 指定一个伪造的MAC地址 nmap 192.168.198.136 -oN test.nmap # 使用标准输出格式保存扫描结果,并将结果存入test.nmap文件 -oN # 选项将标准输出结果直接写入指定的文件 nmap -oX nmap.xml 192.168.198.136 # 将扫描结果以XML格式输出,并指定报告文件名为nmap.xml -oX # 输出为XML格式 --stylesheet <path/URL> # 使用本地的XSL样式表 --webxml # 使用Nmap官网的XSL样式表 --no-stylesheet # 不使用XSL样式表 nmap -oS nmap.script 192.168.198.136 # 将扫描结果以脚本格式输出,并指定生成的报告文件名为nmap.script -oS # 输出为脚本格式 nmap -oG nmap.grep 192.168.198.136 # 将扫描结果以Grep格式输出,并指定输出的报告文件名为nmap.grep -oG # 生成Grep格式的报告 nmap -oA test 192.168.198.136 # 生成所有格式的报告文件,并指定文件前缀为test -oA # 选项将扫描结果以标准格式、XML格式和Grep格式一次性输出,并分别存放在*.nmap、*.xml和*.gnmap文件中。 nmap -oN info.nmap 192.168.198.136 -vv # 增加冗余程度,显示更详细的扫描结果 -v # 设置冗余程度。为了输出更多的信息,通过使用多个-v,可以增加冗余级别,如-vv、-vvv和-vvvv等 -d # 设置调试信息。为了输出更多的调试信息,可以使用多个-d,如-dd、-ddd等 nmap --append-output -oN test.nmap 192.168.198.1 # 将主机的扫描结果追加到test.nmap报告文件中 --append-output # 在报告文件中追加内容 ndiff [options] FILE1 FILE2 # Nmap提供了一个Ndiff组件,可以用来比较两个Nmap XML格式的扫描报告的不同之处 -h,--help # 显示帮助信息 -v,--verbose # 显示主机和端口改变的详细信息 --text # 指定输出格式为text。text格式也是默认的格式 --xml # 指定输出格式为XML nmap -oX nmap.xml -sV -O 192.168.198.1 # 扫描目标主机中开放的端口、服务版本及操作系统类型,并将扫描结果存入nmap.xml文件 db_import <filename> [file2...] # Metasploit框架中提供了一个db_import命令,可以导入Nmap扫描报告 db_import db_import nmap.xml # 将Nmap报告文件nmap.xml导入Metasploit框架 # Metasploit db_nmap [--save | [--help | -h]] [nmap options] # Metasploit框架中提供了一个数据库命令db_nmap,可以直接调用Nmap工具来扫描目标 --save # 保存扫描报告文件。其中,扫描报告默认保存在/root/.msf4/local目录中,格式为XML --help,-h # 显示帮助信息。 db_nmap -sS 192.168.198.1 # 使用db_nmap命令扫描目标主机中的端口 hosts # 查看导入的主机信息 services # 查看导入的服务信息 use auxiliary/scanner/ftp/anonymous # 加载Metasploit框架中的ftp服务模块,探测目标主机中FTP服务是否允许匿名等登录 show options # 查看模块配置选项 set RHOSTS 192.168.198.136 # 设置RHOSTS选项,指定目标主机地址 # Nessus wget http://static.tenable.com/documentation/nmapxml.nasl # 下载nmapxml插件文件 cp nmapxml.nasl /opt/nessus/lib/nessus/plugins/ # 将下载的插件文件复制到Nessus的插件目录下 service nessusd stop # 停止Nessus服务 /opt/nessus/sbin/nessusd -R # 安装新的插件 service nessusd start # 启动Nessus服务 nmap -A -oX nmap.xml -iL target.txt # 执行一个扫描任务,并将结果保存到nmap.xml文件中在该命令中,指定的目标文件中包括两个目标IP地址。该命令支持成功后,将在当前目录下生成一个报告文件nmap.xml
-
Nmap脚本默认存放在安装目录的scripts目录下。默认保存在/usr/ share/nmap/scripts目录下。
# Nmap为了方便管理提供了大量脚本,Nmap将这些脚本按功能进行了分类: auth # 负责处理绕开认证证书的脚本,如xll-access、ftp-anon和oracle-enum-users broadcast # 在局域网内探查更多的服务开启状况。通过使用newtargets脚本参数,可以将脚本发现的主机自动添加到Nmap扫描队列中。 brute # 用来暴力破解远程服务器的认证信息,如http-brute和snmp-brute等。 default # 使用-sC或-A选项扫描时默认的脚本,提供基本脚本扫描能力。用户也可以使用--script=default选项指定使用default类脚本。 discovery # 对网络进行扫描,以获取更多的信息,如SMB枚举和SNMP查询等。 dos # 用于进行拒绝服务攻击。 exploit # 利用已知的漏洞入侵系统。 external # 利用第三方的数据库或资源发送数据,如进行whois解析。 fuzzer # 模糊测试的脚本,发送异常的包到目标主机,探测目标主机的潜在漏洞。 intrusive # 入侵性脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽。 malware # 探测目标主机是否感染了病毒、开启了后门等信息。 safe # 与intrusive相反,属于安全性脚本。 version # 负责增强服务与版本扫描(Version Detection)功能的脚本。 vuln # 负责检查目标主机是否有常见的漏洞(Vulnerability),如是否有MS08_067。 nmap --script-updatedb # 更新脚本数据库 nmap --script-help=ftp-anon # 查看ftp-anon脚本帮助信息 nmap -p 21 --script=ftp-anon 192.168.198.136 # ftp-anon脚本对目标实施扫描 nmap --script=vuln 192.168.198.136 # 指定使用vuln类脚本实施扫描 nmap -p21 --script ftp-brute --script-args userdb=/root/users.txt,passdb=/root/passwords.txt 192.168.198.136 # 使用ftp-brute脚本对目标主机的FTP服务实施暴力破解。其中,指定userdb参数值为userx.txt,passdb参数值为passwords.txt --script-args=<n1=v1,[n2=v2,...]> # 设置脚本参数。 --script-args-file=filename # 指定NSE脚本参数文件列表 nmap -p 21 --script ftp-anon 192.168.198.136 --script-trace # 跟踪ftp-anon脚本执行过程 --script-trace # 显示所有发送和接收的数据 --script-timeout # 设置超时时间。 nmap -sV -sC --script=creds-summary <target> # Nmap可能会检测服务的默认认证信息,或者对认证信息实施暴力破解,并被收集。用户可以使用creds-summary脚本列出这些信息 --script-args creds.global # 返回所有的认证信息。 --script-args creds.[service] # 返回指定服务的认证信息,如creds.http=admin:password nmap --script reverse-index 192.168.84.136 192.168.84.140 # 使用反向索引的方式扫描主机上运行的服务 --script-args reverse-index.mode # 指定输出模式。其中,指定的模式可以是horizontal或vertical,默认为horizontal --script-args reverse-index.names # 指定索引结果的服务名 nmap --script unittest --script-args unittest.run # unittest脚本可以对所有的NSE库进行单元测试 --script-args unittest.run # 执行单元测试 --script-args unittest.tests # 仅对库进行单元测试,默认是all nmap --script fingerprint-strings <target> # fingerprint-strings.n设置组成“字符串”所需的可打印ASCII字符数,默认值为4 nmap -sV --script=banner 192.168.1.104 # 获取目标主机RHEL 6.4上所有开放服务的标志信息 --script-args banner.ports # 指定捕获的端口号,默认是所有端口。该参数的含义和-p选项相同 --script-args banner.timeout # 指定欢迎信息响应的最长时间,默认为5s nmap -sL --script=targets-sniffer --script-args=newtargets,targets-sniffer.timeout=5s,targets-sniffer.iface=eth0 # 扫描局域网中活动的主机 --script-args targets-sniffer.timeout # 指定包监听的最大时间,默认为10s --script-args targets-sniffer.iface # 指定嗅探的网络接口 --script-args newtargets # 指定另一个目标 nmap --script broadcast-listener -e eth0 # 监听局域网中通过接口eth0的所有广播包,并对收到的包进行解码 --script-args broadcast-listener.timeout # 指定嗅探网络接口的超时时间,默认为30s nmap --script path-mtu 192.168.1.104 # 探测目标主机RHEL 6.4的最大传输单元 nmap --script=firewalk --traceroute 192.168.1.104 # 探测目标主机RHEL 6.4上的防火墙规则 --script-args firewalk.max-retries # 指定允许重传的最大次数。 --script-args firewalk.recv-timeout # 指定循环捕获包持续的时间,单位为ms。 --script-args firewalk.probe-timeout # 指定探针有效时间,单位为ms。 --script-args firewalk.max-active-probes # 指定探针并行的最大数。 --script-args firewalk.max-probed-ports # 指定探测每个协议的最大端口数。如果设置为-1,将扫描每个被过滤的端口。 nmap --script targets-traceroute --script-args 192.168.198.1 --traceroute 192.168.0.104 -p 80 # 获取目标主机RHEL 6.4上80端口的路由跟踪信息 --script-args newtargets # 用于指定路由跟踪的下一跳 nmap --traceroute --script traceroute-geolocation www.baidu.com # 获取访问百度服务器的路由跟踪位置信息 --traceroute # 选项表示进行路由跟踪 --script traceroute-geolocation # 脚本可以列举每一跳的地址位置,并且可以将结果保存到一个KML文件中 nmap -e eth0 --script broadcast-ping 192.168.59.0/24 # 对IP范围192.168.59.0/24中的主机进行Ping发现 --script-args broadcast-ping.timeout # 等待响应时间,单位为s,默认为3s --script-args broadcast-ping.num_probes # 指定要发送ICMP探测包的数量,默认为1 --script-args broadcast-ping.interface # 指定用于此脚本的接口,默认为所有接口 nmap -sn --script ip-forwarding --script-args='target=mail.benet.com' 192.168.10.104 # 探测目标主机RHEL 6.4是否开启了IP转发,发送ICMP echo请求,并探测目标是否开启IP转发 --script-args ip-forwarding.target # 用于指定ICMP echo请求响应的目标 nmap --script=broadcast-eigrp-discovery <targets> -e wlan0 # broadcast-eigrp-discovery脚本通过向多播地址224.0.0.10发送EIGRP Hello包,监听EIGRP更新包,从而收集路由信息 --script-args roadcast-eigrp-discovery.as # 设置自治系统值,如果没有设置,脚本将监听224.0.0.10获取自治系统值 --script-args broadcast-eigrp-discovery.timeout # 指定自治系统发布和更新的最长监听时间。默认值为10,单位为s(秒) --script-args broadcast-eigrp-discovery.kparams # 指定自治系统发布和更新的最大参数量,默认值为101000 --script-args broadcast-eigrp-discovery.interface # 指定发送的接口 nmap --script=broadcast-ospf2-discover -e wlan0 # broadcast-ospf2-discover脚本可以监听来自多播地址224.0.0.5的OSPF Hello包,响应并创建一个邻居关系,以获取连接状态数据库 --script-args broadcast-ospf2-discover.md5_key # 如果公开了消息摘要身份验证,则使用MD5摘要密钥 --script-args broadcast-ospf2-discover.router_id # 指定路由ID,默认为0.0.0.1 --script-args broadcast-ospf2-discover.timeout # 脚本在其他路由器上等待OSPF返回Hello消息的时间,默认为10s。该值将与Hello消息默认的间隔值进行比较 --script-args broadcast-ospf2-discover.interface # 指定强制发送所使用的网络接口。如果没有使用,则使用-e指定的网络接口 nmap --script broadcast-wake-on-lan # broadcast-wake-on-lan脚本会以广播的形式向UDP 9端口发送数据包,唤醒局域网内休眠的主机 --script-args broadcast-wake-on-lan.address # 接收WOL包的广播地址 --script-args broadcast-wake-on-lan.MAC # 要唤醒的远程系统的MAC地址 nmap --script duplicates,nbstat,ssl-cert <ip> # duplicates脚本通过分析其他脚本获取的信息,可以判断目标主机是否为多宿主主机 nmap --script clock-skew <target> # clock-skew.nse脚本可以比较扫描主机和多个目标主机的时间差,并根据时钟漂移值对目标主机进行分组 nmap --script broadcast-igmp-discovery -e <interface> --script-args='broadcast-igmp-discovery.version=all, broadcast-igmp-discovery.timeout=3' # broadcast-igmp-discovery脚本可以发现目标主机上的IGMP组播成员,并获取有意义的信息 --script-args broadcast-igmp-discovery.timeout # 指定报告等待的时间,单位为s,默认是5s --script-args broadcast-igmp-discovery.version # 指定使用的IGMP版本。其中,可以指定的版本有1、2、3或all,默认是2 --script-args broadcast-igmp-discovery.interface # 指定使用的网络接口 --script-args broadcast-igmp-discovery.mgroupnamesdb # 指定多播组名的数据库 nmap --script broadcast-pppoe-discover <target> # broadcast-pppoe-discover脚本可以用来探测主机所在网络的PPPoE服务器 nmap --script targets-asn --script-args targets-asn.asn=32 # 使用targets-asn脚本可以获取主机的ASN列表,并以CIDR格式输出 --script-args targets-asn.asn # 指定搜索的ASN --script-args targets-asn.whois_server # 指定使用的WHOIS服务器,默认是asn.shadowserver.org --script-args targets-asn.whois_port # 指定使用的WHOIS端口,默认是43 nmap --script asn-query.nse 61.135.169.121 # asn-query.nse脚本可以用来查询IP地址的ASN编号 --script-args dns # 用于指定使用的DNS服务器地址 nmap -6 --script address-info.nse fe80::20c:29ff:fee8:6aa # address-info.nse脚本提取内嵌的信息并进行解码 nmap -e wlan2 --script eap-info # eap-info脚本可以枚举EAT提供的认证方法 --script-args eap-info.identity # 指定认证方法的ID --script-args eap-info.scan # 指定测试认证列表。其中,4表示MD5;13表示TLS;25表示PEAP。默认为TLS、TTLS、PEAP和MSCHAP --script-args eap-info.interface # 指定扫描使用的网络接口 --script-args eap-info.timeout # 指定扫描允许的最大超时值,默认是10s nmap -sU -p 67 --script=dhcp-discover 192.168.1.1 # 发送DHCP INFORM请求到路由器的UDP端口67,可以指定的类型有DHCP OFFER、DHCP REQUEST、DHCP DECLINE、DHCP ACK、DHCP NAK、DHCP RELEASE或DHCP INFORM。 --script-args randomize_mac # 指定请求使用的随机MAC地址 --script-args requests # 设置请求数(整数) nmap --script broadcast-dhcp-discover.nse # 使用broadcast-dhcp-discover脚本向局域网中发送DHCP REQUEST广播包 --script-args broadcast-dhcp-discover.mac # 指定一个随机或特定的客户端MAC地址。其中,默认使用的DHCP请求的MAC地址为DE:AD:C0:DE:CA:FE。如果使用随机的MAC地址,可能会使DHCP服务器每次都返回一个新的IP地址。 --script-args broadcast-dhcp-discover.timeout # 设置等待响应的延迟时间,默认为10s。 nmap -6 --script broadcast-dhcp6-discover <target> # broadcast-dhcp6-discover脚本以DHCPv6多播方式发送DHCPv6请求包 nmap -sSU -p 53 --script dns-nsid [target] # dns-nsid脚本可以用来发送ID请求并且获取DNS的详细信息 nmap --script=broadcast-dns-service-discovery # broadcast-dns-service-discovery脚本发送DNS-SD广播包 nmap --script dns-brute baidu.com # 使用dns-brute脚本获取域名baidu.com的子域名 --script-args dns-brute.threads # 设置线程数,默认为5。 --script-args dns-brute.srvlist # 要尝试的SRV记录列表的文件名。默认为nselib/data/dns-srv-names。 --script-args dns-brute.hostlist # 要尝试的主机字符串列表的文件名。默认为nselib/data/vhosts-default.lst。 --script-args dns-brute.srv # 执行SRV记录查找。 --script-args dns-brute.domain # 如果没有指定主机,则对域名进行暴力破解。 --script-args newtargets # 为NSE脚本添加新的目标。 --script-args max-newtargets # 设置允许的新目标的最大数。如果设置为0或更少,表示没有限制。默认值为0。 nmap --script=dns-service-discovery <target> # dns-service-discovery脚本利用该机制,通过向目标主机的UDP 5353端口发送查询包 nmap -sU -p 53 --script=dns-recursion [target] # dns-recursion脚本可以用来探测主机是否允许DNS递归查询 nmap -sn --script dns-blacklist 192.168.1.1 # dns-blacklist脚本可以探测目标主机是否支持DNS反垃圾和代理黑名单 --script-args dns-blacklist.ip # 指定探测的IP地址列表 --script-args dns-blacklist.mode # 指定探测的字符串模式。其中,可以指定的值为short或long,默认值为long --script-args dns-blacklist.list # 指定所有特定类别的服务列表 --script-args dns-blacklist.services # 指定查询的服务列表字符串,默认是all --script-args dns-blacklist.category # 指定查询服务种类包括的服务字符串,如spam或proxy,默认是all nmap --script dns-check-zone <domain> # dns-check-zone脚本可以探测指定域名对应的区域设置,如刷新时间和过期时间等 nmap --script dns-cache-snoop <target> # dns-cache-snoop脚本通过非递归和计时两种模式来判断DNS服务器是否开启了缓存功能 --script-args dns-cache-snoop.mode # 使用哪一种支持的窥探方法。默认情况下,检查服务器是否返回非递归查询的结果。一些服务器可能会禁用此功能。计时模式用于解析缓存和非缓存主机的时间差异,这种模式会污染DNS缓存,并且只能可靠地使用一次。 --script-args dns-cache-snoop.domains # 替换默认列表的域数组 nmap --script=dns-random-srcport <target> # dns-random-scrport脚本可以用来检测DNS服务器漏洞,并验证随机端口是否可以被预测 nmap --script=dns-random-txid <target> # dns-random-txid脚本可以用来检测DNS服务器漏洞,验证传输会话ID是否可以被预测 nmap --script dns-client-subnet-scan <target> # dns-client-subnet-scan脚本利用ESC协议提交不同的IP地址,可以获取指定域名内所有的IP地址 --script-args dns-client-subnet-scan.domain # 指定查找的域。 --script-args dns-client-subnet-scan.mask # 用作子网掩码的比特数,默认为24。 --script-args dns-client-subnet-scan.nameserver # 使用的名称服务器。 --script-args dns-client-subnet-scan.address # 要使用的客户子网地址。 nmap --script dns-fuzz <target> # dns-fuzz脚本可以实施DNS Fuzzing攻击,并允许用户设置攻击时长 --script-args dns-fuzz.timelimit # 来设置实施模糊测试的攻击时间,默认值为10m nmap --script dns-ip6-arpa-scan <target> # dns-ip6-arpa脚本利用对指定IPv6前缀的网络进行扫描,发现网络内的所有主机 --script-args prefix # IPv6前缀扫描 --script-args mask # 从IPv6掩码开始扫描 nmap --script=dns-nsec3-enum <target> # dns-nsec3-enum脚本通过反复向DNS服务器发送不存在的域名解析请求,来获取该域名服务器下的所有域名哈希值信息,如哈希值、迭代次数和撒盐值然后就可以进行离线破解 --script-args dns-nsec3-enum.domains # 要枚举的域或域列表。如果没有提供域或域列表,脚本将根据目标的名称猜测域或域列表 --script-args dns-nsec3-enum.timelimit # 设置脚本运行时间限制。默认为30min nmap --script=dns-nsec-enum <target> # dns-nsec-enum脚本利用通过在DNS服务器中添加DNSSEC记录,来保证DNS信息来源的可信度,通过向DNS服务器枚举请求指定的域名来获取该子域名记录 --script-args dns-nsec-enum.domains # 指定枚举的域或域列表。如果没有提供,脚本将根据目标的名称猜测域或域列表 nmap --script dns-srv-enum --script-args "dns-srv-enum.domain='example.com'" # dns-srv-enum脚本可以查询指定域名的所有SRV记录,也可以查询特定服务的记录 --script-args dns-srv-enum.domain # 用于指定包含要查询的域的字符串 --script-args dns-srv-enum.filter # 包含要查询的服务的字符串,默认为all --script-args newtargets # 定该脚本参数,表示让NSE脚本添加新的目标 --script-args max-newtargets # 置允许该脚本自动添加新目标的最大数量。如果设置为0或更小的值,则表示没有限制。默认值为0 nmap --script dns-update <target> # dns-update脚本可以在没有授权的情况下尝试对指定域名进行更新操作 --script-args dns-update.test # 添加和删除4条记录以确定目标是否易被攻击 --script-args dns-update.ip # 要添加到区域的主机IP地址 --script-args dns-update.hostname # 要添加到区域的主机的名称 nmap --script=broadcast-avahi-dos # broadcast-avahi-dos脚本会寻找本地网络的DNS服务器并发送空的UDP包 --script-args broadcast-avahi-dos.wait # 设置执行前的等待时间,单位为s。默认为20s --script-args dnssd.services # 包含查询服务的字符串或表 nmap --script dns-zone-transfer <target> # dns-zone-transfer脚本利用该漏洞向指定的DNS服务器发起AXFR请求,可以获取对应的DNS记录 --script-args dns-zone-transfer.port # DNS服务器端口,默认值为53。 --script-args dns-zone-transfer.server # DNS服务器。如果设置该参数,将启用脚本"Script Pre-scanning phase"。 --script-args newtargets # 将返回的DNS记录加入Nmap扫描队列中。 --script-args dns-zone-transfer.domain # 进行域转移。 --script-args dns-zone-transfer.addall # 如果指定该选项,并且给定的脚本参数new targets为私有IP,则将私有IP地址所在的地址段都添加到Nmap扫描队列中。 --script-args max-newtargets # 设置允许添加的新目标的最大数量。如果设置为0或更小的值,则表示没有限制。默认值为0。 nmap -sn -Pn --script fcrdns oracle.com # fcrdns脚本执行FCrDNS查询,可以获取IP或者域名的相关信息 # 路由信息协议(Routing Information Protocol,RIP)是一种小型网络的路由协议,通过向组播地址224.0.0.9的UDP 520端口发送数据包来更新路由信息 nmap --script broadcast-rip-discover <target> # broadcast-rip-discover脚本向组播地址的UDP 520端口发送命令包并收集响应信息 --script-args broadcast-rip-discover.timeout # 设置等待响应时间,单位为s,默认为5s nmap --script broadcast-ripng-discover <target> # broadcast-ripng-discover脚本以广播形式发送RIPng请求命令包 --script-args broadcast-ripng-discover.timeout # 设置连接超时时间,单位为s,默认为5s nmap -sV --script=broadcast-upnp-info <target> # broadcast-upnp-info脚本可以收集这些广播包,解析并提取其中的数据 nmap -sV --script=daytime <target> # daytime脚本可以向开启13端口的服务器发送请求,以获取时间和日期信息 nmap --script gopher-ls <target> # gopher-ls脚本可以列出Goher系统根目录下的所有文件和目录 --script-args gopher-ls.maxfiles # 限制脚本返回的文件数量,如果设置为0或负数,将显示所有的文件,默认值是10 nmap --script finger <target> # finger脚本可以向Finger服务器发送请求,查询并获取用户的相关信息 nmap -sU -p 123 --script ntp-info [target] # ntp-info脚本可以从一个NTP服务器上获取目标主机的时间及各种配置信息 nmap --script=broadcast-novell-locate <target> # broadcast-novell-locate脚本以广播形式探测NCP服务器,可以获取目标主机相关的信息 nmap --script http-auth 192.168.1.1 # http-auth脚本查看服务器的基本认证信息 nmap --script=http-default-accounts -p [prot] [target] # http-default-accounts脚本检查目标Web服务是否允许使用默认账户登录 --script-args http-default-accounts.basepath # 指定请求的基本路径,默认是“/” --script-args http-default-accounts.fingerprintfile # 指定指纹识别文件名,默认是http-default-fingerprints.lua --script-args http-default-accounts.category # 指定一个指纹识别种类或种类列表 --script-args http-default-accounts.name # 指定指纹识别中包括的单词或交替的单词列表 nmap --script http-methods 192.168.1.1 # http-methods脚本可以检查服务器中是否存在有风险的方法 --script-args http-methods.url-path # 指定请求的路径,默认是“/” --script-args http-methods.retest # 指定请求的方法 --script-args http-methods.test-all # 尝试使用所有的方法 nmap --script=http-chrono -p 80 192.168.1.1 # http-chrono脚本来探测访问一个网页的时间,可以探测到访问一个网页的平均时间、最长时间和最短时间 --script-args http-chrono.maxdepth # 指定探测的最大深度,默认是3 --script-args http-chrono.maxpagecount # 指定访问的页数,默认是1 --script-args http-chrono.url # 指定起始爬行的URL,默认是“/” --script-args http-chrono.withinhost # 仅爬行相同主机中的URL,默认是true --script-args http-chrono.withindomain # 仅爬行相同域名中的URL,默认是false --script-args http-chrono.tries # 指定获取页数的次数 nmap -p80 --script http-comments-displayer.nse 192.168.1.1 # http-comments-displayer脚本可以从HTTP响应中提取HTML注释 --script-args http-comments-displayer.singlepages # 指定获取注释信息的单个页面,如“/”和wiki,默认为nil --script-args http-comments-displayer.context # 指定探测扩展字符串的字符数,默认为0,最大值为50 nmap -p 80 --script http-date [target] # http-date脚本可以从HTTP服务中获取时间 nmap --script=http-enum -p 80 192.168.1.1 # http-enum脚本可以枚举HTTP服务的网页目录 --script-args http-enum.basepath # 指定每个请求访问的基本路径 --script-args http-enum.displayall # 设置显示所有的状态码参数 --script-args http-enum.fingerprintfile # 指定一个指纹信息文件 --script-args http-enum.category # 设置一个种类,如attacks、database、general、microsoft和printer等 --script-args http-fingerprints.nikto-db-path # 查看指定的nikto数据库路径 nmap -p 80 --script http-grep 192.168.1.1 --script-args # http-grep脚本可以进行网络爬取操作并收集邮件地址 --script-args http-grep.match # 指定在页面中匹配的字符串 --script-args http-grep.maxdepth # 指定爬行页面的最深目录数,默认为3 --script-args http-grep.maxpagecount # 指定访问的最大页数,默认为20 --script-args http-grep.url # 指定爬行的起始网址,默认为“/” --script-args http-grep.withinhost # 指定仅爬行相同主机的URL --script-args http-grep.withindomain # 指定仅爬行相同域名的URL --script-args http-grep.breakonmatch # 指定匹配的单个规则类型 --script-args http-grep.builtins # 指定爬行的类型或类型列表 nmap --script=http-errors -p 80 192.168.1.1 # http-errors脚本爬行某个网站,可以返回访问错误的页面 --script-args http-errors.errcodes # 指定错误码,默认是nil。其中,指定的错误码需要大于等于400 nmap -sV --script=http-headers -p 80 192.168.1.1 # http-headers脚本可以获取HTTP头信息 --script-args path # 指定请求的路径,如index.php,默认为“/” --script-args useget # 强制使用GET请求 nmap --script http-sitemap-generator -p 80 192.168.1.1 # http-sitemap-generator脚本可以获取HTTP服务的目录结构 --script-args http-sitemap-generator.maxdepth # 设置爬行的起始URL的最大目录数,默认值为3 --script-args http-sitemap-generator.maxpagecount # 指定访问的最大页数,默认为20 --script-args http-sitemap-generator.url # 设置爬行的起始URL,默认为“/” --script-args http-sitemap-generator.withhost # 仅爬行相同主机的URL --script-args http-sitemap-generator.withdomain # 仅排序相同域名内的URL nmap --script http-trace -d 192.168.1.1 -p 80 # http-trace脚本可以发送HTTP TRACE请求 --script-args http-trace.path # 指定URI的路径 nmap -p80 --script http-useragent-tester 192.168.1.1 # http-useragent-tester脚本可以探测目标主机是否允许网络爬虫 --script-args http-useragent-tester.useragents # 指定多个用户代理头列表,默认为nil nmap --script http-vhosts www.baidu.com # http-vhosts脚本可以用来发送HEAD请求并搜索Web虚拟主机 --script-args http-vhosts.domain # 指定预追加的域名。如果不指定,则使用基本的主机名 --script-args http-vhosts.path # 指定尝试探测的路径,默认是“/” --script-args http-vhosts.collapse # 指定由状态码开始折叠的结果,默认是20 --script-args http-vhosts.filelist # 指定尝试的虚拟主机文件,默认为nselib/data/vhosts-default.lst nmap --script http-slowloris --max-parallelism 400 192.168.1.1 # http-slowloris脚本可以探测Web服务是否存在Slowloris DoS攻击 --script-args http-slowloris.runforever # 指定持续攻击的脚本 --script-args http-slowloris.send_interval # 指定发送一个新的HTTP头数据等待时间,默认是100s --script-args http-slowloris.timelimit # 指定拒绝服务攻击运行的最长时间,默认是30min nmap --script broadcast-wpad-discover 192.168.1.1 # broadcast-wpad-discover脚本通过DHCP和DNS请求获取WPAD配置,并进行解析,列出局域网内代理服务器的IP地址和端口号 --script-args broadcast-wpad-discover.getwpad # 指定WPAD文件 --script-args broadcast-wpad-discover.nodhcp # 跳过DHCP发现环节 --script-args broadcast-wpad-discover.nodns # 跳过DNS发现环节 --script-args broadcast-wpad-discover.domain # 发现WPAD主机的域 nmap --script broadcast-wsdd-discover # broadcast-wsdd-discover脚本发现局域网中支持Web服务动态协议的设备 nmap -sV --script=ajp-headers -p 8009 192.168.1.106 # ajp-headers脚本可以发送HEAD或GET请求,并获取AJP服务的头部信息 --script-args ajp-headers.path # 指定请求的路径,默认为“/” nmap -sV --script=ajp-request -p 8009 [target] # ajp-request脚本可以向AJP服务发送一个URI请求,并返回响应结果 --script-args method # 指定URI请求使用的AJP方法,默认是GET方法 --script-args path # 指定URI请求的部分路径 --script-args filename # 指定存储结果的文件名 --script-args username # 指定访问保护资源的用户名 --script-args password # 指定访问保护资源的密码 nmap -p 8009 <ip> --script ajp-auth # ajp-auth脚本可以探测AJP服务所使用的认证信息,如透明传值opaque、认证方式qop、唯一随机数nonce和域realm --script-args ajp-auth.path # 请求的路径 nmap -p 8009 <ip> --script ajp-brute # ajp-brute脚本实施暴力破解 --script-args ajp-brute.path # 请求的URL路径。默认为/ nmap -p 8009 <ip> --script ajp-methods # ajp-methods脚本获取AJP服务支持的请求方法了 --script-args ajp-methods.path # 如果没有指定路径,则自动进行路径检测或使用/路径 nmap --script ssl-enum-ciphers -p 443 [target] # ssl-enum-ciphers脚本可以用来枚举服务器支持的SSL密钥 nmap --script ssl-cert [target] # ssl-cert脚本可以获取服务器的SSL证书 nmap --script flume-master-info <host> # flume-master-info脚本访问该端口可以获取Flume服务的相关信息 nmap -p 23 --script telnet-encryption [target] # telnet-encryption脚本可以探测目标主机是否支持加密 nmap -p 23 --script telnet-brute 192.168.1.102 # telnet-brute脚本可以用来破解Telnet服务的密码 --script-args telnet-brute.timeout # 指定连接超时时间,默认为5s --script-args telnet-brute.autosize # 是否自动减少线程数,默认是true nmap --script ssh-hostkey --script-args ssh_hostkey=full 192.168.1.104 -p 22 # ssh-hostkey脚本可以查看SSH服务的密钥信息 --script-args ssh_hostkey # 指定密钥输出格式。可以指定的值有full、sha256、md5、bubble、visual和all --script-args ssh-hostkey.known-hosts # 检查known-hosts文件是否包含一个密钥 --script-args ssh-hostkey.known-hosts-path # 指定known_hosts文件的路径 nmap --script ssh2-enum-algos [target] # ssh2-enum-algos脚本可以查看SSH2协议支持的算法 nmap -sU --script backorifice-brute <host> --script-args backorifice-brute.ports=<ports> # backorifice-brute脚本可以对BackOrifice远程控制服务的密码进行暴力破解 nmap --script backorifice-info <target> --script-args backorifice-info.password=<password> # backorifice-info脚本获取各种相关信息。这些信息包括BackOrifice服务信息 --script-args backorifice-info.password # 脚本参数表示加密的密码,默认为空密码 --script-args backorifice-info.seed # 脚本参数指定加密的种子,默认为密码、字符串31337或空密码 nmap --script vnc-info -p 5900 192.168.1.103 # vnc-info脚本可以查询VNC服务的协议版本及支持的安全类型 nmap --script broadcast-pc-anywhere <target> # broadcast-pc-anywhere脚本,通过广播的形式向UDP 5632端口发包,可以探测局域网中开启pcAnywhere服务的计算机 --script-args broadcast-pc-anywhere.timeout # 指定嗅探网络接口的秒数,默认情况下随时间而变化,-T3的值为5s nmap --script broadcast-pc-duo <target> # broadcast-pc-duo脚本,通过广播的形式向UDP 2302端口发送特殊的包,可以探测局域网中开启PC-DUO远控服务的计算机 --script-args broadcast-pc-duo.timeout # 指定嗅探网络接口的秒数,如果不指定,将自动随时间而变化,-T3的值为5s nmap --script broadcast-xdmcp-discover <host> # broadcast-xdmcp-discover脚本向广播地址255.255.255.255的UDP 177端口发送请求包并解析响应包 --script-args broadcast-xdmcp-discover.timeout # 套接字超时时间,单位为s,默认为5s nmap --script mysql-empty-password 192.168.1.106 # mysql-empty-password脚本可以检测目标主机的MySQL服务是否允许使用空密码访问 nmap -p 3306 192.168.1.103 --script mysql-dump-hashes # mysql-dump-hashes脚本可以获取密码散列 --script-args username # 指定连接服务器的用户名 --script-args password # 指定连接服务器的密码 nmap --script mysql-query --script-args='query="<query>"[,username=<username>,password=<password>]' -p [prot] [target] # mysql-query脚本查询数据库信息 --script-args mysql-query.query # 指定查询语句 --script-args mysql-query.username # 指定查询数据库服务使用的认证用户名 --script-args mysql-query.password # 指定查询数据库服务使用的认证密码 --script-args mysql-query.noheaders # 不显示列的头 nmap -sV -p [端口] --script=mysql-users --script-args=mysqluser=<username>,mysqlpass=<password> <target> # mysql-users脚本查询MySQL数据库中的用户 --script-args mysqluser # 指定认证的用户名 --script-args mysqlpass # 指定认证的密码 nmap --script=mysql-brute -p 3306 192.168.1.104 # mysql-brute脚本可以破解MySQL的用户名密码。当成功破解后,即可尝试使用破解出的用户名和密码登录数据库,查看或修改数据信息 --script-args mysql-brute.timeout # 指定连接MySQL数据库服务的超时时间,默认为5s nmap --script=mysql-enum -p 3306 192.168.1.104 # mysql-enum脚本可以枚举用户的相关信息,如用户名和密码等 --script-args mysql-enum.timeout # 指定连接MySQL数据库服务的超时时间,默认为5s nmap --script mysql-info 192.168.1.104 -p 3306 # mysql-info脚本可以连接MySQL数据库服务,并显示服务相关的基本信息 nmap -p 1433 --script ms-sql-brute --script-args userdb=/root/user.txt,passdb=/root/pass.txt 192.168.1.108 # my-sql-brute脚本可以破解SQL Server数据库的用户和密码 --script-args ms-sql-brute.ignore-lockout # 强制继续暴力破解密码,即使用户被锁定 --script-args ms-sql-brute.brute-windows-accounts # 启用目标Windows账号,作为保留破解的一部分 nmap -p 1433 --script ms-sql-info --script-args mssql.instance-port=1433 192.168.1.108 # ms-sql-info脚本可以获取SQL Server数据库服务实例的配置信息和版本信息等 --script-args mssql.instance-port # 指定数据库实例端口 nmap -p 1433 --script ms-sql-config --script-args mssql.username=sa,mssql.password=123456 192.168.1.108 # ms-sql-config脚本可以查询SQL Server数据库配置信息 --script-args mssql.username # 设置SQL Server数据库认证的用户名 --script-args mssql.password # 设置SQL Server数据库认证的用户密码 --script-args mssql.domain # 设置集成身份认证的域名 --script-args mssql.scanned-ports-only # 设置Nmap扫描连接的端口 --script-args mssql.timeout # 设置等待响应的时间,默认为30s(秒) --script-args mssql.instance-port # 设置连接数据库的端口 --script-args mssql.protocol # 设置连接数据库使用的协议。其中,可以指定的协议为NP、Named Pipes或TCP --script-args mssql.instance-name # 设置连接数据库的名称 --script-args ms-sql-config.showall # 显示所有配置选项 nmap -p 1433 --script ms-sql-query --script-args mssql.username=<username>,mssql.password=<password>,ms-sql-query.query=<query> [target] # ms-sql-query脚本可以查询SQL Server数据库中的条目 --script-args mssql.username # 设置SQL Server数据库认证的用户名 --script-args mssql.password # 设置SQL Server数据库认证的用户密码 --script-args ms-sql-query.query # 指定查询数据库服务的语句,默认是SELECT @@version version --script-args mssql.database # 指定连接的数据库,默认为tempdb nmap --script broadcast-ms-sql-discover # broadcast-ms-sql-discover脚本通过广播的方式向UDP 1434端口发送请求包,可以收集数据库服务信息 nmap -p 389 --script ldap-rootdse [target] # ldap-rootdse脚本可以获取LDAP根的DSE(DSA-specific Entry)条目 nmap -p [prot] --script ldap-search [target] # ldap-search脚本可以查询LDAP中的条目 --script-args ldap.username # 指定LDAP服务认证使用的用户名 --script-args ldap.password # 指定LDAP服务认证的用户密码 --script-args ldap.qfilter # 指定一个快速过滤器 --script-args ldap.searchattrib # 设置定制快速查询器的属性 --script-args ldap.searchvalue # 设置定制快速查询器的属性值。该参数不能使用通配符(*) --script-args ldap.base # 指定一个搜索的基本值 --script-args ldap.attrib # 指定搜索的属性 --script-args ldap.maxobjects # 指定由脚本返回的最大数,默认为20。如果指定为-1,将没有限制 --script-args ldap.savesearch # 指定输出结果的保存文件。其中,该文件的后缀为.CSV nmap -p 5984 --script "couchdb-databases.nse" <host> # couchdb-databases.nse脚本通过HTTP的GET方式请求目标主机5894端口访问/_all_dbs资源 --script-args slaxml.debug # 设置调试级别,默认为3 --script-args http.useragent # 用户代理头字段的值与请求一起发送 --script-args http.max-cache-size # 缓存的最大内存大小,单位为字节 --script-args http.max-pipeline # 为HTTP管道实现缓存系统 --script-args http.pipeline # 在一个连接上发送的HTTP请求的数量 --script-args smbpassword # 指定连接的密码 --script-args smbhash # 登录时使用的哈希密码 --script-args smbnoguest # 禁用Guest账户 --script-args smbdomain # 指定要登录的域 --script-args smbtype # 指定使用的SMB身份验证类型,支持的类型有v1(发送LMv1和NTLMv1)、LMv1(只发送LMv1)、NTLMv1(只送NTLMv1,默认)、v2(发送LMv2和NTLMv2)、LMv2(只发送LMv2)。 --script-args smbusername # 指定用于登录的SMB用户名 nmap -p 5984 --script "couchdb-stats.nse" <host> # couchdb-stats.nse脚本通过HTTP的GET方式请求目标主机的5894端口访问/_stats资源 nmap -p 9160 <ip> --script=cassandra-brute # cassandra-brute脚本向Cassandra数据库服务器的9160端口发送请求,可以对用户名和密码进行暴力破解 --script-args brute.mode # 指定运行引擎的模式,支持的模式有3种。user模式为使用unpwdb数据库猜测密码;pass模式为使用unpwdb数据库猜测密码;creds模式为使用用户名/密码对列表对服务进行猜测。 --script-args brute.unique # 确保每个密码只被猜测一次 --script-args brute.retries # 设置需要重复猜测的次数,默认为2次 --script-args brute.useraspass # 以用户名作为密码进行尝试 --script-args brute.start # 设置引擎将启动的线程数,默认为5 --script-args brute.threads # 初始工作线程的数量,活动线程的数量将自动调整 --script-args brute.credfile # 用户名/密码对文件,用户名和密码之间使用“/”间隔 --script-args brute.emptypass # 以空密码进行尝试,默认不启用 --script-args brute.guesses # 设置对每个用户的猜测次数 --script-args brute.firstonly # 当成功猜测出第一个密码后停止猜测。默认不启用 --script-args brute.delay # 设置每次猜测的时间间隔 --script-args brute.passonly # 仅为身份验证提供密码的服务迭代密码,默认不启用 --script-args unpwdb.passlimit # 指定从unpwdb数据库中最多读取多少个密码,默认没有限制 --script-args userdb # 备用用户名数据库的文件名。默认为/usr/share/nmap/nselib/data/usernames.lst --script-args unpwdb.userlimit # 指定从unpwdb数据库中最多读取多少个用户名,默认没有限制 --script-args unpwdb.timelimit # 任何iterator在停止之前运行的最长时间,单位为s --script-args passdb # 备用密码数据库的文件名。默认为/usr/share/nmap/nselib/data/passwords.lst nmap -p 9160 <ip> --script=cassandra-info # 脚本通过向指定的Cassandra数据库服务器的TCP 9160端口发送请求 nmap --script broadcast-db2-discover # 脚本在本地网络向UDP 523端口发送广播包,可以探测响应的DB2数据库服务器 nmap -sV --script=db2-das-info <target> # 脚本可以在不需要授权的情况下获取数据库服务器的概要信息 nmap --script broadcast-sybase-asa-discover <host> # 脚本以广播的方式向UDP 2638发送数据包,可以探测局域网内存在的SQL Anywhere服务器 nmap --script broadcast-versant-locate <target> # 脚本监听SLP广播包,可以发现VOD服务并列出服务的IP地址和端口号 nmap --script drda-brute <target> # 脚本可以对基于DRDA协议的目标数据库服务器实施认证信息暴力破解 --script-args drda-brute.threads # 指定并行暴力破解的账户数量,默认为10个 --script-args drda-brute.dbname # 用来猜测密码的数据库名称,默认为SAMPLE nmap --script drda-info <target> # 脚本向服务器TCP 50000端口发送探测包,然后解析响应包,可以获取数据库的服务信息 nmap --script hadoop-datanode-info.nse <host> # 脚本访问服务状态页面可以获取相关的信息 nmap -p 50030 --script hadoop-jobtracker-info <host> # 脚本访问JobTracker的状态页面可以获取相关的信息 --srcipt-args hadoop-jobtracker-info.userinfo # 检索历史信息。默认值为false,表示不检索。 nmap --script hadoop-namenode-info -p 50070 <host> # 脚本访问名称节点的状态页面可以获取相关的信息 nmap --script hadoop-secondary-namenode-info -p 50090 host # 脚本访问辅助节点的状态页面可以获取相关的信息 nmap --script hadoop-tasktracker-info -p 50060 <host> # 脚本访问TaskTracker的状态页面可以获取相关的信息 nmap --script ftp-anon [target] # 脚本检查支持匿名登录的FTP服务器。如果允许匿名登录,则会显示FTP服务的根目录列表 --script-args ftp-anon.maxlist # 指定在目录列表中返回的最大文件数,默认为20 nmap --script ftp-bounce <target> # 脚本可以检查FTP服务器是否允许使用FTP反弹方法进行端口扫描 --script-args ftp-bounce.password # 指定登录的密码,默认为IEUser@ --script-args ftp-bounce.username # 指定登录的用户名,默认为anonymous --script-args ftp-bounce.checkhost # 主机尝试连接到端口命令,默认值为scanme.nmap.org nmap --script ftp-brute <target> # 脚本利用Nmap内置的用户名字典和密码字典实施暴力破解,以探测有效的认证信息 --script-args ftp-brute.timeout # 等待套接字上响应的时间量。从而提高吞吐量,默认值是5s。 --script-args brute.mode # 指定运行引擎的模式,有3种模式:user、pass和creds。如果没有指定模式则启用传递模式 --script-args brute.unique # 确保每个密码只被猜测一次 --script-args brute.retries # 设置需要重复猜测的次数,默认为2次 --script-args brute.useraspass # 以用户名作为密码进行探测 --script-args brute.start # 设置引擎将启动的线程数,默认为5 --script-args brute.threads # 初始工作线程的数量,活动线程的数量将自动调整 --script-args brute.credfile # 用户名/密码对文件,用户名和密码之间使用“/”间隔 --script-args brute.emptypass # 使用空密码猜测每一个用户,默认不启用 --script-args brute.guesses # 设置对每个用户的猜测次数 --script-args brute.firstonly # 当成功猜测出第一个密码后停止猜测,默认不启用 --script-args brute.delay # 设置每次猜测的时间间隔 --script-args brute.passonly # 仅对验证密码的服务进行密码迭代,默认不启用 --script-args creds.global # 设置通用的认证信息 --script-args creds.[service] # 设定指定服务的认证信息,如creds.http=admin:password --script-args unpwdb.passlimit # 指定从unpwdb数据库中最多读取多少个密码,默认没有限制 --script-args userdb # 备用用户名数据库的文件名,默认为/usr/share/nmap/nselib/data/usernames.lst --script-args unpwdb.userlimit # 指定从unpwdb数据库中最多读取多少个用户名,默认没有限制 --script-args unpwdb.timelimit # 任何iterator在停止之前运行的最长时间,单位为s --script-args passdb # 备用密码数据库的文件名,默认为/usr/share/nmap/nselib/data/passwords.lst nmap --script ftp-libopie <target> # 脚本,可以探测FreeBSD FTP服务是否存在OPIE漏洞 nmap --script ftp-syst <target> # 脚本,通过向FTP服务器发送这两个命令并解析返回信息 nmap --script ftp-vsftpd-backdoor <target> # 脚本执行id命令,可以探测FTP服务器是否存在这个漏洞 --script-args ftp-proftpd-backdoor.cmd # 在shell中执行的命令,默认为id --script-args vulns.short # 漏洞将以短格式输出,设置该参数后不影响XML的输出 --script-args vulns.showall # Nmap将显示并报告所有已注册的漏洞,其中包括非脆弱漏洞 nmap --script ftp-proftpd-backdoor <target> # 脚本,可以利用该漏洞执行id命令,来验证ProFTPD服务器是否存在该漏洞 --script-args ftp-proftpd-backdoor.cmd # 在shell中执行的命令,默认为id nmap --script ftp-vuln-cve2010-4221 <target> # 脚本可以构造对应的转义序列,检测服务器是否存在该漏洞 --script-args vulns.short # 如果设置了该参数,漏洞将以短格式输出,这是一行代码,由主机的目标名称、IP、状态,以及CVE ID或漏洞标题组成。设置该参数后不影响XML的输出 --script-args vulns.showall # 如果设置了该参数,Nmap将显示并报告所有已注册的漏洞,其中包括非脆弱漏洞。默认情况下,Nmap只报告脆弱漏洞,包括可能脆弱的漏洞 nmap --script firewall-bypass <target> # 脚本可以帮助与防火墙在同一个网内的攻击者伪造FTP helper建立与目标的连接,从而绕过防火墙 --script-args firewall-bypass.helper # 指定使用的helper,默认为ftp。支持的helper为ftp(IPv4和IPv6) --script-args firewall-bypass.targetport # 测试漏洞的端口。目标端口应该是非开放端口。如果没有给出,脚本将从端口扫描结果中找到经过过滤或关闭的端口 --script-args firewall-bypass.helperport # 不使用helper的默认端口 nmap --script smb-os-discovery.nse -p445 [target] # 脚本可以确定操作系统、计算机名、域名、工作组及SMB协议 nmap --script smb-security-mode.nse -p445 [target] # 脚本可以获取SMB安全模式的详细信息 nmap -p 445 --script smb-mbenum [target] # 脚本可以获取该服务器的信息 --script-args smb-mbenum.format # 指定由脚本返回结果的格式。其中,支持的格式有Ordered by type horizontally(对应参数值1)、Ordered by type vertically(对应参数值2)和Ordered by type vertically with details(对应参数值3),默认格式为3 --script-args smb-mbenum.filter # 指定查询浏览的服务器类型 --script-args smb-mbenum.domain # 列出查询浏览的域名 nmap --script smb-enum-shares.nse [target] # 脚本可以获取共享文件及其他信息 nmap --script smb-enum-domains [target] # 脚本可以枚举系统域名 nmap --script smb-vuln-cve2009-3103.nse -p139 [target] # 脚本可以判断SMB服务是否存在CVE-2009-3103漏洞 nmap --script smb-enum-users [target] # 脚本可以枚举所有的Samba用户 --script-args lsaonly # 仅使用LSA枚举Samba用户名 --script-args samronly # 仅使用SAMR查询的用户列表进行枚举 nmap --script smb-brute.nse -p 445 [target] # 脚本破解SMB服务的密码 --script-args smblockout # 强制暴力破解,即使账号被锁定 --script-args brutelimit # 指定脚本简称的用户数,默认是5000 --script-args canaries # 指定尝试测试的锁定账号次数,默认为3 nmap --script bittorrent-discovery --script-args bittorrent-discovery.torrent=<torrent_file> # 脚本可以探测目标主机通过BT和磁力链接方式,分享所关联的Peer和正在下载该资源的客户节点的IP信息 --script-args bittorrent-discovery.include-nodes # 选择是否只显示节点 --script-args bittorrent-discovery.timeout # DHT发现的超时时间,单位为s,默认为30s --script-args bittorrent-discovery.magnet # 包含magnet链接种子的字符串 --script-args newtargets # 让NSE脚本添加新的目标 --script-args max-newtargets # 设置最大允许的新目标的数量。如果设置为0或负数,则表示没有限制。默认值为0 --script-args slaxml.debug # 设置调试级别,默认为3 nmap --script deluge-rpc-brute <host> # 脚本,可以对指定的Deluge客户端服务进行暴力破解 nmap --script=broadcast-dropbox-listener --script-args=newtargets -Pn # 脚本可以监听局域网内dropbox客户端发送的广播包,并显示客户端的相关信息 nmap --script broadcast-ataoe-discover -e <interface> <target> # 脚本可以发送广播包,从而发现基于AoE的网络存储系统。该脚本可以获取系统的Mac地址和协议版本信息 nmap --script broadcast-networker-discover # 脚本,通过广播的形式向UDP 7938和111端口发送请求,可以探测NetWorker服务 nmap --script smtp-enum-users [--script-args smtp-enum-users.methods={EXPN,...},...] -p 25 [target] # 脚本可以用来枚举远程系统的所有用户 --script-args smtp.domain/smtp-enum-users.domain # 指定SMTP命令使用的域名 --script-args smtp-enum-users.methods # 指定脚本使用的方法和顺序。其中,可以指定的值有EXPN、VRFY和RCPT nmap --script smtp-commands.nse [--script-args smtp-commands.domain=<domain>] -pT:[prot] [target] # 脚本可以使用EHLO和HELP命令收集SMTP服务支持的其他命令 --script-args smtp.domain/smtp-commands.domain # 指定SMTP命令使用的域名 nmap -sU -p 161 --script=snmp-interfaces [target] # 脚本可以通过SNMP来枚举网络接口。另外,执行该脚本时也会枚举SNMP服务相关接口的地址 --script-args snmp-interfaces.host # 指定枚举的SNMP服务地址 --script-args snmtp-interfaces.port # 指定目标服务器的端口号,默认为161 nmap -sU -p 161 --script=snmp-netstat [target] # 脚本可以识别并自动添加新的目标进行扫描,通过查询SNMP nmap -sU -p 161 --script=snmp-processes [target] # 脚本可以通过SNMP枚举运行程序的进程 nmap -sU -p 161 --script=snmp-sysdescr [target] # 脚本可以提取一个目标主机的系统信息 nmap -sU -p 161 --script=snmp-win32-services [target] # 脚本通过SNMP枚举Windows服务 nmap -sU -p 161 --script=snmp-win32-users [target] # 脚本可以通过SNMP来枚举Windows用户 nmap -sU -p 161 --script=snmp-win32-shares [target] # 脚本可以通过SNMP枚举Windows的共享文件 nmap -sU -p 161 --script=snmp-win32-software [target] # 脚本可以通过SNMP枚举系统中安装的软件 nmap -sU --script=snmp-brute [target] [--script-args=snmp-brute.communitiesdb=<wordlist>] # 脚本破解SNMP服务的密码 --script-args snmp-brute.communitiesdb # 指定尝试暴力破解的密码字符串列表文件 nmap -sU --script nbstat -p [prot] [target] # 脚本可以获取目标主机上的NetBIOS名称和MAC地址 nmap --script=broadcast-netbios-master-browser # 脚本可以发送广播包,从而发现网络中的主机 nmap -sU -p 8611,8612 --script bjnp-discover <ip> # 脚本可以通过UDP的8611和8612这两个端口获取设备信息 nmap --script broadcast-bjnp-discover <target> # 脚本向广播地址发送BJNP发现请求包,可以发现网络内支持BJNP的打印机和扫描仪 --script-args broadcast-bjnp-discover.timeout # 指定网络接口嗅探的秒数,默认为30s。 nmap -p 631 <ip> --script cups-info # 脚本可以获取CUPS打印服务的相关信息 --script-args slaxml.debug # 设置调试级别,默认为3。 --script-args http.useragent # 用户代理头字段的值与请求一起发送。 --script-args http.max-cache-size # 缓存的最大内存大小,单位为字节。 --script-args http.max-pipeline # 为HTTP管道实现缓存系统。 --script-args http.pipeline # 在一个连接上发送的HTTP请求的数量。 --script-args http.host # 所有请求的主机标头中使用的值,除非另有设置。默认情况下,主机标头使用stdnse.get_hostname()输出信息。 --script-args smbpassword # 指定连接的密码。 --script-args smbhash # 登录时使用的哈希密码。 --script-args smbnoguest # 禁用Guest账户。 --script-args smbdomain # 指定要登录的域。 --script-args smbtype # 指定使用的SMB身份验证类型,支持的类型有v1(发送LMv1和NTLMv1)、LMv1(只发送LMv1)、NTLMv1(只发送NTLMv1,默认)、v2(发送LMv2和NTLMv2)、LMv2(只发送LMv2)。 --script-args smbusername # 指定用于登录的SMB用户名。 nmap -p 631 <ip> --script cups-queue-info # 脚本可以获取打印队列中各任务的详细信息 nmap -p 8333 --script bitcoin-getaddr ip # 脚本可以从比特币服务器获取保存的节点信息 --script-args newtargets # 为NSE脚本添加新的目标 --script-args max-newtargets # 设置允许的新目标的最大数量。如果设置为0或负数,则表示没有限制。默认值为0 nmap -p 8333 --script bitcoin-info <ip> # 脚本可以获取比特币服务器信息 nmap -p 8332 --script bitcoinrpc-info --script-args creds.global=<user>:<pass> <target> # 脚本利用JSON RPC接口可以直接查询服务器信息 creds.global # 脚本参数表示查询HTTP凭证(JSON RPC服务的认证信息)的用户名和密码 --script-args slaxml.debug # 设置调试级别,默认为3 --script-args creds.[service] # 指定服务类型及服务的认证信息,如creds.http=admin:password --script-args smbpassword # 指定连接的密码 --script-args smbhash # 登录时使用的哈希密码 --script-args smbnoguest # 禁用Guest账户 --script-args smbdomain # 指定要登录的域 --script-args smbtype # 指定使用的SMB身份验证类型,支持的类型有v1(发送LMv1和NTLMv1)、LMv1(只发送LMv1)、NTLMv1(只发送NTLMv1,默认)、v2(发送LMv2和NTLMv2)、LMv2(只发送LMv2) --script-args smbusername # 指定用于登录的SMB用户名 --script-args http.useragent # 用户代理头字段的值与请求一起发送 --script-args http.max-cache-size # 缓存的最大内存大小,单位为字节 --script-args http.max-cache-size # 缓存的最大内存大小,单位为字节 --script-args http.max-pipeline # 为HTTP管道实现缓存系统 --script-args http.pipeline # 在一个连接上发送的HTTP请求的数量 nmap -sV --script auth-owners <target> # 脚本可以通过授权服务获取需要身份认证的其他服务 nmap --script auth-spoof <target> # 脚本可以探测授权服务是否存在伪造响应操作 nmap -p 2401 --script cvs-brute <host> # 脚本可以暴力破解CVS服务的认证信息,并且可以指定对特定的仓库信息进行暴力破解 --script-args cvs-brute.repo # 如果没有提供repo,则脚本将检查注册表,以查找由cvs-brute-repository脚本发现的任何存储库。如果注册中心包含任何已发现的存储库,脚本将尝试强制执行第一个存储库的凭据 nmap -p 2401 --script cvs-brute-repository <host> # 脚本可以通过字典模式猜测仓库名字,并对用户名和密码进行暴力破解 --script-args cvs-brute-repository.repofile # 包含要猜测的存储库列表的文件 --script-args cvs-brute-repository.nodefault # 在设置脚本时,不尝试猜测硬编码存储库的列表 nmap -p 2628 --script dict-info [target] # 脚本可以通过DICT协议连接词典服务,然后运行SHOW SERVER命令获取词典服务的相关信息 nmap -p 111 --script rpcinfo [target] # 脚本获取RPC服务的详细信息 nmap --script amqp-info <target> # 脚本可以获取AMQP的服务信息 --script-args amqp.version # 用于指定要使用的客户端版本(当前,0-8,0-9或0-9-1) nmap --script giop-info <target> # 脚本通过访问上述端口,可以获取对象列表信息 nmap --script=citrix-enum-apps-xml <host> # 通过向目标主机上的XML Service组件发送请求,可以提取发布的应用、权限及配置信息 nmap --script=citrix-enum-apps-xml -p 80 212.150.25.215 # 脚本提取XML Service发布的应用、权限及配置信息 nmap -sU --script=citrix-enum-servers -p 1604 <host> # 脚本通过向UDP 1604端口发送请求,可以获取Citrix服务器信息 nmap --script=citrix-enum-servers-xml -p 80 <host> # 脚本,通过向XML Server发送请求,可以获取Citrix服务器的名称 nmap --script=citrix-enum-servers-xml -p 80 206.187.9.69 # 脚本获取Citrix服务器的名称 nmap --script=citrix-brute-xml --script-args=userdb=<userdb>,passdb=<passdb>,ntdomain=<domain> -p 80,443,8080 <host> # 脚本对XML服务进行暴力破解,猜测正确的用户名和密码 --script-args unpwdb.passlimit # 指定从unpwdb数据库中最多读取多少个密码,默认没有限制 --script-args unpwdb.userlimit # 指定从unpwdb数据库中最多读取多少个用户名,默认没有限制 --script-args unpwdb.timelimit # 任何iterator在停止之前运行的最长时间,单位为s --script-args slaxml.debug # 设置调试级别,默认为3 --script-args http.useragent # 用户代理头字段的值与请求一起发送 --script-args http.max-cache-size # 缓存的最大内存大小,单位为字节 --script-args http.max-pipeline # 为HTTP管道实现缓存系统 --script-args http.pipeline # 在一个连接上发送的HTTP请求的数量 --script-args smbpassword # 指定连接的密码 --script-args smbhash # 登录时使用的哈希密码 --script-args smbnoguest # 禁用Guest账户 --script-args smbdomain # 指定要登录的域 --script-args smbtype # 指定使用的SMB身份验证类型,支持的类型有v1(发送LMv1和NTLMv1)、LMv1(只发送LMv1)、NTLMv1(只发送NTLMv1,默认)、v2(发送LMv2和NTLMv2)、LMv2(只发送LMv2)。 --script-args smbusername # 指定用于登录的SMB用户名。 nmap -sU --script=citrix-enum-apps -p 1604 <host> # 脚本,通过向UDP 1604端口发送请求,可以读取ICA浏览服务提供的已发布的应用列表 nmap --script domcon-brute <host> # 脚本,通过对字典暴力破解的方式来猜测用户名和密码 --script-args brute.mode # 指定运行的引擎模式,支持的模式有3种,分别是user模式、pass模式和creds模式。如果没有指定模式且脚本没有添加任何自定义的迭代器,则启用传递模式。 --script-args brute.unique # 确保每个密码只被猜测一次。 --script-args brute.retries # 设置需要重复猜测的次数,默认为2次。 --script-args brute.useraspass # 使用用户名作为密码,猜测每一个用户。 --script-args brute.start # 设置引擎将启动的线程数,默认为5。 --script-args brute.threads # 初始工作线程的数量,活动线程的数量将自动调整。 --script-args brute.credfile # 用户名密码对文件,用户名和密码之间使用“/”间隔。 --script-args brute.emptypass # 使用空密码猜测每一个用户,默认不启用。 --script-args brute.guesses # 设置对每个用户的猜测次数。 --script-args brute.firstonly # 当成功猜测出第一个密码后停止猜测。默认不启用。 --script-args brute.delay # 设置每次猜测的时间间隔。 --script-args brute.passonly # 仅为身份验证提供密码的服务迭代密码,默认不启用。 --script-args unpwdb.passlimit # 指定从unpwdb数据库中最多读取多少个密码,默认没有限制。 --script-args userdb # 备用用户名数据库的文件名。默认为/usr/share/nmap/nselib/data/usernames.lst --script-args unpwdb.userlimit # 指定从unpwdb数据库中最多读取多少个用户名,默认没有限制。 --script-args unpwdb.timelimit # 任何迭代器在停止之前运行的最长时间,单位为s。 --script-args passdb # 备用密码数据库的文件名。默认为/usr/share/nmap/nselib/data/passwords.lst nmap -p 2050 <host> --script domcon-cmd --script-args domcon-cmd.cmd="cmd",\domcon-cmd.user="user ",domcon-cmd.pass="password" # 脚本可以以客户端形式向Lotus Domino服务器发送命令请求并获得执行结果 --script-args domcon-cmd.cmd # 在远程服务器上运行的命令 --script-args domcon-cmd.user # 对服务器进行身份验证的用户名 --script-args domcon-cmd.pass # 对服务器进行身份验证的密码 nmap --script domino-enum-users <host> # 脚本,利用该漏洞访问服务器的TCP 1352端口,探测有效的用户并下载其ID文件 --script-args domino-enum-users.path # 获取ID文件的保存位置 --script-args domino-enum-users.username # 检索ID的用户名。如果没有指定此参数,将使用unpwdb库存储的用户名 nmap --script=cics-enum <targets> # 脚本向TCP 23端口发送请求,可以暴力枚举有效的事务ID --script-args cics-enum.commands # 在分号分隔的列表中访问CICS命令,默认为CICS --script-args cics-enum.path # 用于存储有效事务ID快照的文件夹。默认为None,表示不存储任何信息 --script-args idlist # 事务ID列表的路径。默认为IBM的CICS事务列表 --script-args cics-enum.pass # 用于验证枚举的密码 --script-args cics-enum.user # 用于验证枚举的用户名 --script-args unpwdb.passlimit # 指定从unpwdb数据库中最多读取多少个密码,默认没有限制 --script-args userdb # 备用用户名数据库的文件名。默认为/usr/share/nmap/nselib/data/usernames.lst --script-args unpwdb.userlimit # 指定从unpwdb数据库中最多读取多少个用户名,默认没有限制 --script-args unpwdb.timelimit # 任何迭代器在停止之前运行的最长时间,单位为s --script-args passdb # 备用密码数据库的文件名。默认为/usr/share/nmap/nselib/data/passwords.lst --script-args brute.mode # 指定运行引擎的模式,具体说明请参考17.2.1节,不再赘述 --script-args brute.unique # 确保每个密码只被猜测一次 --script-args brute.retries # 设置需要重复猜测的次数,默认为2次 --script-args brute.useraspass # 使用用户名作为密码猜测每一个用户 --script-args brute.start # 设置引擎将启动的线程数,默认为5 --script-args brute.threads # 初始工作线程的数量,活动线程的数量将自动调整 --script-args brute.credfile # 用户名密码对文件,用户名和密码之间使用“/”间隔 --script-args brute.emptypass # 使用空密码猜测每一个用户,默认不启用 --script-args brute.guesses # 设置对每个用户的猜测次数 --script-args brute.firstonly # 当成功猜测出第一个密码后停止猜测。默认不启用 --script-args brute.delay # 设置每次猜测的时间间隔 --script-args brute.passonly # 仅为身份验证提供密码的服务迭代密码,默认不启用 nmap --script=cics-info <targets> # 脚本,可以利用CEMT搜索当前CICS事务服务器的相关信息 --script-args cics-info.trans # 指定名称的事务ID --script-args cics-info.pass # 指定访问CEMT需要身份验证的密码 --script-args cics-info.cemt # 指定要使用的CICS事务ID。默认是CEMT --script-args cics-info.user # 指定访问CEMT需要身份验证的用户名 --script-args cics-info.commands # 用于访问CICS的命令。默认是cics nmap --script=cics-user-brute <targets> # 脚本,通过CESL登录界面可以暴力破解CICS的用户ID --script-args cics-user-brute.commands # 在以分号分隔的列表中访问CICS命令,默认为CICS nmap --script=cics-user-enum <targets> # 脚本通过CESL/CESN登录界面可以对用户ID进行暴力破解,并获取有效的用户ID信息 --script-args cics-user-enum.commands # 在以分号分隔的列表中访问CICS命令,默认为CICS --script-args idlist # 事务ID列表的路径。默认为IBM的CICS事务列表 nmap -p [prot] --script vmauthd-brute [target] # 脚本可以破解VMware Authentication Daemon的密码 nmap -p [prot] --script irc-info [target] # 脚本,可以通过STATS和LUSERS等命令获取IRC服务的详细信息 nmap --script ganglia-info <target> # 脚本,通过探测Ganglia服务的监听端口,可以获取系统信息 --script-args ganglia-info.bytes # 设置要检索的字节数。默认值是1 000 000。集群中的每个主机大约返回5~10KB的数据 --script-args ganglia-info.timeout # 设置超时时间,单位为s。默认值是30s --script-args slaxml.debug:slaxml.debug # 设置调试级别,默认为3 nmap --script freelancer-info <target> # 脚本向UDP 2302端口发送UDP请求,可以获取服务器信息 nmap --script docker-version <target> # 脚本可以探测Docker服务信息 nmap --script epmd-info <target> # 脚本,通过向该端口发送探测包,可以获取Erlang工作节点的任务名和使用的端口号 nmap --script clamav-exec --script-args cmd='scan',scandb='files.txt' <target> # 脚本利用该漏洞,可以向目标主机的TCP 3310端口发送要执行的命令 nmap --script distcc-cve2004-2687 <target> # 脚本利用CVE-2004-2687漏洞,可以探测目标主机中是否存在这个漏洞 nmap --script=dns-zeustracker <ip> # 脚本,通过查询Zeus Tracker服务,可以验证指定的IP是否被Zeus利用 nmap --script cccam-version <target> # 通过向TCP 12000发送请求,根据是否接收random-looking码来判断是否为Cccam服务 nmap --script afp-serverinfo <host> # 脚本获取对应的服务信息 nmap --script afp-brute <host> # 脚本实施AFP账号和密码破解 nmap --script afp-ls --script --script-args=<afp.username=value1, afp.password=value2> <host> # 脚本获取AFP卷的共享信息了。该脚本会列出共享的AFP卷及目录结构 nmap --script afp-path-vuln --script-args=<afp. afp.username=value1, afp.password=value2> <host> # 脚本利用该漏洞进行目录遍历扫描,该脚本需要结合apf-brute脚本使用 nmap--script afp-showmount --script-args=<afp.username=value1, afp.password=value2> <host> # 脚本获取共享的文件夹信息,以及各级用户权限信息。其中,用户类型包括所有者、组、Everyone和User;权限包括搜索(Search)、读(Read)、写(Write) nmap -sV --script=daap-get-library <target> # 脚本能够扫描DAAP服务器,获取音乐列表信息,如艺术家、唱片和歌名信息 --script-args daap_item_limit # 改变默认100首歌曲的输出限制。如果设置为负值,则不执行任何限制 --script-args slaxml.debug # 设置调试级别,默认为3级 nmap --script dpap-brute <host> # 脚本可以针对iPhoto服务实施认证信息暴力破解 nmap --script eppc-enum-processes <ip> # 脚本利用该协议向开启远程事件服务的计算机发送请求 nmap --script broadcast-pim-discovery -e eth1 <target> # 脚本,通过向PIM多播地址224.0.0.13发送PIM Hello消息,并监听路由器的Hello消息,可以发现支持PIM功能的路由器 --script-args broadcast-pim-discovery.timeout # 等待响应时间,单位为s,默认为5s nmap -e eth0 --script broadcast-sonicwall-discover <target> # 脚本,以广播的形式向UDP 26214端口发送请求,可以根据响应包获取防火墙的Mac地址、固件版本和ROM版本 --script-args broadcast-sonicwall-discover.timeout # 设置等待响应的时间,单位是s,默认为1s nmap --script gkrellm-info <target> # 脚本,可以向该端口发起请求,从而获取系统信息 nmap --script gpsd-info <ip> # 脚本访问指定IP的2947端口,可以获取GPS信息 --script-args gpsd-info.timeout # 定义等待数据的时间,默认为10s nmap --script acarsd-info --script-args "acarsd-info.timeout=10,acarsd-info.bytes=512" -p <port> <host> # 可以获取服务器端信息 --script-args acarsd-info.timeout # 脚本参数用于指定超时时间,单位为s,默认值为10s --script-args acarsd-info.bytes # 脚本参数用于指定获取的字节数,默认为512字节 nmap -p U:5683 -sU --script coap-resources <target> # 脚本向支持CoAP终端的UDP 5683端口发送CoAP的GET请求包,默认请求/.well-known/core资源,可以获取终端提供的资源列表信息 --script-args coap-resources.uri # GET请求的URL,默认为/.well-known/core nmap --script fox-info.nse <host> # 脚本,通过远程访问TCP 1911端口,可以获取Tridium Niagara服务的相关信息 nmap --script enip-info <host> # 脚本向目标主机的UDP 44818端口发送请求标志(Request Identity)包,通过解析响应包可以获取设备信息 nmap --script broadcast-tellstick-discover <host> # 脚本,通过广播的形式向UDP 30303端口发送数据包,可以发现局域网中的TellStickNet设备 nmap -p 80 --script http-tplink-dir-traversal --script-args rfile=<path> [target] # 脚本可以探测TP-Link无线路由器上是否存在漏洞 --script-args http-tplink-dir-traversal.rfile # 指定远程下载的文件,默认为/etc/passwd --script-args http-tplink-dir-traversal.outfile # 指定远程文件保存的位置
-
Ncrack是一个高速的网络认证破解工具。它可以帮助企业测试所有的网络主机和网络设备的密码强度,从而提高企业网络的安全性。
ncrack 192.168.0-255.1-254:22 -d # 指定破解192.168.0.0/24和192.168.1.0/24网段中所有主机的SSH服务 -iX nmap.xml # 指定XML文件后,将自动解析IP地址对应的服务和端口号。Nmap(-oX)生成的XML文件 -iN nmap.txt # 引入使用Nmap(-oN)生成的普通文件 -iL nmap.txt # 手动指定一个主机列表文件 ncrack 192.168.1.0/24 --exclude 192.168.1.10 -p 22 # 指定破解192.168.1.0网络中所有主机的SSH服务,除了192.168.1.10 --excludefile exclude.txt # 通过文件指定排除的主机地址 ncrack 192.168.1.1 -p ftp:3210 # 非标准写法 ncrack 192.168.1.1 -p 21 # 非标准写法 ftp://192.168.1.1:3210 # 标准写法 -m<service>:<options> # 指定服务的类型。该选项中的options选项是一些与性能相关的参数 -g<options> # 该选项适用于所有服务的全局选项。这里的选项和-m中指定的选项相同 ssl # 启用或禁止SSL连接。默认情况下,所有的服务都禁止SSL连接,除了严格依赖的服务 path <name> # 指定有效的URL路径。该选项主要用于HTTP类模块。 db <name> # 指定数据库。该选项主要用于类MongoDB模块。 domain <name> # 指定域名。该选项主要用于类WinRMB模块。 -m <service-name>:<opt1>=<optval1>,<opt2>=<optval2>.. # 用于单个模块选项 -g <opt1>=<optval1>,<opt2>=<optval2>,... # 用于全局选项参数 cl(min connection limit) # 指定并行连接时的最小连接数。默认的并行连接数为7 CL(max connection limit) # 指定并行连接时的最大连接数。默认的并行连接数为7 at(authentication tries) # 指定授权尝试之前的连接 cd(connection delay) # 指定每个连接之间的延迟 cr(connection retries) # 指定尝试连接服务的次数 ncrack ssh://192.168.59.147,CL=1,at=1 -U login.txt -P password.txt -d --stealthy-linear # 使用单连接模式尝试认证信息 to(time-out) # 响应超时的时间 -T<0-5> # 设置时间模板。该选项支持6个模板,分别是paranoid(0)、sneaky(1)、polite(2)、normal(3)、aggressive(4)和insane(5)。这里通过编号来指定使用的模板,默认模板是Normal(3) --connection-limit<number> # 同时连接的总数的最大值。但是该功能尚未实现 ncrack -U<filename> # 用户名文件 -P<filename> # 密码文件 --passwords-first # 对每个用户名尝试迭代匹配每个密码,默认是一一对应的 --pairwise # 迭代匹配的用户名和密码对 ncrack -oN<file> # 将结果以标准格式输出到一个文件中。 -oX<file> # 将结果输出到XML格式的文件中。 -oA<basename> # 将扫描结果同时以普通或XML格式输出到文件中。该操作执行完成后,结果将分别存储在<basename>.ncrack和<basename>.xml文件中 -v # 指定冗长级别。 -d[level] # 设置或增加调试级别。 --nsock-trace<level> # 设置追踪级别,有效的范围是0~10。 --log-errors # 将记录错误/警告输出到普通格式的文件中。 --append-output # 将结果追加到输出文件中。 ncrack v/V # 增加/减少冗余级别。 d/D # 增加/减少调试级别。 p/P # 显示找到的认证信息。 ? # 显示帮助信息。 B.1.6 # 杂项选项 ncrack --resume<file> # 继续之前保存的会话。当用户按Ctrl+C组合键强制结束Ncrack进程后,该会话默认将保存在当前用户的Home目录下的.ncrack/子目录中。其中,文件名的格式为restore.YY-MM-DD_hh-mm。 --save<file> # 使用特定的文件名保存恢复文件 -f # 一旦找到认证凭证后停止攻击服务 -6 # 支持IPv6地址 -sL or --list # 输出扫描主机列表和服务信息 --datadir<dirname> # 指定自定义的Ncrack数据文件位置 --proxy<type://proxy:port> # 让连接通过Socks 4、Socks 4a和HTTP进行连接 -V # 显示版本信息 -h # 显示帮助信息 ncrack ftp://192.168.59.142 -U logins.txt -P passwords.txt # 暴力破解FTP服务的用户认证信息 ncrack 192.168.59.142:22 -U logins.txt -P passwords.txt # 暴力破解SSH服务的认证信息 ncrack 192.168.59.142:22 --user bob,root --pass 123456, daxueba # 用户也可以直接在命令行中指定尝试破解的用户名和密码 ncrack 192.168.59.142:23,at=0,CL=1 --user bob --pass daxueba# 暴力破解Telnet服务的用户认证信息 ncrack http://192.168.1.1 -T5 -U login.txt -P password.txt # 暴力破解使用HTTP的Web服务的登录用户认证信息 ncrack pop3://192.168.182.139 -U logins.txt -P passwords.txt -d # 暴力破解POP3服务用户的认证信息 ncrack smb://192.168.182.132 -U login.txt -P password.txt -d# 暴力破解SMB服务的登录用户认证信息 ncrack -d7 CL=10 --user Administrator -P password.txt 192.168.59.136:3389 # 暴力破解RDP服务的用户认证信息 ncrack -v --user root -P password.txt 192.168.182.133:5900 # 暴力破解VNC服务的用户认证信息 ncrack redis://192.168.182.139 -P password.txt -d # 暴力破解Redis服务的用户认证信息 ncrack 192.168.182.133:5432 -U login.txt -P password.txt # 暴力破解PostgreSQL数据库的用户认证信息
-
Use Other
# Netmask工具,可以用来实现IP地址格式转换。 netmask -c 192.168.0.0:192.168.2.255 # IP范围转换为CIDR格式 netmask -s 192.168.0.0:192.168.2.255 # IP范围转换为标准的子网掩码格式 netmask -i 192.168.0.0:192.168.2.255 # IP范围转换到Cisco格式 netmask -r 192.168.0.0/23 # CIDR格式转换到IP范围格式 traceroute www.baidu.com # 获取路由条目 netdiscover -r 192.168.1.0/24 # 主动的ARP侦查 netdiscover -p # 被动模式嗅探存活的主机 whois baidu.com # 获取域名相关信息 dmitry -w [domain] # 获取域名相关信息 dmitry -s <domain> -o <file> # 子域名查找 dmitry -p [host] # 端口扫描 dnsenum -w <domain> # 获取域名相关信息 nslookup domain # 域名转换 amapcrap -n <connects> -m <0ab> [host] [port] -v # 服务识别:设置最大连接数,默认为无限制,设置发送的伪随机数。其中,0表示空字节;a表示字母+空格;b二进制。 amap -bqv [host] [port] # 服务识别 smbclient -L <server IP> -U <username> # 搜集服务信息 snmp-check [target] # 获取主机信息 # arp-scan是一款ARP扫描工具。该工具可以进行单一目标扫描,也可以进行批量扫描(可以通过CIDR方式指定)。该工具允许用户定制ARP包,构建非标准数据包。同时,该工具会自动解析MAC地址,给出MAC地址对应的硬件厂商,以帮助用户确认目标。 arp-scan 192.168.1.1 # Arping是一个ARP级别的Ping工具,主要用来向局域网内的其他主机发送ARP请求的指令。使用该工具可以测试局域网内的某个IP地址是否已被使用。 arping -c 10 192.168.33.147 # 10是包的数量 # dhcpdump是一个命令行格式的DHCP流量嗅探工具,可以捕获DHCP的请求/回复流量,并以用户友好的方式显示解码的DHCP协议消息。 apt-get install dhcpdump dhcpdump -i eth0 # Wireshark是一款非常流行的网络封包分析软件,功能十分强大。 # Tcpdump是一个命令行的嗅探工具,可以基于过滤表达式抓取网络中的报文,分析报文,并且在包层面输出报文内容以便于包层面的分析。 tcpdump -i eth0 'dst 192.168.33.255' # 通过使用Airodump-ng工具实施扫描,可以获取到AP的相关信息,如SSID名称、MAC地址、工作信道及加密方式等。 airmon-ng start wlan0 # 监听模式 airodump-ng wlan0mon # 扫描客户端 # Kismet是一个基于Linux的无线网络扫描程序。这是一个非常方便的工具,通过监测周围的无线信号,可以扫描到附近所有可用的AP及所使用的信道等。 # Wash是一款WPS(WiFi Protected Setup,Wi-Fi保护设置)扫描工具。该工具主要用来扫描、启用WPS功能的无线网络。 wash -a -i wlan0mon # WHOIS(读作Who is,非缩写)是用来查询域名的IP及所有者等信息的传输协议。 # DMitry工具是用来查询IP或域名WHOIS信息的。 dmitry -w baidu.com # Shodan是目前最强大的搜索引擎,其使用方法在前面已经介绍过。 # ZoomEye是一款针对网络空间的搜索引擎。该搜索引擎的后端数据计划包括两部分,分别是网站组件指纹和主机设备指纹。 nslookup www.baidu.com # fierce是一款IP、域名互查的DNS工具,可进行域传送漏洞检测、字典枚举子域名、反查IP段,以及反查指定域名上下一段IP,属于一款半轻量级的多线程信息收集用具。 fierce -dns baidu.com fierce -dns baidu.com -wordlist hosts.txt # 检查传送漏洞 # Netcat是一个多功能网络化工具,使用该工具可以实现各种信息收集和扫描。 nc -v 192.168.33.152 21 # Dmitry是一个一体化的信息收集工具,使用该工具对目标主机实施扫描,也可以获取到一些标志信息。 dmitry -pb 192.168.33.152 # Amap是一个应用程序映射工具,可以用来通过远程端口来读取正在运行的网络服务标志。 amap -B 192.168.33.152 22 # Amap服务识别:Amap工具被设计的目的就是用来识别网络服务的。 amap 192.168.33.152 22 # xProbe2是一款远程主机操作系统探查工具,该工具通过ICMP协议来获得指纹。xProbe2通过模糊矩阵统计分析主动探测数据报文对应的ICMP数据报特征,进而探测得到远端操作系统的类型。 xprobe2 www.163.com # p0f是一款用于识别远程操作系统的工具,该工具与前面介绍的其他工具不同,它是一个完全被动地识别操作系统指纹信息的工具,不会直接作用于目标系统。当启动该工具后,即可监听网络中的所有数据包。通过分析监听到的数据包,即可找出与系统相关的信息。 # Onesixtyoue是一个专门针对于SNMP协议的扫描器。如果指定其密码,即可获取到目标主机的相关信息;如果不知道密码,也可以用来实施密码破解。 onesixtyone 192.168.1.5 -c /root/password.lst # Hydra是著名的黑客组织THC的一款开源暴力破解工具。目前,该工具支持破解的服务有FTP、MySQL、SNMP、SSH等。 hydra -P /root/password.lst 192.168.1.5 snmp # Onesixtyoue是一个简单的SNMP分析工具,使用该工具,仅请求指定地址的系统描述值。在使用Onesixtyoue工具分析SNMP时,需要指定目标IP地址和社区字符串。该工具默认的社区字符串是public。 onesixtyone 192.168.6.109 public # SNMPwalk是一个比较复杂的SNMP扫描工具,它可以收集使用SNMP社区字符串设备的大量信息。 snmpwalk 192.168.1.5 -c public -v 2c # snmp-check是一款枚举SNMP信息工具,该工具会显示具体信息名称,而不像SNMPwalk工具一样只显示iso序列号。snmp-check工具支持的枚举包括设备、域、硬件,以及存储信息、主机名和监听端口等。 snmp-check 192.168.1.5 -p # 指定SNMP服务的端口,默认是161。 -c # 指定SNMP服务的密码串,默认是public。 -v # 指定SNMP版本,可指定的版本有1和2c,其中,默认版本是1。 -t # 指定超时值,默认是5秒。 # Hydra是一款非常强大的开源密码攻击工具,支持多种协议的破解,如FTP、HTTP、SMB等。 hydra -l Administrator -P pass.txt 192.168.19.131 smb # 提供了一款名为smbclient的客户端工具,可以用来访问SMB服务中的共享文件。当成功访问到SMB共享文件后,即可看到共享信息。 smbclient -L 192.168.19.130 -U root