一. 系统后门程序
1.1 chkrootkit-0.49-Mini.sh
顾名思义,chkrootkit-0.49-Mini.sh是chkrootkit的Mini版。其内容全部来自chkrootkit,但仅限于脚本实现部分,可用于没有安装make或make sense无法通过的主机。
chkrootkit-0.49-Mini.sh为sh脚本,在大部分系统上可顺利运行,其检测主要以rootkit等恶意程序常用的文件名、目录为检查对象,因此,虽方便运行,但并不能完全替代chkrootkit和rootkit Hunter。
使用方法:chkrootkit-0.49-Mini.sh
或:chmod +x chkrootkit-0.49-Mini.sh
./chkrootkit-0.49-Mini.sh
1.2 chkrootkit
chkrootkit是一款用于UNIX/Linux的本地rootkit检查工具。
chkrootkit官方站点:http://www.chkrootkit.org/
一般操作指南:
下载chkrootkit:wget –c ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
编译:
tar xvzf chkrootkit.tar.gz
cd chkrootkit-xx
make sense
检测rootkit:./chkrootkit –q
若使用Live CD启动主机,将原主机硬盘(被入侵)挂接在/mnt下,我们可以使用-r参数指定被入侵主机的根目录,进行离线检查,chkrootkit最终仅输出可疑的项目:
./chkrootkit –q –r /mnt
1.3 Rootkit Hunter
Rootkit Hunter结果比chkrootkit更为详细和精准,若有条件,建议使用Rootkit Hunter对系统进行二次复查。
Rootkit Hunter 官方站点:http://www.rootkit.nl/projects/rootkit_hunter.html
Rootkit Hunter下载访问:http://sourceforge.net/projects/rkhunter/
一般操作指南:
安装Rootkit Hunter:
tar xvzf rkhunter-xx.tar.gz
cd rkhunter-xx
./install.sh –layout default –install
(若自定义安装路径,需执行:./install –layout custom /custom_path –install)
使用Rootkit Hunter:rkhunter –check(若自定义安装目录,需写全路径)
二. 用户及用户文件
2.1 passwd文件
2.1.1 文件权限
/etc/passwd默认权限为644,其最小权限为444,首先应对该文件权限进行检查,以确认配置是否正确:
ls – l /etc/passwd
2.1.2 用户检查
查看passwd文件内容:cat /etc/passwd
查看是否存在可疑帐号。
2.2 shadow文件
shadow默认权限为600,最小权限为400,检查权限配置是否正确:
ls – l /etc/shadow
2.3 UID信息
passwd文件中,每行用户信息以冒号间隔,其中第三段为用户UID,检查除root用户外是否存在其他用户的UID为0,也可执行命令:
awk -F : ‘$3==0{print}’ /etc/passwd
(若UID=0,则打印本行信息)
2.4 Shell日志
Bash日志存储于用户目录的.bash_history文件中,存储条目数量与shell变量$HISTSIZE有关。
三. 系统日志分析
3.1 messages日志
Solaris的messages日志位置为 /var/adm/messages
RedHat的messages日志位置为 /var/log/messages
messages中记录有运行信息和认证信息,对于追查恶意用户的登录行为有很大帮助,例如,下面即为一条su日志:
Mar 22 11:11:34 abc PAM_pwdb[999]:authentication failure;cross(uid=500)->root for su service
3.2 cron日志
Solaris的cron日志默认记录在 /var/cron/log 中
RedHat的cron日志默认记录在 /var/log/cron 中
3.3 secure日志
Linux的ssh登录日志会存储于/var/log/secure中,若日志中出现连续大量的登录错误信息,则可能意味着远程主机在尝试破解ssh登录口令。
3.4 last日志
last命令用于查看最近的用户登录情况,last命令读取wtmp内容。
在Linux还中还存在lastlog命令,用于查看系统内所有帐户最后一次登录信息,该命令读取/var/log/lastlog内容。
四. 网络连接
4.1 当前登录用户
执行w命令可以确定当前哪些用户已登录系统。
输出信息中个列含义:
USER字段显示当前登录系统的用户名
TTY字段显示分配给用户会话的终端。ttyX表示在控制台登录,pts/X和ttypX表示网络连接
FROM字段显示远程登录主机的IP地址
LOGIN@字段显示登录用户的本地起始时间
IDLE字段显示最近一个进程运行开始算起的时间长度
JCPU字段显示在该控制台或网络连接的全部进程所用的时间
PCPU字段显示WHAT栏中当前进程所使用的处理器时间
WHAT字段显示用户正在运行的进程
4.2 端口开放情况
使用netstat –anp(Solaris使用netstat -an)命令查看当前开放的端口。
使用lsof –i(仅限Linux)显示进程和端口对应关系。
五. 进程与服务
5.1 进程信息
Linux系统中使用命令ps –aux查看进程
Solaris系统中使用命令ps –eaf查看进程。
5.2 服务信息
Linux系统下可以使用chkconfig –list查看服务启动信息,各服务的启动脚本存放在/etc/init.d/和/etc/xinetd.d目录下。
Solaris系统下,服务可以通过svcadm或inetadm命令进行管理。
六. 文件系统
6.1 SUID
使用命令 find / -perm -004000 -type f 输出所有设置了SUID的文件。
6.2 文件完整行检查
在RedHat Linux等以rpm作为包管理工具的系统中,使用rpm命令可搜索自rpm包安装后发生了变化的程序:
rpm –Va 列举全部软件包的变化情况
rpm –V package 列举某个程序包的变化情况
七. 信息收集与提交
为快速收集信息,提供连个用于收集信息的perl脚本:
IRIC_RHL.PL,运行于RedHat Linux的信息收集脚本
IRIC_SOL.PL,运行于Solaris的信息收集脚本
脚本收集以下信息:
passwd文件权限和内容
所有用户的UID值
用户在线(登录)信息
进程列表
网络连接信息
服务列表
所有的.bash_history内容
摘自rootkit hunter的rootkit关键文件及目录检测(与chkrootkit类似)
Last命令输出信息
脚本使用方法:
Perl IRIC_RHL.PL
或:chmod +x IRIC_RHL.PL
./IRIC_RHL.PL
脚本创建目录NSF0CUS_ER_REPORT并在目录中产生,以NSF0CUS_RH_CHKER_ 为前缀(或NSF0CUS_SOL_CHKER_)的LOG文件。
以上信息外,还需现场工程师协助收集以下日志文件到NSF0CUS_ER_REPORT/logs目录下:
messages(Linux : /var/log/messages , Solaris : /var/adm/messages)
secure(Linux : /var/log/secure , Solaris无此文件)
收集前应该使用 du –sh /var/log/messages 命令判断日志是否过大,若过大则根据现场情况只取特定时间段的日志或最后产生的日志。