Linux rootkit后门检测工具,防替换系统文件的木马

检测维修 0 158

Linux平台下, 有这样一种木马工具, 它极为常见, 通过替换系统里的文件, 来达成入侵以及隐蔽的目的,能躲过普通检测工具检测, 比普通木马后门更危险、更难找, 它叫rootkit, 其能力很强, 对体系危害极大, 会借一套工具, 去搭建后门并躲藏行踪,好让攻击者留住权限, 随时以root权限实现登录操作系统。

Rootkit存在着主要的两种类型, 那种类型是文件级别, 还有那种类型是内核级别, 接下来对其各自分别展开简单的介绍。

文件级别rootkit

文件级别的rootkit通常借助程序漏洞或者系统漏洞进入系统, 之后通过修改系统的关键文件来实行隐匿自身的目的。在系统遭到rootkit侵害后, 合法的文件被木马程序替换, 变为外壳程序, 并且其内部藏着后门程序。有一些系统程序, 像是 login、ls、ps、ifconfig、du、find、netstat 等, 常常容易被 rootkit 所替换, 最常被替换的程序则是里面的 login, Linux 被访问的时候, 不管是经由本地登录, 还是远程登录, /bin/login 程序都将会运行, 系统会借助 /bin/login 去收集以及核对用户的账号还有密码, 利用此程序特点的 rootkit, 则会用一个带有根权限后门的 /bin/login 去替换系统的 /bin/login, 攻击者借助输入设定好的密码, 便能轻松进入系统。此时此刻, 就算系统管理员去更改root密码, 又或是解除root密码, 攻击者依旧能够凭借root用户登录进系统。一般而言, 攻击者在进入Linux系统之后, 会开展一系列的攻击行为, 最为常见的便是安装嗅探器去采集本机或者网络里其他服务器的关键数据。默认状况下, Linux里存在一些系统文件去监控这些工具动作, 像ifconfig命令, 所以, 攻击者为防止被发觉, 会百计千方地替换其他系统文件, 常有的是ls、ps、ifconfig、du、find、netstat等。要是这些文件皆被替换, 那么在系统层面就极难发觉rootkit已在系统中运行了。

这便是文件级别的rootkit, 其对系统维护构成极大威胁, 当下最为有效的防御举措是定期针对系统重要文件的完整性予以检查, 要是察觉文件被修改抑或替换, 那么极有可能系统已然遭受了rootkit入侵。用于检查文件完整性的工具数量众多, 常见的有Tripwire、aide等, 能够借助这些工具定期查验文件系统的完整性, 以此来检测系统是否遭受rootkit。

内核级别的rootkit

内核级别是带有比文件级别更高级特性的一种方式, 这种方式能让特定者获取到朝向系统底层的完全控制权, 在获取控制权这个阶段, 特定者能够实施对系统内核的修改操作, 借由修改内核, 特定者进而得以截获运行程序朝着内核提交的命令, 并且把截获的命令重新定向到特定者所挑选的程序上, 随后运行这个被挑选的程序, 也就是说, 当用户打算运行程序A时, 被特定者做出修改的内核会佯装执行A程序, 而事实上却执行了程序B。

内核级别主要是依附在内核之上的, 它不会对系统文件做出任何修改, 所以一般的检测工具很难检测到它的存在, 一旦系统内核被植入, 那么植入者针对系统就能为所欲为且不被发现, 当前对于内核级别的情况还没有很好的防御工具, 所以做好系统安全防范就显得相当重要, 要将系统维持在最小权限内进行工作, 只要植入者不能获取root权限, 就没办法在内核之中植入。

1、rootkit后门检测工具chkrootkit

为Linux系统查找并检测rootkit的一个工具呢是chkrootkit, 就因为chkrootkit没有被包含在官方的CentOS源中, 所以要采取手动编译那种方式来进行安装, 然而这种安装方式其实也更具安全性, 接下来简单介绍一下chkrootkit的安装过程。

(1)准备gcc编译环境

对CentOS系统, 要去安gcc编译环境, 得执行下面这三个命令哟:

root@server ~

# yum -y install gcc

root@server ~

# yum -y install gcc-c++

root@server ~

# yum -y install make

(2)安装chkrootkit

因要保障安全, 故而提议直接于官方网站处去下载chkrootkit源码, 接着以此予以安装。其操作步骤如下:

root@server~

# tar zxvf chkrootkit.tar.gz

root@server~

# cd chkrootkit-*

root@server~

# make sense

注意:上面的编译命令为make sense。

root@server ~

# cd ..

root@server ~

将名为chkrootkit开头的所有文件及目录, 进行递归复制操作, 复制到路径为/usr/local/chkrootkit的位置。

root@server ~

# rm -rf chkrootkit-*

(3)使用chkrootkit

