为什么攻击者会(微不足道地)混淆他们的源代码?

信息安全 php 混淆
2021-09-03 20:57:37

我的一个朋友最近发现并给我发送了一小部分上传到他机器上的木马 php 脚本。这是一个例子:

eval(gzinflate(str_rot13(base64_decode('huge-string'))));
die;

为什么攻击者会费心去做这一切?任何开发人员都可以轻松反转这些步骤以查看源代码。

我能想象的唯一原因是试图阻止针对现有代码库的防病毒检测(base64()脚本,你有一个“新”病毒,至少几分钟)。

启发式病毒检测之类的东西在很大程度上成功地缓解了这个向量,它可以精确地寻找像这样的可疑来源片段。

1个回答

这不是为了打败人类分析,而是为了在代码进入网络时打败入侵检测/预防系统和其他自动扫描。

PHP 是一种图灵完备的语言,这意味着一段代码可以用近乎无限的方式表示。自动化系统的资源有限,并且在设计时考虑到了这一事实——它们会尝试解开基本eval的混淆和其他简单的技巧,但是尝试分析和识别每一种可能的混淆技术没有什么意义。这是一场失败的战斗,他们的开发人员的时间花在实现其他功能上要好得多。

一旦代码进入内部系统,反恶意软件就可以对其进行扫描。这些系统可以在代码运行时访问代码,因此可以更容易地识别它。当他们可以使用简单的检测签名识别解压的内存中字符串时,分析所有复杂的打包代码是没有意义的。