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

什么是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 发现。

相关推荐
热爱Liunx的丘丘人4 分钟前
Ansible-doc及常用模块
linux·运维·服务器·ansible
tianyuanwo41 分钟前
OS/DevOps程序员切入Harness Engineering的入门与进阶指南
运维·devops·harness
飞飞传输1 小时前
国产化FTP替代方案哪个好?选对平台让传输更安全高效
大数据·运维·安全
一生了无挂1 小时前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器
王飞飞不会飞1 小时前
Mac 安装Hermes Agent 过程记录
运维·深度学习·机器学习
徐子元竟然被占了!!2 小时前
Nginx
运维·nginx
SPC的存折3 小时前
6、Docker常用配置
运维·docker·容器
yngsqq3 小时前
编译的dll自动复制到指定目录并重命名
java·服务器·前端
聊点儿技术3 小时前
IP风险等级评估在保险承保中的三个核心应用场景——从投保核验到持续监控
服务器·金融·ip·保险·ip风险评估·ip风险等级·风险评估api
似水এ᭄往昔4 小时前
【Linux】--基础IO
linux·服务器