Nmap快速上手(附赠官方帮助文档中文手册)

写在前面        

        众所周知,nmap是强大的开源端口扫描神器。我们这篇文章重点讲一下nmap常用的参数和基础的使用方法。

命令行格式

nmap -扫描方式 -选项 -目标地址

常用的选项

s*为指定扫描方式:
-sT 全连接扫描(会进行完整的三次握手,有安全设备可以识别sS扫描并阻止,所以全连接扫描可能会更准确)
-sS 半连接扫描(收到第二次握手包后不会回复以建立连接,速度会更快,且由于不会建立连接,会更隐蔽)
-sU UDP端口扫描
-sV 扫描服务及版本信息

-p 指定端口,默认为最常用的1000个端口
-T 指定扫描速度值为0-5,默认为3
-O 扫描操作系统信息
-Pn 不使用ping进行存活探测,直接扫描
-v 输出详细扫描经过,-vv会更详细

o*为指定输出格式:
-oN 将扫描结果输出为常规格式文件(用户输入文件名.nmap),适合直接阅读
-oX 将扫描结果输出为xml格式文件(用户输入文件名.xml),便于数据的进一步处理和集成到其他工具中
-oG 方便抓取格式文件(用户输入文件名.gnmap),方便使用grep等工具抓取
-oA 同时输出上述三种格式

最常用的组合方式之一(仅代表个人)

sudo nmap -sT -sV -O -Pn -p 1-65535 目标地址 -oA 文件名

默认扫描方式

        下面我们使用sudo nmap -vv 127.0.0.1来观察一下默认扫描方式。

        默认扫描方式:

        1、使用syn扫描(syn扫描需要管理员权限,无则使用全连接扫描)

        2、扫描一千个常用端口

        3、服务是根据端口推测的,未进行详细扫描

