主机安全案例:一次挖矿木马处理过程

2020-10-26 11:10:27 浏览数 (2)

案例背景

由于用户安全配置参差不齐,很多用户的系统没有做好安全防护,很容易遭受木马的入侵,挖矿木马是比较常见的一种顽固木马,在遇到主机被挖矿木马入侵时,我们可以做些什么呢?

问题说明

用户早晨反馈服务器前一天晚上被攻击,无法登录,影响客户的使用。

原因分析

1. 首先查看主机安全控制台,已经开启了专业版防护功能,看到有木马入侵,并且已隔离,可以断定木马有其他脚本或者程序启动,隔离后仍然无效。

主机安全控制台主机安全控制台

2. 查看机器的监控,出现CPU占用100%,时间大概在凌晨12点到1点之间。这种情况,首先怀疑是挖矿病毒。接下来就是申请用户授权登陆机器查看了。

3. 进入系统后,首先查安全日志 /var/log/secure,其中看到一条凌晨登陆成功的日志,时间是00:17:35,跟CPU升高的时间差不多吻合,可以猜测是通过暴力破解登陆的系统。

secure日志secure日志

查看暴力破解情况

grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1n";}'|uniq -c|sort -nr

可以看到有很多登录失败,证实了自己的猜想。

3.查看定时任务,是否有定时脚本存在,导致清理病毒后,又会重新生成,看到有个命名为run的文件定时运行/root/.configrc/b/run

4. 查看挖矿木马文件内容

strings /root/.configrc/b/run 可以看到带eval的执行命令

到这里可以确定客户是由于系统安全防护不完善,导致暴力破解入侵后,通过定时任务启动病毒进行挖矿,导致CPU长时间100%。

解决方案

我们知道了病毒的来源,接下来就要清理了

第一步,删除定时任务中的/root/.configrc/b/run记录

第二步,查看有哪些非正常的端口在监听,并记录非正常的监听端口对应进程的PID

netstat -alnp|grep LISTEN|head 15

第三步,strace 病毒名称,查看病毒的的连接情况以及打开的文件

第四步,kill 掉对应的进程PID

第五步,删除病毒文件目录及生成的目录

rm -rf /root/.configrc/

rm -rf /tmp/.X25-unix/

继续观察是否有新的异常进程和端口启动。

拓展一下

很多病毒会在其他地方留下启动的种子,因此我们需要分析病毒整个启动过程,避免清理不干净,本例中的/root/.configrc/b/run文件,打开后发现是经过base64编码

runrun

经过base64解码后如下

base64解码base64解码

后面的明文perl代码是经过pack混淆的,unpack解码的就行了,最简单的办法是把签名的eval改为print,代码就出来了

最终得到的代码(截取部分)

代码片段代码片段

总结一下

一、安全防护很重要,做好登录策略、密码复杂度、安全组配置,会让我们的主机免于很多攻击。

二、病毒的入侵需要找到入侵的源头,一步步抽丝剥茧,才能完全清理干净。

三、perl代码混淆的原理说明:

1.perl语言的pack和unpack函数接受一个模式和一些数据,并根据该模式转换此数据。例如,pack "H*", "466F6F"将数据视为任意长度的十六进制字符串,并将其解码为它表示的字节。

2.当使用unpack函数执行相反的操作时,会将数据从二进制表示形式提取为某种格式。

3.通常perl类型的木马脚本会使用perlcc、perl2exe、PAR(Perl Archive Toolkit)等工具进行加密混淆,此列中只是使用pack转换成了指定格式的二进制字符串

以上内容根据@theon处理案例整理。

0 人点赞