当前位置: 首页 > news >正文

【工具进阶】使用 Nmap 进行有效的服务和漏洞扫描

在渗透测试中,Nmap 是一款功能强大的经典工具。其应用场景广泛,包括主机发现、端口扫描、服务检测等。然而,要充分发挥 Nmap 的潜力,需要遵循科学的流程和规范。本文将为您详细介绍如何使用 Nmap 进行高效的渗透测试,同时分享一些常见的注意事项和优化建议。


1. 主机发现

主机发现是使用 Nmap 的第一步,其目的是确定网络中有哪些 IP 地址处于活动状态。直接对整个 C 段进行大规模扫描并不推荐,因为这样会产生大量流量,极易引起目标的注意和防御。正确的操作方法是采用低流量的扫描方式,逐步缩小目标范围。

以下是主机发现的基本命令:

sudo nmap -sn 192.168.1.0/24

-sn 参数用于执行 ping 扫描,仅检测哪些主机在线,而不进行端口扫描。例如,在一个 C 段中可能只有三到五个 IP 是活动的,这样可以大幅减少后续扫描的时间和资源消耗。


2. 全端口扫描

在完成主机发现后,可以针对每个在线的 IP 地址进行全端口扫描。此步骤的目的是列出主机上所有开放的端口。

示例命令如下:

sudo nmap -p- 192.168.1.1

-p- 参数表示扫描所有端口(0-65535)。单个 IP 地址的全端口扫描大约会产生 4MB 左右的流量,这在可接受范围内。

为了进一步筛选开放的端口,可以使用以下命令:

sudo nmap -p- 192.168.1.1 --open

--open 参数用于仅显示处于开放状态的端口,避免冗余信息干扰。


3. 服务与版本检测

在确定开放端口后,需要进一步探测端口上运行的服务及其版本信息。这一步对于判断潜在的漏洞非常关键。

示例命令:

sudo nmap -p21,22,23 -sV 192.168.1.1

-sV 参数用于探测服务的版本信息。通过这一过程,可以判断服务是否存在已知漏洞,从而为后续的漏洞利用打下基础。

Nmap 的服务探测(-sV 参数)主要基于网络层信息,虽然足够准确,但在某些情况下可能达不到应用层的精确度。如果需要更高精度,可以结合 Metasploit Framework (MSF) 的模块进行探测。MSF 会通过发送应用层探测包提供更准确的结果。

Nmap 作为一款经典工具,其指纹库和漏洞库一直以来都非常全面,这也是它经久不衰的重要原因。尽管一些新兴工具在扫描速度和性能上可能优于 Nmap,但在指纹识别方面依然无法企及。因此,建议在遇到某个端口服务时,务必使用 Nmap 进行扫描。Nmap 会通过收集服务的指纹信息和发包特征进行综合判断,其结果通常是很准确的。

然而,Nmap 的局限性也源于它的优秀。由于 Nmap 发包特征过于明显,蓝方通常能够轻松识别和标记这些流量特征,这使得它在隐蔽性和灵活性方面稍显不足。这也成为它在某些场景中被逐渐淡化的主要原因。

话又说回来,在靶机渗透,乃至OSCP等考试过程中,目标机器对 Nmap 并没有实网环境中那么多的检测或限制,因此使用 Nmap 已经完全足够,且能十分优秀地完成渗透任务。


4. 漏洞探测

Nmap 的漏洞探测是通过 Nmap 脚本引擎 (NSE) 实现的。NSE 提供了一个丰富的脚本库,包含了多种功能强大的脚本,这些脚本能够自动化执行不同类型的扫描任务,如服务检测、漏洞扫描以及信息收集等。通过这些脚本,Nmap 能够高效识别目标系统中从服务漏洞到配置错误的各种安全漏洞。

NSE 脚本文件存储在以下目录中:

/usr/share/nmap/scripts

该目录中存放着大量的脚本文件,用户可以根据实际需求选择适当的脚本来进行漏洞探测。脚本的命名通常能反映其功能,因此可以根据目标系统的特点,选择合适的脚本进行扫描。


基本用法

在 Nmap 中进行漏洞探测时,常用的参数是 --script,它允许用户指定要运行的脚本或脚本类别。通过该参数,Nmap 会根据选择的脚本来执行相应的漏洞探测任务。以下是两种常见的用法:

  1. 执行所有漏洞相关的脚本
sudo nmap --script=vuln -p22,80,8088 192.168.1.1
  • --script=vuln:运行所有与漏洞探测相关的 NSE 脚本。Nmap 会自动根据目标主机的开放端口选择合适的漏洞扫描脚本。扫描内容涵盖了常见的漏洞类型,如远程代码执行、信息泄露、权限提升等。
  1. 执行特定协议的漏洞扫描
sudo nmap --script=smb* 192.168.1.1
  • --script=smb*:运行所有以 “smb” 开头的脚本,这些脚本主要用于扫描与 SMB 协议相关的漏洞。常见的漏洞包括弱密码、配置错误、历史漏洞等。

  • 脚本调优:可以使用 --script-args 参数传递额外的选项和参数,以调整脚本的行为。例如,可以设置 http-user-agentsmb-username 等参数。

常见的漏洞探测脚本

Nmap 脚本库包含了大量的漏洞探测脚本,以下是一些常用的脚本及其功能:

  • vuln/ms08_067_netapi:用于检测 Windows 系统上的 MS08-067 漏洞(广为人知的 SMB 漏洞)。
  • smb-vuln-ms17-010:用于检测 Windows 上的 EternalBlue 漏洞,该漏洞导致了 WannaCry 等勒索病毒的传播。
  • http-vuln-cve2017-5638:检测 Apache Struts 2 上的远程代码执行漏洞(CVE-2017-5638)。
  • ftp-vsftpd-backdoor:用于检测是否存在特定版本的 vsftpd FTP 服务漏洞,该漏洞会使系统受到远程攻击。
  • smb-enum-shares:列出目标系统共享的文件夹,可以帮助识别潜在的敏感信息泄露。

5. 理解端口与服务的关联

需要注意的是,端口号并不能直接与服务类型划等号。例如,虽然 21 端口默认运行 FTP 服务,但管理员可以将其配置为其他用途。类似地,80 端口不一定承载 Web 服务,也可能运行 FTP 或 SSH 服务。靶机通常喜欢将服务配置到非传统端口,例如将 SSH 服务设置在 2222 端口,或将 MySQL 服务运行在 33060 端口。

因此,避免固化思维显得尤为重要。正确的方法是依据 Nmap 等工具提供的服务指纹识别结果,而非仅凭默认端口号下结论。


总结

本文分享了一些关于 Nmap 的使用建议和方法论,希望对大家有所启发。

科学的操作流程和灵活的工具选择,是提升渗透测试效率的关键。通过合理利用 Nmap 的功能,您可以更好地发现目标网络中的安全隐患,为后续的漏洞挖掘奠定坚实基础。

相关文章:

【工具进阶】使用 Nmap 进行有效的服务和漏洞扫描

在渗透测试中,Nmap 是一款功能强大的经典工具。其应用场景广泛,包括主机发现、端口扫描、服务检测等。然而,要充分发挥 Nmap 的潜力,需要遵循科学的流程和规范。本文将为您详细介绍如何使用 Nmap 进行高效的渗透测试,同…...

【工具推荐】XSS 扫描器-XSStrike

介绍 XSStrike 是一个跨站点脚本检测套件,配备四个手写解析器、一个智能有效载荷生成器、一个强大的模糊测试引擎以及速度极快的爬虫。XSStrike 不会像其他工具一样注入有效载荷并检查其是否有效,而是使用多个解析器分析响应,然后通过与模糊…...

Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)

概念 事务定义 事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。…...

Zabbix5.0版本(监控Nginx+PHP服务状态信息)

目录 1.监控Nginx服务状态信息 (1)通过Nginx监控模块,监控Nginx的7种状态 (2)开启Nginx状态模块 (3)配置监控项 (4)创建模板 (5)用默认键值…...

C# 设计模式概况

什么是设计模式 大家熟知的GOF23种设计模式,源自《Design Patterns: Elements of Reusable Object-Oriented Software》一书,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著,四人组Gang of Four简称GOF。总结了在面向…...

Nginx 配置 SSL(HTTPS)详解

Nginx作为一款高性能的HTTP和反向代理服务器,自然支持SSL/TLS加密通信。本文将详细介绍如何在Nginx中配置SSL,实现HTTPS的访问。 随着互联网安全性的日益重要,HTTPS协议逐渐成为网站加密通信的标配。Nginx作为一款高性能的HTTP和反向代理服务…...

论文解读之Generative Dense Retrieval: Memory Can Be a Burden

本次论文解读,博主带来生成式稠密检索:记忆可能成为一种负担的论文分享 一、简介 生成式检索根据给定的查询,自回归地检索相关的文档标识符,在小规模的文档库中表现不错,通过使用模型参数记忆文档库,生成…...

RTC:实时时钟

RTC:实时时钟 1、实时时钟2、闹钟中断3、秒中断4、输出功能5、BKP的读写6、BKP的侵入事件 1、实时时钟 ①RTC.c #include "RTC.h"/*** brief:RTC初始化函数*/ RCC_PeriphCLKInitTypeDef RTCPeriphClkInit; //RTC时钟配置结构体 RTC_HandleT…...

mqtt python rtsp拉流图传测试

GitHub - robmarkcole/mqtt-camera-streamer: Stream images from a connected camera over MQTT, view using Streamlit, record to file and sqlite 用这个项目,按照readme配置,把config里面的ip配置成接收端的ip地址。 该装的包装完之后&#xff0c…...

win32汇编环境,对话框程序中通过资源显示bmp图像

;运行效果 ;win32汇编环境,对话框程序中通过资源显示bmp图像 ;通过资源的方式,会把图像固定在exe文件里,会变大。通过读取文件的方式,没有固定在exe文件里,也可以随时换图像文件,所以exe文件较小 ;直接抄进RadAsm可编译…...

《探索人工智能的多元学派:符号主义、连接主义与行为主义》

在人工智能发展的进程中,不同学派从各自的角度诠释着智能的本质。其中符号主义、连接主义和行为主义学派占据着重要地位,它们以独特的方式推动着人工智能的发展。 符号主义学派:逻辑推理的核心 符号主义学派认为人工智能源于对逻辑符号的处…...

2024年终总结及计划

24年收获不少,早就想总结下,但是有的问题不想去思考,也不想去面对,就晚了几天,趁着加班总结反思下。 一、计划完成情况 1、生活 ①运动:继续坚持每周慢跑15公里,这是必须要做的。另外&#x…...

数据挖掘——关联规则挖掘

数据挖掘——关联数据挖掘 关联数据挖掘关联规则关联规则挖掘问题:具体挖掘过程Apriori 产生关联规则 关联数据挖掘 关联分析用于发现隐藏在大型数据集中的令人感兴趣的联系,所发现的模式通常用关联规则或频繁项集的形式表示。 关联规则反映一个事物与…...

JVM实战—9.线上FGC的几种案例

大纲 1.如何优化每秒十万QPS的社交APP的JVM性能(增加S区大小 优化内存碎片) 2.如何对垂直电商APP后台系统的FGC进行深度优化(定制JVM参数模版) 3.不合理设置JVM参数可能导致频繁FGC(优化反射的软引用被每次YGC回收) 4.线上系统每天数十次FGC导致频繁卡顿的优化(大对象问题…...

STM32-BKP备份寄存器RTC实时时钟

一、原理 Unix: 一些系统是使用32bit有符号数存储,实际范围为-2,147,483,648到2,147,483,647‌即~ 经过计算int32数据会在2038年1月19日溢出,可以看到转换的为北京时间。 STM32的时间戳为无符号时间戳。 我们需要把秒计数器的时间通过计算…...

HTML-文本标签

历史上&#xff0c;网页的主要功能是文本展示。所以&#xff0c;HTML 提供了大量的文本处理标签。 1.<div> <div>是一个通用标签&#xff0c;表示一个区块&#xff08;division&#xff09;。它没有语义&#xff0c;如果网页需要一个块级元素容器&#xff0c;又没…...

香橙派5plus单独编译并安装linux内核无法启动的原因分析与解决记录

1 说明 我依照官方手册编译单独编译linux内核&#xff0c;安装后重启出现内核启动失败的问题,编译和安装步骤如下&#xff1a;# 1. 克隆源码 git clone --depth1 -b orange-pi-6.1-rk35xx https://github.com/orangepi-xunlong/linux-orangepi# 2 配置源码 make rockchip_linu…...

嵌入式应用软件开发中C语言方向面试题

嵌入式应用软件开发中C语言方向面试题随笔 前言一、C语言基础二、嵌入式开发相关三、硬件相关知识五、实际编程问题前言 做嵌入式开发这么多年了,简单记录下C语言方向常见面试题,这里是应用软件方向的。 一、C语言基础 C语言的指针与数组的区别是什么?指针:指针是一个变量…...

linux 系统配置ip

最常见的配置方法是通过 DHCP 获取动态 IP 地址&#xff0c;或者手动配置一个静态 IP 地址。下面我将详细说明这两种常见的配置方法。 通过 DHCP 自动获取 IP 地址 如果你的开发板连接到网络&#xff08;比如通过网线或者 Wi-Fi&#xff09;&#xff0c;并且网络环境支持 DHCP…...

低代码开发:开启企业数智化转型“快捷键”

一、低代码开发浪潮来袭&#xff0c;企业转型正当时 在当今数字化飞速发展的时代&#xff0c;低代码开发已如汹涌浪潮&#xff0c;席卷全球。从国际市场来看&#xff0c;诸多企业巨头纷纷布局低代码领域&#xff0c;像微软的 PowerApps、OutSystems 等平台&#xff0c;凭借强大…...

Tailwind CSS 实战:性能优化最佳实践

在现代网页开发中,性能优化就像是一场精心策划的马拉松。记得在一个电商项目中,我们通过一系列的性能优化措施,让页面加载时间减少了 60%,转化率提升了 25%。今天,我想和大家分享如何使用 Tailwind CSS 进行性能优化。 优化理念 性能优化就像是在打磨一块璞玉。我们需要通过各…...

[redux] useDispatch的两种用法

先重写2个方法先, 方便ts类型推导,如果你看不懂为什么这么写, 先看我这篇 [redux] ts声明useSelector和useDispatch-CSDN博客 export type RootState ReturnType<typeof store.getState>; export type AppDispatch typeof store.dispatch; export const useAppDispat…...

Postgresql 命令还原数据库

因为PgAdmin打不开&#xff0c;但是数据库已经安装成功了&#xff0c;这里借助Pg命令来还原数据库 C:\Program Files\PostgreSQL\15\bin\psql.exe #链接数据库 psql -U postgres -p 5432#创建数据库 CREATE DATABASE "数据库名称"WITHOWNER postgresENCODING UTF8…...

电脑找不到mfc110.dll文件要如何解决?Windows缺失mfc110.dll文件快速解决方法

一、mfc110.dll文件的重要性 mfc110.dll&#xff0c;全称Microsoft Foundation Class Library 110&#xff0c;是Microsoft Visual C Redistributable for Visual Studio 2012的一部分。这个动态链接库&#xff08;DLL&#xff09;文件对于支持基于MFC&#xff08;Microsoft F…...

Elasticsearch与数据库数据一致性:最佳实践与解决方案

在现代应用程序中&#xff0c;Elasticsearch&#xff08;ES&#xff09;作为一个高效的分布式搜索引擎&#xff0c;常常与数据库一同使用&#xff0c;以提供强大的搜索、分析和数据可视化功能。然而&#xff0c;数据库和Elasticsearch之间的同步与一致性常常成为一个挑战。如何…...

vue导入导出excel、设置单元格文字颜色、背景色、合并单元格(使用xlsx-js-style库)

npm i xlsx-js-style <template><button click"download">下载 Excel 表格</button><el-table :data"tableData" style"width: 100%"><el-table-column prop"date" label"日期" width"180…...

电子电气架构 --- 中央处理器HPC及软件架构

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…...

代码实战:基于InvSR对视频进行超分辨率重建

Diffusion Models专栏文章汇总:入门与实战 前言:上一篇博客《使用Diffusion Models进行图像超分辩重建》中讲解了InvSR的原理,博主实测的效果是非常不错的,和PASD基本持平。这篇博客就讲解如何利用InvSR对视频进行超分辨率重建。 目录 环境准备 代码讲解 环境准备...

一文读懂主成分分析法(PCA)

主成分分析法&#xff08;PCA&#xff09; 主成分分析法&#xff08;PCA&#xff09;主成分分析的基本思想主成分的计算主成分分析的原理主成分分析的特点主成分分析的应用 主成分分析法&#xff08;PCA&#xff09; 主成分分析的基本思想 PCA是1901 年Pearson在研究回归分析…...

Redis(基础篇 + 实践篇 )

01 | 基本架构&#xff1a;一个键值数据库包含什么&#xff1f; Redis 作为一个内存数据存储系统&#xff0c;它的架构设计非常简洁&#xff0c;但功能非常强大。理解其核心架构对高效使用 Redis 至关重要。 客户端与服务器架构&#xff1a; 客户端通过 TCP 协议连接到 Redis …...