mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1498 字
4 分钟
内网运维与排查指南:跳板机配置、存活探测与网络拓扑推理

在进行局域网内网运维、资产梳理或安全加固时,技术人员常常需要借助单台主机作为跳板进入内网,对复杂的局域网资产进行探测与拓扑分析。

但在实际场景中,多级 NAT 转换、DHCP 动态租期以及各种网络策略往往会给排查带来重重阻碍。

本文将这些排查定位过程拆解为数个独立的技术模块,分享在跳板机配置、内网存活资产探测以及网络拓扑推理等方面的实用技术手段。

本文仅适用于已取得明确授权的运维和安全加固环境。命令中的地址统一使用文档保留网段,设备名也使用通用代称。


技术手段一:Windows 环境下 OpenSSH 跳板机的密钥登录配置#

在远程协助中,使用 Windows 操作系统作为内网跳板机是非常常见的方案。但在配置 Windows 自带的 OpenSSH 服务时,经常会遇到管理员账号(Administrators 组)公钥登录失效的问题。

1.1 机制分析#

Windows 平台的 OpenSSH 实现与 Linux 存在关键差异:

  • 普通用户:密钥读取其主目录下的 ~/.ssh/authorized_keys
  • 管理员组(Administrators 组)用户:OpenSSH 默认会读取全局配置文件 C:\ProgramData\ssh\administrators_authorized_keys,而非用户个人的 .ssh 目录。
  • 严格的 ACL 限制:出于安全防护,Windows 对该全局授权文件的权限控制极为苛刻。若文件中包含了除 SYSTEM 和 Administrators 之外其他账户的任何读写权限,OpenSSH 服务将直接拒绝该公钥认证。

1.2 配置步骤#

若要成功配置 Administrators 组用户的公钥登录,需使用管理员权限打开 PowerShell,并依次执行以下命令:

Terminal window
$adminKeys = "C:\ProgramData\ssh\administrators_authorized_keys"
# 1. 写入 SSH 公钥
"ssh-ed25519 AAAAC3NzaC... your-comment" | Out-File -Encoding utf8 -Append $adminKeys
# 2. 移除普通已认证用户的访问权限 (防止因权限过宽被 OpenSSH 拒绝)
icacls $adminKeys /remove "NT AUTHORITY\Authenticated Users"
# 3. 禁用继承,确保仅 SYSTEM 和 Administrators 拥有完全控制权限
icacls $adminKeys /inheritance:r
icacls $adminKeys /grant "SYSTEM:F"
icacls $adminKeys /grant "Administrators:F"

通过以上步骤,即可在不降低系统安全性的前提下,打通安全的 SSH 远程运维管理隧道。


技术手段二:规避 SOCKS 代理缺陷的内网存活资产梳理#

在通过跳板机接入内网后,首要任务通常是梳理内网的存活 Windows 主机资产。此时,传统的远程网络扫描方式会受到代理协议的严重制约。

2.1 代理协议局限性#

若直接通过远程建立的 SOCKS 代理运行网络扫描工具(如 Nmap):

  • SOCKS 代理只支持 TCP/UDP 传输,无法承载 ICMP 协议。这导致常规的 Ping 扫描直接失效。
  • 当执行 TCP 端口扫描时,由于代理握手延迟和网络状态变化,会导致大量本已开放的端口被误报为关闭(False Negative)。

2.2 解决方案:跳板机本地执行 PowerShell 扫描#

为保证数据精准度,应当使用轻量化的脚本上传至跳板机本地执行,利用跳板机本地网络栈直接进行 TCP 445 (SMB) 端口的快速扫描。

以下是一个简易的多线程/超时控制探测思路,配合 Windows 内置的 nbtstat 命令,可以在短时间内精确抓取存活主机的 NetBIOS 名称,快速梳理资产:

Terminal window
# 简易端口存活探测代码段
$subnet = "192.0.2." # RFC 5737 文档保留网段
1..254 | ForEach-Object -Parallel {
$ip = "$using:subnet$_"
$tcpClient = New-Object System.Net.Sockets.TcpClient
$connection = $tcpClient.BeginConnect($ip, 445, $null, $null)
$wait = $connection.AsyncWaitHandle.WaitOne(150, $false) # 150ms 超时控制
if ($wait) {
$tcpClient.EndConnect($connection)
Write-Output "[+] Active SMB Target: $ip"
# 配合 nbtstat 抓取主机名
nbtstat -A $ip | Select-String "UNIQUE" | Select-Object -First 1
}
$tcpClient.Close()
}

通过在跳板机上本地执行此类轻量探测,可以完美避开远程 SOCKS 代理带来的漏报问题。


技术手段三:局域网网络拓扑的逻辑推理与网关定位#

在没有网络拓扑图或网关管理凭据的陌生局域网环境中,利用网络行为特征反推拓扑关系是运维排查的一项核心技能。

3.1 路由特征与 ICMP 行为特征推理#

在排查某些特定出口流量时,可能会遇到如下现象: 对出口测试地址执行 tracert 路由跟踪,发现跳数较少且时延明显低于远端链路。

  • 逻辑推理
    • 较低时延表明出口设备可能位于较近的网络边界,但不能单独作为物理位置结论。
    • 但若在本地 ARP 缓存表(arp -a)中找不到该公网 IP 对应的 MAC 地址,则证明它并非处于同一二层网络直连。
    • 结论:这通常意味着局域网的默认网关启用了 ICMP 代理,或者网关设备在检测到目标为自身公网 IP 时,执行了本地 NAT Hairpin(发卡弯) 环回路由。

3.2 物理网关定位与流量反查协作手段#

当网关管理页面未开放(或因网络桥接等原因无法从当前网段远程访问),且需要精确定位具体物理设备与流量源头时,可采取如下物理-逻辑联动协作手段:

  1. MAC 地址反查物理端口: 在授权条件下登录核心二层交换机,查询示例 MAC(如 02-00-00-00-00-01)对应的上联端口。实际排障记录只在受控渠道中流转。
  2. 网关 NAT 连接日志反查: 在物理定位并获得网关管理权限后,提取网关设备的 NAT 映射/连接状态日志,通过过滤特定时间段、特定外部目标 IP,反查与其通信的内网源私有 IP(例如追溯某异常外部连接是由内网哪台 PC 发起)。
  3. 结合 DHCP 租约记录: 在 DHCP 环境下,IP 地址随时可能换租。因此在定位到内网源 IP 后,必须对照 DHCP 租约日志中的 MAC 地址分配历史,以防因 IP 换租导致误判,最终完成对物理终端的精确锁定。
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

内网运维与排查指南:跳板机配置、存活探测与网络拓扑推理
https://blog.luozili.work/posts/应急响应nat-与-dhcp-环境下的木马主机定位实战/
作者
llbzow
发布于
2026-06-29
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录

💬
🎀