即使是被入侵了也可以学到一些知识!
起因
前几天,我闲来无事登录了一下一台之前一直闲置的服务器,登录上去后,乍一看似乎没有任何问题,然后习惯性的执行了一下top
命令看了一眼。从进程列表来看,似乎没有什么明显异常的地方,但是服务器的load值很高,cpu的us值也很高。
以前我倒也遇到过几次load值很高的情况,一般是硬盘或NFS等网络存储挂了但是依然有程序在读写挂载的目录会有这种问题,但那种情况一般高的是cpu的wa值,而不是us值,us值是软件正常用掉的……但是进程列表里根本没有占CPU的程序啊……看来服务器是被入侵了😰。
检查服务器
虽然说是要查,但其实我根本不知道进程隐藏的原理😂,虽然听说过有恶意软件会这样做,现在遇到了一时半会又想不出来怎么找。还好这是台闲置的服务器,上面什么东西都没有跑,所以正常来说除了ssh连接之外,这个服务器不该有任何其他的连接,于是我执行了一下netstat -tanp
看了一眼,发现有个奇怪的进程使用一个境外的IP和我的服务器建立了连接,用ps -ef
查了一下这个 PID,结果进程名显示为[kcached]
……这下给我整不会了。
后来查了些资料知道了可以用lsof -p
查看进程读取的文件,才看到木马的本体:/usr/bin/gs-dbus
。不过如果我只是杀掉这个进程然后删除文件,那攻击者肯定会重新回来,所以我得排除一下是不是还有别的木马文件。
一般来说攻击者权限维持的方式大多是crontab,不过我看了一下配置文件里似乎没有,root下的authorized_keys
倒是有个陌生的公钥于是顺手删掉了……也没有其他文件夹下有gs-dbus
文件……难道没有别的木马文件了吗?后来我仔细找了一下,发现有个很可疑的文件/usr/local/lib/libprocesshider.so
,一看就不是什么好东西🤣,后来在GitHub上搜了一下,是libprocesshider这个项目,就是它让我在top中什么也没找到的,看文档中应用是添加一个/etc/ld.so.preload
文件,所以解除隐藏效果我也只需要删掉这个文件就好啦。
不过感觉还是不够……所以我全盘搜索了一下libprocesshider.so
文件,果不其然还有,通过那个文件在/usr/games里找到了木马的大本营,里面有一堆这个入侵者的工具,于是就顺手保存了一份然后从服务器上删掉了。
另外还有自启动到底是怎么实现的?既然不是crontab……应该是systemd。看了一下果不其然有个服务在保持gs-dbus
的运行,不过程序我已经删了,所以它现在只会不停尝试重启,接下来只需要停止并禁用这个服务就行了。
至于为什么会被入侵……我也很清楚,其实并没有什么漏洞,单纯是设置的密码太简单了,被嘿客扫到啦!所以解决起来也很简单,把这些垃圾清除掉之后设置个稍微复杂一点的密码就行了。
入侵分析
既然这个嘿客都不删他的工具,留下来就是给我分析的吧?那么我就像上次一样分析一下他使用的工具吧~首先里面有个deploy-all.sh
文件,看起来应该是登录服务器之后最先执行的程序,在这里面有个压缩包,解压出来之后搜了一下里面的文件,发现是Global Socket项目,看起来应该是包含反弹Shell、伪装以及权限维持之类功能的一个小工具。看了下源代码才知道原来用exec -a
就可以伪装进程的名称,而且那个gs-dbus
就是这个项目里的程序……这么看来挖矿的操作应该是入侵者远程执行的代码,所以在查找进程的时候发现了它吧。
除此之外里面还有个logclean项目,看了一眼是mig-logcleaner-resurrected项目,看起来应该是清除日志用的,不过我根本没从日志找它🤣,即使入侵者用了对我来说也没起到什么作用。不过倒也是个挺有用的项目,也许在某些扫尾工作很有用。
最后就是libprocesshider这个项目,也许还有其他隐藏进程的方式,不过知道这个项目之后最起码以后再遇到类似的情况我就会优先去看/etc/ld.so.preload
文件了。
至于其他的就是一些爆破SSH的工具,估计是用来横向渗透的,看起来有点原始……也没啥用处,另外还有连接XMR矿池的一些配置文件,以及我也看不出来的玩意,应该就这么多有用的东西了。
感想
虽然被入侵是没有预料的事情,但还好这个服务器是闲置的,装完系统之后上面什么有用的东西都没有,所以除了入侵者让它不太闲置赚了点小钱之外对我倒是没什么损失,另外还了解到了一些不错的小工具,这么看来入侵者赚的这点小钱就当是给他的学费吧🤣。