服务与操作系统指纹识别
使用 Nmap -sV 和 -O 识别正在运行的服务和操作系统。
服务与操作系统指纹识别 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。
指纹识别为何重要
了解确切的服务版本和操作系统后,开放端口列表就能转化为可执行的目标列表。版本数据可以直接对应到 CVE 编号和漏洞利用模块。
使用 -sV 进行服务版本检测
nmap -sV 会使用特定于服务的有效载荷探测每个开放端口,并将响应与其探测数据库(nmap-service-probes)进行匹配,以识别软件及其版本。
sudo nmap -sV -p 22,80,443,3306 192.168.1.100
# 22/tcp open ssh OpenSSH 7.4
# 80/tcp open http nginx 1.18.0
# 3306/tcp open mysql MySQL 5.7.38-sV 的强度级别
--version-intensity 标志(0—9)控制 Nmap 探测的主动程度。强度越高,发现的服务越多,但耗时更长,产生的网络噪声也更大。
sudo nmap -sV --version-intensity 9 192.168.1.100
# 9 = try all probes (slowest, most accurate)
# 0 = only most likely probes (fastest)使用 -O 进行操作系统检测
nmap -O 使用 TCP/IP 协议栈指纹识别——TTL 值、TCP 窗口大小和 IP 选项——来推测操作系统。结果包括置信度百分比。
sudo nmap -O 192.168.1.100
# OS details: Linux 4.15 - 5.6
# Network Distance: 1 hop
# Requires at least one open and one closed port主动扫描 -A
-A 通过一个标志同时启用操作系统检测、版本检测、脚本扫描和路由跟踪。它适合在实验环境中快速执行全面扫描。
sudo nmap -A 192.168.1.100
# Combines: -O -sV -sC --traceroute使用 Netcat 抓取横幅
横幅抓取会手动获取服务器在建立连接时发送的服务横幅。这是完整 Nmap 指纹识别的一种简单且低噪声替代方式。
# HTTP banner
nc 192.168.1.100 80
GET / HTTP/1.0
# SSH banner
nc 192.168.1.100 22
# Returns: SSH-2.0-OpenSSH_8.9p1使用 curl 抓取横幅
curl 的 -I 标志只获取响应标头,从而揭示服务器软件、版本和技术栈,而无需下载内容。
curl -I http://192.168.1.100
# HTTP/1.1 200 OK
# Server: Apache/2.4.52 (Ubuntu)
# X-Powered-By: PHP/8.1.2使用 WhatWeb 进行网站指纹识别
WhatWeb 能够识别网站技术:CMS、JavaScript 库、分析工具、服务器软件和框架。它专门用于网站应用侦察。
whatweb http://target.com
# Output:
# WordPress [v6.2], Apache[2.4.52],
# PHP[8.1], jQuery[3.6.0]用于指纹识别的 Nmap 脚本引擎
NSE 脚本扩展了 Nmap 的指纹识别能力。http-server-header、ssh-hostkey 和 banner 脚本可以提取详细信息。
nmap --script=banner 192.168.1.100
nmap --script=http-server-header 192.168.1.100
nmap --script=ssh-hostkey 192.168.1.100关联 CVE
获得服务版本后,可以搜索国家漏洞数据库(NVD),或使用 searchsploit 等工具,查找与确切版本匹配的已知漏洞利用。
searchsploit apache 2.4.49
searchsploit openssh 7.4
# Or search NVD:
# https://nvd.nist.gov/vuln/search防御者如何规避指纹识别
防御者可以隐藏横幅:移除服务器标头、自定义 SSH 横幅,以及使用端口敲门。但通过隐藏实现安全只能提高攻击门槛,并不能解决问题。
# Apache: suppress version
ServerTokens Prod
ServerSignature Off
# Nginx
server_tokens off;快速检查
哪个 Nmap 标志会组合操作系统检测、版本检测和脚本扫描?
总结:指纹识别
指纹识别会将原始端口列表转化为可执行的情报。结合 -sV 和 -O 进行自动检测,使用手动横幅抓取进行低噪声确认,并使用 WhatWeb 识别网站技术栈。请始终将版本字符串与 CVE 数据库进行交叉比对。
常见问题解答
「服务与操作系统指纹识别」课时是免费的吗?
是的 — 「服务与操作系统指纹识别」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。
「服务与操作系统指纹识别」这节课中我会学到什么?
使用 Nmap -sV 和 -O 识别正在运行的服务和操作系统。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cyber Security Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「服务与操作系统指纹识别」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cyber Security Academy 课中编写并运行代码吗?
能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Nmap 端口扫描技术
- 服务与操作系统指纹识别
- Netcat:网络瑞士军刀
- 网络枚举脚本编写