0x00 Tiger简介
一款开源的安全审计&入侵检测工具
我们的小老虎是一款可以用于安全审计和入侵检测系统的安全工具。它支持多种UNIX平台,且他是开源的。小老虎完全使用脚本语言来编写,且只需要POSIX工具来进行相关审计检测操作。
特点
- 易于扩展的模块化设计
- 多用途,可以用于审计和主机入侵检测
优点
从目前来说,市面上有很多入侵检测工具,主要检测的方面如下
- 网络层IDS,例如
Snort
- 内核层IDS,例如
LIDS
,SNARE
,Systrace
- 文件完整性检查,例如
aide
,integrit samhain
,tripwire
- 日志检查,如
Log Analysis
但是很少有完全关注主机端入侵检测的工具,小老虎将这些个工具结合在一起,并形成了一个能使他们在一起工作的框架。小老虎不是一个日志检查器也不关注完整性分析,它做其他的事,它会检查系统的配置和状态,也可以检查哪一台网络服务器正在尝试运行一个已经删除的文件(例如服务器在升级过程中修补了库,但是服务器未重新启动服务,导致服务器只能持续尝试运行因为升级而已经删除的系统文件)等,这对系统管理员和安全管理员来说是一个很有帮助的安全监测工具。
0x01 Tiger安装方法
要下载tiger的源码可以通过Savannah页面来获得,而Debian系统的安装包可以通过Debian Tiger页面来获得,通过寻找特定的平台来找到对应你系统架构的deb安装包。双击安装即可。
当前Tiger的稳定版本是3.2.3
。
0x02 命令选项
tiger [-vthqGSH] \
[-B dir] \
[-l dir|@host] \
[-w dir] \
[-b dir] \
[-e|-E] \
[-c config] \
[-A arch] \
[-O os] \
[-R release]
描述
Tiger是一款由shell脚本,C代码和用于检查UNIX系统安全问题的数据文件构成的包,它能够扫描系统配置文件,文件系统以及用户配置文件,用以查明可能存在的安全问题,并将他们上报。指令tigexp
可以解释tiger上报的问题。
我们可以通过调整@tiger-config-dir@/tigerrc
配置文件中的Tiger_
变量来配置小老虎。对于可以用的模块,我们的配置文件里有响应的变量来决定是否启用该模块。在配置文件里用Tiger_check_
打头来命名变量,当变量值为Y
时代表启用,N
代表跳过。其他配置变量会修改某些模块的行为,应基于OS来调整。
而@tiger-config-dir@/tiger.ignore
配置文件定义了一系列消息,如果任何模块生成了这些消息之后呢将不会在report上显示。如果存在该文件,每行都是一个实体,一个实体用ERE正则表达式来比对消息。
选项
- -B tigerdir
- 指定tiger的安装目录,默认是
/usr/lib/tiger
(Ubuntu版本)
- 指定tiger的安装目录,默认是
- -l logdir|@logserver
- 指定tiger生成安全报告的目录名,默认是
/var/log/tiger
(Ubuntu版本),格式是security.report.hostname.date.time
。如果该变量是@
打头,那么变量将被识别为日志服务器,远程日志服务器需开放tcp 5353端口,tiger会将报告通过telnet发送给服务器。
- 指定tiger生成安全报告的目录名,默认是
- -w workdir
- 指定用于创建临时文件的目录,默认是
/var/lib/tiger/work
(Ubuntu版本)
- 指定用于创建临时文件的目录,默认是
- -b bindir
- 用于指定C模块产生的二进制可执行文件所在的目录。若系统目录中包含所有的二进制文件,这些文件将从该系统目录直接使用;若没包含全,且
bindir
里包含二进制文件,这些二进制文件将被采用。若系统目录和bindir
里都没有二进制文件,小老虎将会尝试编译C程序并将二进制放到bindir
中。
- 用于指定C模块产生的二进制可执行文件所在的目录。若系统目录中包含所有的二进制文件,这些文件将从该系统目录直接使用;若没包含全,且
- -c tigerrc
- 指定
tigerrc
控制文件的名字,默认是/etc/tiger/tigerrc
(Ubuntu版本)
- 指定
- -e
- 该选项将会在安全报告的每条消息后面插入解释语句,这会大大增加报告大小,因为某些解释语句是重复的。
- -E
- 该选项将会让小老虎生成一份独立的解释报告,其中每种消息的解释只出现一次。解释文件命名格式为
explain.report.hostname.date.time
- 该选项将会让小老虎生成一份独立的解释报告,其中每种消息的解释只出现一次。解释文件命名格式为
- -G
- 生成系统二进制文件的签名,包括MD5值和文件权限。
- -H
- 将报告以HTML的方式生成
- -S
- 需要同时对由该机器服务的无磁盘客户端的配置文件进行表层检查。检查不会太深入,因为深入的检查由客户机自己完成。
- -q
- 静默扫描,仅仅显示紧要的安全信息
- -A arch
- 该选项会覆盖由内部配置引擎获取的当前架构信息
- -O os
- 该选项会覆盖由内部配置引擎获取的当前操作系统信息
- -R release
-
该选项会覆盖由内部配置引擎获取的当前操作系统版本信息
注意随便修改架构,操作系统和版本信息会出现难以意料的错误,慎!
-
模块
小老虎由一系列模块组成。每个模块检查特定的安全问题。小老虎框架允许同时提供通用模块和专用模块。这些模块可以通过计划任务独立执行,也可以通过tiger执行。
当然我们也可以自定义模块,想自己写,看看README.writemodules
。
现在小老虎有这些模块。
模块名 | 用途 |
---|---|
check_accounts | 检查系统账户,查找禁用的cron rhosts .forward valid_shell 账户 |
check_aliases | 检查邮件名和不正确的配置 |
check_anonftp | 检查匿名FTP服务是否正确配置 |
check_cron | 证实计划任务项 |
check_embedded | 确定嵌套路径名是否正确配置 |
check_exports | 分析NFS导出文件系统的配置文件,确定访问权限是否得到正确限制 |
check_group | 检查用户组,查找冲突和错误项 |
check_inetd | 检查inetd配置文件,比较服务定义,正确的目录路径,不存在的二进制文件以及活动服务 |
check_known | 查找一直的入侵痕迹:后门和邮件临时目录 |
check_netrc | 检查netrc文件是否不安全配置 |
check_nisplus | 查找NIS+实体的错误配置 |
check_passwd | 查找系统用户的冲突以及错误项 |
check_path | 比对系统PATH环境变量和脚本中的PATH,查找不正确的定义 |
check_perms | 检查文件权限和不一致之处 |
check_printcap | 分析打印机控制文件的配置 |
check_rhosts | 检查rhosts文件,防止系统易遭受攻击 |
check_sendmail | 检查sendmail的配置文件 |
check_signature | 将二进制文件签名和数据库里的信息比较 |
check_system | 调用操作系统专用模块/usr/lib/tiger/systems |
check_apache | 检查apache配置文件,并上报会引入漏洞的问题 |
check_devices | 检查设备权限,当设备拥有world permission时提出告警 |
check_exrc | 分析不在用户主目录的.exrc 文件,因为vi/ex会在当前目录查找这个文件,并运行其中的指令危害系统 |
check_findeleted | 检查当前系统中是否有进程使用被删除的文件。这是入侵的表现,或者没启用打了补丁的服务器 |
check_ftpusers | 分析/etc/ftpusers ,确定是否存在有管理员权限的用户 |
check_issue | 检查/etc/issue /etc/issue.net 文件,确定是否包含合适的内容,定义在ISSUEFILE 和ISSUENETFILE 中 |
check_logfiles | 检查日志文件(wtmp btmp lastlog utmp)的存在,以及正确的umask设置 |
check_lilo | 分析lilo和grub bootloader的配置文件 |
check_listeningprocs | 检查监听TCP/IP套接字的进程/服务器,当未授权用户运行服务器或服务器监听所有接口时会告警 |
check_passwdformat | 检查/etc/passwd 的格式确定其中不一致的点 |
check_patches | 检查系统是否有可用补丁 |
check_root | 检查是否有远程root账户登录 |
check_rootdir | 检查root目录的权限 |
check_rootkit | 检查rootkit |
check_single | 检查系统是否正确配置禁止单用户访问 |
check_release | 分析OS版本,确定是否过期 |
check_runproc | 检查tigerrc 中配置的进程是否在系统中运行,轻量级软件看门狗 |
check_services | 将/etc/services 里配置的服务和某service文件中应配置的服务对比 |
check_tcpd | 测试TCP Wrapper防火墙以及其配置文件的修改,确定穿过防火墙的服务 |
check_umask | 检查umask设置 |
check_xinetd | 检查哪个xinetd 服务被启用,那个被禁用 |
crack_run | 安装密码破解程序确定当前用户是否使用弱口令 |
tripwire_run aide_run integrit_run | 运行各种完整性校验程序 |
deb_checkadvisories | 对比Debian Security Advisories列表查看系统中安装的软件包是否有漏洞 |
deb_checkmd5sums | 比对二进制文件的MD5值 |
deb_nopackfiles | 查找系统目录中不是由Debian包提供的文件 |
相关文件
@tiger-config-dir@/tigerrc
Tiger配置文件
@tiger-config-dir@/cronrc
Tigercron配置文件
@tiger-log-dir@
日志目录
@tiger-work-dir@
TIger脚本创建临时文件的工作目录
@tiger-config-dir@/tiger.ignore
定义会被Tiger忽视,不会在最终报告中出现的消息的配置文件
0x03 tiger初体验
在运行tiger之前得先确保存在tigerrc
这个配置文件,如果你想定制你的扫描功能,可以尝试修改该配置文件。
然后呢,如果只是试用tiger的话,你其实不必和上文说的那样,安装整个tiger,只需运行源码目录下的./tiger
就可以生成一份审计简报了。如下。
这是在tiger源码目录中试用tiger。
这是生成的简报。
要是你只是想对特定的项目进行扫描而不想等太久,可以独立运行脚本,这些脚本在./script
目录中,现在我们就来试一试。安全简报会输出到stdout上,你也可以重定向到文件里。
试试其中的exports检查吧。
sudo /usr/lib/tiger/script/check_exports
如图是检查exports,将检查结果输出到stdout中。
接下来是:
sudo ./scripts/check_accounts > ~/2.txt
这个脚本用于检查accounts,并将报告输出至文件2.txt
如果你想讲报告以HTML的格式输出,请使用-H
选项,这会生成一个HTML文本,会有超链接到消息文本。让我们来试试吧。
sudo tiger -H
让我们看看他的HTML文件。
基本上可以看到Tiger输出的HTML格式报告了。
如果你想获得更多关于tiger报告中的信息,有三种方法可供你选择。
执行命令
tigexp msgid
msgid就是报错中你可以看到的[]
中的编码。如下获得详情。
WARN [fsys013w]cannot access ~/workspace/src/justniffer-0.5.12/m4/ltsugar.m4 is a dangling symlink.
tigexp fsys013w
即可获知:
往报告里添加解释
通过在命令里添加-e
选项可以在报告中添加解释语句。
sudo tiger -e
产生的报告如下所示。
随后你可以将报告里的信息输出到stdout中。
sudo tigexp -F report-file
如下是将上图中的解释文本输出至stdout。
独立生成解释文件
要是觉得报告太大,那就将解释文件中的解释语句独立输出至stdout,且不重复输出解释信息。这么做:
sudo tigexp -f report-file
结果如下:
通常运行Tiger
其一是不通过计划任务运行tiger:
sudo tiger
其二是将tiger作为计划任务运行。
sudo tigercron
计划任务会在运行完毕后发送email到一个特定的用户(在tigerrc
中指定),这个报告中仅包含发生变化的信息,即change
关键字。
我们也可以将tiger作为HIDS来使用。
0x04 Tiger HIDS
Tiger能够被当做两种工具来使用:审计工具&HIDS。
Tiger的工作流程如下:
- 特定时间运行特定模块
- 过滤掉忽略的信息
- 模块中的消息与特定规则中的消息对比 只有没报告过的或者不在规则中的信息会被检查
- 全部消息或差别会通过email发送给相关人员
Tiger能够以计划任务周期性运行,tigercron
就是用来运行tiger的计划任务的,他会读取cronrc
配置文件(一般在目录/etc/tiger
或/usr/local/etc/tiger
中)。该文件会指定tiger该进行的检查条目以及检查时间。
当运行一个模块时,tigercron程序在tigerrc
中会进行相应的检查:
- 若设置
Tiger_Cron_Template
为Y,他会对是否存在称述期待结果的模板进行检查 - 若设置
Tiger_Cron_CheckPrev
为Y,他会对其检查的模块是否之前运行过进行检查
报告之间的差异可以让我们轻松的检测到存在入侵。如果有新的入侵行为,tiger会侦测到某些运行的东西发生了改变,如文件修改,新进程,新用户,随后将新的安全报告邮件给管理员。
然而作为一个HIDS,最好和其他安全工具配合使用:
- 完整性校验工具:Tripwire和Aide
- 日志检查器:logcheck
- 检测rootkit的工具:chkrootkit
- 网络IDS:Snort
- 端口扫描检测器:portsentry、scanlogd、scandetd或psad
tripwire_run
模块可以通过Tiger来运行tripwire,系统管理员可以以这种方式自己再自定义一些工具扫描模块。
0x05 Tiger优缺点
优势
- 开源
- 模块化设计易于扩展
- 多用途,可用于审计和入侵检测
- 将多个工具进行整合形成了框架
- 能够发现多种配置上的错误,侦测主机对已删除的文件的使用行为
劣势
- 对安全事件的检查无法面面俱到,会有漏报
- agent和log server之间的通信信道未进行加密,仅仅是通过邮件
- Tiger Server无法在单一位置接收全部告警,并将其相关联
- 若tiger运行在一台危险的主机上时,其产生的报告也将变得不可信