👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻
简介 🤩
Nmap 使用手册
Nmap(Network Mapper)是一个用于网络探索和安全审计的开源工具。它被设计为快速扫描大型网络,尽管它对单个主机工作得很好。
参数说明 🤔
-
• -sL 列表扫描,扫描ip地址并且进行返现dns查找,主机发现(除非指定了
-n
) -
• -n 不进行dns解析
-
• -R 所有目标dns解析
-
• -sS SYN扫描,SYN扫描是默认的扫描类型
-
• -p- 扫描全部端口,默认情况下只扫描1,000个常见端口
-
• -PA ACK 扫描主机发现
-
• -PS80,443 SYN 扫描主机发现
-
• -PU UDP扫描主机发现
-
•
**-PE -PP -PS80,443 -PA3389 -PU40125
ping扫描,主机发现技术** -
•
**-Pn
跳过识别主机是否存活,扫描所有,很慢** -
• -A 它相当于
-sV
-sC
-O
--traceroute
(版本检测、带有默认脚本集的Nmap脚本引擎、远程操作系统检测和traceroute) -
• -T 1 2 3 4 5 设置时间,越高越快,网络稳定的情况下可以尝试最大值
-
• -oA filename-%D 扫描结果输出所有格式,文件名-时间格式,扩展名分别可为.nmap、.xml和.gnmap
-
• -O os操作系统探测
-
• -sn 关闭端口扫描
-
• -sV 版本服务检测
-
• -sC 使用默认脚本探测
-
• 参数排序
-
• -iL filename 指定主机列表文件
-
• -iR :选择随机目标
-
•
**--exclude
127.0.0.1 排除ip** -
•
**--excludefile
filename 排除ip列表文件** -
• 主机发现:
-
• -sn:Ping 扫描 - 禁用端口扫描
-
• -Pn:将所有主机视为在线--跳过主机发现
-
• -PS/PA/PU/PY[端口列表]:给定端口的 TCP SYN/ACK、UDP 或 SCTP 发现
-
• -PE/PP/PM:ICMP 回显、时间戳和网络掩码请求发现探测
-
• -PO[协议列表]:IP协议Ping
-
• -n/-R:从不进行 DNS 解析/始终解析 [默认值:有时]
-
• --dns-servers <serv1[,serv2],...>: 指定自定义 DNS 服务器
-
• --system-dns:使用操作系统的 DNS 解析器
-
• --traceroute:跟踪每个主机的跃点路径
-
• 扫描技术:
-
• -sS/sT/sA/sW/sM:TCP SYN/Connect()/ACK/Window/Maimon 扫描
-
• -sU:UDP扫描
-
• -sN/sF/sX:TCP Null、FIN 和 Xmas 扫描
-
• --scanflags : 自定义 TCP 扫描标志 ,
URGACKPSHRSTSYNFIN
指定所有协议 -
• -sI <僵尸主机[:probeport]>:空闲扫描
-
• -sY/sZ:SCTP INIT/COOKIE-ECHO 扫描
-
• -sO:IP协议扫描
-
• -b <FTP中继主机>:FTP反弹扫描
-
• 端口规格和扫描顺序:
-
• -p <端口范围>:仅扫描指定端口 例如:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
-
• --exclude-ports <端口范围>:从扫描中排除指定端口
-
• -F:快速模式 - 扫描比默认扫描更少的端口
-
• -r:按顺序扫描端口 - 不要随机化
-
• --top-ports : 扫描 个最常见端口
-
• --port-ratio :扫描比更常见的端口
-
•
**--allports
(不排除任何端口进行版本检测)** -
• 服务/版本检测:
-
• -sV:探测开放端口以确定服务/版本信息
-
• --version-intensity : 设置从 0 (light) 到 9 (尝试所有探针)
-
• --version-light:限制最有可能的探测(强度 2)
-
• --version-all:尝试每个探针(强度 9)
-
• --version-trace:显示详细的版本扫描活动(用于调试)
-
• 脚本扫描:
-
• -sC:相当于--script=default
-
• --script=<Lua 脚本>: <Lua 脚本> 是逗号分隔的列表、目录、脚本文件或脚本类别
-
• --script-args=<n1=v1,[n2=v2,...]>: 为脚本提供参数
-
• --script-args-file=文件名:在文件中提供 NSE 脚本参数
-
• --script-trace:显示发送和接收的所有数据
-
• --script-updatedb:更新脚本数据库。
-
• --script-help=<Lua 脚本>:显示有关脚本的帮助。 是一个以逗号分隔的脚本文件列表或脚本类别。
-
• 操作系统检测:
-
• -O:启用操作系统检测
-
• --osscan-limit:将操作系统检测限制为有希望的目标
-
• --osscan-guess:更积极地猜测操作系统
-
• 时间设置
需要
-
• -T<0-5>:设置计时模板(越高越快)
-
• --min-hostgroup/max-hostgroup :并行主机扫描组大小,max最大256
-
• --min-parallelism/max-parallelism :最大256 探测并行化
-
• --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <时间>:指定探头往返时间,延时。Nmap等待端口扫描探测响应的最短、最长和初始时间。
-
• --max-retries :端口扫描探测重传次数的上限。
-
• --host-timeout <时间>:经过这么长时间后放弃目标,默认5分钟
-
• --scan-delay/--max-scan-delay <时间>:调整探头之间的延迟,默认10s
-
• --min-rate : 每秒发送数据包的速度不低于
-
• --max-rate : 每秒发送数据包的速度不超过
-
• 防火墙/IDS 规避和欺骗:
-
•
**-f
(片段数据包);--mtu
(使用指定的MTU)这个想法是将TCP报头分割成几个数据包,使数据包过滤器,入侵检测系统和其他入侵检测系统更难检测到您正在做什么。小心点!** -
• -D <decoy1,decoy2[,ME],...>:用诱饵隐藏扫描
-
• -S :欺骗源地址
-
• -e :使用指定的接口
-
• -g/--source-port :使用给定的端口号
-
• --proxies <url1,[url2],...>: 通过 HTTP/SOCKS4 代理中继连接
-
• --data <十六进制字符串>:将自定义负载附加到发送的数据包中
-
• --data-string :将自定义 ASCII 字符串附加到发送的数据包中
-
• --data-length :将随机数据附加到发送的数据包中
-
• --ip-options : 发送带有指定ip选项的数据包
-
• --ttl : 设置IP生存时间字段
-
• --spoof-mac <mac 地址/前缀/供应商名称>: 欺骗您的 MAC 地址
-
• --badsum:发送带有伪造 TCP/UDP/SCTP 校验和的数据包
-
• 输出扫描结果:
-
• -oN/-oX/-oS/-oG <文件>:以正常、XML、s|<rIpt kIddi3 输出扫描,和 Grepable 格式分别为给定的文件名。
-
• -oA :同时以三种主要格式输出
-
• -v:增加详细级别(使用-vv或更多以获得更好的效果)
-
• -d:提高调试级别(使用-dd或更多以获得更好的效果)
-
• --reason:显示端口处于特定状态的原因
-
• --open:仅显示开放(或可能开放)的端口
-
• --packet-trace:显示发送和接收的所有数据包
-
• --iflist:打印主机接口和路由(用于调试)
-
• --append-output:附加到而不是破坏指定的输出文件
-
• --resume <文件名>:恢复中止的扫描
-
• --noninteractive:通过键盘禁用运行时交互
-
• --stylesheet <path/URL>:用于将 XML 输出转换为 HTML 的 XSL 样式表
-
• --webxml:来自 Nmap.Org 的参考样式表,以获得更可移植的 XML
-
• --no-stylesheet:防止 XSL 样式表与 XML 输出关联
-
• 其他:
-
• -6:启用 IPv6 扫描
-
• -A:启用操作系统检测、版本检测、脚本扫描和traceroute
-
• --datadir : 指定自定义 Nmap 数据文件位置
-
• --send-eth/--send-ip:使用原始以太网帧或 IP 数据包发送
-
• --privileged:假设用户具有完全特权
-
• --unprivileged:假设用户缺乏原始套接字权限
-
• --resolve-all选项:当主机名被指定为目标时,它通过域名系统(DNS)解析以确定要扫描的IP地址。如果名称解析为多个IP地址,则只扫描第一个。要让Nmap扫描所有解析的地址,而不仅仅是第一个,请使用 --resolve-all 选项。
-
•
**--unique
(每个地址只扫描一次)**
使用技巧 😀
主机发现
-
• nmap -sn -T4 www.lwn.net/24(http://www.lwn.net/24) 快速扫描指定域名C段
-
• nmap -PE 最佳主机发现参数
-
• -PE -PS80 -PS443 -PP -PU40125 -PS3389 -PA21 -PU161 --source-port 53 最佳主机发现组合
-
• -PE -PA80 -PS443 -PP -PU40125 --source-port 53 最佳主机发现组合精简
-
• 最佳TCP端口选择,80,443,113,21,23,25,53,22,110,3389,8080,1723
-
• 最佳UDP端口选择,53,161
-
• -PE -PP -PS21,22,23,25,80,113,443,31339 -PA80,113,443,10042 --source-port 53 组合推荐
端口扫描
-
• 最常见TCP端口,80,23,443,21,22,25,3389,110,445,139,143,53,135,3306,8080,1723,111,993,5900
-
• 最常见UDP端口,631,161,137,123,138,1434,445,135,67,53,139,500,68,520,1900,4500,514,49152,162,69
优化参数
-
•
**F
:快速扫描。只对常见端口进行扫描,而不是对所有的65535个端口进行扫描。** -
•
**T
参数:用于设置扫描的速度/侦察级别。T5
是最快的扫描速度,而T0
则是最慢的扫描速度。** -
•
**-min-rate
和-max-retries
参数:可以控制nmap发送探测包的速率和重试次数,进而影响扫描的速度。** -
•
**-host-timeout
参数:可以设置主机超时时间,当一个主机长时间没有响应时,nmap会跳过该主机,从而加快扫描速度。**
Nmap 脚本
-
• **https://nmap.org/nsedoc/lib/(https://nmap.org/nsedoc/lib/) 脚本库**
-
• **https://nmap.org/nsedoc/scripts/(https://nmap.org/nsedoc/scripts/) nmap 官方 600+脚本介绍**
-
• **https://nmap.org/nsedoc/scripts/dns-zone-transfer.html(https://nmap.org/nsedoc/scripts/dns-zone-transfer.html) dns区域传输**
-
•
**-sC
它相当于--script=default
** -
• nmap --script scriptname
-
•
**--script-updatedb
更新脚本数据库** -
•
**--script-args *<n1>*=*<v1>*,*<n2>*={*<n3>*=*<v3>*},*<n4>*={*<v4>*,*<v5>*}
设置脚本参数**
**nmap --script dns-zone-transfer.nse
--script-args dns-zone-transfer.domain=<domain>**
-
• **https://nmap.org/nsedoc/scripts/firewall-bypass.html(https://nmap.org/nsedoc/scripts/firewall-bypass.html) 防火墙绕过**
**nmap --script firewall-bypass <target>
nmap --script firewall-bypass --script-args firewall-bypass.helper="ftp", firewall-bypass.targetport=22 <target>**
-
•
**nmap --script ftp-brute -p 21 <host>
ftp爆破** -
•
**nmap --script hostmap-bfk --script-args hostmap-bfk.prefix=hostmap- <targets>
通过查询http://www.bfk.de/bfk_dnslogger.html上的联机数据库,发现解析为目标IP地址的主机名。** -
• crt证书透明子域名查询
**nmap --script hostmap-crtsh --script-args 'hostmap-crtsh.prefix=hostmap-' <targets>
nmap -sn --script hostmap-crtsh <target>
通过查询Google的证书透明度日志数据库(https://crt.sh)查找Web服务器的子域。**
**实用脚本集合
通过查询http://ip.robtex.com/上的在线Robtex服务,发现解析为目标IP地址的主机名。
nmap --script hostmap-robtex -sn -Pn scanme.nmap.org
搜索网站并尝试识别已发现文件的备份副本。它通过请求一些不同的文件名组合(例如,index.bak、index.html~、index.html的副本)。
nmap --script=http-backup-finder <target>
对http basic、digest和ntlm身份验证执行强力密码审核。
nmap --script http-brute -p 80 <host>
从HTTP响应中提取并输出HTML和JavaScript注释。
nmap -p80 --script http-comments-displayer.nse <host>
检查通用内容管理系统和Web服务器配置文件的备份和交换文件。
nmap --script=http-config-backup <target>
使用各种Web应用程序和设备使用的默认凭据测试访问。
nmap -p80 --script http-default-accounts host/ip
通过将User-Agent更改为“secret”值来检测某些D-Link路由器上的固件后门。使用“秘密”User-Agent绕过身份验证,并允许管理员访问路由器。
nmap -sV --script http-dlink-backdoor <target>
枚举流行的Web应用程序和服务器使用的目录。
nmap -sV --script=http-enum <target>
利用Web应用程序中不安全的文件上传表单,使用各种技术,如更改Content-type头或创建包含注释中有效负载的有效图像文件。
nmap -p80 --script http-fileupload-exploiter.nse <target>
对基于http表单的身份验证执行强力密码审核。
nmap --script http-form-brute -p 80 <host>
尝试通过执行HTTP谓词篡改绕过密码保护的资源(HTTP 401状态)。如果未设置要检查的路径数组,它将爬网Web服务器,并对找到的任何受密码保护的资源执行检查。
nmap -sV --script http-method-tamper <target>
nmap -p80 --script http-method-tamper --script-args 'http-method-tamper.paths={/protected/db.php,/protected/index.php}' <target>
通过尝试检索 /etc/passwd 或 boot.ini 来检查Web服务器是否容易受到目录遍历的攻击。
nmap --script http-passwd --script-args http-passwd.root=/test/ <target>
在HTTP服务器上搜索包含易受SQL注入攻击的查询的URL。它还从找到的网站中提取表单,并试图识别易受攻击的字段。
nmap -sV --script=http-sql-injection <target>
利用多个TP-Link无线路由器中存在的目录遍历漏洞进行攻击。攻击者可以利用此漏洞远程读取任何配置和密码文件,而无需进行身份验证。
nmap -p80 --script http-tplink-dir-traversal.nse <target>
nmap -p80 -Pn -n --script http-tplink-dir-traversal.nse <target>
nmap -p80 --script http-tplink-dir-traversal.nse --script-args rfile=/etc/topology.conf -d -n -Pn <target>
尝试检测Wordpress 4.7.0和4.7.1中的权限提升漏洞,该漏洞允许未经身份验证的用户在帖子中注入内容。
nmap --script http-vuln-cve2017-1001000 --script-args http-vuln-cve2017-1001000="uri" <target>
nmap --script http-vuln-cve2017-1001000 <target>
检测指定的URL是否容易受到Apache Struts远程代码执行漏洞(CVE-2017-5638)的攻击。
nmap -p <port> --script http-vuln-cve2017-5638 <target>
检测采用英特尔主动管理技术的系统是否容易受到INTEL-SA-00075权限提升漏洞(CVE 2017 -5689)的攻击。
nmap -p 16992 --script http-vuln-cve2017-5689 <target>
通过使用恶意负载探测Web服务器并检测响应代码和正文中的更改,尝试确定Web服务器是否受IPS(入侵防御系统)、IDS(入侵检测系统)或WAF(Web应用程序防火墙)保护。
nmap -p80 --script http-waf-detect <host>
nmap -p80 --script http-waf-detect --script-args="http-waf-detect.aggro,http-waf-detect.uri=/testphp.vulnweb.com/artists.php" www.modsecurity.org
尝试检测Web应用程序防火墙的存在及其类型和版本。
nmap --script=http-waf-fingerprint <targets>
nmap --script=http-waf-fingerprint --script-args http-waf-fingerprint.intensive=1 <targets>
试图利用java的远程调试端口。当远程调试端口保持打开状态时,可以注入java字节码,实现远程代码执行。这个脚本滥用这个特性来注入和执行一个Java类文件,这个文件执行提供的shell命令并返回它的输出。
nmap -sT <target> -p <port> --script=+jdwp-exec --script-args cmd="date"
试图利用java的远程调试端口。当远程调试端口保持打开状态时,可以注入java字节码,实现远程代码执行。这个脚本注入并执行一个返回远程系统信息的Java类文件。
nmap -sT <target> -p <port> --script=+jdwp-info
试图利用java的远程调试端口。当远程调试端口保持打开状态时,可以注入java字节码,实现远程代码执行。此脚本允许注入任意类文件。
nmap -sT <target> -p <port> --script=+jdwp-inject --script-args filename=HelloWorld.class
尝试强制LDAP身份验证。默认情况下,它使用内置的用户名和密码列表。为了使用您自己的列表,请使用 userdb 和 passdb 脚本参数。
nmap -p 389 --script ldap-brute --script-args ldap.base='"cn=users,dc=cqure,dc=net"' <host>
对MySQL执行密码猜测。
nmap --script=mysql-brute <target>
尝试列出MySQL服务器上的所有数据库。
nmap -sV --script=mysql-databases <target>
尝试列出MySQL服务器上的所有用户。
nmap -sV --script=mysql-users <target>
检测易受远程代码执行漏洞(称为MS 08 -067)攻击的Microsoft Windows系统。这种检查是危险的,它可能会使系统崩溃。
nmap --script smb-vuln-ms08-067.nse -p445 <host>
nmap -sU --script smb-vuln-ms08-067.nse -p U:137 <host>
尝试检测Microsoft SMBv 1服务器是否易受远程代码执行漏洞(ms 17 -010,即EternalBlue)。该漏洞被WannaCry和Petya勒索软件以及其他恶意软件积极利用。
nmap -p445 --script smb-vuln-ms17-010 <target>
nmap -p445 --script vuln <target>
对ssh服务器执行暴力密码猜测。
nmap -p 22 --script ssh-brute --script-args userdb=users.lst,passdb=pass.lst
--script-args ssh-brute.timeout=4s <target>
对VNC服务器执行强力密码审核。
nmap --script vnc-brute -p 5900 <host>
漏洞扫描
nmap -sV --script vulners [--script-args mincvss=<arg_val>] <target>**
防火墙/入侵检测 绕过
-
•
nmap -sS -T4
使用-sS 识别被拦截的端口 -
•
nmap -sF
使用fin扫描 -
• 使用 -6 ipv6扫描
-
• TCP FTP反弹扫描(
-b
) -
•
--scan-delay 1075ms
指定延长扫描时间绕过检测 -
•
**nmap -p 80,443 --script-args http.useragent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" -A <domain>
修改默认ua头** -
•
-sV
参数默认指定端口 443、444、465、636、989、990、992、993、994、995、1241、1311、2252、3388、3389、4433、4444、5061、6679 9001 6697 , 8883 , , , 8443 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 。尝试修改目标端口绕过这一特征。 -
• 流量中包含
frame contains random1random2random3random4
-
• Kerberos 消息发送到系统 :字段中包含NM ,krbget/NM
frame contains 00:00:71:6a:81:6e:30:81:6b:a1:03:02:01:05:a2:03:02:01:0a:a4:81:5e:30:5c:a0:07:03:05:00:50:80:00:10:a2:04:1b:02:4e:4d:a3:17:30:15:a0:03:02:01:00:a1:0e:30:0c:1b:06:6b:72:62:74:67:74:1b:02:4e:4d:a5:11:18:0f:31:39:37:30:30:31:30:31:30:30:30
-
• 发送了giop协议,包含abcdef字段。
giop && frame contains abcdef
-
• SIP协议中存在特定消息:SIP:nm@nm。可尝试修改文件内容 Probe TCP SIPOptions q|OPTIONS sip:nm SIP/2.0rnVia: SIP/2.0/TCP nm;branch=foornFrom: sip:nm@nm;tag=rootrnTo: sip:nm2@nm2rnCall-ID: 50000rnCSeq: 42 OPTIONSrnMax-Forwards: 70rnContent-Length: 0rnContact: sip:nm@nmrnAccept: application/sdprnrn|
-
• 发送rdp探测时会发送nmap字段的cookie。local cookie = "mstshash=nmap”。尝试修改rdp.lua文件
-
• 特定于 Nmap 的 URI。GET /nice%20ports%2C/Tri%6Eity.txt%2ebak HTTP/1.0
-
• versant.lua 文件中不指定用户会默认使用nmap账户
-
• 网络请求中,通常发送到远程主机的第一个连接请求使用 16K(16,384 字节)。如果出现问题,将会放大 4 倍,最终达到 64Kb。nmap默认64Kb发送。
-
• 总结:在使用-sV 的时候修改默认请求数据包。
NCAT 🥺
使用技巧
-
• -p 指定源端口
-
• -s 指定绑定源地址
-
• -l 监听
-
• -m 最大连接数,默认100,windows默认60
-
• -k 通常,侦听服务器只接受一个连接,然后在连接关闭时退出。此选项使其接受多个同时连接,并在所有连接关闭后等待更多连接。
-
•
**--broker
(连接代理) 允许多方连接到集中的Ncat服务器并相互通信。Ncat可以代理位于NAT之后或无法直接连接的系统之间的通信。此选项与--listen
一起使用,这会使--listen
端口启用代理模式。** -
•
**--chat
(临时“聊天服务器”)** -
•
**-e *<command>*
、--exec *<command>*
(执行命令)建立连接后执行指定的命令。命令必须指定为完整路径名。** -
•
**-c *<command>*
、--sh-exec *<command>*
(通过sh执行命令)** -
•
**--allow
ip1 ,ip2 指定的主机列表将是唯一允许连接到Ncat进程的主机。所有其他连接尝试都将被断开。如果--allow
和--deny
之间存在冲突,则优先使用--allow
。主机规范遵循Nmap使用的相同语法。** -
•
**--allowfile
这与--allow
具有相同的功能,除了允许的主机是在一个新行分隔的允许文件中提供的,而不是直接在命令行上提供的。** -
•
**--deny
--denyfile
拒绝连接,同上** -
•
**-i *<time>*
、--idle-timeout *<time>*
(指定空闲超时),为空闲连接设置固定超时。如果达到空闲超时,则连接终止。可用于传文件,传输完成后指定延时退出**
参考文章 💣
-
• **https://nmap.org/book/toc.html(https://nmap.org/book/toc.html) nmap官方book**
-
• Man 手册
原文始发于微信公众号(人遁安全):如何猥琐的进行端口扫描(Nmap扫描特征去除)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论