递归加密对AV绕过的实际效果?
TOPIC SOURCE
Xencrypt:一款基于PowerShell脚本实现的反病毒绕过工具
递归加密在绕过防病毒(AV)软件的场景中,常常被描绘成一种“魔法子弹”。但它的实际效果究竟如何?是能确保隐身,还是仅仅增加了安全研究人员的调试负担?这需要穿透营销术语,从AV检测引擎的工作原理来看。
递归加密如何工作:一场时间与深度的游戏
- 每一层加密都像一个套娃,将原始恶意载荷包裹在新的加密外壳中。
- 执行时,脚本必须从最外层开始,逐层解密,直到最内层的原始代码被加载到内存中执行。
关键在于,静态扫描的AV引擎在分析文件时,面对一个经过N层加密的脚本,它看到的只是一段无害的解壳代码(Stub)和一大串加密数据。除非它能模拟执行这个解壳过程,并递归地追踪到最内层,否则它无法获得可用于比对的恶意代码签名。这就引入了一个核心限制:动态分析超时。
动态分析的“耐心”是有限的
为了平衡检测率和性能,AV的沙箱或模拟执行环境不可能无限制地等待一个脚本运行。它们通常会设置一个执行时间上限,比如几秒到几十秒。如果递归解密的层数足够多,整个解密过程耗时超过了这个上限,AV引擎就可能在中途终止分析,并因为未发现明确的恶意行为而将文件判定为“安全”。
这听起来很完美,对吧?但实际情况要复杂得多。
效果的两面性:绕过与暴露
递归加密的有效性并非绝对,它更像是在特定条件下的博弈。
它可能有效的场景
- 对抗纯静态签名检测:这是它最擅长的。改变了文件每一字节的内容,使得基于哈希或特征码的检测完全失效。
- 消耗动态分析资源:正如前述,通过增加解密层数来“拖垮”有时间限制的沙箱。
它可能失效甚至适得其反的场景
- 启发式与行为检测的崛起:现代AV不再只盯着代码本身。递归加密脚本那套固定的“解密-加载内存-执行”的行为模式,本身就可能被高级启发式引擎标记为可疑。反复调用特定的解密函数(如AES)、内存分配模式异常,都可能触发警报。
- 熵值异常:经过高强度加密的数据,其字节的随机性(熵)会显著高于普通文本或代码。一个PowerShell脚本文件如果呈现出极高的熵值,这本身就是一个巨大的红色旗帜,可能直接导致文件被送入深度分析或直接隔离。
- 解壳代码(Stub)的签名化:虽然加密层变化多端,但负责解密的那个“外壳”代码本身,如果被广泛使用(比如某个流行加密工具生成的),其模式也可能被提取出签名。一旦外壳被识别,整个文件就被判为恶意,无论里面套了多少层。
- 性能与隐蔽性的代价:500层的加密?生成的脚本可能体积庞大,执行缓慢,在网络传输或加载时异常显眼。在真实的攻防对抗中,这种“不自然”的臃肿本身就是一种暴露。
所以,递归加密更像是一把双刃剑。在对抗老旧或配置不当的AV时,它可能非常有效。但在面对集成了静态、动态、启发式和行为分析的下一代终端防护平台(EPP)或终端检测与响应(EDR)系统时,仅仅依赖递归加密就像只穿了迷彩服却大摇大摆走在探照灯下——你的伪装可能改变了颜色,但你的身形和动作依然出卖了你。
真正的绕过艺术,从来不是单一技术的堆砌,而是对防御体系感知、测试和适应的动态过程。递归加密是工具箱里的一件有趣工具,但千万别以为有了它,就能在AV面前隐形。

参与讨论
这玩意真能绕过EDR?感觉现在行为检测太狠了🤔
之前用过三层加密,结果直接被火绒行为分析抓了,现在这招是不是过时了?