以Linux体系为目的:剖析新型Golang言语讹诈软件 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

以Linux体系为目的:剖析新型Golang言语讹诈软件

申博_安全预警 申博 80次浏览 未收录 0个评论

sunbet开户

sunbet会员开户官网,sunbet客户端下载、代理商加盟,您的满意就是对sunbet官网最大的认可,我们将竭诚为您服务。

,

0x00 概述

在过去的两个月中,我一直在研讨运用Golang编写的逆向软件,并对其举行逆向工程。Go言语,也成为Golang,是Google设想的一种静态范例的、已编译的编程言语,现在在歹意软件开辟社区中正在变得愈来愈盛行。在本文中,我将剖析一个新发现的Golang讹诈软件,该软件重要针对Linux体系发起进击。

0x01 Go二进制样本剖析

我们所剖析的样本是已stripped的ELF可实行文件。Stripped后的可实行文件会使逆向事情变得越发难题,由于我们还须要做一些分外的事情,来复原stripped后的二进制文件中的标记。但荣幸的是,有一个redress东西可认为我们供应协助。Redress软件是用于剖析运用Go编译器编译的、stripped后的Go二进制文件的东西,该软件从二进制文件中提取数据,然后将其用于重修标记,并举行剖析。

下面是运用参数“-src”剖析此样本的输出:

以Linux体系为目的:剖析新型Golang言语讹诈软件

如上图所示,我们可以看到该歹意软件的源代码包含三个Go文件,可以找到一切已完成的功用和对应的代码行号。经由过程某些功用的称号,我们可以猜想该歹意软件应当属于讹诈软件。然则,依据源代码的行数仅仅在300摆布,我们推断这类讹诈软件并不庞杂,可以处于方才开辟的阶段。

接下来,我们在调试器中举行动态调试。在这里,我运用Radare2作为调试器。Radare2可以经由过程发出剖析敕令来剖析stripped后的Go二进制文件,并复原标记。这也就是我之所以挑选Radare2作为该项目标调试器,而没有挑选Linux中GDB的缘由。

0x02 Go二进制文件的动态剖析

我们在Radare2中发出敕令“aaa”,以实行自动剖析,鄙人图中,我们可以看到Radare2很好地复原并识别了函数名和标记名。运用该东西,确切能有用协助我们调试了Go二进制文件。

运用Radare2复原的函数称号和标记:

以Linux体系为目的:剖析新型Golang言语讹诈软件

如我们所见,函数init()在主函数之前实行。函数check()在函数init()中挪用。在函数check()中,歹意软件起首经由过程向hxxps://ipapi.co/json/发送一个HTTP要求,来猎取受感染主机的位置信息。然后,搜检该歹意软件是不是在特定国度运转,假如在特定国度范围内,则会自动住手运转。这些国度包含:白俄罗斯(BY)、俄罗斯(RU)和乌克兰(UA)。

过滤白俄罗斯(BY)、俄罗斯(RU)和乌克兰(UA):

以Linux体系为目的:剖析新型Golang言语讹诈软件

在main()函数中,起首删除Go二进制文件。随后,挪用函数randSeq()天生一个随机AES密钥,其大小为0x20字节,以下图所示。

天生随机AES密钥:

以Linux体系为目的:剖析新型Golang言语讹诈软件

接下来,将挪用函数makesecret(),该函数用于运用以二进制情势硬编码的RSA公钥来加密AES密钥。在该函数中,会挪用函数EncryptPKCS1v15,运用RSA加密和PKCS#1 v1.5中的添补计划(Padding Scheme)对特定的AES密钥举行加密。

Go二进制文件中的硬编码RSA公钥:

以Linux体系为目的:剖析新型Golang言语讹诈软件

下面是RSA加密后的数据。

运用RSA加密后的加密AES密钥:

以Linux体系为目的:剖析新型Golang言语讹诈软件

接下来,它在Golang包encoding/base64中挪用函数EncodeToString,以运用Base64算法对先前加密的数据举行编码。

运用Base64编码的加密AES密钥:

回忆斯诺登泄密事宜:写在《永远的证据》出书之际

作者简介: 马修·D·格林(Matthew Green)是美国知名的密码学家和安全技术专家,也是约翰霍普金斯大学信息安全研究所的计算机科学教授。他曾参与过揭露 RSA BSAFE、Speedpass 和 E-ZPass 的漏洞的组织。 2013年 9 月,格林曾发表了一篇名为《论美国国家安全局》(On the NSA)的博客文章,对美国国家安全局削弱密码学的计划进行了总结和推测。这在当时引起了极大的争议,因此该文章被

以Linux体系为目的:剖析新型Golang言语讹诈软件

然后,它将为解密的README文件构成一个缓冲区,以下图所示。

解密的README文件的缓冲区:

以Linux体系为目的:剖析新型Golang言语讹诈软件

我们可以看到,加密的AES密钥已运用Base64编码写入解密的自述文件(readme)中。

在讹诈软件加密文件之前,它会经由过程发出敕令“service stop [pname]”或“systemctl stop [pname]”来封闭以下历程列表。

要住手的效劳列表:

以Linux体系为目的:剖析新型Golang言语讹诈软件

在该顺序尝试住手apache2.service时,会弹出一个标题为“须要身份验证”(Authentication Requird)的对话框,提醒用户输入体系暗码以完成此操纵。

apache2.service身份验证对话框提醒:

以Linux体系为目的:剖析新型Golang言语讹诈软件

末了,经由过程在Golang包“path/filepath”中挪用函数Walk(root string, walkFn WalkFunc),歹意软件最先遍历根目次“/”,并最先对文件举行加密。

遍历根目次并加密文件:

以Linux体系为目的:剖析新型Golang言语讹诈软件

该歹意软件还包含用于加密的目次黑名单,详细以下。

用于加密的目次黑名单:

以Linux体系为目的:剖析新型Golang言语讹诈软件

该歹意软件运用AES-256-CFB算法对文件举行加密,加密文件的定名规则是原始文件名+“.encrypted”后缀扩展名。用于解密的自述文件(README)以下图所示。

用于解密的README文件:

以Linux体系为目的:剖析新型Golang言语讹诈软件

函数EncFile()用于加密文件。它起首猎取须要加密的文件的大小,假如文件大小小于0x986880(1000000)字节,则会运用AES-256-CFB算法加密一切文件数据。不然,将会读取数据的前0x986880(1000000)字节并将其加密,然后将原始文件的盈余数据复制到加密文件的末端。

搜检要加密的文件的大小:

以Linux体系为目的:剖析新型Golang言语讹诈软件

假如文件大于0x989680(以字节为单元),经由加密后的数据以下所示:

以Linux体系为目的:剖析新型Golang言语讹诈软件

0x03 总结

依据我们的剖析,可以看到这类讹诈软件并不庞杂,可以处于初始开辟阶段。我们应当意想到,愈来愈多的进击者正在运用Golang言语开辟歹意软件,我们也将不停监测并剖析这类以新型编程言语编写的歹意软件。

0x04 防备计划

FortiGuard AntiVirus效劳已将该歹意ELF文件检测为“ELF/Cryptor.B!tr”。

本文翻译自:https://www.fortinet.com/blog/threat-research/new-golang-ransomware-targeting-linux-systems.html


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明以Linux体系为目的:剖析新型Golang言语讹诈软件
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址