DDG僵尸挖掘样本v3016技术详解 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

DDG僵尸挖掘样本v3016技术详解

申博_新闻事件 申博 223次浏览 已收录 0个评论

0×00.媒介

近日,我们蜜罐捕捉到一列挖矿样本,经剖析确以为DDG.Mining.Botnet样本的3016版本。与其上一版本比拟,3016版本接纳了新的分布式框架Memberlist来构建僵尸收集。基于该框架,DDG僵尸收集能够更稳固的完成C2去中央化,和更天真的治理和扩大集群。

0×01.样本对照

DDG是一个应用SSH、Redis相干破绽入侵服务器并构建僵尸收集,应用服务器资本挖取假造泉币(门罗币)的Linux恶意递次。经由剖析,梳理出样本行动团体流程以下:

DDG僵尸挖掘样本v3016技术详解

经由过程和上一版本v3014的DDG样本对照后,发明样本针对ssh,redis的进击应用模块并没有太大转变,两个版本基本一致。经由过程bindiff能够看到更直观看到(ssh进击模块):

DDG僵尸挖掘样本v3016技术详解而V3016版本的更新点Memberlist是一个基于Gossip协定完成,golang开辟的分布式框架。Gossip是一种去中央化、容错并包管终究一致性的协定。它的基本思想和疫情流传相似,经由过程赓续的和集群中的节点交流信息,经由屡次交互以后,Gossip协定即可将信息通报到一切的节点,从而疾速收敛抵达一致。

0×02.样本详细剖析

1.复原函数名

DDG接纳golang开辟,且在编译成可实行文件时去除标记表,然则个中包含了一个叫.gopclntab的section,内里存着递次一切导入包的标记信息:

DDG僵尸挖掘样本v3016技术详解应用网上已有的自动化工具完成大部分函数名的复原:

DDG僵尸挖掘样本v3016技术详解2.前置剖析

go递次有个特性,.gopclntab中存的函数名=包名_包下的函数名,以是直接搜刮main关键字就能够找出main包中一切的函数,我们从main_main函数最先入手剖析。能够看到前面跟v3014版本一致,起首是检测运转的环境参数,再应用golang的VividCortex/godaemon包将本身设为保卫历程:

DDG僵尸挖掘样本v3016技术详解接着流程照样跟v3014一致,先是挪用main_singleInstance函数经由过程推断是不是存在3016.lock文件来一定ddg主递次是不是已在受害者机械上运转:

DDG僵尸挖掘样本v3016技术详解首次运转的话则挪用main_NewGuard函数完成一些特别文件的转变的监控。详细完成接纳的golang的fsnotify包,监控的文件工具有三个:/root/.ssh/authorized_keys,/var/spool/cron/crontabs/root,/var/spool/cron/root。

DDG僵尸挖掘样本v3016技术详解接着挪用main_NewBackdoor,经由过程个中的main__ptr_backdoor_injectSSHKey函数写入内置的公钥到受害者机械的authorized_keys中,完成ssh后门的植入。

DDG僵尸挖掘样本v3016技术详解DDG僵尸挖掘样本v3016技术详解 3.集群节点构建

建立保卫历程,文件监控和后门植入完成后,两个版本的接下来的流程就不再完全一致了:

DDG僵尸挖掘样本v3016技术详解从汇编代码能够清晰的看到v3016版本接纳main_MustXList函数替换了v3014版本的main_NewXHosts函数,且代码的实行流递次也有所转变,v3016没有再先从内置的IP列表中下载并运转挖矿递次,而是挑选先构建分布式节点,到场集群收集。节点构建团体流程以下: DDG僵尸挖掘样本v3016技术详解

我们跟进这个新的函数,看看其详细完成。起首猎取受害者机械以后用户家目次,再将途径与3016.bs拼接后翻开:

DDG僵尸挖掘样本v3016技术详解翻开文件后,则应用golang的bufio包轮回读取文件中的每行内容,并将不在内置列表中的内容存入内置的ip列表中,完成后封闭文件:

DDG僵尸挖掘样本v3016技术详解接着经由过程ddgs_xlist_New函数构建分布式节点。节点名字是以ddg版本号+主机名md5构成,并将方才更新后的内置ip列表与节点名字一同传入该函数中。

DDG僵尸挖掘样本v3016技术详解若样本首次抵达受害者机械,3016.bs文件一定不存在,那末传入ddgs_xlist_New的ip列表就接纳最原始内置的:

DDG僵尸挖掘样本v3016技术详解跟进ddgs_xlist_New函数,就会发明该样本接纳的是hashicorp的go开源库memberlist构建分布式收集,而这在v3014版本中是没有的。

DDG僵尸挖掘样本v3016技术详解借助Memberlist的文档,继承跟进。能够看到起首建立transport和对应的udp和tcp端口的Listener,用于节点之间底层的收集通讯,个中udp用于传输ping,alive等音讯,tcp传输PUSH-PULL音讯来同步节点之间的数据。

