聊聊Go歹意软件的近况和趋向 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

聊聊Go歹意软件的近况和趋向

申博_行业观察 申博 56次浏览 未收录 0个评论

概述

近来几个月,我对Go言语编写的歹意软件产生了粘稠的兴致。Go,偶然也被称为GoLang,由Google于2009年建立,近年来在歹意软件开辟群体中愈来愈受欢迎。

虽然近年来议论Go歹意软件系列的文章愈来愈多,但Go歹意软件在数目上是不是真的显现上升势头?当前普遍认为Go主如果由渗入测试职员和红队在运用,所以我很猎奇哪一种Go歹意软件家属将会最为盛行。因而我最先收集尽量多的Go歹意软件,并将其按歹意软件家属举行分类。本篇文章重要形貌收集数据的要领和效果。

我统共取得了约莫10,700个用Go编写的歹意软件样本。依据样本的时候戳,可以得出结论,Go编译的歹意软件在数目上已稳定增进了数月。别的,已标识样本中有92%的是针对Windows操作体系编译的,表明Windows是Go歹意软件开辟职员最具针对性的体系。

在这些样本中,可以肯定其歹意软件家属的占到了75%。最着名的歹意软件家属包括Veil,GoBot2和HERCULES。别的另有一些盛行的歹意软件组合,包括pentest、长途接见木马(rat)和后门。

须要申明的是,RAT病毒和后门之间的区分在于歹意软件家属的特性。那些只供应最小功用并供应长途接见的被标记为后门,而功用完全的长途接见木马被标记为RAT。

为何要用Go呢?

Go有很多吸收人的特性,最大的吸收力之一是可认为一切重要操作体系平台(包括Windows,OSX和Linux)编译单个代码库。这能让攻击者将注意力集合在一个代码库上,而其他编程言语能够须要三个差别的代码存储库。

也有替换的要领,比方运用通用剧本言语(如Python)来编写代码库,这类要领之前在Chafer 要挟构造的案例中看到过,他们用Python编写了个中一个payload;Seaduke歹意软件家属用的也是这类要领。然则,因为Windows并没有在原生环境中供应Python,为了让这些代码库在环境中正确实行,它们必须依赖于PyInstaller之类的实用顺序举行封装。这类东西在完成这项事情时,会在植入文件运转过程当中留下很多陈迹,而Go就没有留下任何这些构件,这能够也是吸收攻击者的一个要素。

另一个长处(或瑕玷,取决于你怎样对待)是,一切必须的库都与编译后的二进制文件静态链接。这会致使二进制文件的大小高于均匀大小,在10700个用Go编写的歹意软件样本中,这些样本的均匀大小为4.65MB,比歹意软件一般要大得多,使得它在被木马顺序包中更难以运用。别的,因为电子邮件效劳器能够不允许附件太大,所以在垂纶邮件中也不太好使。

不过这类大尺寸也有意想不到的优点。在某些状况下,反病毒产物能够会疏忽文件,或没法扫描。这类状况在过去触及Comnie歹意软件家属的定向攻击中也曾涌现过,歹意软件的作者在文件中添加了64MB的渣滓数据以试图绕过反病毒产物。

要领

为了最先这项研讨,我必须尽量多地收集在Go中编译的歹意软件样本。然则事实证明,仅这项使命就相称难题。用于此研讨的存储库包括我们本身的以及第三方的VirusTotal效劳。主要步骤是简朴地收集一切可以辨认的Go样本,不管它们是不是是歹意的。

· 为了收集这些样本,我采取了多种要领,包括但不限于以下要领:

· 带有援用“Go.org”的嵌入链接的OSX或Linux样本

· 运用’Go-http-client / 1.1’用户代办的样本

· 运用’GRequests’用户代办的样本

· 包括’.symtab’部份称号的PE样本

· 运用一系列已辨认的导入哈希的PE样本

· 援用了Google的gopacket github存储库的OSX样本

· 援用gopkg.in的OSX样本

· 相符YARA划定规矩的样本

