chkrootkit扫描程序检测到可能的KLM特洛伊木马

今天我运行chkrootkit工具扫描我的机器:

 sudo chkrootkit 

这是一些输出:

检查`lkm’……你有
2为readdir命令隐藏的进程你有2个进程隐藏ps命令chkproc:警告:可能LKM木马安装chkdirs:没有检测到

这有什么值得担心的吗? 如果是这样,我该如何纠正这种情况?

我正在运行Ubuntu 14.10和chkrootkit版本0.49。

这有什么值得担心的吗?

不,这是chrootkit中的误报和长期存在的错误。 只要lkm检查报告readdir命令无法访问隐藏进程,您就会看到该消息。 如果你有像ClamAV,MySQL,Exim或MailScanner这样的东西,你必然会看到这个警告。

最容易检查:运行chrootkit几次,停止了多少服务(即mysql,clamav等)。 如果结果不同,则明确指示它是假阳性。

顺便说一下:rkhunter对lkm有更好的检查。


关于此消息的一些随机主题: stackexchange , cpanel.net , Linuxquestions.org以及所有状态,这是虚假和错误。


额外的东西:命令./chkproc -v将显示您获得的消息的进程ID(PID),您可以使用它来查找使用cd /proc/{PID}/ && cat cmdline连接到此进程的程序

如果这足够令人信服,你可以停止阅读。 如果您想了解您的机器以及工作原理,请继续阅读。


那么,您需要了解有关系统才能解决此问题的内容?

首先:最好的rootkit检测器就是你。 了解机器上哪些服务处于活动状态,了解机器上运行的脚本是保持系统清洁和安全的原因。 是的,完全理解Linux系统需要一些时间。

其次: 有一些针对Linux的恶意软件,但很少见。 原因很简单,尽管Linux非常便携,但它并不便携。 分布(如何小),库,不同内核和编译器之间的差异使得在随机机器上执行随机代码非常困难。 而那些陷入恶意软件的人就是为了获取经济利益。 所以他们专注于Windows,原因很简单,因为它是封闭源代码,有很多漏洞依赖于微软采取行动来修复它们。 (简体:))


现在,您可以看到有关可能安装的LKM木马的警告。 LKM代表Linux内核模块,是Linux中的核心模块之一。 内核模块被加载到匹配的内核中,如果两者不属于一起,则模块将不会加载。 这是Linux系统的基本安全function之一,可用于跟踪恶意代码(1)。

关于内核的一些基本知识(2):

  • uname -r显示你的内核。

  • 安装的内核可以在/boot查看。

    rinzwind@schijfwereld:/boot$ ls abi-3.16.0-22-generic initrd.img-3.16.0-29-generic abi-3.16.0-23-generic initrd.img-3.16.0-30-generic abi-3.16.0-24-generic memtest86+.bin abi-3.16.0-25-generic memtest86+.elf abi-3.16.0-28-generic memtest86+_multiboot.bin abi-3.16.0-29-generic System.map-3.16.0-22-generic abi-3.16.0-30-generic System.map-3.16.0-23-generic config-3.16.0-22-generic System.map-3.16.0-24-generic config-3.16.0-23-generic System.map-3.16.0-25-generic config-3.16.0-24-generic System.map-3.16.0-28-generic config-3.16.0-25-generic System.map-3.16.0-29-generic config-3.16.0-28-generic System.map-3.16.0-30-generic config-3.16.0-29-generic vmlinuz-3.16.0-22-generic config-3.16.0-30-generic vmlinuz-3.16.0-23-generic grub vmlinuz-3.16.0-24-generic initrd.img-3.16.0-22-generic vmlinuz-3.16.0-25-generic initrd.img-3.16.0-23-generic vmlinuz-3.16.0-28-generic initrd.img-3.16.0-24-generic vmlinuz-3.16.0-29-generic initrd.img-3.16.0-25-generic vmlinuz-3.16.0-30-generic initrd.img-3.16.0-28-generic

  • 内核模块安装在/lib/modules中与您的内核匹配的子目录中。


因此,基于(1)和(2),下一步是重新启动到另一个内核。 违规模块是针对特定内核编译的,并且无法将自身编译到其他内核中(仅仅因为标头不匹配)。


拥有rootkit时可能受影响的目录和文件的数量是有限的(rootkit需要从某个地方启动)。 有2个目录和一组将被定位的文件…

  1. /etc/init.d/

    执行ls -ltr /etc/init.d (它将按照上次更改的顺序列出它们)并检查未知服务。 普通服务将具有合理的名称。 这些服务可以由系统启动或手动启动。

    rinzwind@schijfwereld:/etc/init.d$ ls acpid hwclock.sh reboot alsa-utils irqbalance resolvconf anacron kerneloops rsync apparmor killprocs rsyslog apport kmod saned atieventsd lightdm sendsigs avahi-daemon lvm2 single bluetooth mountall-bootclean.sh skeleton bootmisc.sh mountall.sh smartmontools brltty mountdevsubfs.sh speech-dispatcher cgmanager mountkernfs.sh sslh cgproxy mountnfs-bootclean.sh sudo checkfs.sh mountnfs.sh thermald checkroot-bootclean.sh networking udev checkroot.sh network-manager udev-finish console-setup ondemand ufw cron php5-fpm umountfs cups pppd-dns umountnfs.sh cups-browsed procps umountroot dbus pulseaudio unattended-upgrades dns-clean rc urandom grub-common rc.local uuidd halt rcS x11-common hostname.sh README

  2. /etc/rc*/

    启动和/etc/rc[0-5,S].d脚本位于/etc/rc[0-5,S].d 。 一般来说,这里的文件有数字和理智的描述(这些文件在启动时按字母顺序执行,在删除期间按相反的顺序执行。注意由随机数字和字母组成的脚本。这是一个列表(这些是有效的脚本) 。

    rinzwind@schijfwereld:/etc$ ls rc*/ rc0.d/: K01alsa-utils K01lightdm K01unattended-upgrades K05umountnfs.sh K01atieventsd K01php5-fpm K01urandom K06networking K01bluetooth K01pulseaudio K01uuidd K07umountfs K01cgmanager K01resolvconf K02avahi-daemon K08umountroot K01cgproxy K01speech-dispatcher K03sendsigs K09halt K01cups-browsed K01sslh K04rsyslog README K01irqbalance K01thermald K05hwclock.sh

    rc1.d/: K01alsa-utils K01irqbalance K01speech-dispatcher README K01atieventsd K01kerneloops K01sslh S01dns-clean K01bluetooth K01lightdm K01thermald S01killprocs K01cgmanager K01php5-fpm K01ufw S01pppd-dns K01cgproxy K01pulseaudio K01uuidd S02single K01cups K01saned K02avahi-daemon K01cups-browsed K01smartmontools K04rsyslog

    rc2.d/: README S01uuidd S02kerneloops S04cups S01apport S02acpid S02rsync S04cups-browsed S01cgmanager S02anacron S02smartmontools S04pulseaudio S01dns-clean S02atieventsd S02speech-dispatcher S04saned S01php5-fpm S02cgproxy S02thermald S05grub-common S01pppd-dns S02cron S03avahi-daemon S05ondemand S01rsyslog S02dbus S03bluetooth S05rc.local S01sslh S02irqbalance S03lightdm

    rc3.d/: README S01uuidd S02kerneloops S04cups S01apport S02acpid S02rsync S04cups-browsed S01cgmanager S02anacron S02smartmontools S04pulseaudio S01dns-clean S02atieventsd S02speech-dispatcher S04saned S01php5-fpm S02cgproxy S02thermald S05grub-common S01pppd-dns S02cron S03avahi-daemon S05ondemand S01rsyslog S02dbus S03bluetooth S05rc.local S01sslh S02irqbalance S03lightdm

    rc4.d/: README S01uuidd S02kerneloops S04cups S01apport S02acpid S02rsync S04cups-browsed S01cgmanager S02anacron S02smartmontools S04pulseaudio S01dns-clean S02atieventsd S02speech-dispatcher S04saned S01php5-fpm S02cgproxy S02thermald S05grub-common S01pppd-dns S02cron S03avahi-daemon S05ondemand S01rsyslog S02dbus S03bluetooth S05rc.local S01sslh S02irqbalance S03lightdm

    rc5.d/: README S01uuidd S02kerneloops S04cups S01apport S02acpid S02rsync S04cups-browsed S01cgmanager S02anacron S02smartmontools S04pulseaudio S01dns-clean S02atieventsd S02speech-dispatcher S04saned S01php5-fpm S02cgproxy S02thermald S05grub-common S01pppd-dns S02cron S03avahi-daemon S05ondemand S01rsyslog S02dbus S03bluetooth S05rc.local S01sslh S02irqbalance S03lightdm

    rc6.d/: K01alsa-utils K01lightdm K01unattended-upgrades K05umountnfs.sh K01atieventsd K01php5-fpm K01urandom K06networking K01bluetooth K01pulseaudio K01uuidd K07umountfs K01cgmanager K01resolvconf K02avahi-daemon K08umountroot K01cgproxy K01speech-dispatcher K03sendsigs K09reboot K01cups-browsed K01sslh K04rsyslog README K01irqbalance K01thermald K05hwclock.sh

    rcS.d/: README S03udev S08checkroot-bootclean.sh S01console-setup S04brltty S08kmod S02alsa-utils S04mountdevsubfs.sh S08urandom S02apparmor S04procps S09mountall.sh S02hostname.sh S04udev-finish S09networking S02mountkernfs.sh S05hwclock.sh S10mountall-bootclean.sh S02resolvconf S05lvm2 S10mountnfs.sh S02ufw S06checkroot.sh S11mountnfs-bootclean.sh S02x11-common S07checkfs.sh S12bootmisc.sh

  3. 启动脚本。

    一般来说,Ubuntu在终端中使用bash并在启动时使用破折号。 echo $SHELL将显示正在使用的shell。 对于bash隐藏文件来检查奇怪的脚本或奇怪的代码行是……

     /etc/profile /etc/bashrc /etc/bash.bashrc ~/.profile ~/.bash_profile 

    这些是常见的5种。 任何机器都可以拥有更多。 除此之外,您还可以包括

     /etc/crontab crontab 

    最后一个为您的用户和sudo su 。 “crontab”你可以用crontab -l列出。 观察不是通用Linux或由您创建的脚本。

如果您碰巧有第二个系统生活变得容易多了:您可以简单地将上面的所有文件与第二台机器进行比较。