DDG僵尸挖掘样本v3016技术详解PUSH-PULL音讯的寄义:

DDG僵尸挖掘样本v3016技术详解接着建立设置装备摆设启动项,能够看到DDG接纳的是默许广域网设置装备摆设:

DDG僵尸挖掘样本v3016技术详解

————————————-

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

————————————-

由于memberlist是开源的,以是能够在config.go中看到其缺省设置装备摆设,默许端口号为7946:

DDG僵尸挖掘样本v3016技术详解

而个中DefaultWANConfig是建立在DefaultLANConfig之上的:

DDG僵尸挖掘样本v3016技术详解与数据包中的通讯端口一致:

DDG僵尸挖掘样本v3016技术详解设置装备摆设项建立完成后,经由过程此设置装备摆设项建立memberlist,并启动对应的listener:

DDG僵尸挖掘样本v3016技术详解建立memberlist完成后,再猎取当地节点状况等信息和地点,然后实验衔接ip列表中的远端节点从而到场远端的集群,让远端节点晓得当地节点的存在,并实验经由过程pushPull音讯发送和吸收节点信息和数据,末了返回胜利衔接上的远端节点数目或错误信息。

DDG僵尸挖掘样本v3016技术详解当返回错误信息时,播送leave音讯,然则listener依然启用,继承介入gossip和状况更新,直到超时:

DDG僵尸挖掘样本v3016技术详解接着挪用ddgs_xlist__ptr_bootstraps_Bootstrap函数,经由过程Memberlist包的Members函数猎取到一切已知存活节点的信息并返回。

DDG僵尸挖掘样本v3016技术详解DDG僵尸挖掘样本v3016技术详解返回后将这些新猎取到的远端节点信息与内置ip列表兼并:

DDG僵尸挖掘样本v3016技术详解DDG会依照以上的流程轮回100次,赓续实验到场远端集群中来猎取这些远端节点所具有的一切存活节点列表。

DDG僵尸挖掘样本v3016技术详解终究当当地存活节点列表与远端节点的列表抵达一致后就跳出轮回返回:

DDG僵尸挖掘样本v3016技术详解DDG僵尸挖掘样本v3016技术详解前面说到传输节点数据用到的是tcp,在数据包中能够看到确切接纳的是tcp传输push-pull音讯来同步节点之间的数据:

DDG僵尸挖掘样本v3016技术详解4.后置剖析

同步完远端节点的数据信息到当地节点后,接下来流程就跟v3014基本一致了,先是经由过程main_NewMinerd下载挖矿递次,再经由过程main_pingpong函数接见内置ip列表中的ip猎取设置装备摆设文件,接着挪用main__ptr_minerd_Update函数更新挖矿递次的设置装备摆设,末了经由过程ddgs_cmd__ptr_Table_Do函数实行设置装备摆设文件中返回的掌握敕令,完成进击模块的挪用、下载最新的bash流传剧本等。

DDG僵尸挖掘样本v3016技术详解DDG僵尸挖掘样本v3016技术详解个中猎取的设置装备摆设文件以下(msgpack编码):

DDG僵尸挖掘样本v3016技术详解以上几个函数在基本功用和流程上,与V3014比拟没有太大的转变。下载下来的挖矿递次也一致,依然是v3014版本运用的qW3xT.4,接纳开源挖矿递次XMRig/2.8.1编译而成。这里就不逐一睁开做详细剖析了:

DDG僵尸挖掘样本v3016技术详解终究样本会在受害者机械以后用户家目次下的.ddg目次写入3016.bs文件来寄存当地一切的节点列表,能够看到合计1872个:

DDG僵尸挖掘样本v3016技术详解完全列表:3016.bs 

5.总结

笔者以为DDG接纳基于Gossip协定的memberlist,重要长处有以下两方面:

1.在集群中一切节点之间都是对等的,节点之间会互相通讯,不再是依托某一特定节点来同步状况和数据通报,好比当某个节点挂掉时,不再须要主节点来搜检发明并更新状况后同步到集群,由于当集群中恣意一个节点发明该节点宕机,就会经由过程Gossip播送给全部集群,终究一切节点都能够晓得。如许恣意一个集群中的节点都能够用作c2来掌握治理全部集群。

2.纵然集群数目很大,但每一个节点的负载也不会增添许多,几乎是恒定的,如许进击者能治理掌握的集群范围也能够扩大许多。

0×03.后话

剖析完3016版本,在接见个中一个c2:http://132.148.241.138:8000/static/时发明样本版本在短短十几天已又迭代了多个版本了,已到了3019,能够看出作者很活泼。

DDG僵尸挖掘样本v3016技术详解每一个版本大抵看了下,在3017,3018版本接纳upx 3.95紧缩了下,减小了elf文件的体积;最新的3019版本没有紧缩,只是样本名字变成了fmt.*。几个版本与v3016比拟,递次整体流程没有太多转变,应该是在小部分函数上有所转变,感兴趣的同伙能够自行下载跟进一下。


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

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

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