网安实验系列二:服务器信息收集

什么是nmap:

Nmap(Network Mapper)是一款功能强大的开源网络发现和安全审计工具。它由Gordon Lyon(网名Fyodor)于1997年开发,因其全面的功能和灵活性,被网络管理员和安全专业人员广泛用于网络资产管理、安全评估和渗透测试。

简单来说,Nmap就像网络世界的"探测器"或"地图绘制工具",可以帮助你了解网络中有哪些设备、它们提供什么服务以及潜在的弱点。

🔍 核心功能

Nmap的功能远不止简单的端口扫描,其核心能力主要包括:

主机发现 (Host Discovery)

识别网络中有哪些主机是在线的。它可以通过发送ICMP Echo请求(Ping)、TCP SYN包等多种方式来判断目标是否存活。

端口扫描 (Port Scanning)

这是Nmap最广为人知的功能。它可以检测目标主机上哪些网络端口是开放的、关闭的或被防火墙过滤的。Nmap支持多种扫描技术,例如:

TCP SYN扫描 (-sS):一种快速且隐蔽的"半开放"扫描,不建立完整的TCP连接,不易被记录。

TCP连接扫描 (-sT):完成完整的TCP三次握手,稳定但容易被发现。

UDP扫描 (-sU):用于探测DNS、SNMP等UDP服务。

服务与版本探测 (Service and Version Detection)

在发现开放端口后,Nmap可以进一步探测运行在该端口上的具体服务及其版本号(例如,识别出80端口运行的是Apache httpd 2.4.57)。这对于评估服务是否存在已知漏洞至关重要。

操作系统检测 (OS Detection)

通过分析目标主机TCP/IP协议栈的响应特征(即"指纹"),Nmap可以推断出目标主机使用的操作系统类型和版本(例如,Windows 10, Ubuntu 20.04)。

脚本引擎 (NSE, Nmap Scripting Engine)

这是Nmap的强大扩展功能。它允许用户使用Lua语言编写脚本,以实现自动化的高级任务,如漏洞检测、漏洞利用、暴力破解和更深入的信息服务枚举。

🛠️ 常用参数速查

为了方便你快速上手,这里整理了几个最常用的Nmap参数:

表格

参数 功能说明

-sS TCP SYN(半开放)扫描,速度快且隐蔽。

-sT TCP全连接扫描,无需root权限。

-sV 探测开放端口的服务及版本信息。

-O 启用操作系统检测。

-A 启用操作系统检测、版本检测、脚本扫描和路由跟踪,信息更全面。

-p 指定要扫描的端口,例如 -p 80,443 或 -p 1-1000。

-Pn 跳过主机发现,将所有目标视为在线,用于绕过禁Ping的主机。

怎么记忆:

参数 完整单词 记忆解析
-p Port 即"端口"。用来指定扫描的端口号(如 -p 80)。
-O Operating System 即"操作系统"。用来开启操作系统检测功能。
-A Aggressive 即"侵略性"或"强力"。因为它同时开启了系统版本、服务版本、脚本扫描等多种功能,扫描力度很大,所以叫 Aggressive。
-sV Service Version 即"服务版本"。用来探测端口上运行的具体软件版本(如 Apache 2.4)。

进入正文:

1.NMAP端口扫描

登录拓扑图左侧攻击端主机,用户名/密码:root/com.1234。右击桌面空白处,单击OpenTerminal Here选项,打开终端:

执行命令nmap -p 1-65535 192.168.100.202,对目标主机192.168.100.202进行全端口扫描,如图所示。从扫描结果中能发现,主机192.168.100.202开放了80、135、139、445、3306、3389等多个不同的端口(这里是正在扫描,时间特别长)

我们用ctrl+c中断命令,执行:nmap --top-ports 100 192.168.100.202扫描最常见的 100 个端口(覆盖绝大多数常用服务):Nmap 内部有一个按使用频率排序的端口列表,--top-ports 会直接引用这个列表,因此结果非常准确。

若想扫描指定的端口范围,-p后的端口数可根据情况改变,比如,指定扫描1-1000范围内的端口,执行命令nmap --p 1-1000 192.168.100.202

若指向扫描主机的某几个特定的端口,可以使用逗号将端口隔开。执行命令nmap --p 80,8080,3306 192.168.100.202,可扫描目标主机的80、8080、3306端口的状态,如图6所示,80、3306端口是开启状态,8080端口是关闭状态。

2.NMAP识别服务器版本

(1)根据端口扫描结果,能得知目标主机可能开放了3306数据库服务、3389远程桌面服务,但是结果中端口对应的协议不一定是准确的,很多管理员可能修改了服务器的默认端口,所以需要进一步进行服务器版本的识别。

(2)执行命令nmap-sV -p 1-65535 192.168.100.202,对目标主机进行全端口扫描并且使用-sV参数进行服务版本识别,如图7所示。根据扫描结果发现,80端口运行的是2.4.18版本的Apache服务;3306端口运行的是MySQL服务;3389运行的TCPwrapped服务(主机访问控制程序),说明TCP三次握手已经完成,但是没有和目标主机建立连接。即虽然目标主机可提供服务,但攻击端不在允许访问目标主机的名单列表中。

