基于Golang的加密货币挖矿恶意软件攻击活动

Golang也称Go,是一种开源的编程语言。Trend Micro研究人员在分析6月的一起攻击活动时发现该语言被用于传播加密货币挖矿机。该攻击活动中使用的传播器可以扫描运行着有漏洞软件的机器来进行传播。该攻击活动的攻击链如下:

1. 攻击感染链

技术细节

基于Golang的传播器

恶意软件会寻找多个攻击入口来将恶意软件传播到其他的系统中。在该攻击活动中,攻击者使用了常用的SSH服务和多个其他漏洞利用。攻击活动使用了基于Golang的传播器来扫描:

· SSH

· Misconfigured Redis server

· ThinkPHP exploit

· Drupal exploit

· Atlassian Confluence server (CVE-2019-3396)

图2是扫描Redis端口的传播器代码。

图2. 显示使用Redis的代码

除了使用错误配置的Redis端口外,恶意软件还可以通过有漏洞的web应用,主要是ThinkPHP和Drupal,来感染服务器。下图中的代码表明可以扫描Atlassian’s Confluence服务器的漏洞CVE-2019-3396,该漏洞之前被爆用于传播加密货币挖矿恶意软件。

图3. 使用多个漏洞的代码

最后,恶意软件会通过SSH端口来进行传播,如下图所示。

图4.使用SSH来进行传播的代码

其他组件

恶意软件感染系统后,会连接到Pastebin来下载释放器组建。然后释放器会从下载文件mysqli[.]tar[.]gz,并从中提取出一个TAR文件。该TAR文件中含有加密货币挖矿机payload、基于Golang的扫描器和其他必要组件,比如:

· 挖矿机组件的配置文件

· 执行挖矿机和扫描器的Trojan.SH.SQUELL.CB

· 基于Golang的扫描器

· 挖矿机

· 用来确定恶意软件安装状态的文件

除了执行挖矿机和扫描器外,Trojan.SH.SQUELL.CB还会执行许多其他的动作。它会尝试通过SSH来感染其他系统,禁用安全工具,并清除命令历史和日志。还可以通过拦截网络流量、杀掉其他进程来kill掉其他竞争的加密货币挖矿活动。恶意软件还会在系统中以服务的形式安装来实现驻留。还会设定一个cron任务来从Pastebin下载和执行最新版本的恶意软件。所有的活动如下图代码所示:

图5. 使用SSH感染其他系统的代码
图6. 恶意软件禁用安全工具的代码

图7. 使用命令来清除历史和日志的代码

图8. 恶意软件清理系统中其他挖矿机的代码
图9. 恶意软件实现驻留的代码

总结和建议

基于Golang的脚本和恶意软件已经不是第一次用于攻击活动了。5月份就有一款基于Golang的传播器用于另一个加密货币挖矿恶意软件。之前Malwarebytes也报道过Go语言被用于数据窃取器恶意软件。

Go语言为网络犯罪分子提供了一个跨平台的开发方法,开发的恶意软件既可以感染Linux主机也可以感染Windows主机。但这些特征对编程语言来说并不是唯一的。对安全分析人员来说,基于Golang的恶意软件更难分析,因为与其他语言相比,该恶意软件在恶意软件中的使用比较少。

用户可以通过加强网络安全和防护的方式来减少类似攻击活动的有效性。研究人员建议:

· 及时应用必要的安全补丁和更新;

· 关注攻击者用来传播恶意软件的方法并进行针对性地防护;

· 修改系统和设备设置来预防非授权的访问。