chkrootkit程序在被安装完成之后, 处于/usr/local/chkrootkit这个目录之下, 去执行像如下情况的命令, 就能够将chkrootkit详细使用方法给显示出来:

root@server chkrootkit

对于“/usr/local/chkrootkit/chkrootkit”, 添加“-h”参数。

chkrootkit各个参数的含义如表1所示。

表1 chkrootkit各个参数的含义

使用chkrootkit较为简便, 直接去执行chkrootkit命令, 便可自动开启对系统的检测。以下呈现的是某个系统的检测结果:

root@server chkrootkit

用于检查根目录的工具, 在特定路径下, 名为chkrootkit, 位于/usr/local 目录中。

查验 `ifconfig`, 发现已被感染。

Checking `ls`... INFECTED

Checking `login`... INFECTED

检查`netstat`, 已感染, 再改写: 对`netstat`进行检查, 结果是已感染。

Checking `ps`... INFECTED

Checking `top`... INFECTED

对`sshd`进行检查, 得出其未被感染的结果。

对`syslogd`进行检查, 此项未被测试。

开展对`tar`的检查工作, 结果显示并未受到感染。

检查“tcpd”, 其未被感染过 , 没有被感染过 , 不存在被感染的情况。

正在检查`tcpdump`, 该检测对象未被感染, 此情况属实。

对`telnetd`进行检查, 发现未找到, 是这样。

依据输出的结果能够看得出, 此系统之中的ifconfig、ls、login、netstat、ps以及top这些命令已然遭受感染, 对于遭受感染rootkit的该等系统而言, 最为安全且有效的办法便是备份数据且重新安装系统。

(4)chkrootkit的缺点

chkrootkit于检查rootkit的进程里边运用了部分系统命令, 如是, 要是服务器遭遇黑客袭击, 那么所依赖的系统命令极有可能已然被入侵者给替换掉, 此情形下chkrootkit的检测结果会变得全然不可信。为规避chkrootkit的这一问题, 能够在服务器面向外部开放之前, 预先把chkrootkit所使用的系统命令予以备份, 在有需要之际运用备份的原始系统命令以使chkrootkit对rootkit作出检测。这个过程可以通过下面的操作实现:

root@server ~

# mkdir /usr/share/.commands

root@server ~

复制 通过指定跳过别名方式找到的 awk、cut、echo、find、egrep、id、head、ls、netstat、ps、strings、sed、uname 这些命令, 到, /usr/share/.commands 这个路径下。

root@server ~

对, 就是这个路径, 它是, /usr/local/chkrootkit/chkrootkit对这个 -p参数所指定的, 也就是/usr/share/.commands/ , 你看, 就是这么个情况。

root@server share

# cd /usr/share/

root@server share

用 .tar.gz形式压缩命令, 形成commands.tar.gz文件, 使用tar工具, 并且带上zcvf参数。

root@server share

# rm -rf commands.tar.gz

这段操作是在 /usr/share/ 下, 建立了一个名为.commands 的隐藏文件, 接着把 chkrootkit 使用的系统命令备份到该目录下。出于安全考虑, 可将.commands 目录进行压缩打包, 之后下载到一个安全之处进行备份。往后若遭受某些情况, 就能把这个备份上传到任意路径下, 再通过 chkrootkit 命令的“-p”参数指定此路径来进行检测。

2、rootkit后门检测工具RKHunter

RKHunter是用于专业检测系统究竟有没有被感染的一款工具, 它借助执行一系列脚本去确认到底有没有被感染, 在官方资料里, RKHunter能够办到的事情存在:

MD5校验测试,检测文件是否有改动

检测使用的二进制和系统工具文件

检测特洛伊程序的特征码

检测常用程序的文件属性是否异常

检测系统相关的测试

检测隐藏文件

检测可疑的核心模块LKM

检测系统已启动的监听端口

下面详细讲述下RKHunter的安装与使用。

(1)安装RKHunter

RKHunter的安装非常简单,具体过程如下:

root@server ~

# ls rkhunter-1.4.0.tar.gz

root@server ~

# pwd

/root

root@server ~

root@server ~

# cd rkhunter-1.4.0

root@server rkhunter-1.4.0

拿着这个“./installer.sh”, 依照“default”的布局样式, 去执行软件, 使之完成“安装”操作这样一个行为。

这里运用 RKHunter 的默认安装形式, rkhunter 命令被安放在 /usr/local/bin 目录之中。

(2)使用rkhunter命令

诸多参数属于rkhunter命令, 然而运用特别简易,径直运行rkhunter便可展现此命令的用法。下面对rkhunter常用的几个参数选项予以简要介绍。

root@server ~

把“/usr/local/bin”中的“rkhunter”, 拿去, 用“-help”试试看。

rkhunter的常用参数以及含义如表2所示。

表2 rkhunter常用参数的含义

下面是通过RKHunter对某个系统的检测示例。

