Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Web协议 (T1071.001)

一句话通俗理解

使用 HTTP/HTTPS,最常用的 C2 方式,像假装在上网其实在传指令

30秒速查卡

维度你需要知道的
这是什么?攻击者把远程控制指令藏在普通的网页浏览流量中,看起来就像在正常上网,其实在和攻击者服务器通信
为什么危险?HTTP/HTTPS流量是互联网上最常见的流量,防火墙不会拦截,安全设备很难从海量正常流量中分辨出C2通信
谁需要关心?网络安全分析师、SOC监控人员、防火墙管理员
你的第一步防御部署SSL/TLS解密设备,对HTTPS流量进行深度检测,识别异常的请求模式和域名
如果只做一件事建立出站流量基线,重点关注那些“定时打卡“式的HTTP请求(每隔固定时间间隔就访问同一域名)

难度等级

⭐⭐ 中级 - 需要一定的技术基础和经验

前置知识检查

读这个文件需要什么?

  • 网络协议基础(TCP/IP/DNS/HTTP)
  • C2通信模式
  • 加密通信基本原理

技术描述

Web协议(T1071.001)是 应用层协议(T1071)的一个具体变体,属于 命令与控制 阶段的攻击技术。

🌐 打个比方:就像在正常的网页浏览里夹带私货——攻击者把C2数据伪装成普通的Web流量(HTTP/HTTPS),混入正常通信中。

具体怎么理解?

使用 HTTP/HTTPS,最常用的 C2 方式,像假装在上网其实在传指令

攻击者使用这种技术时,通常是在命令与控制阶段,想要达到特定的攻击目标。与父技术 T1071 相比,T1071.001 有自己独特的特点和使用场景。

为什么有效?

这种技术之所以有效,是因为:

  1. 隐蔽性:利用了正常系统功能或常见协议,不容易被发现
  2. 技术门槛适中:不需要特别高深的技术知识就能实施

过渡段: 不要误以为C2只是’发心跳包’——现代C2基础设施堪比小型互联网公司。 3. 广泛适用:可以在多种环境和系统中使用

真实攻击流程

典型场景

攻击者在 命令与控制 阶段使用 Web协议 技术,以下是典型的攻击步骤:

graph TD
    A["在被黑系统植入HTTP木马"] --> B["木马向C2服务器发送HTTP请求"]
    B --> C["C2响应中嵌入加密指令"]
    C --> D["木马解析指令并执行操作"]
    D --> E["通过HTTP POST回传执行结果"]
    style B fill:#ff6b6b,stroke:#333,stroke-width:2px

步骤详解:

  1. 在被黑系统植入HTTP木马 - 通过初始访问在目标主机上部署支持HTTP通信的恶意载荷
  2. 木马向C2服务器发送HTTP请求 - 定期向C2服务器发送看似正常的HTTP GET/POST请求(关键步骤)
  3. C2响应中嵌入加密指令 - C2服务器将攻击指令隐藏在HTTP响应体中,伪装为正常网页内容
  4. 木马解析指令并执行操作 - 恶意载荷解密响应内容,执行文件收集、屏幕截图等操作
  5. 通过HTTP POST回传执行结果 - 将执行结果通过HTTPS POST请求加密传输回C2服务器

攻击流程

graph LR
    A[部署HTTPS C2服务器并配置Malleable C2] --> B[植入HTTP Beacon建立心跳连接]
    B --> C[HTTP响应中加密下发C2指令]
    C --> D[Beacon解析指令执行恶意操作]
    D --> E[HTTPS POST加密回传执行结果]
    
    style A fill:#4a90e2
    style E fill:#ff6b6b

关键步骤说明:

  1. 部署HTTPS C2服务器并配置Malleable C2: 攻击者在VPS或云主机上搭建Cobalt Strike/Mythic服务器,申请Let’s Encrypt证书启用HTTPS,编写Malleable C2配置文件将C2流量伪装成正常API调用(伪造User-Agent、URI路径模仿jQuery库或Google Analytics跟踪像素)
  2. 植入HTTP Beacon建立心跳连接: 通过钓鱼邮件或漏洞利用在目标主机部署Beacon载荷,Beacon每隔60秒(含jitter抖动)向C2发送HTTP GET请求,URI伪装成/jquery-3.5.1.min.js等正常资源,元数据编码在Cookie字段中传输
  3. HTTP响应中加密下发C2指令: C2服务器将shell命令、文件下载、横向移动等指令加密后藏在HTTP 200 OK响应体中,Content-Type伪装为image/gifapplication/octet-stream,使流量看起来像正常的图片或二进制文件下载
  4. Beacon解析指令执行恶意操作: Beacon解密响应内容提取指令,执行进程注入(如注入svchost.exe)、凭证窃取(Mimikatz)、横向移动、屏幕截图等操作,所有操作尽量在内存中执行以躲避EDR检测
  5. HTTPS POST加密回传执行结果: 执行结果经AES加密后Base64编码,通过HTTPS POST请求回传C2服务器,Content-Type设置为application/x-www-form-urlencoded伪装成表单提交,混入正常HTTPS流量中

