记录一次惊心动魄的Linux病毒入侵

前言

服务器系统 Ubuntu Server 22.04 LTSC

服务器环境 物理机NAT网络

如何发现被入侵

当我日常使用SSH工具查看服务器进程时,发现服务器其中一颗CPU满载。

1710949067067.png

起初以为是bug,重启后依旧,怀疑过是硬件,但拔掉网线神奇的发现使用率降下去了?!

随后反复使用tophtopps​等工具检查、重启后判定为被入侵了!

病毒狡猾之处是他隐藏了他的进程、网络,无法通过常用的工具去检测到。

被入侵的原因

Linux病毒很少,被入侵大概率是使用者的粗心大意,这次事件也不例外。

我经常需要在宿舍和教学楼间来回切换工作、学习地点,我就吧服务器上的22端口使用frp​映射到了公网。

起初服务器是只考虑在NAT网络运行,用户名和密码都非常简单,映射的时候我也考虑到了安全问题,修改了root密码为复杂密码,但是疏忽了一个子用户,恰恰用户名和密码在黑客的爆破字典里,导致被黑客拿到子用户的控制器,造成了这次危机。

尝试的解决方案

第一步

第一时间断开服务器和所有网络的连接,最有效莫过于把网线。
病毒一旦获取到你的控制器,也会扫描局域网的服务器,所以一定要拔网线。

第二步

善用搜索引擎、技术论坛,如果是常见病毒,大概率能搜索到全流程的解决方案,如果搜索不到,就要去各大技术论坛寻求帮助。
我的服务器系统是`Ubuntu`​ 我尝试在askUbuntu发帖讯问,但并没有直接获得实质性帮助,但论坛这方面的文章也非常有用

第一个突破点 搞清楚病毒是什么

这并不容易,病毒有许多变种、随机名称,只能通过特征去识别他们。

前文提到,入侵服务器的病毒会隐藏自己的网络和进程,符合Rootkit特征,病毒利用了Rookit隐藏自己。

下载 Chkrootkit​ 扫描电脑中的病毒留下的后门

部分日志 确定病毒为 Xor.DDoS 变种

Searching for Linux.Xor.DDoS ...                            INFECTED: Possible Malicious Linux.Xor.DDoS installed
/tmp/par-726f6f74/cache-3eb4257c2614b4554108c1d8497b4f88676951d4/ce30f172.so
/tmp/par-726f6f74/cache-3eb4257c2614b4554108c1d8497b4f88676951d4/9361c2fa.so
/tmp/par-726f6f74/cache-3eb4257c2614b4554108c1d8497b4f88676951d4/libperl.so.5.26/tmp/par-726f6f74/cache-3eb4257c2614b4554108c1d8497b4f88676951d4/f985f8e7.so
/tmp/par-726f6f74/cache-3eb4257c2614b4554108c1d8497b4f88676951d4/f8174441.so
/tmp/par-726f6f74/cache-3eb4257c2614b4554108c1d8497b4f88676951d4/2dfd2f51.so
/tmp/par-726f6f74/cache-3eb4257c2614b4554108c1d8497b4f88676951d4/a8f7a01a.so
/tmp/par-726f6f74/cache-3eb4257c2614b4554108c1d8497b4f88676951d4/5e43fe49.so
/tmp/par-726f6f74/cache-3eb4257c2614b4554108c1d8497b4f88676951d4/85600e38.so
/tmp/par-726f6f74/cache-3eb4257c2614b4554108c1d8497b4f88676951d4/9d18cbe5.so
/tmp/par-726f6f74/cache-3eb4257c2614b4554108c1d8497b4f88676951d4/153152bb.so
/tmp/par-726f6f74/cache-3eb4257c2614b4554108c1d8497b4f88676951d4/neo

解决方案

  • 1 断网

  • 2 清理 ssh 防止黑客免密登录后门 rm -rf /root/.ssh

  • 3 清理被入侵用户相关内容

    • 锁定用户 passwd -l user

    • 删除用户目录重建 rm -rf /home/user && mkdir /home/user

  • 4 设置只允许私钥SSH连接

    • vim /etc/ssh/sshd_config

    • PasswordAuthentication no

    • service ssh restart​ 或者 service sshd restart

  • 5 检查计划任务目录 通过病毒自启动 找到病毒本体

    • ls -a /etc/cron.*​ 查看 /etc​ 下的这些文件夹

    • cracklib/

    • cron.d/

    • cron.daily/

    • cron.hourly/

    • cron.monthly/

    • cron.weekly/

    • 查看目录中是否含有随机生成文件名的文件 例如

      DsXmTlim

      使用 cat /etc/cron.hourly/DsXmTlim​ 查看病毒本体位置

      */1 * * * * root /bin/OcGuFJKq 1 1

      其中 /bin/OcGuFJKq​ 为病毒本体

    • 修改病毒二进制文件 cat "123" > /bin/OcGuFJKq

      使用 123 替换病毒内容 让他失效

    • 使用 chattr​ 加锁/bin/OcGuFJKq​ 防止复活

      chattr +i /usr/OcGuFJKq``​

  • 6 重启

    此时 病毒已经没有,但不能掉以轻心,检查局域网机器是否也被入侵,此方法不能保证根除,如果没什么重要数据,还是重装系统吧。

LICENSED UNDER CC BY-NC-SA 4.0
Comment