内网渗透中的横向移动与网络枚举技术
Joff Thyer //
想象一个场景:您正在进行内网渗透测试。可能您通过鱼叉式网络钓鱼成功进入内网系统,或者一开始就被部署在内网中。
作为一位精英渗透测试员,您先进行低速出站端口扫描,很快发现有几个可用的TCP端口可用于命令与控制(C2)通信。利用现有C2通道或建立新通道后,您开始寻找权限提升机会。自然地,您会使用Empire项目中的“PowerUp”工具以及检查组策略偏好的常用方法。今天运气不错,您发现了DLL劫持机会,并在组策略偏好XML文件中找到了凭证。选择简单路径,您使用组策略偏好凭证,通过可靠的PSEXEC或WMI建立特权C2通道。
之后,您继续常规操作以获取更多信息。使用Windows命令如net view /domain
、net localgroup administrators
、net group "Domain Admins" /domain
和net group "Domain Controllers" /domain
。
您还使用Empire中的“User-Hunter”来查找所有域管理员的登录位置。
通过对域控制器名称进行DNS查询,您对这些系统在网络中的位置有了很好的了解。很快发现环境规模很大,有专门的客户端子网和服务器子网。
之后,您开始思考客户端网络的其余部分是如何组织的。您知道它有子网,但像许多组织一样,客户在内部使用B类网络(/16),您真的很想了解所有客户端子网的位置!
一个很好的起点是您自己的网络适配器。输入ipconfig
命令,发现您位于一个C类网络中。
ipconfig输出
从这里您可以进行一些观察。即您有一个C类(/24)地址空间中的地址,路由器网关地址是网络地址加一(本例中为10.99.1.0加一)。
您迫不及待地想用Metasploit进行一些“smb_login”扫描,以便登录其他系统。您知道可以针对user-hunter找到的个别系统,但不想错过任何很酷的设备以扩大攻击面机会!
通过一些前企业网络架构师的精英咨询,您很好地了解到,该环境中几乎所有路由器网关可能都遵循网络地址加一的相同惯例。您还可以假设,如果您位于C类地址空间中,那么网络的很大一部分可能以相同方式架构。由于内部路由器很少过滤ICMP流量,因此您可以使用ICMP回显请求和DOS批处理文件循环命令进行内部路由器网关搜索。
C:\> FOR /L %X IN (1,1,254) do @PING -i 3 -w 1 -n 1 10.99.%x.1 | FIND "bytes="
让我们分解PING命令参数以更好地理解:
-i 3
⇒ 将IP TTL设置为最多3跳(即保持相当本地)-w 1
⇒ 仅等待1秒响应-n 1
⇒ 仅发送一个数据包
这样做应揭示网络上所有潜在的路由器网关,进而让您了解其他客户端/服务器子网在环境中的位置。
示例ICMP回显回复
上述结果还提供了一些其他潜在信息。当返回的TTL为255时,您正在本地子网中获得答案。当返回的TTL为254时,您可能在与系统连接的相同LAN/园区位置中获得答案。当TTL为253或更少时,您可能正在ping远程分支机构或其他园区位置的路由器网关。如果网络较大并涉及多协议标签交换(MPLS),您可能需要对“-i 3”参数进行一些实验。在MPLS的情况下,TTL可能会或可能不会在MPLS(云)路由器跳数中递减。这是提供商依赖的决策。我建议从“-i 3”开始,最高到“-i 9”以捕获大部分网络范围。任何非本地内容将被路由到最后手段网关,并导致“TTL在传输中过期”响应,或在更复杂的环境中可能被路由到黑洞/接收目的地。
祝大家渗透测试愉快!