在CentOS 7上使用RKHunter搜索XOR DDoS和其他恶意软件

时间:2020-03-05 15:30:13  来源:igfitidea点击:

企鹅我们好,在本文中,我们将学习使用Rootkit Hunter来搜寻rootkit,以及其他威胁,我们将能够使用它来查找XOR.DDoS恶意软件的某些变种的迹象,该迹象目前已用于创建僵尸网络。
与Linux系统一起进行大规模的分布式拒绝服务攻击。

安装

下载Rkhunter,尝试使用cURL进行此操作。

curl http://nbtelecom.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.2/rkhunter-1.4.2.tar.gz -o rkhunter-1.4.2.tar.gz

然后提取包中的内容。

tar zxvf rkhunter-1.4.2.tar.gz

输入tar包目录。

cd rkhunter-1.4.2

补丁(可选)

此步骤将对rkhunter脚本及其数据库进行修补,以查找XOR DDoS Linux恶意软件。
该补丁基于Akamai,Avast和Malware Must Die的报告中找到的端口和文件。

在rkthunter目录下的files目录中输入。

cd files

使用yum安装补丁实用程序。

yum install patch

现在下载补丁。

curl http://sourceforge.net/p/rkhunter/patches/44/attachment/rkhunter.patch -o rkhunter.patch

或者,我们可以从此处复制并粘贴rkhunter.patch文件的内容。

--- rkhunter    2014-03-12 17:54:55.000000000 -0300
+++ rkhunter.new        2014-10-02 17:01:25.040000000 -0300
@@ -7797,6 +7797,19 @@
#+       # XOR.DDoS
+       XORDDOS_FILES="/lib/udev/udev
+                      /lib/udev/debug
+                      /etc/cron.hourly/cron.sh
+                      /etc/cron.hourly/udev.sh
+                      /lib/libgcc4.so
+                      /var/run/udev.pid
+                      /var/run/sftp.pid"
+       XORDDOS_DIRS=
+       XORDDOS_KSYMS=
+
+
+
# 55808 Variant A
W55808A_FILES="/tmp/.../r
/tmp/.../a"
@@ -11907,6 +11920,13 @@
return
fi
+       # XOR.DDoS Rootkit
+       SCAN_ROOTKIT="XOR.DDoS - Rootkit"
+       SCAN_FILES=${XORDDOS_FILES}
+       SCAN_DIRS=${XORDDOS_DIRS}
+       SCAN_KSYMS=${XORDDOS_KSYMS}
+       scanrootkit
+
# 55808 Trojan - Variant A
--- backdoorports.dat   2010-11-13 20:41:19.000000000 -0300
+++ backdoorports.dat.new       2014-10-02 17:10:24.086000000 -0300
@@ -12,6 +12,7 @@
2001:Scalper:UDP:
2006:CB Rootkit or w00tkit Rootkit SSH server:TCP:
2128:MRK:TCP:
+3502:Possible XOR.DDoS Botnet Malware:TCP:
6666:Possible rogue IRC bot:TCP:
6667:Possible rogue IRC bot:TCP:
6668:Possible rogue IRC bot:TCP:

使用以下命令将补丁程序应用于rkhunter脚本和backdoors.dat文件。

patch < rkhunter.patch

rkhunter.patch输出

补丁已完成,现在返回tar包根目录以继续安装。

cd ..

安装文件

使用以下参数运行安装程序脚本,以将其安装在/usr/local下。

./installer.sh --install --layout /usr/local

我们也可以使用--examples标志显示更多的布局信息和示例,或者使用--show选项而不是--install来显示要在布局上安装的内容。

安装取消隐藏(推荐)

unhide和unhide-tcp实用程序将查找隐藏的进程和端口,虽然不是强制性的,但强烈建议这样做,因为大多数复杂的rootkit都会隐藏它们的存在。

首先,我们需要安装GNU Compiler Collection。

yum install gcc

