百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

网络渗透中的扫描工具——nmap介绍

xsobi 2024-12-01 05:40 1 浏览

前面其实断断续续介绍过很多nmap的用法,但不是很完整。这里单独来介绍一下这个非常强大的扫描工具nmap。

完整地帮助文档就不放上来了,想看完整文档的直接输入命令nmap -h:

后面我们针对说明文档中的各个参数进行一些说明,其实如果英文比较好,就直接看说明文档就行了,我后面的介绍很多就是翻译一下而已。

目标规范

第一类就是指定扫描目标规范相关的参数:

说明文档中介绍了不使用这部分的参数时,目标主机该怎么传,就是Ex后面的那些参数类型。

-iL:传递一个ip地址的文档,文档里的ip地址可以是不连续的,不同网段的。
-iR:后面跟一个数字,会随机扫描指定数量的主机,可以加-p指定端口扫描。
--exclude:后面跟ip地址或者网段,表示这些主机不用进行扫描。
--excludefile:后面传一个ip地址的文档,表示文档中的主机不进行扫描。

主机发现

接下来一块就是主机发现相关的参数:

-sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。  
-sn: Ping Scan 只进行主机发现,不进行端口扫描。  
-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。  
-PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。  
-PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。-PO[protocollist]: 使用IP协议包探测对方主机是否开启。  
-n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。  
--dns-servers <serv1[,serv2],...>: 指定DNS服务器。  
--system-dns: 指定使用系统的DNS服务器  
--traceroute: 追踪每个路由节点 

扫描技术

接下来是扫描技术相关的参数:

-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。  
-sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。  
-sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。  
--scanflags <flags>: 定制TCP包的flags。  
-sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)  
-sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。  
-sO: 使用IP protocol 扫描确定目标机支持的协议类型。  
-b <FTP relay host>: 使用FTP bounce scan扫描方式

端口规范和扫描顺序

接下来是指定扫描端口相关的参数:

-p <port ranges>:扫描指定的端口  
实例: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP协议、U代表UDP协议、S代表SCTP协议)  
--exclude-ports <port ranges>:指定不扫描的端口
-F:Fast mode – 快速模式,仅扫描TOP 100的端口  
-r:不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)。  
--top-ports <number>:扫描开放概率最高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口)  
--port-ratio <ratio>:扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件。  

服务版本扫描

接下来是端口上服务版本扫描相关的参数:

-sV:指定让Nmap进行版本侦测  
--version-intensity <level>:指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。  
--version-light:指定使用轻量侦测方式 (intensity 2)  
--version-all:尝试使用所有的probes进行侦测 (intensity 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 scripts>: 会显示一些脚本的说明,以便理解目标脚本可以起什么作用。

系统扫描

系统扫描主要是识别目标系统是Linux还是window或者是Unix:

-O: 进行系统扫描
--osscan-limit: 限制检测指定类型的系统
--osscan-guess: 猜测的时候更激进一些

时间和性能

接下来是时间和性能相关的参数:

-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>: 最低发送数据包的速度
--max-rate <number>: 最高发送数据包的速度

防火墙、id欺骗、躲避

接下来是防火墙、id欺骗和躲避相关的参数:

-f; --mtu <val>: fragment packets (optionally w/given 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>: 分别指定级格式输出扫描到给定文件名。
-oA <basename>: 同时以三种主要格式输出
-v:增加详细程度(使用-vv或更高级别以获得更大效果)
-d:提高调试级别(使用-dd或更多以获得更大的效果)
--reason: 显示端口处于特定状态的原因
--open: 仅显示打开(或可能打开)的端口
--packet-trace: 显示发送和接收的所有数据包
--iflist: 打印主机接口和路由(用于调试)
--append-output: 附加到指定的输出文件,而不是删除指定的输出文件
--resume <filename>: 继续中止扫描
--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: 假设用户缺少原始socket权限
-V: 打印版本号
-h: 打印帮助说明

相关推荐

好用的云函数!后端低代码接口开发,零基础编写API接口

前言在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作。不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人,通过...

快速上手:Windows 平台上 cURL 命令的使用方法

在工作流程中,为了快速验证API接口有效性,团队成员经常转向直接执行cURL命令的方法。这种做法不仅节省时间,而且促进了团队效率的提升。对于使用Windows系统的用户来说,这里有一套详细...

使用 Golang net/http 包:基础入门与实战

简介Go的net/http包是构建HTTP服务的核心库,功能强大且易于使用。它提供了基本的HTTP客户端和服务端支持,可以快速构建RESTAPI、Web应用等服务。本文将介绍ne...

#小白接口# 使用云函数,人人都能编写和发布自己的API接口

你只需编写简单的云函数,就可以实现自己的业务逻辑,发布后就可以生成自己的接口给客户端调用。果创云支持对云函数进行在线接口编程,进入开放平台我的接口-在线接口编程,设计一个新接口,设计和配置好接口参...

极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:iN在之前和大家说过,在iN的家里是没有墙面开关的。...

window使用curl命令的注意事项 curl命令用法

cmd-使用curl命令的注意点前言最近在cmd中使用curl命令来测试restapi,发现有不少问题,这里记录一下。在cmd中使用curl命令的注意事项json不能由单引号包括起来json...

Linux 系统curl命令使用详解 linuxctrl

curl是一个强大的命令行工具,用于在Linux系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,用于下载或上传数据,执行Web请求等。curl命令的常见用法和解...

Tornado 入门:初学者指南 tornados

Tornado是一个功能强大的PythonWeb框架和异步网络库。它最初是为了处理实时Web服务中的数千个同时连接而开发的。它独特的Web服务器和框架功能组合使其成为开发高性能Web...

PHP Curl的简单使用 php curl formdata

本文写给刚入PHP坑不久的新手们,作为工具文档,方便用时查阅。CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到cur...

Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介

本章涵盖使用Actix提供静态网页...

我给 Apache 顶级项目提了个 Bug apache顶级项目有哪些

这篇文章记录了给Apache顶级项目-分库分表中间件ShardingSphere提交Bug的历程。说实话,这是一次比较曲折的Bug跟踪之旅。10月28日,我们在GitHub上提...

linux文件下载、服务器交互(curl)

基础环境curl命令描述...

curl简单使用 curl sh

1.curl--help#查看关键字2.curl-A“(添加user-agent<name>SendUser-Agent<name>toserver)”...

常用linux命令:curl 常用linux命令大全

//获取网页内容//不加任何选项使用curl时,默认会发送GET请求来获取内容到标准输出$curlhttp://www.baidu.com//输出<!DOCTYPEh...

三十七,Web渗透提高班之hack the box在线靶场注册及入门知识

一.注册hacktheboxHackTheBox是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CT...