root@server rkhunter-1.4.0

# /usr/local/bin/rkhunter -c

Rootkit Hunter version 1.4.0

下面是第一部分, 先开展系统命令的检查, 重点在于检测系统的二进制文件, 鉴于这些文件极易遭受rootkit攻击。呈现OK字样意味着正常, 呈现Warning表明存在异常, 需加以留意, 而呈现“Not found”字样, 通常不用理会。

Checking system commands...

文件级别rootkit_php程序后门检测工具_Linux rootkit检测工具

执行“字符串”命令检查, 进行该项操作, 查看相关情况, 确认有无问题。

Checking 'strings' command

进行预加载变量的检查, 对其是否存在进行查看。

None found

None found

检查, LD_LIBRARY_PATH变量, 检查该变量, 对其进行检查, 查看LD_LIBRARY_PATH变量。

Not found

进行文件属性检查, 对文件的各种特征进行查验, 查看其相关设定及状态。

Checking for prerequisites

/usr/local/bin/rkhunter

/sbin/chkconfig

....(略)....

Press to continue

接下来是第二部分内容, 重点检测那些常见的程序, 要是显示”Not found“, 那就意味着系统并未感染这类程序。

Checking for rootkits...

开展对已知的根工具集文件以及目录的检查, 过程中有对应的进行, 以及相应内容存在之处的甄别。

55808 Trojan - Variant A

Not found

ADM Worm

Not found

AjaKit Rootkit

Not found

Adore Rootkit

Not found

aPa Kit

Not found

Apache Worm

Not found

Ambient (ark) Rootkit

Not found

Balaur Rootkit

Not found

BeastKit Rootkit

Not found

beX2 Rootkit

Not found

BOBKit Rootkit

Not found

....(略)....

Press to continue

以下是第三部分, 其主要涵盖一些特殊的, 或者是附加的检测, 像是针对rootkit文件的检测, 针对rootkit目录的检测, 针对恶意软件的检测, 以及针对指定内核模块的检测。

斯卡特罗罗基特额外检查, 讨厌它, 唾弃它, 针对它!这般额外检查就是针对它!

None found

进行对于有可能存在的Rootkit字符串 的检查, 并且查看, 有没有对应字符串。

None found

Performing malware checks

None found

Checking for login backdoors

None found

对可疑目录进行检查, 查找有没有可疑目录,核查是否存在可疑目录。

None found

检查嗅探器日志文件, 进行查看, 以确定情况。

None found

正在检查已加载的内核模块, 对其进行查看, 以确认所加载情况。

Checking kernel module names

Press to continue

紧接着, 便是第四部分了, 这一部分主要是针对网络展开检测, 同时, 还会将系统端口, 以及系统启动文件, 还有系统用户和组配置, 另外, SSH配置, 加之文件系统等统统进行检测。

Checking the network...

Checking for backdoor ports

None found

检查是否存在混杂模式接口 , 对其是否存在进行查看 ,查看其是否存在混杂模式接口。

None found

Checking the local host...

Performing system boot checks

Checking for local host name

正在排查系统启动文件, 对系统运行启动时所要用到的各类文件进行检查, 查看是否存在异常情况。

None found

Checking for passwd file

None found

检查无密码账户, 进行着, 在这事上进行着, 针对无密码账户的检查在发生着。

None found

....(略)....

Press to continue

下面是第五部分,主要是对应用程序版本进行检测。

正在检查应用程序版本, 进行查看, 核实版本情况。

Checking version of GnuPG

Checking version of OpenSSL

Checking version of OpenSSH

下面是最终的那一部分内容, 此部分实际上可谓是上面所输出内容生成的一种总结, 借助这个总结, 能够大体了解用于放置服务器文件的那个目录的安全状况。

System checks summary

=====================

File properties checks...

Files checked: 137

Suspect files: 4

Rootkit checks...

Rootkits checked : 311

Possible rootkits : 0

Applications checks...

Applications checked : 3

Suspect applications : 1

于Linux终端借助RKHunter开展检测, 其最大益处是每项检测结果依不同颜色显示, 若为绿色则表明无问题, 若为红色则需予以关注。再说, 于其上执行检测进程中, 每部分检测完毕后, 需按Enter键以继续。要是想让程序自行运行, 可执行如下命令:

root@server ~

# /usr/local/bin/rkhunter, 进行检查, 跳过按键输入。

倘若想要使得检测程序在每一天都按照固定的时间去运行, 那么能够于/etc/crontab里添加像下面这样的内容呢:

这似乎只是个命令行内容呀, 可以改写为: 30, 09, 在星号表示的情况出现的时候, 由root执行, 前往/usr/local/bin目录下, 运行rkhunter程序, 执行检查并按照定时任务设置来进行操作。

会使得, RKHunter检测程序, 于每日, 那个9: 30的时候, 去运行一回。

相关推荐: