【工具进阶】使用 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 会根据选择的脚本来执行相应的漏洞探测任务。以下是两种常见的用法:
- 执行所有漏洞相关的脚本
sudo nmap --script=vuln -p22,80,8088 192.168.1.1
--script=vuln
:运行所有与漏洞探测相关的 NSE 脚本。Nmap 会自动根据目标主机的开放端口选择合适的漏洞扫描脚本。扫描内容涵盖了常见的漏洞类型,如远程代码执行、信息泄露、权限提升等。
- 执行特定协议的漏洞扫描
sudo nmap --script=smb* 192.168.1.1
-
--script=smb*
:运行所有以 “smb” 开头的脚本,这些脚本主要用于扫描与 SMB 协议相关的漏洞。常见的漏洞包括弱密码、配置错误、历史漏洞等。 -
脚本调优:可以使用
--script-args
参数传递额外的选项和参数,以调整脚本的行为。例如,可以设置http-user-agent
或smb-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地址。 该装的包装完之后,…...

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-文本标签
历史上,网页的主要功能是文本展示。所以,HTML 提供了大量的文本处理标签。 1.<div> <div>是一个通用标签,表示一个区块(division)。它没有语义,如果网页需要一个块级元素容器,又没…...

香橙派5plus单独编译并安装linux内核无法启动的原因分析与解决记录
1 说明 我依照官方手册编译单独编译linux内核,安装后重启出现内核启动失败的问题,编译和安装步骤如下:# 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 地址,或者手动配置一个静态 IP 地址。下面我将详细说明这两种常见的配置方法。 通过 DHCP 自动获取 IP 地址 如果你的开发板连接到网络(比如通过网线或者 Wi-Fi),并且网络环境支持 DHCP…...

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

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...