真实案例

案例1:APT29 (Cozy Bear) — SolarWinds 供应链攻击中的多层 HTTPS C2(2020-2021年)

  • 时间: 2020年3月 - 2021年4月
  • 目标: 美国联邦政府机构(财政部、商务部、能源部、国土安全部)、IT 公司(SolarWinds、Microsoft、CrowdStrike)、智库和咨询公司
  • 攻击组织: APT29(Cozy Bear / NOBELIUM / UNC2452),俄罗斯对外情报局(SVR)背景
  • 手法: APT29 通过污染 SolarWinds Orion 软件的更新流程,在合法数字签名的 DLL(SolarWinds.Orion.Core.BusinessLayer.dll)中植入了 SUNBURST 后门。该后门采用两阶段 C2 协议,其中第二阶段完全依赖 HTTPS:
    • 第一阶段(DNS发现):受感染系统在潜伏期(最长2周)后,向 avsvmcloud[.]com 的子域名发送 DNS 查询,DNS 响应中的 CNAME 记录指向后续 HTTPS C2 服务器地址
    • 第二阶段(HTTPS C2 操作):恶意软件启动 HTTP 线程,使用 HTTP GET 和 POST 请求进行 C2 通信。关键细节包括:
      • URI 模式:GET 请求路径格式为 /swip/upd/{随机文件名}.xml(如 SolarWinds.CortexPlugin.Nodes-5.2.1.xml),伪装成 SolarWinds 组件更新请求
      • 请求头伪造:HTTP 请求中添加 If-None-Match 头,其中编码了用户 ID,用于 C2 服务器识别不同受害主机
      • 数据编码:POST 请求体使用 JSON 格式,包含 userIdsessionIdsteps 三个字段。实际 C2 数据先经 DEFLATE 压缩,再单字节 XOR 加密,然后 Base64 编码后嵌入 JSON 的 Message 字段中
      • 心跳间隔:每次调用间隔至少1分钟,受 SetTime 命令控制
      • Content-Type 切换:发送状态数据时使用 application/json;发送二进制数据(如文件窃取结果)时使用 application/octet-stream
      • 禁用证书验证:SUNBURST 禁用了 HTTPS 证书验证(即接受任何 SSL 证书),使流量在传输层加密但无法验证服务器身份
    • 第三阶段:确认目标价值后,攻击者通过 HTTPS 通道下发 Teardrop(Cobalt Strike 加载器),建立第三个独立的 HTTPS C2 通道进行深度横向移动和数据窃取
  • 影响: 约 18,000 个组织下载了被污染的 SolarWinds 更新,包括多个美国联邦政府机构、Fortune 500 企业。攻击者成功窃取了多个政府机构的内部数据,是美国历史上影响最大的供应链攻击事件之一
  • IOC示例:
    • C2域名: 3mu76044hgf7shjf[.]appsync-api[.]eu-west-1[.]avsvmcloud[.]com
    • URI路径: /swip/upd/Orion.Wireless.UI-3.1.0.xml
    • JA3指纹: 6734f4fbb3a6052511e6319a1d93bdc4(SUNBURST HTTPS客户端)
  • 参考链接:

案例2:Lazarus Group — 全球加密货币和 Web3 行业定向攻击中的 HTTP C2(2022-2024年)

  • 时间: 2022年 - 2024年12月
  • 目标: 全球加密货币交易所、区块链开发公司、Web3 项目方、防务和能源行业
  • 攻击组织: Lazarus Group(Hidden Cobra / APT38),朝鲜侦察总局(RGB)背景
  • 手法: Lazarus Group 在多个并行活动中使用 HTTP/HTTPS 作为核心 C2 协议,展示了从基础 HTTP 信标到多层 C2 架构的完整技术谱系:
    • 活动1:Contagious Interview(伪造面试攻击)

      • 攻击者在 LinkedIn 等平台冒充招聘人员,向加密货币公司员工发送伪造的面试邀请
      • C2 基础设施部署在 Windows Server 2019/2022 上,使用 Express.js 运行 HTTP 服务(端口 1244)
      • 植入物发送 HTTP GET/POST 请求到 C2 端点的令牌认证路径(如 /c/{token}/payl/{token}
      • C2 服务器按需下发模块化 payload:Chrome 密码窃取器、MetaMask 注入器、Tsunami 后门
      • IOC IPs: 147.124.213[.]23266.235.168[.]238216.250.251[.]87
    • 活动2:QuiteRAT(基于 Python 的 HTTP C2 植入物)

      • 利用 ManageEngine ServiceDesk 漏洞(CVE-2022-47966)获取初始访问
      • QuiteRAT 使用 HTTP GET 请求进行 C2 通信,URL 中包含扩展参数:
        • mailid=<MD4前12字符>:受害者 ID
        • action=inbox|sent:inbox 表示请求指令,sent 表示回传数据
        • body=<Base64数据>:C2 数据载荷
        • session=<随机数>:会话标识
      • 单次 HTTP 请求数据限制为 1,024 字节,超大数据分片传输
      • C2 服务器可下发 receivemail 指令让植入物切换到第二个 C2 URL,实现 C2 冗余
    • 活动3:HaoBao(HTTP POST 数据窃取)

      • 植入物连接硬编码 C2 域名(如 worker[.]co[.]krpalgong-cc[.]co[.]kr
      • 收集的主机数据经 XOR(密钥 0x34)+ Base64 双重编码后,通过 HTTP POST 请求发送
      • POST 参数:no(计算机名\用户名)、mode(进程列表/注册表标志)
    • C2 基础设施特征

      • 韩国 IIS Web 服务器被入侵后用作第一级 C2 代理(ASP webshell),转发流量到第二级 C2
      • 使用开放源码 C2 框架(DeimosC2 GoLang 版本)部署在 Linux 服务器上
      • 木马化的 Notepad++ 插件(WinInetLoader)通过 HTTP(S) 下载后续 payload,查询参数从三组预定义参数名中随机选取以躲避检测
  • 影响: Lazarus Group 通过 HTTP C2 通道控制受感染系统,实施了多起重大加密货币盗窃案(包括 Bybit 15 亿美元被盗案),累计窃取金额超过 30 亿美元。多个国家的国防和能源部门敏感数据被窃取
  • IOC示例:
    • C2 IP/端口: 147.124.213[.]232:124466.235.168[.]238:1244
    • C2 域名: worker[.]co[.]krpalgong-cc[.]co[.]kr
    • C2 端点路径: /c/{token}/payl/{token}/mailid=<hash>&action=inbox
    • 文件哈希: 74c71671764610245a392f7e7444694c(CommsCacher 下载器)
  • 参考链接:

案例3:HTTP Beaconing — Cobalt Strike 默认心跳通信(典型攻击模式)

  • 时间: 持续存在
  • 目标: 任意使用 Cobalt Strike 的攻击活动
  • 攻击组织: 多个APT组织(APT19、FIN7、Carbanak 等)
  • 手法: Cobalt Strike 的默认 HTTP Beacon 是 Web协议 C2 的典型代表,展示了“心跳信标“通信模式:
    • 心跳间隔:Beacon 默认每 60 秒向 C2 服务器发送一次 HTTP GET 请求(称为“check-in“或“心跳“),请求路径通常伪装成正常资源(如 /__utm.gif 伪装成 Google Analytics 跟踪像素、/jquery-3.5.1.min.js 伪装成 jQuery 库)
    • 请求头伪造:通过 Malleable C2 配置文件自定义 HTTP 请求头,使流量看起来像正常浏览器行为——设置 User-Agent 为常见浏览器版本(如 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36)、添加 Accept-Language: en-US,en;q=0.9Accept-Encoding: gzip, deflate 等标准浏览器头
    • Cookie 数据隐藏:C2 元数据(计算机名、用户名、进程ID)编码后隐藏在 HTTP Cookie 中发送,如 Cookie: SESSION=Base64编码的元数据,而非放在 URL 参数中,减少 URL 层面的可疑特征
    • 响应数据隐藏:C2 指令隐藏在 HTTP 响应体中,使用 Content-Type: image/gifapplication/octet-stream 伪装成二进制文件下载,实际响应体包含加密后的 C2 指令
    • JA3/S 指纹特征:Cobalt Strike 默认 HTTPS Beacon 使用特定的 TLS 客户端指纹(JA3),可通过 JA3 哈希识别。但攻击者可修改 Malleable C2 配置中的 TLS 选项来改变 JA3 指纹
    • 回传机制:执行结果通过 HTTP POST 请求回传,POST 体使用 AES 加密后 Base64 编码,Content-Type 设置为 application/x-www-form-urlencoded 伪装成表单提交
  • 影响: Cobalt Strike 是最广泛使用的 C2 框架之一,其 HTTP Beacon 通信模式已成为检测 Web协议 C2 的基准参考
  • 检测特征:
    • 固定间隔的 HTTP GET 请求(如每 60 秒一次),无用户交互触发
    • GET 请求与 POST 请求的间隔模式固定(如 GET 后 1-2 秒内跟随 POST)
    • HTTP 响应体大小固定或变化极小(指令通常较短)
    • 目标 IP 不属于已知的 CDN 或云服务商范围
  • 参考链接:

案例4:HTTPS 自定义头部 C2 — 仿 API 流量通信(典型攻击模式)

  • 时间: 持续存在
  • 目标: 云服务和 SaaS 企业
  • 攻击组织: 多个APT组织
  • 手法: 攻击者利用 HTTPS 协议的自定义请求头字段来隐藏 C2 数据,使流量看起来像正常的 REST API 调用:
    • API 伪装:C2 请求伪装成对合法云服务 API 的调用,如 POST /api/v2/users/syncGET /api/v1/events/poll,URI 路径模仿 Google Workspace、Microsoft Graph、Slack API 等常见云服务的 REST 端点格式
    • 自定义头部编码:C2 元数据和指令编码在自定义 HTTP 头中,如 X-Request-ID: <Base64编码数据>X-Client-Trace: <AES加密数据>Authorization: Bearer <JWT令牌>(JWT 的 payload 中嵌入 C2 指令)。这些自定义头部在正常的 API 调用中也很常见,难以区分
    • JSON 体隐藏:POST 请求体使用标准 JSON 格式,C2 数据隐藏在看似正常的 JSON 字段中。例如 {"user_id": "admin", "action": "sync", "timestamp": 1700000000, "data": "<加密C2指令>"},其中 data 字段包含实际 C2 载荷
    • TLS 证书伪装:使用 Let’s Encrypt 免费证书或从合法 CA 签发的证书,使 TLS 握手看起来完全正常。C2 域名也注册为看起来正常的名称(如 cdn-api-prod[.]comanalytics-ingest[.]io
    • 流量节奏控制:C2 请求间隔不固定,而是模拟人类使用模式——工作日白天请求频繁,夜间和周末减少。请求时间分布符合正态分布,避免固定间隔被检测
  • 影响: 这种高度伪装的 HTTPS C2 通信极难被网络层检测发现,因为流量特征与正常的云服务 API 调用几乎完全一致
  • 检测特征:
    • 向非知名云服务域名的 HTTPS 请求中包含非标准的自定义 HTTP 头
    • 请求体 JSON 中包含可疑的 Base64 编码或加密数据字段
    • TLS 证书的 Subject/Issuer 与请求域名不匹配
    • 请求模式与正常 API 调用存在细微差异(如缺少某些标准头字段)
  • 参考链接:

红队视角

⚠️ 免责声明:以下内容仅用于合法的安全测试、渗透测试和教育目的。未经授权对他人系统进行测试是违法行为。

实战技巧

  1. 深入理解原理:在实战应用前,充分理解Web协议的技术原理和适用场景
  2. 环境适配:根据目标系统的操作系统版本、安全配置等因素调整攻击策略
  3. 组合使用:将该技术与其他技术组合使用,构建完整的攻击链
  4. 隐蔽性考虑:注意操作痕迹的清理,避免被安全设备检测

常用工具

工具名称用途平台链接
Metasploit渗透测试框架全平台Metasploit
Cobalt Strikeadversary模拟平台WindowsCobalt Strike
Atomic Red Team检测规则测试全平台Atomic Red Team

注意事项

  • 在授权的测试环境中使用这些技术
  • 注意操作安全(OPSEC),避免被检测系统发现
  • 使用匿名化技术和代理隐藏真实身份

蓝队视角

检测要点

  1. 系统日志监控:关注与Web协议相关的系统日志和审计记录
  2. 异常行为检测:监控系统中与该技术相关的异常进程、网络连接和文件操作
  3. 工具特征识别:识别攻击者可能使用的工具在系统中的运行特征

监控建议

  • 部署端点检测和响应(EDR)系统,监控与Web协议相关的异常行为
  • 配置SIEM规则,关联分析来自多个来源的告警
  • 定期进行安全评估和渗透测试,验证检测规则的有效性

避坑指南

SOC常见误区:只检测已知恶意域名和IP。

检测建议

检测思路

检测 Web协议 的关键是识别异常行为模式。以下是三个层面的检测方法:

网络层检测

方法:监控网络流量中的异常模式

# 检测异常的网络连接和数据传输
# 根据具体协议和端口设置检测规则

主机层检测

Windows事件ID

  • 事件ID 4688:进程创建(监控可疑进程)
  • 事件ID 4104:PowerShell执行(监控可疑脚本)

Linux日志

  • /var/log/auth.log:认证日志
  • /var/log/syslog:系统日志
# 检测异常进程和命令执行
grep -i "suspicious" /var/log/auth.log

应用层检测

用人话说: Web协议(HTTP/HTTPS)是C2通信最常用的载体,因为绝大多数企业网络都放行443端口的HTTPS流量。攻击者让木马每隔一段时间(如60秒)向C2服务器发送一个HTTP请求,这叫“心跳“——看起来像正常浏览网页,实际上在拉取指令或回传数据。Cobalt Strike的Malleable C2配置文件可以自定义HTTP头部、Cookie和URI路径,让流量伪装成访问api.github.com或cdn.cloudflare.com的样子。检测难点在于HTTPS流量是加密的,安全设备只能看元数据(IP、端口、TLS指纹、请求频率),看不到内容。如果发现一台内网服务器每60秒精准访问同一个海外IP的443端口,且TLS握手时发送的SNI域名和证书域名不一致,说明很可能在走Web C2隧道。

Sigma规则示例

title: 可疑Web协议C2通信
status: experimental
description: 检测Windows主机非浏览器进程通过HTTP/HTTPS连接到罕见外部IP,可能为C2 beacon心跳通信
logsource:
    product: windows
    service: sysmon
detection:
    selection_net:
        EventID: 3
        DestinationPort:
            - 80
            - 443
    filter_browser:
        Image|endswith:
            - '\chrome.exe'
            - '\msedge.exe'
            - '\firefox.exe'
            - '\iexplore.exe'
    condition: selection_net and not filter_browser
level: medium
tags:
    - attack.t1071.001
    - attack.command_and_control

缓解措施

优先级1:关键措施

限制攻击面:减少暴露的服务和端口,降低被利用的风险

# 防火墙规则示例:只允许必要的出站连接
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT  # 允许HTTPS
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT   # 允许HTTP
iptables -A OUTPUT -p tcp -j DROP                 # 阻止其他TCP

优先级2:重要措施

加强监控:部署EDR和SIEM系统,实时监控异常行为

优先级3:建议措施

安全意识培训:教育员工识别相关攻击手法

动手实验

⚠️ 所有实验必须在隔离的实验室环境中进行

实验1:理解基本原理(初级)

目标:理解 Web协议 的工作原理

步骤

  1. 在隔离环境中搭建测试系统
  2. 使用基础工具模拟攻击行为
  3. 观察系统日志和网络流量

学习要点:理解该技术的核心机制

实验2:实际操作(中级)

目标:掌握 Web协议 的实际使用方法

步骤

  1. 使用专业工具进行攻击模拟
  2. 尝试不同的绕过技术
  3. 分析检测日志的特征

学习要点:掌握工具使用和日志分析

实验3:防御验证(高级)

目标:验证检测规则的有效性

步骤

  1. 部署检测规则
  2. 执行攻击模拟
  3. 验证检测告警是否触发

学习要点:理解攻防对抗的实际效果

术语解释

术语通俗解释
ATT&CKMITRE公司维护的攻击技术知识库,像一本“黑客手法百科全书“
Web协议T1071.001,ATT&CK框架中定义的一种具体攻击技术
应用层协议T1071,Web协议所属的父技术类别
命令与控制攻击链中的一个阶段,攻击者在这个阶段的目标
C2命令与控制,攻击者用来远程控制被入侵系统的“遥控器“
EDR端点检测与响应,部署在电脑上的安全监控软件

被引用情况

以下父技术文档引用了本子技术:

参考资料

📚 官方文档(深入了解)

📰 安全报告(真实攻击)(APT案例来源)

🔧 工具与资源(动手试试)

📚 学习资料(深入了解)