找出Linux服务器上不该存在恶意或后门文件 |
前段时间我在APT写作时注意到一个问题,我发现网上大多都是关于Windows恶意软件检测的文章以及教程,而关于如何寻找Linux系统上恶意软件的资料却少之又少。因此,这篇文章主要是向大家介绍一些有关检查Linux系统恶意软件的技巧和方法。话不多说,让我们进入正题。 校验二进制文件有一件事需要检查确认即没有运行的二进制文件被修改。这种类型的恶意软件可以用sshd的版本来支持,以允许使用特定的密码连接到系统,甚至是一些二进制文件的修改版本,它以root用户身份运行,只需监听触发器数据包的原始套接字即可。为此,我们将以Redhat和Debian为例。 寻找不属于的二进制文件 find /proc/*/exe -exec readlink {} + | xargs rpm -qf | grep “not owned”find /proc/*/exe -exec readlink {} + | xargs dpkg -S | grep “no path” 校验运行的二进制文件是否与包中的文件匹配find /proc/*/exe -exec readlink {} + | xargs rpm -qf | xargs rpm -Vfind /proc/*/exe -exec readlink {} + | xargs dpkg -S | cut -d: -f1 | xargs dpkg -V 校验所有包文件另一件需要检查确认的事是即所有属于包的二进制文件都没有被修改。这个过程可能需要一段时间才能完成,但这是值得。我们可以设置一个cron jobs,以在指定时间来运行它。 校验所有包文件 rpm -Vadpkg -V 检查RAW套接字我们经常能看到RAW socket后门。它们侦听传入的数据包并触发事件,例如最近发现的“Chaos”后门,以及一个在github上搜索raw socket后门时弹出的示例。对于这个检查,我们只会看看使用RAW套接字的过程。使用它们的常用程序并不多,因此我们可以缩小要查看的进程的范围。 使用 raw sockets listening检查二进制文件 netstat -lwp or ss -lwplsof | grep RAW grep -r “rwx” /proc/*/maps | cut -d/ -f 3|uniq -c | sort -nr find /lib64/security/ | xargs rpm -qf | grep “not owned”find /lib64/security/ | xargs rpm -qf | grep -v “not “| xargs rpm -V cat /etc/passwd |cut -d: -f 6 | xargs -I@ /bin/sh -c “echo @; ls -al @/.ssh/ 2>/dev/null” |