安装创建条带化二进制文件所需的glibc-static。

yum install glibc-static

编译unhide-linux。

gcc -Wall -O2 --static -pthread unhide-linux*.c unhide-output.c -o unhide-linux

编译unhide-tcp。

gcc -Wall -O2 --static unhide-tcp.c unhide-tcp-fast.c unhide-output.c  -o unhide-tcp

将文件安装在/usr/local/bin下,并创建一个符号链接以取消隐藏。

cp unhide-linux unhide-tcp /usr/local/bin && cd /usr/local/bin/&& ln -s unhide-linux unhide && cd 

配置

在本节中,我将显示在rkhunter.conf文件中找到的一些选项,这些选项按组分开,并且它们的描述得以简化,请阅读文件上的实际描述,如果不确定,请忽略,因为默认选项应该足够了,其中大多数都被注释了。

建议我们先进行首次运行,然后再对配置文件进行实际更改,这将使我们更好地理解rkhunter的工作方式,并有可能确定一些误报,将其列入白名单。

只需使用-c或者--check参数调用rkhunter。

rkhunter -c

运行rkhunter

如上图所示,将会出现一些有关警告的信息,例如egrep或者ifup成为脚本而不是ELF二进制文件,但是它们是合法的系统文件,并且配置文件上的大多数选项都有关rkhunter如何忽略此类信息发生。

测验

以下选项ENABLE_TESTS和DISABLE_TESTS设置要制作的睾丸类型,全部启用,然后禁用不需要的睾丸。
最好至少在默认情况下禁用suspscan,因为它很容易出现误报。

ENABLE_TESTS=ALL
DISABLE_TESTS=suspscan

安全shell

在SSH连接上启用root登录永远不是一个好主意,而是使用su/sudo,否则将其设置为yes。

ALLOW_SSH_ROOT_USER=no

已知SSH协议的版本1不安全,请将其设置为1需要忽略此协议检查

ALLOW_SSH_PROT_V1=0

网络端口

允许的格式为protocol:port的网络端口

PORT_WHITELIST

使用语法path_to_binary:protocol:port_number设置某些程序的白名单

PORT_PATH_WHITELIST=/usr/sbin/squid:TCP:3801

应用版本

此选项使我们可以运行一些过时的应用程序,通常不建议这样做,并且在将其放入此列表之前,必须确保该应用程序是安全的。

APP_WHITELIST=openssl:0.9.7d gpg httpd:1.3.29

嗅探器

允许使用嗅探器(捕获网络数据包的软件)。

允许以下过程侦听网络,如下行。

ALLOWPROCLISTEN=/usr/sbin/snort-plain

这将允许列出的网络接口以混杂模式侦听网络。

ALLOWPROMISCIF=eth0

档案文件

我们将需要为rkhunter创建的测试创建一些例外,以下选项使我们可以将测试绕过特定对象,例如文件,目录。

允许一些隐藏目录。

ALLOWHIDDENDIR=/etc/.java

允许一些隐藏文件。

ALLOWHIDDENFILE=/usr/share/man/man1/..1.gz
ALLOWHIDDENFILE=/usr/share/man/man5/.k5identity.5.gz
ALLOWHIDDENFILE=/usr/share/man/man5/.k5login.5.gz

此白名单将允许某些文件成为脚本而不是ELF二进制文件。

SCRIPTWHITELIST=/usr/sbin/ifdown
SCRIPTWHITELIST=/usr/sbin/ifup
SCRIPTWHITELIST=/usr/bin/egrep
SCRIPTWHITELIST=/usr/bin/fgrep
SCRIPTWHITELIST=/usr/bin/ldd

允许文件可全局写入。

WRITEWHITELIST=/usr/bin/date

允许文件具有属性更改。

ATTRWHITELIST=/usr/bin/date

允许进程查询已删除的文件。

ALLOWPROCDELFILE=/sbin/cardmgr

日志选项

这将定义要登录的文件。

