nmap
nmap(Network Mapper)是免费、开源的网络发现和安全审计工具,通常我们用于收集网络中的比如主机和端口等信息,从而为下一步的攻击提供突破口,订定攻击的筹划。也可为网络管理员使用,从而针对性修复大概暴露的安全漏洞。
具体的功能介绍可以登录官网https://nmap.org,来获取软件包和官方教程。
- 当我们下载好nmap后在下令行中会多出这些下令:
- nmap,集成了:
- 主机发现(Host Discovery)
- 端口扫描(Port Scanning)
- 版本侦测(Version Detection)
- 操纵系统侦测(Operating System Detection)
- zenmap,zenmap为nmap的图像化版本。
- ncat,可进行机动的数据传输,重定向。
- ndiff,对比扫描结果的工具。
- nping,包天生和相应工具。
图1.Windows检察nmap提供的可执行文件
nmap下令
nmap发现的原理无非就是,发送数据包到目标主机,依据相应报文来识别已经开放的端口等信息等,属于主动攻击。
- nmap的下令基本上可以分为有“三要素”,此中扫描的目标是必选的。扫描范例默认使用-sT。
- nmap [ <扫描范例> ...] [ <选项> ] { <扫描目标说明> }
- 可以使用-h参数或者无参数,以输出资助信息。
- 一下介绍的主机发现、端口扫描的方式都可以排列组合来使用。
下面的篇幅较长,如果是忘记了下令,可以只看这部分即可,我在这里翻译了nmap -h原文,并做了小总结。时间宝贵,头发也宝贵呢。
- Nmap 7.93 (https://nmap.org)
- 用法:nmap [扫描类型] [选项] {要扫描的目标}
- 扫描的目标:
- 可以是 主机名、IP 地址、网络等。
- #(可以使用逗号,指定不连续的ip段 减号-指定连续ip段 斜杠/指定掩码 星号*代表全部)
- 例如:scanme.nmap.org、microsoft.com/24、192.168.0.1; 10.0.0-255.1-254
- -iL <inputfilename>: 从文件中读取要扫描的主机列表
- -iR <主机数量>: 选择随机目标 #0为无限生成
- --exclude <host1[,host2][,host3],...>:要排除的 主机/网络
- --excludefile <exclude_file>: 从文件中选择要排除的主机列表
- 主机发现:
- -sL: 列表扫描 - 打印主机的列表(对域名进行扫描时,可以得到IP列表 )
- -sn: Ping 扫描,同时禁用端口扫描,用来检查主机存活状态。
- -Pn: 禁用 Ping 扫描,默认所有主机都是存活状态
- -PS/PA/PU/PY[端口列表]:对指定的端口通过 TCP SYN/ACK、UDP 或 SCTP 扫描来发现主机
- -PE/PP/PM: 对指定的端口通过 ICMP、时间戳和网络掩码请求发现和探测主机
- -PO[协议列表]: IP 协议 Ping
- -n/-R: 不进行DNS解析/ 进行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 <flags>: 自定义 TCP 扫描标志
- -sI <僵尸主机[:僵尸端口]>: 空闲扫描
- -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 <number>: 扫描<number>个最常用的端口
- --port-ratio <ratio>: 扫描比<ratio>更常见的端口
- 服务/版本检测:
- -sV: 探测开放端口以确定服务/版本信息
- --version-intensity <level>:设置从 0(轻)到 9(尝试所有探针)
- --version-light: 限制最可能的探测(强度 2)
- --version-all: 尝试每一个探测(强度 9)
- --version-trace: 显示详细的版本扫描活动(用于调试)
- 脚本扫描:
- -sC: 相当于--script=default
- --script=<Lua scripts>: 使用脚本进行扫描,多个脚本时用逗号分隔,支持通配符。
- --script-args=<n1=v1,[n2=v2,...]>: 为脚本提供参数
- --script-args-file=filename: 从文件中提供 NSE 脚本参数
- --script-trace: 显示所有发送和接收的数据
- --script-updatedb: 更新脚本数据库。
- --script-help=<Lua 脚本>: 显示有关脚本的帮助。
- 操作系统检测:
- -O: 启用操作系统检测
- --osscan-limit: 将操作系统检测限制为有希望的目标
- --osscan-guess: 更积极地猜测操作系统
- 时间和性能:
- 默认是秒,也可以 “ms”(毫秒),'s'(秒)、'm'(分钟)或 'h'(小时)到值(例如 30m)。
- -T<0-5>: 设置时序模板(越高扫描速度越快,但是准确性降低)
- --min-hostgroup/max-hostgroup <size>: 并行主机扫描组大小
- --min-parallelism/max-parallelism <numrobes>:探针并行化
- --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <时间>: 指定探测往返时间。
- --max-retries <tries>: 限制端口扫描探测重传的次数。
- --host-timeout <time>: 多长时间后放弃目标
- --scan-delay/--max-scan-delay <time>:调整探针之间的延迟
- --min-rate <number>: 每秒发送数据包不低于 <number>
- --max-rate <number>: 每秒发送数据包的速度不超过 <number>
- 防火墙/IDS 逃避和欺骗:
- -f; --mtu <val>: 分片数据包(可选地 w/给定的 MTU)
- -D <诱饵IP1,诱饵IP2[,本机IP],...>:使用诱饵隐藏扫描。即发送参杂着假ip的数据包检测
- -S <IP 地址>: 欺骗源地址。就是伪造源主机IP地址。
- -e <网络接口>: 指定从哪个网卡发送和接收数据包。
- -g/--source-port <portnum>: 使用给定的端口号。针对防火墙只允许的源端口
- --proxies <url1,[url2],...>: 通过 HTTP/SOCKS4 代理中继连接
- --data <hex string>: 将自定义有效负载附加到发送的数据包
- --data-string <string>: 将自定义 ASCII 字符串附加到发送的数据包中
- --data-length <num>: 将随机数据附加到发送的数据包中。
- 改变发生数据包的默认的长度,防止被识别出来。
- --ip-options <options>: 发送带有指定ip选项的数据包
- --ttl <val>: 设置 IP 生存时间字段
- --spoof-mac <mac地址/前缀/供应商名称>: 欺骗你的MAC地址
- --badsum: 发送带有虚假 TCP/UDP/SCTP 校验和的数据包
- 输出:
- -oN/-oX/-oS/-oG <file>: 扫描结果写入到文件。
- 正常,XML,s|<rIpt kIddi3,Grepable 格式,
- -oA <basename>: 一次输出三种主要格式
- -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: 也叫全面扫描。操作系统检测、版本检测、脚本扫描和跟踪路由。
- --datadir <dirname>: 指定自定义 Nmap 数据文件位置
- --send-eth/--send-ip:使用原始以太网帧或 IP 数据包发送
- --privileged: 假设用户拥有完全特权
- --unprivileged: 假设用户缺乏原始套接字权限
- -V:打印版本号
- -h:打印此帮助摘要页。
- 有关更多选项和示例,请参见手册页 (https://nmap.org/book/man.html)
复制代码
扫描目标
/,-*符号
nmap下令中扫描的目标是不可省略的参数,可以使用/,-*符号来确认目标范围。当然这三种都可以混合使用。
- # 直接单台主机ip,当然直接使用域名也可以,就是不怎么灵活而已
- nmap 192.168.1.1
- # 直接使用/掩码,扫描网段内全部ip
- nmap 192.168.1.1/24
- # 使用,指定对象,一般针对于不连续的网段
- nmap 192.168.2.1,10,172,192,254
- # 使用-选择连续的范围
- nmap 192.168.3.1-255
- # 使用*选择本段全部,和0-255一样
- nmap 192.168.4.*
- # ,/-*四者可以任意结合起来使用
- nmap 192.168.1,2,3.*
- nmap 192.168.1-192,240.1/24
复制代码
--exclude排除host
- # 比如你指定了大范围内的ip,但是某些ip你又想排除,后面可以无限写
- nmap 192.168.1.1/24 <strong>--exclude</strong> 192.168.1.1 192.168.1.100
复制代码
-iL从文件中导入和--excludefile排除
有时候从dhcp服务器中导出了在线的ip,可以使用文件来批量的选择扫描的目标,比如某公司禁止公司内部电脑开启web服务等,使用文件导入的方法,可以跳过离线主机进行的扫描。
- -iL <目标ip的文件路径>
- --excludefile <排除ip的文件路径>
文件格式中ip之间可以使用换行(\n),同时也支持,/-语法。
-iR随机扫描
以下是我使用nmap -iR 2后的抓包,可以看到ip是随机的,默认的
图2.默认扫描发送的报文
扫描范例可以省略,缺省时使用-sT参数,即TCP连接扫描,缺省情况下发送三个报文
- ICMP Echo Request
- TCP SYN 80和443
端口模式
nmap将端口分成六个状态:
- open(开放)
- closed(关闭)
- 无回显,大概是关闭了,也大概是防火墙设置为drop(丢弃而不做回应)。
- filtered(被过滤)
- 在扫描者和被扫描着之间,此端口大概在防火墙、设备上的服务器、交换机路由器acl等过滤了。返回拒绝访问。
- unfiltered(未被过滤)
- 可以访问端口,但是无法确认端口是否开放,一般情况只在TCP ACK扫描中出现。
- open|filtered(开放或者被过滤)
- 当无法确定端口是开放照旧被过滤的,大概是开放的端口不相应也大概返回目标端口报文在中途被防火墙、acl过滤了或者网络丢包了
- closed|filtered(关闭或者被过滤)
- 和上面open|filtered雷同,不知道是关闭照旧被过滤了。
主机发现
针对于不同的设备和网络情况,不同的扫描方式会有着截然不同的结果。
- 大要上分为这几种:
- ICMP发现主机
- TCP端口连接发现主机
- UDP端口连接发现主机
- DNS反向剖析
- sL通过向DNS服务器反向剖析(当然不要加上-n)
-sL(列表扫描)
其实这个参数不会对目标进行扫描操纵,但因为nmap默认情况下是会对本机设置的所有DNS服务器反向剖析其IP,即获取hostname,以是使用起来可以起到获取目标IP域名的结果。
图3.sL扫描会向本机DNS依据IP反剖析hostname
我的本机默认的DNS是192.168.24.8和223.5.5.5。话说对公网的DNS服务器反向剖析内网的IP的hostname,是不是有点太搞笑了。
- -dns-servers <DNS Server> 指定DNS服务器
- -n不剖析DNS,那就真的只是列出IP地址而已了
- -R 逼迫剖析DNS
- ┌──(kali㉿kali)-[~]
- └─$ nmap -sL 192.168.24.1/30 -dns-servers 192.168.28.8
- Starting Nmap 7.93 ( https://nmap.org ) at 2022-10-26 22:39 EDT
- Nmap scan report for 192.168.24.0
- Nmap scan report for redmiAX6(192.168.1.1)
- Nmap scan report for xiaomi10s(192.168.24.2)
- Nmap scan report for 192.168.24.3Nmap done: 4 IP addresses (2 hosts up) scanned in 0.01 seconds
复制代码
-sP(Ping扫描)
只使用Ping的方式判断主机存活。就和使用ping下令判断主机在线一样,如果有icmp回显那么nmap就认为其是存活的。
- 只发送icmp echo-request
- 有icmp echo-reply(icmp回显)就在线
图4.sP方式扫描
- ┌──(kali㉿kali)-[~]
- └─$ nmap -sP 192.168.24.1-100
- Starting Nmap 7.93 ( https://nmap.org ) at 2022-10-26 23:14 EDT
- Nmap scan report for 192.168.24.1
- Host is up (0.0034s latency).
- Nmap scan report for 192.168.24.4
- Host is up (0.0021s latency).
- Nmap scan report for 192.168.24.6
- Host is up (0.0026s latency).
- Nmap scan report for 192.168.24.9
- Host is up (0.0027s latency).
- Nmap scan report for 192.168.24.10
- Host is up (0.0033s latency).
- Nmap scan report for 192.168.24.15
- Host is up (0.0025s latency).
- ...省略
复制代码
-P0 (无ping)、-Pn
如果对方关闭了icmp回显的功能,那么nmap会判断本主机不在线,同时后续的端口扫描等也不会进行,会给扫描结果带来干扰。
Windows下开关回显:
图5.Windows系统可在防火墙规则开关icmp回显
Linux关闭回显:
- #临时关闭
- echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
- #永久
- echo net.ipv4.icmp_echo_ignore_all=0 >> /etc/sysctl.conf
- sysctl -p
复制代码
图6.ping测试下的icmp开关结果
以是为了排除干扰,可以加上-P0参数,这样后续的端口扫描等操纵也不会被干扰。请注意,P0虽然可以更彻底的扫描,但是代价是如果该地址本就真的不存在设备或者设备不在线,那么将耗费大量的时间做无勤奋。
Windows主机上开启smb文件共享,确认开启445端口。并且是关闭的icmp回显。
图7.使用netstat检察端口监听情况
对于关闭icmp回显的设备,加不加-P0参数对扫描的结果有很大的影响。
图8.使用nmap 添加和不添加-P0的测试
-PS[portlist] (TCP SYN Ping)
向目标主机的常用端口发送标记SYN=1的TCP握手报文,默认-PS不加参数时候会向常用的TCP端口发送SYN报文,并不需要建立TCP连接,只要有回应那么就说明主机在线的。在判断主机存活时候恣意还探测了开放的TCP端口。
- 这个常用的TCP端口官方说默认的目标端口是80,但是实际上抓包发现其实都有很多,因为默认情况下自带了对TCP1660个常用端口的扫描。
图9.PS抓取报文的结果
- #PS不带参数
- nmap -PS 192.168.5.1/24
- #如果需要添加指定端口,比如你发现目标喜欢使用65522作为ssh端口,或者65000到65535这些都有可能,可以添加到扫描列表中,默认情况下预设的TCP端口也依旧会扫描
- nmap -PS65522,65000-65535 192.168.5.1/24
复制代码
-PA[portlist] (TCP ACK Ping)
-PA和PS其实是雷同的,向目标主机的常用端口发送TCP报文,只不过这次是ACK=1的TCP确认报文。重要是用于通过一些有防火墙防火墙,因为防火墙会依据SYN报文来识别TCP连接,比较容易暴露本身。
一般情况ACK和SYN一起发送结果比较好。
- nmap -PS -PA 192.168.5.1/24
复制代码
-PU[portlist] (UDP Ping)
前面-PS和PA都是基于TCP扫描,PU使则是使用UDP扫描,如果网络中TCP的SYN和ACK都被防火墙隔离了,那就使用UDP。
-PR (ARP Ping)
TCP和UDP这些都是基于IP扫描,如果只需要扫描局域网内(同网段,不超过网关),可以使用ARP扫描,往往都不容易被察觉也比网络层扫描更可靠,当广播扣问IP的对应MAC地址时候,当有回应那么就认为主机在线。
-n (不用域名剖析)
- nmap会对目标的IP地址进行反向域名剖析。注意如果和-sL一起使用那就真的是只列出IP地址。
-R (为所有目标剖析域名)
- 逼迫nmap对目标IP地址进行反向域名剖析。 一般只有当发现机器正在运行时才进行这项操纵。
端口扫描
-p <port ranges>指定目标端口
如果使用-p自定义范围。
- -p和主机发现雷同的用法,可以使用,-来选择范围。
- nmap -sS <strong>-p</strong> <strong>1-1024,3389,3306</strong> 192.168.5.1/24
复制代码
- 也可以使用U:和T:来选择UDP端口、TCP端口范围。
- nmap -sS -sU -p U:53,67,68,T:1-1024,3389,3306 192.168.5.1/24
复制代码
-F和--top-ports快速扫描
默认是使用常见的1000个端口作为目标,如果觉得不敷快也可以使用-F将使用最常见的100个端口作为目标。使用--top-ports也可以规定前几的端口为目标,-F相称于--top-ports 100的情况。
- # 使用-F扫描最常用的100端口
- nmap -F 192.168.5.1
- # 使用--top-ports 自定义扫描最长用的端口,比如最常用的500个端口
- nmap --top-ports 500 192.168.5.1
复制代码
-r次序端口扫描
一个小参数,设置了可以按次序扫描端口,默认情况是先扫常用端口再扫用户自定义的端口,其实意义不是那么大。
-sS (TCP SYN扫描)
此模式需要管理员(administrator或root)权限。
sS是最常用的扫描方式,不会建立完整的TCP连接,只发送SYN连接请求,以是速率很快,而且通常不会被扫描目标记载。
- 发送SYN,返回SYN/ACK->open开放
- 发送SYN,返回RST->closed关闭
- 发送SYN,等待超时,发送SYN,等待超时->filtered被过滤
- 发送SYN,返回ICMP不可达->filtered被过滤
- nmap -sS -p 1-65535 192.168.5.1
复制代码
-sT (TCP connect()扫描)
sT需要建立完整的TCP连接,即三次握手。以是判断端口开放更可靠,但是很有大概会被记载下连接的日志。
默认情况下不加参数都是使用此方法作为端口扫描。
-sU (UDP扫描)
此模式需要管理员(administrator或root)权限。
对UDP端口进行扫描,使用-sT、-sS都不扫描UDP端口,以是如果有需要扫描UDP那就务必加上此。当然也可以结合TCP扫描来使用。
其原理为想目标端口发送UDP探测包,等待相应,返回ICMP端口不可达(ICMP port unreachable)为端口关闭,等待超时则为端口被过滤
- sudo nmap -sS -sU -p U:53,67,68,161,162,T:1-65535 192.168.5.1/24
复制代码
-sN; -sF; -sX ;-sM (TCP Null扫描,TCP FIN扫描,Xmas扫描,TCP Maimon扫描)
此模式需要管理员(administrator或root)权限。
nmap发现TCP端口开放与否对不同标记位上TCP报文有不同回应,复兴RST报文则认为开放,超时则认为关闭或过滤。因为对于服务器来说这些TCP报文都是错误的,不包管所有端口的都可以正确的相应,但是这比SYN和整个TCP连接都要来得更埋伏。(不过我都没有效过啊)
- -sN,TCP Null扫描,发送标记位都为0的TCP包,用于测试防火墙。
- -sF,TCP FIN扫描,发送标记位FIN=1(关闭连接)的TCP包。端口扫描结果不是很好,但是很埋伏。
- -sX,Xmas扫描,这个更过分了,直接把FIN,PSH和URG标记位都置1了。
- -sM,TCP Maimon扫描,发送标记位FIN,ACK的TCP报文。
- --scanflags (定制的TCP扫描),这些标记位你乃至可以本身定义,不过记得共同其他TCP扫描。
- sudo nmap -sA -F 127.0.0.1 --scanflags URGACKPSHRSTSYNFIN
- # 控制位可以任意顺序,并且嘛之间不用空格,直接连着一起写
复制代码
-sA (TCP ACK扫描)
此模式需要管理员(administrator或root)权限。
ACK扫描,将TCP报文标记位ACK=1,可以用于检测防火墙屏蔽了哪个端口,不过滤的主机端口反而啥也扫不出。
有空要补上图。因为我手机上并没有模拟出来结果啊。
-s0(IP协议扫描)
IP 协议扫描确定目标机支持哪些IP协议 (TCP,UDP,ICMP,IGMP等等)。从技术上说,这不是端口扫描 ,既然它遍历的是IP协议号,但是也可以使用-p来指定端口,只不过这个端口对应的是协议的号码。
图10.这里的数字不是代表端口,而是协议
-sI <zombie host[:probeport]> (空闲扫描)
僵尸主机也就是肉鸡,利用side-channel攻击,nmap对此端口进行扫描操纵,从而更加埋伏的进行扫描,若安全设备溯源也是溯源到肉鸡的IP。
- -sI <host>[:<port>] 端口可以不写,默认80
- sudo nmap -sI 192.168.2.8:8080 192.168.2.1/24 -Pn
复制代码
-b <ftp relay host> (FTP弹跳扫描)
这个是利用FTP署理链接漏洞,允许用户连接到一台FTP服务器,然后要求文件送到一台第三方服务器。可以有效的隐藏本身。
这里参数格式是-
- -b <username>:<password>@<server>:<port>
- sudo nmap -sS ftp:123@192.168.1.1:21
复制代码
版本探测和系统探测
不同服务也有不同版本,比如SNMP有v1、v2c、v3三种版本,SMB也有v1.0、v2.0、v3.0三种版本。不同的版本也有不同的特性,为此这些信息也是很紧张的内容。
-sV (版本探测)
- -sV 打开版本探测。在端口扫描的基础上进行开放端口的服务分析。
- --allports (不为版本探测排除任何端口) 默认情况下会跳过tcp:9100,因为某些打印机简单地打印送到该端口的任何数据,这回导致数十页HTTP get请求,二进制 SSL会话请求等等被打印出来
- --version-intensity <intensity> (设置 版本扫描强度) 强度范围:0和9,默认是7。强度越高越精确,但是耗时更久。
- --version-light (轻量级模式) 相称于--version-intensity 2
- --version-all (尝试每端口探测) 相称于--version-intensity 9
- --version-trace(显示正在进行的扫描的调试信息)可以看到具体的日志。
-sR(RPC扫描)
- -sR 利用RPC协议来进行版本探测,不过如今使用sV就涵盖了此中,少用。其实我也不太懂RPC,之前设置NFS时候遇到过RPC:111和113端口。
-O (启用操纵系统探测)
- -O 启用操纵系统探测,
- --osscan-limit (针对指定的目标进行操纵系统检测)
- 如果发现一个打开和关闭的TCP端口时,操纵系统检测会更有效。 采取这个选项,nmap只对满意这个条件的主机进行操纵系统检测,这样可以 节约时间,特别在使用-P0扫描多个主机时。
- --osscan-guess; --fuzzy (推测操纵系统检测结果)
- 当Nmap无法确定所检测的操纵系统时,会尽大概地提供最相近的匹配,Nmap默认 进行这种匹配,使用上述任一个选项使得Nmap的推测更加有效。
-A(操纵系统探测和版本探测)
- -A 操纵系统和版本探测都进行,和启动-sV和-O一样,sV和O的参数在这里也可以使用。
时间与性能、显示
因为nmap通常对整个进行扫描,倘若网段范围主机非常多,得当的添加参数调整参数会大大的节约时间。
-T <aranoid|Sneaky|Polite|Normal|Aggressive|Insane> (设置时间模板)
只要记着这个就可以了,因为够用了,其他时间选项其实更加过细的设置,T时间模板已经封装好。
- -T<number> 范围0-5,可以使用数字来代替paranoid (0)、sneaky (1)、polite (2)、normal(3)、 aggressive (4)和insane (5)
- -T3 即为默认
- -T0,T1,可以用于躲避IDS的探测,但是速率比较慢
- -T2 低落扫描速率
- -T4 加快扫描速率,也是一般情况也试用比较可靠有线网络
- -T5 最快的扫描速率,但是大概让目标主机处置惩罚不过来从而导致扫描结果不正确。
--min-hostgroup <size>; --max-hostgroup <size> (调整并行扫描组的大小)
原来扫描结果需要末了才可以全部看到,但是可以设置组的大小,从而让当前组扫完就可以的看结果,如果组的大小定义为50,扫描50个主机扫描完成后可以得到陈诉(具体模式中的增补信息 除外)。
不过其实个人觉得-v或者-vv参数更有结果吧。
--scan-delay <milliseconds>; --max-scan-delay <milliseconds> (调整探测报文的时间间隔)
设置扫描包的发送间隔,单位ms。
--min-parallelism <numprobes>; --max-parallelism <numprobes> (调整探测报文的并行度)
--min-rtt-timeout <milliseconds>, --max-rtt-timeout <milliseconds>, --initial-rtt-timeout <milliseconds> (调整探测报文超时)
--host-timeout <milliseconds> (放弃低速目标主机)
跳过通讯差的主机,设置多少ms延迟才跳过。比如楼下蹭网的邻人,每一次扫描需要等待许久,非常消耗时间,干脆跳过。
防火墙/IDS躲避和哄骗
-D <decoy1 [,decoy2][,ME],...>(使用诱饵埋伏扫描)
使用诱饵隐藏扫描。即发送参杂着假ip的数据包检测。作为诱饵ip须在线。
使用逗号分隔每个诱饵主机,比如:
- sudo nmap -sS -D 192.168.1.1,192.168.2.1,192.168.3.1,192.168.5.1 192.168.5.2-254
复制代码
-S <IP_Address> (源地址哄骗)
- -S 伪造IP报文中原地址,若有多张网卡那么要指定发送和接收的网卡。
- -e <network interface>指定网卡 比如 -e eth0,在Windows上可以使用--iflist检察网卡。
--source-port <portnumber>; -g <portnumber> (源端口哄骗)
自定义源端口
--data-length <number> (发送报文时 附加随机数据)
默认时候发送的IP报文都是没有数据的空白报文,追加随机的数据可以减小被猜疑的大概,但是性能消耗会增长。
- --ttl <value> (设置IP time-to-live)
设置ttl,比如--ttl 255
--randomize-hosts (对目标主机的次序随机排列)
--spoof-mac <mac address,prefix,or vendor name> (MAC地址哄骗)
这个比较有趣,可以输入完整的mac地址,也可以输入前面3Byte的mac,也可以输入厂家的名字(使用自带库中的预设)。
比如 ----spoof-mac 01:01:01:01:22:1a,a20123,Cisco
输出
nmap可以将结果输出为文件,同时也可以共同--resume实现继承之前未完成的任务。
-oA <basename> (输出至所有格式)
输出以下的全部,当然如果不需要也可以恣意选择需要的:
- -oN <filespec> (尺度输出) 尺度输出可以用于--resume断点继承。
- --append-output (在输出文件中添加)
- -oX <filespec> (XML输出) 推荐使用此格式,因为XML使用场景很广,可方便被编程语言调用。比如使用python的脚本导结果为excel表格等。
- -oG <filespec> (Grep输出) 可以很方便的在grep、awk、cut、sed、diff等下令中显现。
-v (提高输出信息的具体度)
- -vv 比起-v更具体,但是终端打印消息太多大概重要的信息就不太悦目得见了。
- -d [level] (提高或设置调试级别) 这个一般情况是调试用的
--packet-trace (跟踪发送和接收的报文)
要求Nmap打印发送和接收的每个报文的摘要,也可以方便初学者明白nmap工作原理。
--iflist (列举接口和路由)
用于分析路由,如果报文发送错误网卡可以使用-e来定义网卡接口,但是nmap中的命名是Linux那一套,在Windows要注意。
图11.显示网卡和路由
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |