Linux主机被SSH精神病(Psychos)暴力攻破后成为肉鸡的攻防过程

时间:2023-03-09 04:49:05
Linux主机被SSH精神病(Psychos)暴力攻破后成为肉鸡的攻防过程
近日公司局域网突然变得非常慢,上网受到很大影响,不仅仅是访问互联网慢,就连访问公司内部服务器都感到异常缓慢。于是对本局域网网关进行测试:
$ ping 10.10.26.254
发现延时很大,而且丢包相当多,丢包率达到70%-90%。先怀疑是否有机器中毒在局域网内大量发arp包,于是在自己机器上用arp命令检测:
$ sudo arp -a
可以看到本局域网内的主机ip以及对应的mac地址,貌似没有什么大问题。然后在本机上运行wireshark小鲨鱼抓包,发现确实有几个本局域网内的ip在给全网广播地址发udp包,根据ip和mac地址找到这几个主机后,让他们拔掉网线进行杀毒或者系统重装,但网慢的现象仍然存在。通过对局域网上联交换机的端口进行排查,发现局域网有主机仍然在大量向往发送数据包,量非常大,上百兆的规模,导致上联交换机端口带宽被堵死,网络当然慢了。对局域网内楼层交换机进行逐一排查,最后锁定到连接某个端口的一台主机,ip为10.10.26.70,在大量向外发数据包,很快便找到了这台主机。原来这是一台装有CentOS 7.0的Linux系统台式机,本来是作为开发测试使用的。这就很奇怪了,一般来讲Linux系统安全性比较高,而且该主机上也没有明显的服务漏洞。对系统进行检查,逐一关闭了一些服务以后,只保留ssh监听端口(22),其余服务全部关闭,但现象依旧。运行ifstat命令可以看到主机网卡接收和发出数据包的流量统计:
$ sudo ifstat
显示TX Data发出数据量巨大,达到几百兆规模,相当可怕!马上用lsof命令检测网络对外流量到底是什么:
$ sudo lsof -i
发现大流量是对外发tcp数据包,而且是发往103.240.140.152这个地址。查了一下这个地址,显示来自香港特别行政区的。同时,用top命令查看当前运行的进程:
$ top
发现总有一个不知名的字母随便乱排的进程几乎总是排在第一位,占用的系统资源最多。于是记下其PID进程号后,用ps命令查找该进程的信息及启动命令:
$ ps -ef | grep 可疑进程号
显示结果居然是一个shell内部命令,比如“cd /etc”这样的。用kill命令尝试杀掉该可疑进程:
$ sudo kill -KILL 可疑进程号
可疑进程的确是被杀掉了,马上就不发包了。网络恢复正常,但是好景不长,过了一分钟左右,网络又开始变慢,检查发现主机又开始大量发包。通过top命令发现又出现一个可疑进程大量消耗系统资源,排在第一位,进程名还是一串字母随机无序组成的,但和刚刚杀死的那个可疑进程名字不同。基本可以确定,这台主机肯定是被黑掉变成肉鸡了。马上检查系统日志:
$ sudo lastb
可以发现大量对ssh远程登录的尝试失败记录,数量相当恐怖。基本可以确定,本机是被ssh暴力攻破远程登录后变成了肉鸡。随即在网上搜索有关ssh攻击和103.240.140.152的相关内容,原来是在2014年底开始到处肆虐的“ssh神经病(Psychos)”攻击,这是一种新型的Linux恶意软件和工具包,用来发动DDoS攻击。通常都是通过异乎寻常的ssh暴力尝试登录攻击远程主机。在ssh暴力尝试root密码并登录成功之后,会从控制主机上下载恶意文件并安装执行,肉机立刻开始搜索它的命令控制(C2)主机连接建立之后,C2就可以指挥肉机发动SYN洪水攻击。
这个恶意木马程序一旦被安装在肉鸡上后,用kill无法彻底杀掉,因为总是会隔一小段时间又自动运行。所以怀疑可能是通过定时任务方式在自动启动。检查cron定时任务相关的配置文件目录,果然发现在/etc/crond.hourly目录下发现了一个名为gcc.sh的可疑脚本文件,应该就是木马程序的一部分。这个脚本会一直在内存中运行,并且会不断检测自身是否存在于/lib/libudev.so这个文件中,如果不存在,则创建一个并且销毁存在于其他地方的自身。这一步完成之后,这个.so文件还会创建一个开机启动脚本并且设置为开机启动,然后他就会写入shell到gcc.sh,也就是/etc/cron.hourly/gcc.sh。因此,这里可以说又发现了一个隐藏着的恶意木马程序的核心文件,就是/lib/libudev.so。接着,考虑到每次开机恶意木马都会自动运行,因此要检查/etc/rc.d/rc5.d,果然发现很多字幕随意排练组合名字的可执行脚本链接,它们就是在top中看到的那些杀不掉的反复出现的可疑进程。逐一检查/etc/rc.d/rc0.d一直到/etc/rc.d/rc6.d目录,发现恶意木马在这几个目录中都安插了恶意自启脚本链接,真够黑的。这些链接都指向/etc/init.d目录下的真实恶意自启脚本文件。好了,最后别忘了/lib/libudev.so,马上进行检查,发现这个/lib/libudev.so还真的存在,并且具备可执行权限,用file命令检测一下该文件的类型:
$ file /lib/libudev.so
结果这个文件其实是一个可执行程序,并不是一个共享库,只不过用一个.so的扩展名想掩盖自己的真实身份而已,它应该就是恶意木马的核心程序。既然如此,下面就开始清除这个恶意木马程序。
首先,将/lib/libudev.so取消可执行权限:
$ sudo chmod a-x /lib/libudev.so
然后,取消/etc/crond.hourly/gcc.sh的可执行权限并删除之:
$ sudo chmod a-x /etc/cron.hourly/gcc.sh
$ sudo rm -f /etc/cron.hourly/gcc.sh
删除/etc/init.d下面所有名字奇奇怪怪的那些字母随机组合的可执行脚本文件。接着从/etc/rc.d/rc0.d开始直到/etc/rc.d/rc6.d下面那些无效的链接,这些链接都指向刚才/etc/init.d下面被删除的那些使用字母随机组合名字的可执行脚本,这些脚本都是恶意木马程序安插的脚本,在系统启动时自动运行激活恶意木马。
最后,删除/lib/libudev.so这个恶意木马核心程序文件:
$ sudo rm -f /lib/libudev.so
重新启动系统,恶意木马程序就被清除掉了。
这次Linux主机被ssh神经病(Psychos)暴力攻破后成为肉鸡的攻防过程,说明没有一个系统是百分之百安全的,关键还是在于使用者自己的安全意识是否到位,安全防范措施是否足够有效。这次这台Linux之所以被ssh暴力攻破,主要还是安装后没有修改sshd的默认配置。sshd默认配置是允许root远程认证登录的,所以必须要修改sshd配置,禁止root通过ssh远程认证登录,并且最好修改sshd的默认服务端口,由22改为其他不常见的端口号。另一方面,对root的密码也要尽可能设置得复杂一些,使端口扫描和暴力攻破的难度尽可能提升。