记Linux上开放Redis公网访问导致pnscan挖矿病毒入侵
根据表现特征定位问题
排查步骤也是根据表现特征来的,第一表现就是网卡了,具体开始时间是2024-02-20 16:16.
一开始以为路由器挂了,然后发现是这台服务器的问题,因为只要一拔掉就没事,一插上就卡死。现在想想其实应该能想到是在全端口扫描导致的,只是一开始不知道为啥,很懵。在服务器上唯一能看到的表现就是通过netstat -ano看到大量的SYN_SENT(这里忘了截图),都是发往各个IP的6379端口,所以这个时候就感觉到是redis漏洞入侵了.
第一时间top查看占用CPU或者内存高的进程,但是看不到,因为挖矿病毒修改了Linux系统的动态链接库配置文件/etc/ld.so.preload内容并引用了/usr/local/lib/下的so文件.
但是此时并不知道动态链接库的事情,因为还是按照特征去定位问题的.同时根据百度,再按照一定的黑客思路分析原因
黑客思路
先在/root/.ssh下生成authorized_keys文件进行免密登录,也就是常说的黑客后门,为了文件不被删除,还用chattr给文件增加i不可修改属性,然后再把chattr命令改掉,这样就保证黑客自己能正常登录。
然后就用msscan进行全网段全端口扫描,再发起TCP访问去感染其他电脑(此服务器就变成了肉鸡)。
下载busybox进行杀毒
rm无法删除文件是因为文件被chattr添加了i不可修改属性,但是自己chattr去删除文件属性的时候又无法执行,所以从别的地方下载了busybox这个瑞士军刀,上传后编译,就能用busybox chattr命令修改属性了,其他所有病毒文件都是差不多这样搞定的
至于杀病毒进程,也是用busybox top看进程,或者
1 | ps auxf|grep -v grep|grep pnscan | awk '{print $2}' | xargs kill -9 |
kill的时候因为动态链接预加载,所以pid是会变化的,所以要先去解决ld.so.preload的事情.
busybox是静态编译的, 不依赖so库,所以不会被ld.so.preload劫持,所以能正常操作文件,真的是应了那句以不变应万变.
还有要记得检查定时任务,不过我这次没发现啥问题,即使如此我也是删了各种定时,包括年月日啥的.
最后netstat -ano看SYN_SENT没有了,动态链接so文件和authorized_key也删除了,pnscan也kill没了,但是路由器上解禁服务器后还是会卡死,此时用busybox top查看发现居然还有msscan这个全网段全端口扫描进程,这才想通怪不得路由器会被卡死.直接删掉msscan后kill进程就全部结束了.
另外:找pnscan可以用whereis pnscan命令,挺好用的.
要不是因为这服务器上面有个关键的服务,我才不管了,直接叫运维人员去重装了,花了我一整天的时间搞这个.