攻防演练 | 实战加分,安芯网盾实时帮您轻松应对哥斯拉Webshell魔改
作者: 日期:2022年07月29日 阅:2,462

近日,安芯网盾安全团队分析了一个从实战中拿到的样本,分析发现该样本是基于“哥斯拉Webshell”进行魔改的内存马,安芯网盾内存保护可实时帮您轻松应对哥斯拉Webshell魔改。  

自2020年开始,内存马也成为攻防演练中RT手里的“王牌手段”。 攻击方通过操纵漏洞利用程序、合法工具、宏和脚本,可以破坏系统、提升特权或在网络上横向传播恶意代码,并在执行后采取尽量隐藏自身或清除的手段,使其难以被检测,以门户网站为例,其服务直接暴露在互联网环境,十分容易成为红队攻击目标,使用内存Webshell的攻击手段可以轻松绕过现有的安全防护体系,达成攻击目的。

1、哥斯拉样本变化

安芯网盾团队通过分析最新的样本发现,与原始的“哥斯拉”程序相比较增强了: 

1) 流量加密,控制端与被控制端之间的网络流量进行了AES加密,加密密钥在控制端生成,可实现“一次一密”。加密密钥使用RSA算法进行分发,防止分析人员解密。 

2) 受控端将控制响应伪装成图片文件返回控制端,以绕过WAF/IPS等系统的检测。 

2、代码主要逻辑分析

Step1. 从请求中提取参数: user, password的值, 将参数值进行base64解码。

Step2. 获取会话密钥,检查请求中的sessionId参数

如果:

(1) 参数存在,表明该会话未创建,需要从sessionId获取会话密钥。代码从sessionId参数值解密(rsaEncrypt(), 该函数名存在误导性,rsaEncrypt()表示RSA公钥加密操作,但根据RSA算法原理,该操作可实现解密效果。明文 -> RSA私钥解密 -> 密文 -> RSA公钥加密 ->明文)获得会话密钥,并保存到会话状态(session对象)作为属性“k”。 

  • 如果参数不存在,但在会话状态中以存在属性“k”。表明会话已经建立。则直接从会话状态获取会话密钥。

Step3. 解密请求

Step4. 加载控制端发送的代码(java class),执行并获取执行结果

  1. 如果会话状态不存在属性“p”,从将请求数据作为java字节码,使用自定义类加载器加载,并将java class保存在会话状态作为属性“p”。

2)如果会话状态存在属性“p”,创建控制端发送的代码(创建控制端发送的java class的类实例),执行代码并获取结果。

Step5 将执行结果封装在图片内加密返回

3、内存马防护

对于内存马攻击的防护,单纯依靠基于静态特征的传统检测方式是远远不够的,需要深入Web程序内部进行威胁发现。目前对内存马的防护,比较有效的方式是RASP技术,它采用进程注入的方式,通过监控Web应用程序异常行为来对内存马攻击进行检测。 

RASP已演变成一个成熟的应用程序内部安全性概念,它可以根据开发人员希望在应用程序或服务器中实现RASP安全层的方式(如Servlet过滤器、二进制工具、JVM的替换、虚拟化)来消除威胁。安芯网盾在2021年年初,率先在行业内推出了基于内存保护+RASP技术的内存马攻击防护解决方案(web服务器安全解决方案)。

与传统RASP产品所提供的内存马防护思路相比,安芯网盾在内存马防护方面具有以下几个优点:

✔ 数据分析过程主要在Web容器外部进行,最大限度降低对业务内存的占用,降低影响,确保业务系统运行的稳定性;

✔采用轻侵入模式,部署或升级过程均不涉及业务系统重启;

✔  基于行为链结合内存行为进行判断,提升检测精确度,降低误报;

✔ 能通过动态检测发现内存马攻击,防止被绕过;

✔  能通过静态检测发现内存中已驻留的内存马。

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章