1

biden1 病毒的一种解决方法

 2 years ago
source link: https://www.codewoody.com/posts/47963/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

本文描述解决 biden1 挖矿病毒的方法。关于原因排查的过程按下不表(主要是未记录过程,也懒得进行复现),这里阐述结论。

1 原因分析

这个病毒会创建一个名为 biden1 的挖矿病毒,占满所有的 CPU 核心。如果用户尝试 kill 此进程,此进程会在短时间内自动拉起。这一机制是通过 systemd-run 命令的 transient 模式来实现的。我们可以通过 sudo systemctl status biden1-pid 查看到 biden1 进程的状态,可以看到该进程由 systemd 管理,但是处于 transient(abandon) 状态,这一状态可以让我们确定此进程是由 systemd-run 命令发起的。

2 解决办法

查看 system-run文档,我们可以发现该工具有一个选项 --send-sighup,其描述为:

When terminating the scope or service unit, send a SIGHUP immediately after SIGTERM. This is useful to indicate to shells and shell-like processes that the connection has been severed. Also see SendSIGHUP= in systemd.kill(5).

可以发现,如果设置了这个选项,那么如果此进程在收到 SIGTERM 信号时,systemd-run 会立刻给这个进程发出一个 SIGHUP 信号,将此进程再次拉起。同时,这意味着我们如果发送除 SIGTERM 以外其他的能够终止进程的信号,即可阻止此进程被再次拉起。我们可以选择 SIGKILL 信号,这一信号的编号是 9。故我们可以通过如下命令终止挖矿进程 biden1

kill -9 biden1-pid

注意,biden1 还有一个兄弟进程(名字忘记了,你可以在 systemctl status 中查看到二者处于同一 scope 内)需要以相同的方式终止。

3 进一步的问题

biden1 以外,你可能会发现一个长时间保持 100% CPU 占用的 sshd 进程,这一进程事实上也是一个挖矿病毒,但是使用了更高阶的技巧来进行伪装。注意入侵者事实上并非替换了真正的 sshd 文件,可能是攻击者先将系统真正 sshd 文件移动到他处,然后在同一路径下设置同名的 sshd 病毒程序,并以 systemd-run 调起此进程,然后讲病毒文件删除,并恢复原 sshd 文件。此时你可以发现 sshd 文件的 md5 正确,但是运行中的 sshd 却是病毒程序的现象。事实上,使用 lsof 命令查看病毒 sshd 进程,可以发现其打开了一个 ESTABLISHED 的 http 链接(指向一个位于德国的 IP 地址),这是真正的 sshd 进程不会具有的行为。

既然此 sshd 进程同样是 systemd-run 发起,我们可以以前文类似的方式将其终止。注意有三个 httpd 进程与此 sshd 同组,同样需要终止。

这里给出的方法能够终止挖矿进程,但是并不一定能彻底清楚相关文件,在服务器重启后是 biden1 进程是否会再次调起,这仍有待进一步验证。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK