当扫描器坐在隧道的错误一侧时,一次获得授权的手机 VPN 评估会悄悄失效。你拿到了结果,它们看起来合理,回答的却是一个没人提出的问题。请按顺序走完下面五项检查。每一项都有停止条件,而早停比在报告写完之后从头重测更便宜。

第 1 步:说清你要到达的是哪个面

三个面经常被混为一谈,因为把它们连起来的是同一台设备。它们走的代码和政策不同,所以在动手之前,先写下哪一个在范围内。

Assessment targetWhat the path exercises
Public VPN listener on the handsetReachability before login, plus the exposed VPN daemon
A service on the handset, by its tunnel addressAccess after admission to something hosted locally
A LAN host behind the handset gatewayForwarding, the return path and downstream access policy

如果已批准的范围内没说清是哪一个,停下来去问。给手机 root 并不能回答这个问题,它改变的是被测对象,而不是观测点。

同时记下目标、允许的源地址、时间窗口和强度上限。隧道把你带到这个范围;它并不授权你去探测它能路由的一切。

第 2 步:选择真正能看见那个面的来源

坐在 VPN 内部的扫描器 无法复现未认证的互联网观察者。它已经持有外部观察者没有的路由、凭据和权限,因此即便目标面相同,它给出的结果描述的也是准入之后的视角。反过来的错误同样常见:对 VPN 端口做公开扫描,几乎说明不了登录背后的私有服务,把它当成能说明,就等于在一个方向上高估暴露面、在另一个方向上低估。

如果你能取得的来源与那个面不匹配,就停下来。从隧道内对端跑的评估,不应被当作准入之前的结果来呈现;需要获批外部来源的测试,也不该为了省掉文书而悄悄挪到内部。

第 3 步:确认经过手机的路径和回程

当终端把流量转发到另一个子网时,扫描器需要一条被允许的路由,目标需要一条能工作的回程。两样都要确认,而不是把 ping 有回应当成路径完整。

ip route get 10.20.0.8
tcpdump -ni any host 10.20.0.8

源地址转换会改变下游服务看到的东西。如果手机翻译了扫描器的地址,目标上的访问规则和日志就作用在翻译后的地址上,于是看起来在接纳你的服务,接纳的可能是手机而不是扫描器。

也要留意与扫描器自身网段的重叠。如果手机路由 192.168.1.0/24,而扫描器就坐在同样编号的 LAN 上,探测打中的是本地设备,报告却把它们写成目标。发第一个包之前,先确认扫描器自己会走哪条路由。

扫描目标的真实地址,并保留应用做 TLS 身份与虚拟主机所需要的主机名。到达网关只能证明网关会回应,并不能测出网关背后的服务。

第 4 步:把发现当成带假设的探测

主机发现是评估结果最容易出错的地方。本地以太网发现过不了一条被路由的 VPN,于是在扁平 LAN 上管用的探测根本到不了。被拦下的发现探测,就会让一个可达、已获授权的服务看起来不存在。

要有意识地决定是否跳过发现、直接扫描已知地址,并在报告里写明。端口有回应,并不证明 VPN 认证成功了;回应被过滤,也不证明没有东西在监听。速率是同一个问题的一部分:手机在高速扫描下会限速或丢包,由此产生的“被过滤”状态属于手机而不属于服务,所以先降并发,再重新扫描,然后才把端口记成关闭。

这里的停止条件是解释,而不是技术:如果你说不出某个状态对这条路径意味着什么,这项结果属于附录,而不属于发现。

第 5 步:守住窗口,然后关上它

手机是不合格的服务器,因为它本来就是为休眠设计的。电池优化、doze 和 Wi-Fi 电源管理可能在评估中途挂起应用,隧道重连也可能改变目标所用的地址。跨越这类事件的运行,结果窗口是无效的。

把网关角色限制在已批准任务允许的最小范围内,在运行期间持续观察隧道,并记录你所报告的每一个窗口的起止。评估结束时,通过其所有者收回临时访问权限,保留来源与路径记录,并像对待任何其他测试产物一样保护输出。

如果你需要的是可重复的观测点,而不是一次性的成功,那才是值得去争取的交付物。主机发现那篇参考 说明了哪些探测预设了本地网段,而正是这个细节,把一个空白结果变成站得住脚的陈述。

相关文章