《掌握Nmap:全面解析网络扫描与安全检测的终极指南》
nmap
# 简介(帮助)
用法:nmap [扫描类型] [选项] {目标指定内容}
简介(帮助)
用法:nmap [扫描类型] [选项] {目标指定内容}
一、目标指定:
可以传入主机名、IP 地址、网络等。
例如: scanme.nmap.org 、 microsoft.com/24 、192.168.0.1;10.0.0 - 255.1 - 254
-iL <输入文件名>
:从主机 / 网络列表中读取输入内容。
-iR <主机数量>
:随机选择目标主机。
--exclude <主机 1 [, 主机 2][, 主机 3],...>
:排除指定的主机 / 网络。
--excludefile <排除文件>
:从文件中的列表排除相关内容。
二、主机发现:
-sL
:列表扫描 - 仅列出要扫描的目标。
-sn
:Ping 扫描 - 禁用端口扫描。
-Pn
:将所有主机视为在线状态 - 跳过主机发现步骤。
-PS/PA/PU/PY [端口列表]
:对给定端口进行 TCP SYN/ACK、UDP 或 SCTP 发现操作。
-PE/PP/PM
:ICMP 回显、时间戳和子网掩码请求发现探测。
-PO [协议列表]
:IP 协议 Ping。
-n/-R
:从不进行 DNS 解析 / 总是进行 DNS 解析(默认:有时进行)。
--dns-servers <服务器 1 [, 服务器 2],...>
:指定自定义 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 扫描标志。
-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 <数量>
:扫描 <数量> 个最常见的端口。
--port-ratio <比例>
:扫描比 <比例> 更常见的端口。
五、服务 / 版本检测:
-sV
:探测开放端口以确定服务 / 版本信息。
--version-intensity <级别>
:设置从 0(轻度)到 9(尝试所有探测)的强度。
--version-light
:限制为最有可能的探测(强度为 2)。
--version-all
:尝试每一个单独的探测(强度为 9)。
--version-trace
:显示详细的版本扫描活动(用于调试)。
六、脚本扫描:
-sC
:等同于 。--script=default
--script=<Lua 脚本>
:<Lua 脚本> 是一个由逗号分隔的目录、脚本文件或脚本类别列表。
--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 <大小>
:并行主机扫描组的大小。
--min-parallelism/max-parallelism <探测数量>
:探测并行化。
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <时间>
:指定探测往返时间。
--max-retries <尝试次数>
:限制端口扫描探测的重传次数。
--host-timeout <时间>
:在经过这段时间后放弃对目标的扫描。
--scan-delay/--max-scan-delay <时间>
:调整探测之间的延迟。
--min-rate <数量>
:每秒发送数据包的速度不低于 <数量>。
--max-rate <数量>
:每秒发送数据包的速度不高于 <数量>。
九、防火墙 / 入侵检测系统规避与欺骗:
-f; --mtu <值>
:对数据包进行分片(可指定 MTU 值)。
-D <诱饵 1, 诱饵 2 [, 我自己],...>
:用诱饵掩盖扫描。
-S <IP 地址>
:伪造源地址。
-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、脚本小子、可搜索格式将扫描结果输出到给定的文件名中。
-oA <基本名>
:同时以三种主要格式输出。
-v
:提高详细程度级别(使用 或更高级别可获得更强效果)。-vv
-d
:提高调试级别(使用 或更高级别可获得更强效果)。-dd
--reason
:显示端口处于特定状态的原因。
--open
:只显示开放(或可能开放)的端口。
--packet-trace
:显示所有发送和接收的数据包。
--iflist
:打印主机接口和路由(用于调试)。
--append-output
:追加到指定的输出文件而不是覆盖它们。
--resume <文件名>
:恢复一个中断的扫描。
--noninteractive
:禁用通过键盘进行的运行时交互。
--stylesheet <路径 / URL>
:将 XML 输出转换为 HTML 的 XSL 样式表。
--webxml
:参考 Nmap.org 上的样式表以获得更具可移植性的 XML。
--no-stylesheet
:防止将 XSL 样式表与 XML 输出关联。
十一、其他:
-6
:启⽤ IPv6 扫描。
-A
:启⽤操作系统检测、版本检测、脚本扫描和追踪路由。--datadir <⽬录名>
:指定⾃定义 Nmap 数据⽂件的位置。
--send-eth/--send-ip
:使⽤原始以太⽹帧或 IP 数据包发送。
--privileged
:假设⽤⼾具有完全的特权。
--unprivileged
:假设⽤⼾没有原始套接字特权。
-V
:打印版本号。
-h
:打印此帮助概要⻚⾯。
十二、示例:
nmap -v -A scanme.nmap.org :详细地对 scanme.nmap.org进⾏操作系统检测、版本检测、脚本扫描和追踪路由。
nmap -v -sn 192.168.0.0/16 10.0.0.0/8 :详细地对 192.168.0.0/16 和 10.0.0.0/8 ⽹段进⾏ Ping 扫描(不进⾏端⼝扫描)。
nmap -v -iR 10000 -Pn -p 80 :详细地随机选择 10000 个⽬标,将所有⽬标视为在线状态,只扫描端⼝80。
更多选项和示例请参阅手册页( https://nmap.org/book/man.html )
# ⽤例
⼀、红队渗透步骤
使用nmap进行分阶段分任务的扫描,避免流量过大,让目标服务器发现
主机发现
nmap -sn 127.0.0.0/24
端口扫描
nmap -sT --min-rate 10000 -p- 127.0.0.1 -oA nmapsc/ports
1.扫描方式:-sS与-sT
-sS以SYN包的形式,-sT以TCP三次握手的形式
-sS扫描速度更快但不稳定,-sT相对较慢但是稳定
2.--min-rate 指定最小发包速率
3.-p 指定ip 后面的-是 1-65535端口的缩写,不写的话就会扫描nmap默认的几个端口
4.-o 格式化输出 后面的A是all的缩写,或将所有形式输出 但是一般的不会有多种形式输出
详细信息扫描
nmap -sT -sV -sC -O -p22,80,443 127.0.0.1 -oA nmapsc/detail
该扫描是比较重的扫描所以指定发现端口。
1.-sV 扫描各服务的版本2.-sC 使用nmap默认脚本进行扫描
3.-O 扫描⽬标机器的操作系统
udp扫描
namp -sU --top-ports 20 127.0.0.1 -oA nmapsc/udp
该扫描是对UDP协议进行发现,避免遗漏信息丢失攻击面
1.-sU 使用UDP的扫描方式
2.--top-ports 20 针对常⻅的20个端口进行扫描
脚本扫描
nmap --script=vuln -p22,80,443 127.0.0.1 -oA nmapsc/vuln
使用脚本进行漏洞扫描,vuln是nmap中默认扫描漏洞的一个常用脚本。
# 原理
一、没有nmap进行主机发现(Linux bash命令为例)
nmap -sn 192.169.3.0/24 其实是封装的系统的ping命令
对于 i 在 {1..254};do ping -c 1 -W 1 192.168.3.$i;done
解析:-c ->count数量 1 -W ->超时时间 1
bash循环语法: for i in {};do 命令;做
执行后发现Ctrl+c并不能停止,这里涉及到控制台信号的知识
可以按下Ctrl+z让这些命令放到后台去执行
然后输入命令 kill -9 %1 (%1是指最近执行的命令,结束进程)
进一步进行筛选优化执行(使用grep进行特征筛选)
对于 i 在 {1..254};do ping -c 1 -W 1 192.168.3.$i |grep 来自;做
二、没有nmap进行端口扫描
1. 使用进行旧版nc端口扫描
nmap --min-rate 1000 -p- 192.168.3.100
使用旧版nc进行端口扫描
kali中旧版nc使用 (并用来进行端口扫描) (1-65535中找就相当于大海捞针,所以就必须对信息进行过滤)
nc.teaditional -vv -z 192.168.3.120 1-65535
解析: -vv 详细信息输出 -z 零数据传输
所以需要搜索出一些开放的端口和一些未开放的端口,筛选出文本特征,然后利用grep进行筛选
nc.teaditional -vv -z 192.168.3.120 1-65535 2>&1|grep -v 拒绝
解析: grep 后面的 -v ,是反向的意思,就是将匹配到refused的数据删除。
2>&1 是⼀个重定向操作,它的作⽤是将标准错误输出( 2 )重定向到标准输出( 1 )的位置。这样做的⽬的是把原本会输出到标准错误输出(通常是显⽰错误信息等)的内容也合并到标准输出流中,以
便后续可以统⼀进⾏处理。
2.使用伪设备进行端口扫描
对于 i 在 {1..65535};do (echo < /dev/tcp/192.168.3.120/$i) &>/dev/null & printf “\n[+]开放
端口 is:%d\n“ ”$i“ ||printf “.”;做
解析:&& 需要前面的命令成功执行才会执行后面的命令
||不管前面有没有执行成功后面的命令,都会进行执行 printf “.” 主要显示执行进度
相关文章:
《掌握Nmap:全面解析网络扫描与安全检测的终极指南》
nmap # 简介(帮助) 用法:nmap [扫描类型] [选项] {目标指定内容} 简介(帮助) 用法:nmap [扫描类型] [选项] {目标指定内容} 一、目标指定: 可以传入主机名、IP 地址、网络等。 例如&a…...
k8s-Informer概要解析(2)
Client-go 主要用在 k8s 控制器中 什么是 k8s Informer Informer 负责与 kubernetes APIServer 进行 Watch 操作,Watch 的资源,可以是 kubernetes 内置资源对象,也可以 CRD。 Informer 是一个带有本地缓存以及索引机制的核心工具包&#x…...
UE5基本数据类型
bool: 表示布尔值,只有两个取值:true 或 false,用于表示逻辑条件。int8: 表示 8 位的有符号整数,范围是 −128−128 到 127127。uint8: 表示 8 位的无符号整数,范围是 00 到 255255。int16: 表示 16 位的有符号整数&am…...
Next.js 系统性教学:中间件与国际化功能深入剖析
更多有关Next.js教程,请查阅: 【目录】Next.js 独立开发系列教程-CSDN博客 目录 一、Next.js 中间件 (Middleware) 功能解析 1.1 什么是中间件? 1.2 Next.js 中间件的工作机制 1.3 中间件的功能应用 身份验证与授权 请求重定向 修改请…...
鸿蒙HarmonyOS元服务应用开发实战完全指导
内容提要 元服务概述 元服务开发流程 第一个元服务开发 元服务部署与运行 一、服务概述 1、什么是元服务 在万物互联时代,人均持有设备量不断攀升,设备种类和使用场景更加多样,使得应用开发、应用入口变得更加复杂。在此背景下&#x…...
CT中的2D、MPR、VR渲染、高级临床功能
CT中的2D、MPR、VR渲染 在CT(计算机断层扫描)中,2D、MPR(多平面重建)、VR(体积渲染)是不同的图像显示和处理技术,它们各自有独特的用途和优势。下面分别介绍这三种技术:…...
利用docker-compose来搭建flink集群
1.前期准备 (1)把docker,docker-compose,kafka集群安装配置好 参考文章: 利用docker搭建kafka集群并且进行相应的实践-CSDN博客 这篇文章里面有另外两篇文章的链接,点进去就能够看到 (2&…...
力扣打卡10:K个一组翻转链表
链接:25. K 个一组翻转链表 - 力扣(LeetCode) 这道题需要在链表上,每k个为一组,翻转,链接。 乍一看好像比较容易,其实有很多细节。比如每一组反转后怎么找到上一组的新尾,怎么找到…...
深度学习详解
深度学习(Deep Learning,DL)是机器学习(Machine Learning,ML)中的一个子领域,利用多层次(深层)神经网络来自动从数据中提取特征和规律,模仿人脑的神经系统来进…...
鸿蒙分享(一):添加模块,修改app名称图标
码仓库:https://gitee.com/linguanzhong/share_harmonyos 鸿蒙api:12 新建公共模块common 在entry的oh-package.json5添加dependencies,引入common模块 "dependencies": {"common": "file:../common" } 修改app名称&…...
【Redis】not support: redis
1、查看redis进程 2、查看是否安装redis扩展,此处以宝塔为例...
【集群划分】含分布式光伏的配电网集群电压控制【33节点】
目录 主要内容 模型研究 1.节点电压灵敏度的计算 2.Kmeans聚类划分 3.集群K值 部分代码 运行结果 下载链接 主要内容 该程序参考文献《含分布式光伏的配电网集群划分和集群电压协调控制》,基于社团检测算法,实现基于电气距离和区域电压调节能…...
嵌入式蓝桥杯学习5 定时中断实现按键
Cubemx配置 打开cubemx。 前面的配置与前文一样,这里主要配置基本定时器的定时功能。 1.在Timer中点击TIM6,勾选activated。配置Parameter Settings中的预分频器(PSC)和计数器(auto-reload Register) 补…...
【Java】类似王者荣耀游戏
r77683962/WangZheYouDianRongYao 运行效果图: 类似王者荣耀游戏运行效果图_哔哩哔哩_bilibili...
C++<基本>:union是没有构造函数和析构函数的
今天发现当我在union中包含了多个结构体时,结构体有默认构造函数时,编译报错。 问题点: union不支持构造函数和析构函数union中的元素本身也是不支持构造函数和析构函数的。包含union的结构体也不支持构造函数和析构函数。 出错代码如下&a…...
SQL中IN和NOT操作符的用法
1. IN操作符(布尔逻辑) 在SQL中,IN 是一个用于检查某个字段值是否包含在给定的多个可能值中的布尔操作符。它经常与条件表达式一起使用,通常出现在WHERE子句中。 用法: IN操作符用来确定某个字段的值是否存在于给定…...
C++平常学习用的
4.1 友元函数 4.2 友元类 5.2 类模板 7.2 虚函数dynamic_cast运算 7.2 纯虚函数和抽象类...
JAVA |日常开发中Servlet详解
JAVA |日常开发中Servlet详解 前言一、Servlet 概述1.1 定义1.2 历史背景 二、Servlet 的生命周期2.1 加载和实例化2.2 初始化(init 方法)2.3 服务(service 方法)2.4 销毁(destroy 方法) 三、Se…...
QT实战--QTreeWidget实现两种行颜色+QListWidget样式
本文主要介绍了QTreeWidget实现两种行颜色、点击打开父节点以及设置父子节点之间距离,同时附带介绍了QListWidget样式 树效果图: 列表效果图: 1.树样式的实现 1)使用代码: m_pLeftTreeWidget = new QTreeWidget(this);m_pLeftTreeWidget->setObjectName("suolue_t…...
RPA在IT运维中的实践:自动化监控与维护
一、引言 1. IT运维面临的挑战与RPA的机遇 在IT运维领域,日常的监控、维护和故障响应等工作占据了大量的时间和资源。随着技术的发展,RPA技术提供了自动化这些重复性任务的可能性,从而释放IT团队的潜力,让他们能够专注于更复杂和…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...
aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
STL 2迭代器
文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器? 1.迭代器…...
