《掌握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团队的潜力,让他们能够专注于更复杂和…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
