背景:客户服务器被挂载木马病毒用以挖矿(比特币)。
本次清理通过Linux基本命令完成。其原理也比较简单,通过ps命令查看服务器异常进程,然后通过lsof命令定位进程访问的文件,找到异常文件删除之,最后为了确保万无一失,可以通过find命令找出最近时间内服务器上产生的文件进一步排除。
刚开始通过top命令发现某个进程占据大量系统CPU资源,但是该进程确不是我们系统业务进程。通过kill -9 PID 杀掉该进程,观察一会后,进程又恢复了。怀疑是定时任务拉起的,固排查了下定时任务相关的配置文件/etc/crontab文件,果然文件中存在一条新增加的内容,干掉该条配置,并找到它的启动的可执行文件,删除之。继续杀掉进程,可是发现该进程又被拉起了。看来不止定时任务,可能还有其他守护进程存在。
利用ps命令查看最近启动的所有进程:ps -aux --sort=start_time |tail -n 50
通过分析,找到有几个进程存在问题,有启动脚本的,有wget从网络上下载文件的进程。
通过lsof -p pid定位以上异常进程访问的相关文件资源,删除非系统文件后kill对应进程。
观察一段时间后发现又有异常进程起起来了。这时候就开始头疼了,还有什么地方呢。会不会是一些系统文件被感染了?顺着这条思路,找到最近一段时间被修改的文件列表
find $path -ctime -30 print
把/usr /root /tmp /bin等系统目录找了个遍,发现大量异常文件,其中甚至有一些常用的命令如:ps netstat lsof wget 等被篡改过(通过stat命令查看状态)。
并且以上系统命令大小一模一样,算了下md5也一样,果然有问题。把对应命令文件拷贝出来,放到在线病毒库对比一看,果然是病毒。先用正常服务器的对应文件替换被感染的系统命令。然后再按照之前清理步骤再清理一遍。好了,观察了一会,没有进程文件再被拉起了。
接下来,追踪下最近修改文件,看看能不能找到黑客是怎么入侵进来的。我们发现在activemq目录下存在大量异常jsp文件,查看其内容,简直就是一个网页版的命令执行工具啊。看来咱服务器用的activemq存在漏洞,被黑客利用了,植入后门文件,然后利用wget命令下载病毒完成病毒植入,再利用命令执行工具,完成相关进程部署。临时应急方案,我们选择屏蔽activemq的管理页面的访问权限(之前对公网开放了该端口)。本次病毒清理也到此结束了。
反思:对服务器上一些开源组件的使用时,我们应该保持警惕,不能说完全不用,但是要随时关注组件的漏洞情况,及时修复,同时,对于一些非公共资源的访问,避免对公网开放。养成定期对系统做安全检查。