LOGFILE=/var/log/rkhunter.log

如果我们希望每次rkhunter每次运行时都继续登录同一文件,请将此值设置为1,默认值为0,它将在日志文件后添加“ .old”并创建一个新文件。

APPEND_LOG=0

如果要在出现问题时保留日志文件,请将以下选项设置为1.

COPY_LOG_ON_ERROR=0

如果要使用syslog,请取消注释并设置日志工具。

USE_SYSLOG=authpriv.warning

默认情况下,列入白名单的itens将报告测试正常,如果要突出显示列入白名单的项目,则必须将此选项设置为1.

WHITELISTED_IS_WHITE=0

操作系统选项

在Red Hat之类的系统(包括CentOS)上,将软件包管理器选项设置为RPM。

PKGMGR=RPM

启用此选项可在操作系统更改版本/发行版时报告警告。

WARN_ON_OS_CHANGE

操作系统更改时是否应该更新数据库?

UPDT_ON_OS_CHANGE

其中找到操作系统发行文件,在CentOS上设置为/etc/redhat-release。

OS_VERSION_FILE=/etc/redhat-release

锁定

如果我们可能同时运行多个rkhunter,则应启用此选项以启用锁定文件的使用并避免数据库损坏。

USE_LOCKING=0

如果启用了使用锁,则应设置超时以避免死锁。

LOCK_TIMEOUT

我们应该警告锁定的会议吗?

SHOW_LOCK_MSGS

创业与超级恶魔

inetd的配置文件其中。

INETD_CONF_PATH=/etc/inetd.conf

哪些服务被允许通过inetd运行。

INETD_ALLOWED_SVC=/usr/sbin/rpc.metad /usr/sbin/rpc.metamhd

Xinetd配置文件。

XINETD_CONF_PATH=/etc/xinetd.conf

RC启动文件路径。

STARTUP_PATHS=/etc/rc.d /etc/rc.local

账号Accounts

包含隐形密码的文件:

PASSWORD_FILE=/etc/shadow

允许除root以外的用户帐户具有UID 0。

UID0_ACCOUNTS=toor rooty

允许没有密码的帐户。

PWDLESS_ACCOUNTS=abc

系统日志

Syslog配置文件。

SYSLOG_CONFIG_FILE=/etc/syslog.conf

允许syslog远程登录。

ALLOW_SYSLOG_REMOTE_LOGGING=0

Reports

报告警告数量

SHOW_SUMMARY_WARNINGS_NUMBER

显示运行测试所需的总时间?

SHOW_SUMMARY_TIME

要在rkhunter发现某些内容时接收邮件报告,我们必须设置以下选项以及拥有邮件应用程序。

谁将收到电子邮件。

[email protected]

用于发送电子邮件的命令。

MAIL_CMD=mail -s "[rkhunter] Warnings found for ${HOST_NAME}"

运行rkhunter

好的,在这一点上,我们应该已经至少运行过rkhunter一次,现在看看可以与rkhunter一起使用的其他标志。

检查更改

完成配置后,请使用-C或者--check-config标志运行rkhunter,以检查文件中是否存在任何错误。

rkhunter -C

属性更新

现在,每次更改配置文件时,请确保更新文件属性数据库。

rkhunter --propupd

仅报告警告。

rkhunter --rwo

有时我们只想运行一个特定的测试,为此,请尝试--list测试以获取可用测试的名称,然后使用--enable标志后跟测试名称。

rkhunter --list tests

rkhunter检查网络

以下选项将禁用按键提示。

rkhunter --sk

要在cronjob上运行rkhunter,请使用--cronjob标志,使用以下内容创建可执行文件/etc/cron.daily/rkhunter.sh进行日常检查

#!/bin/sh
( /usr/local/bin/rkhunter --versioncheck
/usr/local/bin/rkhunter --update
/usr/local/bin/rkhunter --cronjob -c ) >> /dev/null 2>&1