关于YARA划定规矩,这里是建立了三个零丁的划定规矩来辨认每一个重要平台的Go样本。比方,以下划定规矩用于标识为OSX编译的Go样本:

rule osx_GoLang
 
{
 
meta:
 
     author = “Josh Grunzweig”
 
     description = “Attempts to identify samples written in Go     
 
     compiled for OSX.”
 
     strings:
 
          $Go = “go.buildid”
 
     condition:
 
          (
 
               uint32(0) == 0xfeedface or
 
               uint32(0) == 0xcefaedfe or
 
               uint32(0) == 0xfeedfacf or
 
               uint32(0) == 0xcffaedfe or
 
               uint32(0) == 0xcafebabe or
 
               uint32(0) == 0xbebafeca
 
          ) and
 
          $Go
 
}

运用以上要领,我收集了约莫61.1万个自力的样本。

OEM软件使笔记本电脑处于风险中

本文介绍如何利用该漏洞来加载任意未签名的DLL到SYSTEM权限运行的服务中,来实现权限提升和驻留。 PC-Doctor 允许SupportAssist访问敏感低级硬件的组件是由PC-Doctor公司开发的。该公司主要开发硬件诊断软件。下面主要介绍PC-Doctor公司开发的组件来描述漏洞,然后说明如何利用该漏洞来访问物理内存这样的低级硬件。 Dell SupportAssist Dell SupportAssist是大多数Dell电脑预装的软件。该软件可以检查系统硬件和软件的健康。健康检查需要高权限级别的权限。为了以高级权限运行动作,签名的驱动会安装以及多个以SYSTEM运行的服务。 漏洞分析 研究人员首先关注的是Dell Hardware Support,因为该服务是一个非

在取得一切样本哈希以后,我查询了Unit42的体系和VirusTotal,以肯定哪些样本是歹意的。在VirusTotal里,我只是搜检了具有“malware”标识或5个以上歹意软件特性的选项,然后下载了这些盈余的样本,并运转了之前建立的YARA划定规矩,末了留下了约莫13,000个自力的样本。

以后我最先将这些样本聚类到它们各自的歹意软件家属中去。为此我重要采纳人工的要领,剖析给定的文件,并基于已辨认的歹意软件家属建立YARA划定规矩,我还编写了一些辅佐剧本用来从已标识的二进制文件中提取有效的信息。下面的辅佐剧本能从二进制文件中提取用户定义的函数名,以及一切能够存在的用户定义途径:

import sys
 
import re
 
inputfile = sys.argv[1]
 
fh = open(inputfile, ‘rb’)
 
fd = fh.read()
 
fh.close()
 
minimum = 5
 
char = r”[\t\n\x20-\x7f]” + “{{{},}}”.format(minimum)
 
wchar = r”(([\t\n\x20-\x7f]\x00)” + “{{{},}}”.format(minimum) + r”\x00)”
 
allStrings = []
 
for s in re.findall(char, fd):
 
     allStrings.append(s)
 
for s in re.findall(wchar, fd):
 
     allStrings.append(s[0].replace(“\x00″,”))
 
 
 
blacklist = []
 
allStr = []
 
