记一次挖矿病毒清理 – 作者:andiSEC

0x01 背景

公司同事反馈大数据平台不能访问,初步原因是由于环境变量被破坏,经过内部的简单讨论后,环境变量并非内部同事所为,由此判定可能是中病毒了。

1619661851_608a141b9fc7c5477d0eb.png!small?1619661851746

0x02 发现病毒

病毒查杀一般都先查看进程,看看有没有不认识的进程,或资源占用较高的进程。果不其然进程“-bash”CPU占用1400%,明显有问题。

1619661864_608a1428b6198496767bd.png!small?1619661864945

使用-p查看进程1732已打开的内容,首先/usr/bin/-bash(deleted)文件名称前面加“-”就很可疑,一般正常的文件名不会以“-”开头,因为“-”开头的文件不容易被查找和操作(知识点1),可疑点1。同时后面的括号显示已删除,一般正常的文件运行起来后不会自己删除的,可疑点2

1619661876_608a14342a0bd9751b173.png!small?1619661876283

最后一行,该主机的57076端口连接了http://51.75.133.158

1619661895_608a14478354cf296915b.png!small?1619661895595

通过浏览器访问该ip地址居然可以打开,显示如下:

1619661904_608a145063c1dd22408b1.png!small?1619661904612

到这里已经很明确了,服务器中了联机挖矿病毒。

0x03 清理病毒

查看/usr/bin/-bash文件,并无此文件(通过上面lsof查看pid时就已经知道该文件已被删除),杀掉1732进程后重启服务器,结果发现该程序依然存在。

启动项1

查看chkconfig,发现可疑程序“pwnrig”,如下图:

1619661915_608a145b10944b3c30e98.png!small?1619661915383

通过百度搜索,该程序名大多指向了挖矿病毒,进一步验证了该程序是病毒程序,如下图:

1619661923_608a1463773de0ef30eee.png!small?1619661923660

接下来就是查看该程序的启动代码,如下图:

1619661932_608a146c1944169e66017.png!small?1619661932293

很明显/bin/-bash是从/bin/sysdr复制过去的,然后运行,最后再删除自己

启动项2

删除上图启动项之后,杀掉-bash进程,重启服务器,结果-bash程序还是存在,由此推断该程序还存在其它启动项,这很符合病毒的基本特征——有效的驻留。但是一般情况这样的驻留都是徒劳,因为病毒一旦被发现,再次启动特征依然存在,管理人员肯定会想尽办法删除。

查看.bash_profile发现同样的命令,复制à运行à删除,不过这次的源文件和上面的不同(/bin/bprofr),记录这两个文件名,然后删除该条记录。

1619661940_608a14743029c546713d4.png!small?1619661940321

计划任务

由于此次病毒清理的梳理过程与事发时间相隔较远,所以部分过程已丢失,无详细截图,但可以从清理脚本中看出,此次病毒在计划任务中也添加了驻留代码。

全局搜索

清理病毒时,最好做若干次全局搜索,同名的全局搜索,和近似名称的全局搜索,尽可能保证所有病毒文件被查找出来。

1619661965_608a148d3a4ddaad51e1d.png!small?16196619652821619661948_608a147cbe0d78f128969.png!small?16196619488511619661971_608a1493ca540c3976965.png!small

时间搜索

通过对此次病毒事件的分析,该病毒的入侵时间基本可以确定,所以配合全局搜索后,还需要对敏感目录下病毒入侵时间的文件进行筛选,尽可能全面地找出所有病毒文件。

1619662001_608a14b1ef2be0b7aa73e.png!small?16196620022691619662008_608a14b8f2df33756f6c0.png!small?1619662009003

病毒清理

通过对此次病毒文件的清理来看,我收回我上面说的那句“有效驻留都是徒劳”话[手动哭笑],这病毒文件也太TM多了吧!!!而且很多名称都不一样,这样很有可能导致病毒文件查找不全,进而导致清理不彻底。

chattr -ai -V /bin/bprofr

rm -rf /bin/bprofr