admin@ip-172-26-10-47:~$ sudo nmap -vv 127.0.0.1
Starting Nmap 7.80 ( https://nmap.org ) at 2024-05-30 14:02 +08
Initiating SYN Stealth Scan at 14:02       //这里使用了syn扫描,如果无管理员权限会是全连接扫描
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 3306/tcp on 127.0.0.1
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 80/tcp on 127.0.0.1
Discovered open port 1025/tcp on 127.0.0.1
Discovered open port 2222/tcp on 127.0.0.1
Completed SYN Stealth Scan at 14:02, 0.03s elapsed (1000 total ports)  //扫描了1000个最常用端口
Nmap scan report for localhost (127.0.0.1)
Host is up, received localhost-response (0.0000030s latency).
Scanned at 2024-05-30 14:02:55 +08 for 0s
Not shown: 995 closed ports
Reason: 995 resets
PORT     STATE SERVICE      REASON                //服务是根据端口推测,可能和实际开放不同
22/tcp   open  ssh          syn-ack ttl 64
80/tcp   open  http         syn-ack ttl 64
1025/tcp open  NFS-or-IIS   syn-ack ttl 64
2222/tcp open  EtherNetIP-1 syn-ack ttl 64
3306/tcp open  mysql        syn-ack ttl 64

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
           Raw packets sent: 1000 (44.000KB) | Rcvd: 2005 (84.220KB)

官方帮助文档

        以下内容为nmap官方帮助文档使用chatgpt翻译后的结果,看了一看翻译的还是很到位的。想要深入了解的同学可以保存一下。

使用方法:

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

目标规格:

  • 可以传递主机名、IP地址、网络等。
  • 示例:scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
  • -iL <inputfilename>:从主机/网络列表中输入
  • -iR <num hosts>:选择随机目标
  • --exclude <host1[,host2][,host3],...>:排除指定的主机/网络
  • --excludefile <exclude_file>:从文件中排除列表

主机发现:

  • -sL:列表扫描 - 仅列出要扫描的目标
  • -sn:Ping扫描 - 禁用端口扫描
  • -Pn:将所有主机视为在线 - 跳过主机发现
  • -PS/PA/PU/PY[portlist]:对指定端口进行TCP SYN/ACK、UDP或SCTP发现
  • -PE/PP/PM:ICMP回显、时间戳和网络掩码请求发现探测
  • -PO[protocol list]:IP协议Ping
  • -n/-R:从不进行DNS解析/始终解析 [默认:有时]
  • --dns-servers <serv1[,serv2],...>:指定自定义DNS服务器
  • --system-dns:使用操作系统的DNS解析器
  • --traceroute:跟踪每个主机的跳路径

扫描技术:

  • -sS/sT/sA/sW/sM:TCP SYN/连接()/ACK/窗口/Maimon扫描
  • -sU:UDP扫描
  • -sN/sF/sX:TCP Null、FIN和Xmas扫描
  • --scanflags <flags>:自定义TCP扫描标志
  • -sI <zombie host[:probeport]>:Idle扫描
  • -sY/sZ:SCTP INIT/COOKIE-ECHO扫描
  • -sO:IP协议扫描
  • -b <FTP relay host>:FTP中继扫描

端口规格和扫描顺序:

  • -p <port ranges>:仅扫描指定端口
    • 示例:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
  • --exclude-ports <port ranges>:排除指定端口的扫描
  • -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>:<Lua scripts> 是以逗号分隔的目录、脚本文件或脚本类别的列表
  • --script-args=<n1=v1,[n2=v2,...]>:为脚本提供参数
  • --script-args-file=filename:在文件中提供NSE脚本参数
  • --script-trace:显示发送和接收的所有数据
  • --script-updatedb:更新脚本数据库
  • --script-help=<Lua scripts>:显示关于脚本的帮助信息
    • <Lua scripts> 是以逗号分隔的脚本文件或脚本类别的列表

操作系统检测:

  • -O:启用操作系统检测
  • --osscan-limit:将操作系统检测限制在可能的目标上
  • --osscan-guess:更积极地猜测操作系统

时间和性能:

  • 以<time>为单位的选项为秒,或在值后面附加'ms'(毫秒)、's'(秒)、'm'(分钟)或'h'(小时)
    • -T<0-5>:设置时间模板(越高越快)
    • --min-hostgroup/max-hostgroup <size>:并行主机扫描组大小
    • --min-parallelism/max-parallelism <numprobes>:探测并行化
    • --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>:指定探测往返时间
    • --max-retries <tries>:限制端口扫描探测重传次数
    • --host-timeout <time>:在指定时间后放弃目标
    • --scan-delay/--max-scan-delay <time>:调整探测之间的延迟
    • --min-rate <number>:每秒发送的数据包不少于<number>
    • --max-rate <number>:每秒发送的数据包不超过<number>

防火墙/IDS规避和欺骗:

  • -f--mtu <val>:分段数据包(可选的给定MTU值)
  • -D <decoy1,decoy2[,ME],...>:使用诱饵掩盖扫描
  • -S <IP_Address>:伪造源地址
  • -e <iface>:使用指定的接口
  • -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 address/prefix/vendor name>:伪造MAC地址
  • --badsum:发送具有虚假TCP/UDP/SCTP校验和的数据包

输出:

  • -oN/-oX/-oS/-oG <file>:将扫描结果输出为正常、XML、脚本小子和可抓取格式,分别到指定文件
  • -oA <basename>:一次性输出为三种主要格式
  • -v:增加详细程度(使用-vv或更多以获得更大效果)
  • -d:增加调试级别(使用-dd或更多以获得更大效果)
  • --reason:显示端口处于特定状态的原因
  • --open:仅显示打开(或可能打开)的端口
  • --packet-trace:显示所有发送和接收的数据包
  • --iflist:打印主机接口和路由(用于调试)
  • --append-output:附加而不是覆盖指定的输出文件
  • --resume <filename>:恢复中断的扫描
  • --noninteractive:禁用通过键盘的运行时交互
  • --stylesheet <path/URL>:XSL样式表,将XML输出转换为HTML
  • --webxml:从Nmap.Org引用样式表以获得更便携的XML
  • --no-stylesheet:防止将XSL样式表与XML输出关联

其他:

  • -6:启用IPv6扫描
  • -A:启用操作系统检测、版本检测、脚本扫描和traceroute
  • --datadir <dirname>:指定自定义Nmap数据文件位置
  • --send-eth/--send-ip:使用原始以太网帧或IP数据包发送
  • --privileged:假设用户具有完全特权
  • --unprivileged:假设用户没有原始套接字特权
  • -V:打印版本号
  • -h:打印此帮助摘要页面

示例:

  • nmap -v -A scanme.nmap.org
  • nmap -v -sn 192.168.0.0/16 10.0.0.0/8
  • nmap -v -iR 10000 -Pn -p 80

 写在结尾

        大家好,这里是努力创作优质且免费内容的苦逼搬砖猿老羊,希望大家可以动动发财的小手,点赞关注支持一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值