(3)根据扫描结果得知,服务器除了开放web服务外,还开启了数据库和远程桌面等相关服务,后续攻击端就可尝试对数据库和远程桌面存在的漏洞进行攻击,拿到服务器权限。

这里我就不使用这个命令了,时间太长了我们找一个端口举个例子:nmap -sV -p 80 192.168.100.202

信息解读:

核心结果:端口与服务详情

这是最关键的信息,展示了 80 端口的具体情况:

表格

列名 结果 含义
PORT 80/tcp 端口号/协议:80号端口,使用TCP协议。
STATE open 状态开放。说明该端口正在监听连接,可以访问。
SERVICE http 服务名称 :这是一个 Web 服务(超文本传输协议)。
VERSION Apache httpd 2.4.23 ... 详细版本:这是核心信息。

关于 VERSION 列的深度解读

Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45) 这一长串信息揭示了服务器的技术架构:

  1. Apache httpd 2.4.23

    • 这是一个 Web 服务器软件。
    • 版本:2.4.23。
    • 重要性:这个版本相对较旧,可能存在已知的安全漏洞。
  2. (Win32)

    • 这表明 Apache 是运行在 Windows 32位系统 上的。这通常暗示操作系统可能是 Windows Server 或较旧的 Windows 版本(如 Windows 7/XP)。
  3. OpenSSL/1.0.2j

    • 这是用于加密通信(HTTPS)的库。
    • 版本:1.0.2j。这也是一个较老的版本,可能存在安全风险。
  4. PHP/5.4.45

    • 这是服务器端的脚本语言。
    • 版本:5.4.45。
    • 重要性 :PHP 5.4 已经是停止维护的版本,不再接收安全更新,极易受到攻击。

其他信息

  • MAC Address: 02:E0:6A:3A:A4:A4 (Unknown):目标主机的物理地址,显示为未知厂商。
  • Service detection performed.:提示服务检测已完成。
  • Nmap done: 1 IP address (1 host up) scanned in 19.99 seconds:扫描耗时约 20 秒。

(1)执行命令nmap-O 192.168.100.202,识别目标主机的操作系统,如图8所示。执行命令nmap--O --A 192.168.100.202,识别目标主机的操作系统以及版本,这里我执行第二条就好:

原理上课讲过:这里给出通义解释:

🔍 Nmap 识别操作系统的核心原理

Nmap 主要通过以下三个维度的特征进行比对:

1. TCP/IP 协议栈指纹特征

Nmap 会发送 11 种不同的 TCP、UDP 和 ICMP 探测包,然后观察目标主机的回应。主要分析以下特征:

  • 窗口大小(Window Size):不同系统对 TCP 窗口大小的默认设置不同(例如 Windows 通常是 8192,Linux 可能是 65535)。
  • TCP 选项(TCP Options):比如是否支持时间戳、最大段大小(MSS)、窗口缩放等,以及它们的顺序。
  • TTL(Time to Live)值:数据包在被丢弃前能经过的最大跳数。Linux 通常初始 TTL 是 64,Windows 是 128。
  • ACK 值:某些系统在回应时,ACK 字段的计算方式略有不同。
  • ICMP 响应行为:对特定 ICMP 包的响应方式。
2. 使用内置的指纹数据库

Nmap 内部维护了一个庞大的操作系统指纹数据库(nmap-os-db),里面记录了成千上万种已知操作系统的特征。

当你运行 nmap -Onmap -A 时,Nmap 会:

  1. 向目标发送探测包。
  2. 收集目标的响应数据。
  3. 将这些数据与指纹库中的记录进行比对。
  4. 找出最匹配的操作系统。
3. -A-O 的区别
  • -O:仅启用基本的操作系统检测。
  • -A :是 Aggressive(激进) 模式,它不仅包含 -O,还自动启用:
    • 版本检测(-sV:探测服务版本(如 Apache 2.4.23)。
    • 脚本扫描(--script=default:运行默认的 NSE 脚本(如漏洞检测、信息收集)。
    • traceroute(--traceroute:追踪路由路径。

所以,-A-O 更全面,但也更容易被防火墙或 IDS 发现。

相关推荐
bwz999@88.com2 小时前
ubuntu24.04更换国内源
linux·运维·服务器
腾科IT教育2 小时前
红帽认证考试全国考点信息新发布,便捷参考
运维·服务器·红帽认证·linux考试·rhcsa考试
历程里程碑2 小时前
Protobuf 环境搭建:Windows 与 Linux 系统安装教程
linux·运维·数据结构·windows·线性代数·算法·矩阵
软件资深者2 小时前
OpenClaw 本地安装 vs 网页版龙虾:全方位对比 + 2026 最新一键安装客户端(新手零门槛搭建专属 AI 助理)
运维·人工智能·自动化·飞书·数字员工·openclaw·龙虾
vvw&2 小时前
如何从 Ubuntu 24.04 升级到 Ubuntu 25.04
linux·运维·服务器·ubuntu
CDN3602 小时前
CSDN 交流|360CDN 系列产品使用感受与避坑建议
运维·网络安全
CDN3602 小时前
源站防护升级:360CDN 高防服务器部署与优化
运维·服务器
qzhqbb3 小时前
Web 服务器(Nginx、Apache)
服务器·前端·nginx
Bruce20489983 小时前
OpenClaw 5大高频自动化场景落地(附代码/配置)
运维·自动化