【工具进阶】使用 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 等平台,凭借强大…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...