chattr -ai -V /bin/bprofo
rm -rf /bin/bprofo
chattr -ai -V /bin/sysdr
rm -rf /bin/sysdr
chattr -ai -V /usr/bin/-bash
rm -rf /usr/bin/-bash
rm -rf /run/systemd/generator.late/pwnrig.service
rm -rf /etc/systemd/system/multi-user.target.wants/pwnrige.service
rm -rf /etc/systemd/system/multi-user.target.wants/pwnrigl.service
rm -rf /run/systemd/generator.late/runlevel5.target.wants/pwnrig.service
rm -rf /run/systemd/generator.late/runlevel4.target.wants/pwnrig.service
rm -rf /run/systemd/generator.late/runlevel3.target.wants/pwnrig.service
rm -rf /run/systemd/generator.late/runlevel2.target.wants/pwnrig.service
chattr -ai -V /etc/cron.daily/pwnrig
chattr -ai -V /etc/rc.d/init.d/pwnrig
chattr -ai -V /etc/systemd/system/pwnrige.service
chattr -ai -V /etc/cron.hourly/pwnrig
chattr -ai -V /etc/cron.d/pwnrig
chattr -ai -V /etc/cron.monthly/pwnrig
chattr -ai -V /etc/cron.weekly/pwnrig
chattr -ai -V /usr/lib/systemd/system/pwnrigl.service
rm -rf  /etc/cron.daily/pwnrig
rm -rf  /etc/rc.d/init.d/pwnrig
rm -rf  /etc/systemd/system/pwnrige.service
rm -rf  /etc/cron.hourly/pwnrig
rm -rf  /etc/cron.d/pwnrig
rm -rf  /etc/cron.monthly/pwnrig
rm -rf  /etc/cron.weekly/pwnrig
rm -rf  /usr/lib/systemd/system/pwnrigl.service
rm -rf   /etc/rc.d/rc0.d/K60pwnrig
rm -rf   /etc/rc.d/rc1.d/K60pwnrig
rm -rf   /etc/rc.d/rc2.d/S90pwnrig
rm -rf   /etc/rc.d/rc3.d/S90pwnrig
rm -rf   /etc/rc.d/rc4.d/S90pwnrig
rm -rf   /etc/rc.d/rc5.d/S90pwnrig
rm -rf   /etc/rc.d/rc6.d/K60pwnrig

/sys/fs/cgroup/devices/system.slice/pwnrige.service
/sys/fs/cgroup/systemd/system.slice/pwnrig.service
/sys/fs/cgroup/systemd/system.slice/pwnrige.service
/etc/systemd/system/multi-user.target.wants/pwnrige.service
/etc/systemd/system/multi-user.target.wants/pwnrigl.service
/etc/systemd/system/pwnrige.service
/etc/rc.d/init.d/pwnrig
/etc/cron.hourly/pwnrig
/etc/cron.d/pwnrig
/etc/cron.monthly/pwnrig
/etc/cron.weekly/pwnrig
/usr/lib/systemd/system/pwnrigl.service
/sys/fs/cgroup/devices/system.slice/pwnrige.service
/sys/fs/cgroup/systemd/system.slice/pwnrige.service
/etc/rc.d/rc0.d/K60pwnrig
/etc/rc.d/rc1.d/K60pwnrig
/etc/rc.d/rc2.d/S90pwnrig
/etc/rc.d/rc3.d/S90pwnrig
/etc/rc.d/rc4.d/S90pwnrig
/etc/rc.d/rc5.d/S90pwnrig
/etc/systemd/system/pwnrige.service
/usr/lib/systemd/system/pwnrigl.service

1619662029_608a14cd966b066090924.png!small?1619662029651

知识点1

通过vim -test.txt创建“-test.txt”文件时,vim会把“-t”当成参数

1619662037_608a14d5e55d105740613.png!small?1619662038130

grep也同样

1619662045_608a14dd2bb077839110a.png!small?1619662045257

1619662074_608a14fa6a46728e5e472.png!small?1619662074584

1619662082_608a1502a5c714c84355d.png!small?1619662082792

touch也同样

1619662105_608a1519e4f59de4639da.png!small?1619662106342

cat也同样

1619662096_608a151001921275e0489.png!small?1619662096061

find也同样

1619662145_608a1541ac79bfacf1837.png!small?1619662145777

知识点2

chattr命令用于改变文件的属性,这些属性共有以下8种模式:

a:让文件或目录仅供附加用途。

b:不更新文件或目录的最后存取时间。

c:将文件或目录压缩后存放。

d:将文件或目录排除在倾倒操作之外。

i:不得任意更动文件或目录。

s:保密性删除文件或目录。

S:即时更新文件或目录。

u:预防意外删除。

lsattr命令用于显示文件属性,参数如下:

-a  显示所有文件和目录,包括以”.”为名称开头字符的额外内建,现行目录”.”与上层目录”..”。

-d  显示,目录名称,而非其内容。

-l  此参数目前没有任何作用。

-R  递归处理,将指定目录下的所有文件及子目录一并处理。

-v  显示文件或目录版本。

-V  显示版本信息。

来源:freebuf.com 2021-04-29 10:23:38 by: andiSEC

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论