Unix系统中使用shell 脚本作为执行文件中的多个Linux 命令的方式。许多用户都会用shell 脚本来作为日常批量操作文件、执行程序和打印文本的方式。
因为每个unix 机器中都有一个shell 翻译器,因此也成为恶意攻击者滥用的动态工具。研究人员之前就分析过通过shell 脚本来部署payload 来滥用错误配置的 Redis 实例、暴露Docker API、移除加密货币挖矿机的恶意活动。本文介绍攻击者在攻击活动中使用 shell 脚本的几种方式。
命令和编程技术的变化
滥用命令行翻译器技术其实是非常常见和被广泛使用的一种技术。但研究人员最近注意到脚本的一些变化。
过去,恶意shell 脚本会将简单命令和部署payload 的明文链接直接组合起来。但是,最近研究人员发现恶意攻击者开始使用一些攻击的命令和编程技术了。
图 1 linux shell 脚本的进化:从明文(左)进化到base64编码的payload(右)
从图中可以看出,明文链接被base64 编码的文本所替代,其中部分代码是下载或编码的payload 。这是通过隐藏直接payload 链接、绕过用于识别的安全规则、使得分析变得更加困难等方式来实现的。
图 2. 用base64 编码来替换代码
图 3. 解码后的base64 编码的payload
之前命令都会执行,而不会考虑服务器上运行的目标服务。但是现在脚本可以检查服务器上有没有运行特定的服务,并未payload 保留CPU 时间。还可以与base64 编码的新版本一起执行,还可以替换特定链接中的变量。
图 4. 卸载服务而不检查服务是否安装的命令
图 5. 发现服务后卸载服务的命令
图 6. 被变量替换的wget URL
研究人员还注意到攻击者使用Pastebin 来保存脚本的部分内容,比如在URL 中和整个payload或helper 应用中,在例子中,会释放一个XMRig 加密货币挖矿机。
图 7. Base64 编码的config 和 Pastebin URL
图 8. Base64编码的 XMrig
结论
恶意攻击者在不断地改善和优化其攻击技术和方法,比如让shell 脚本拥有混淆和传递payload的能力。为了最大化利益和绕过检测,攻击者会使用一些之前其他操作系统中发现过的技术,并与这些新技术(系统)相融合。虽然一些技术之前在恶意软件环境中已经出现过了,但是在shell脚本中还是比较新的。
过去,大多数的payload 都是明文部署的,而且只针对特定的任务。现在,shell脚本中已经开始出现混淆机制了。由于恶意软件开发者想要隐藏其真实的payload,因此,未来可能会有更多的混淆技术出现。随着shell脚本的发展以及在传播payload 中的应用,这种趋势值得注意。
本文翻译自:https://www.trendmicro.com/en_us/research/20/i/the-evolution-of-malicious-shell-scripts.html如若转载,请注明原文地址