MARIJUANA外壳“旁路”中的模糊处理技术

实验室注释

攻击者总是试图想出新的方法来逃避web应用程序可用的各种安全控制的检测。这也扩展到PHP等恶意软件web shell,通常被留在被破坏的网站上作为后门,以维护未经授权的访问。

大麻壳GitHub回购

大麻是我们自去年以来一直跟踪的PHP shell的名称。作者有一个GitHub页面,该页面声称shell具有“隐身”模式,可用于绕过web应用程序防火墙(WAF)等网站安全服务。

MARIJUANA外壳概述和说明

十六进制值混淆

为了逃避基于签名的扫描程序(和其他安全控制),攻击者经常利用代码混淆技术。有时,整个文件的代码会被混淆,而其他时候,只会影响代码的特定部分。

在这种情况下大麻shell中的特定部分已被模糊处理,主要是已知可疑的PHP函数或用于多种恶意软件。

而不仅仅是在它们的明文形式,作者选择通过将函数存储在十六进制值数组中来模糊它们。

$数组= ['7068705f756e616d65', '70687076657273696f6e', '6368646972', '676574637764', '707265675f73706c6974', '636f7079', '66696c655f6765745f636f6e74656e7473', '6261736536345f6465636f6465', '69735立方英尺646972', '6f625f656e645f636c65616e28293b', '756e6c696e6b', '6d6b646972号', '63686d6f64页', '7363616e646972', '7374725f7265706c616365', '68746d6c7370656369616c6368617273', '7661725f64756d70', '666f70656e', '667772697465', '66636c6f7365号', '64617465', '66696c656d74696d65', '737562737472', '737072696e7466', '66696c657065726d73', '746f756368', '66696c655f657869737473', '72656e616d65', '69735f6172726179', '69735平方英尺6平方英尺626平方英尺56374', '737472706f73', '69735f7772697461626c65', '69735f7265616461626c65', '737472746f74696d65', '66696c6573697a65', '726d646972', '6f625f6765745f636c65616e', '7265616466696c65号', '617373657274', ]$___=计数($数组)
对于 (1美元= 01美元<$___1美元++)
{GNJ美元[] =超高温气体($数组[1美元])
}
...
功能超高温气体(美元)
{n美元= ''
    对于 (1美元= 01美元<斯特伦(美元) - 11美元+= 2)
    {n美元.=chr公司(十六进制(年美元[1美元] .美元[1美元+ 1]))
    }
    返回n美元
}

自定义函数超高温气体包含用于将十六进制字符串还原为明文PHP函数的PHP代码。

如果我们使用PHP打印(r),我们可以按数组的顺序查看这些脱泡的PHP函数。

[0]=>php_uname-提供有关服务器操作系统的信息[1] =>phpversion-获取当前PHP版本[2] =>chdir-更改目录,这是文件管理器的必备功能[3] =>getcwd-获取当前工作目录[4] =>preg_split-使用regex分割数据字符串[5] =>复制-复制文件内容[6] =>file_get_contents-用于获取本地文件的内容,供攻击者使用PHP shell查看[7] =>base64_decode-通用解码功能...

查看泄露网站上的文件内容

除了以十六进制格式存储PHP函数外,脚本还接收攻击者以十六进制发送的命令,并在收到命令时转换为明文。

此PHP代码中可以看到此方法的一个很好的示例,该代码用于允许PHP shell的用户查看受损网站环境中文件的内容:

如果 (发行($_GET(获取)[""]))
{echo$a(回声$a)_.超高温气体($_GET(获取)[""]) .十亿美元_. '
<textarea只读=“是”>' .GNJ美元[15](百万美元[6](超高温气体($_GET(获取)[""]))) . '</text区域>
//这将成为htmlspecialchars(filegetcontents(index.php))
<br/>
<br/>
<input onclick=“location.href=\'d日=' .$_GET(获取)[""] . '&e(电子)=' .$_GET(获取)[""] . '\'“type=”submit“class=”w“value=”&nbsp(网络广播)编辑&nbsp(网络广播)" />
                                ' .$c美元_
}

作为一种规避策略文件集内容功能和html专用车函数是模糊的,因为这些是恶意软件的常见标志。函数从十六进制格式转换为纯文本后,它们将存储在百万美元变量数组。

$___=计数($数组)
对于 (1美元= 01美元<$___1美元++)
{GNJ美元[] =超高温气体($数组[1美元])
}

这允许攻击者使用变量的名称,GNJ美元,以及它在括号中的数组中的显示顺序。

分配给数组位置15的PHP函数是html专用车文件集内容被指定为数组位置6,使得攻击者可以使用变量数组代替PHP函数并混淆其用法:

GNJ美元[15](GNJ美元[6](超高温气体($_GET(获取)[""])))⬇️html专用车(文件集内容((超高温气体($_GET(获取)[""])))

最后,为了允许不良参与者查看shell中的文件内容,攻击者的浏览器提交一个GET(获取)请求带有““和”“分别包含目录名和文件名的十六进制格式的参数:

大麻.php(电话)=2f7661722f77772f68746d6c776f72647072657373&=696e6465782e706870

要识别这种类型的恶意行为,一种选择是使用类似于海鞘六角以快速转换上述十六进制值,帮助您确定请求正在尝试查看文件索引.php从目录中/var/www/html/wordpress/。另一个选项是使用我们的web应用防火墙,它检测并阻止这些类型的请求到达您的网站。

大麻壳行为

所有这些传入的模糊十六进制请求都会使WAF更难检测到恶意流量并将其阻止。

此功能最终生成一个PHP shell,可以在浏览器中加载,并用于执行常规文件管理器功能(上传、更改权限、查看文件等)。

由于PHP shell通常作为后门操作,因此它们不应该加载或破坏您的网站,并且在您开始看到受损网站的迹象之前,您可能不知道它们的存在。因此,最好在网站上使用服务器端扫描.

你可能也喜欢