for s in allStrings:
 
     if s[-3:] == “.go” and “main.go” in s:
 
          allStr.append(s)
 
     elif s[0:5] == “main.”:
 
          if “statictmp” not in s:
 
               if “.init.” not in s:
 
                    if “.(*” not in s:
 
                         allStr.append(s)
 
for x in list(set(allStr)):
 
     print(repr(x))

该剧本对个中一个样本的运转效果以下:

$ python find_interesting_strings.py fc684bbf9428a4e33c390e3963c9bfa24e81cb040ccd601c6e7f5b6c193e2808.bin
 
‘main.encryptFile’
 
‘main.writeLog.func1’
 
‘main.writeLog’
 
‘main.init’
 
‘main.scanDir’
 
‘main.ignoreUsersFolders’
 
‘main.ignoreRootFolders’
 
‘main.encryptFile.func1’
 
‘main.logFilePath’
 
‘main.ignoreProgramFilesFolders’
 
‘C:/Users/pc/go/src/scaner/main.go’
 
‘main.ignoreProgramDataFolders’
 
‘main.initdone’
 
‘main.makeReadmeFile.func1’
 
‘main.ignoreFiles’
 
‘main.ignoreFileExtensions’
 
‘main.main’
 
‘main.makeReadmeFile’
 
‘main.DEBUG’

如许可以很轻易肯定哪些函数名和代码途径是最常见的,并且在某些状况下能让我仅依据这些信息对样本举行聚类。个中一个歹意软件家属的YARA划定规矩以下:

rule trojan_golang_hercules: Pentesting
 
{
 
     meta:
 
          author = “jgrunzweig – PaloAltoNetworks”
 
          date = “2019-06-15”
 
          description = “the HERCULES malware family written in     
 
          Go.”
 
          hash1 = “2a7da0a0acadb61fb79fa4a33130d09ecff5a904b0999d264d8c1edffeffea95”
 
          hash2 = “6e68dafbb717daf6a505d8a95c41e5114d91c4fde703343356352c1ca5cd24ea”
 
          hash3 = “645ed38f2d55b2f7731d5c9223329428592497eb95c96bcd7c01a4eaeb38e137”
 
          reference = “https://github.com/EgeBalci/HERCULES”
 
     strings:
 
          $buildid = “go.buildid”
 
          $uniq1 = “cGFja2FnZSBtYWluCgppbXBvcnQgIm5ldCIKaW1wb3J0ICJvcy9leGVjIgppbXBvcnQgImJ1ZmlvIgppbXBvcnQgInN0cmluZ3MiCmltcG9ydCAic3lzY2FsbCIKaW1wb3J0ICJ0aW1lIgppbXBvcnQgIkVHRVNQTE9JVCIKCgoKY29uc3QgSVAgc3RyaW5nID0gIjEwLjEwLjEwLjg0Igpjb25zdCBQT1JUIHN0cmluZyA9ICI1NTU1IgoKY29uc3QgQkFDS0RPT1IgYm9vbCA9IGZhbHNlOw”
 
          $uniq2 = “cGFja2FnZSBtYWluCgoKaW1wb3J0ICJlbmNvZGluZy9iaW5hcnkiCmltcG9ydCAic3lzY2FsbCIKaW1wb3J0ICJ1bnNhZmUiCi8vaW1wb3J0ICJFR0VTUExPSVQvUlNFIgoKY29uc3QgTUVNX0NPTU1JVCAgPSAweDEwMDAKY29uc3QgTUVNX1JFU0VSVkUgPSAweDIwMDAKY29uc3QgUEFHRV9BbGxvY2F0ZVVURV9SRUFEV1JJVEUgID0gMHg0MAoKCnZhciBLMzIgPSBzeXNjYWxsLk5ld0”
 
          $uniq3 = “cGFja2FnZSBtYWluCgppbXBvcnQgIm5ldC9odHRwIgppbXBvcnQgInN5c2NhbGwiCmltcG9ydCAidW5zYWZlIgppbXBvcnQgImlvL2lvdXRpbCIKLy9pbXBvcnQgIkVHRVNQTE9JVC9SU0UiCgoKCmNvbnN0IE1FTV9DT01NSVQgID0gMHgxMDAwCmNvbnN0IE1FTV9SRVNFUlZFID0gMHgyMDAwCmNvbnN0IFBBR0VfQWxsb2NhdGVVVEVfUkVBRFdSSVRFICA9IDB4NDAKCnZhciBLMzIgPS”
 
         $path = “/HERCULES/”
 
 
 
         $banner = “HERCULES REVERSE SHELL”
 
         $help1 = “~DOS -A \”www.targetsite.com\””
 
         $help2 = “~WIFI-LIST “
 
         $help3 = “~KEYLOGGER-DUMP “
 
         $help4 = “Creates a reverse http meterpreter session at given pid (EXPERIMENTAL)”
 
 
 
     condition:
 
          (
 
                // Windows binary
 
               (uint16(0) == 0x5a4d) or
 
               // OSX binary
 
               (
 
                    (
 
                         uint32(0) == 0xfeedface or
 
                         uint32(0) == 0xcefaedfe or
 
                         uint32(0) == 0xfeedfacf or
 
                         uint32(0) == 0xcffaedfe or
 
                         uint32(0) == 0xcafebabe or
 
                         uint32(0) == 0xbebafeca)
 
                    ) or
 
                    // Linux binary
 
                    (uint32(0) == 0x464C457F)
 
               ) and
 
               filesize > 500KB and
 
               $buildid and
 
               (
 
                    any of ($uniq*) or
 
                    $banner or
 
                    any of ($help*) or
 
                    $path
 
               )
 
}

这类手动要领还能辨认误报。当我终究完成时,发明了约莫2,000个误报。如许歹意软件样本总数就是10,700,个中75%被肯定为歹意软件。

我在此研讨中共辨认出53个歹意软件家属,并为每一个家属建立了YARA划定规矩。

效果

或许这项研讨得出的最明白的结论之一是,在Go中编译的歹意软件文件数目还相对较少。虽然这有多是基于我的要领的才得出的结论,但我置信这是一个相称正确的结论。Go作为一种歹意软件开辟言语还处于起步阶段,还没有真正在歹意软件群体中取得很高的人气。话虽如此,依据收集的歹意软件样本的时候轴,我们可以看到它好像愈来愈受欢迎。

聊聊Go歹意软件的近况和趋向

图1所示.基于初次发明的Go歹意软件样本的时候轴。

这项研讨的另一个结论是肯定了Go歹意软件重要针对的操作体系——大多数是为Windows编写的,对很多人来讲这个效果能够并不不测。

聊聊Go歹意软件的近况和趋向

图2.编译了Go歹意软件样本的操作体系。

统共有92%的Go歹意软件样本是针对Windows操作体系编译的,4.5%是针对Linux编译的,其他的是针对OSX编译的。因为Windows依然是攻击者最具针对性的平台,这数据并不使人惊奇。然则我个人认为,在这项研讨中,Windows操作体系不会辨认出这么大比例的歹意软件。

如前所述,在本研讨过程当中共辨认出53个歹意软件家属。效果以下:

聊聊Go歹意软件的近况和趋向

表1.肯定的歹意软件家属。

依据歹意软件的属性和用处,将每一个歹意软件家属归入差别的种别,效果以下:

聊聊Go歹意软件的近况和趋向

图3.歹意软件种别。

可见,大多数辨认的文件都与渗入测试运动相干联,虽然它们也可以被歹意运用,但渗入测试才是重要用处。除此之外,我们看到很多被辨认的歹意软件样本都没有正当目标,比方RAT、后门、挖矿顺序和信息盗取软件在剩下的种别中首屈一指。

结论

总的来讲,这项研讨事情对我个人的启示是多方面的。“Go歹意软件的普遍存在与渗入测试相干”的这类先入为主的看法虽然获得了证明,但我们也看到,有大批实在的各种歹意软件,从后门到僵尸收集再到银行木马无所不包。而别的一个风趣的处所在,辨认出的歹意软件样本数目较低,这表明Go歹意软件依然没有获得开辟者的明显关注。不过依据歹意软件样本第一次涌现的时候戳也可看出,Go歹意软件正变得愈来愈受欢迎,比方从2017年1月到2019年3月的这段时候来看,Go歹意软件的数目增进明显,增进了近20倍(+1944%)。

Go歹意软件的生长还处于起步阶段,不过跟着新歹意软件家属的不断涌现,它将因为它的特性——针对一切重要操作体系仅需编译单个代码库——而愈来愈遭到歹意软件开辟者和全部平安社区的关注,所以我置信在将来的几年里,Go将在已开辟的歹意软件中占有更大的比重。

原文地点: https://www.4hou.com/info/observation/18958.html


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

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

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