博威---云架构决胜云计算

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4371|回复: 8

文件完整性保护:TRIPWIRE

[复制链接]
发表于 2007-6-22 21:15:21 | 显示全部楼层 |阅读模式

1992年 Gene Kim 和 Eugene Spafford 博士在普渡大学开发了Tripwire的最初版本,自发布以来已经被下载超过100万次。目前Tripwire公司提供各类完整性保护产品,涵盖Windows、Unix、Linux等各类平台,还提供网络设备的完整性保护方案。





文件完整性保护:TRIPWIRE
软件介绍
Tripwire软件的工作原理
Tripwire软件的安装和使用
Tripwire命令介绍
策略编写参考


Tripwire是一套有关数据和网络完整性保护的工具,主要是检测和报告系统中任意文件被改动、增加、删除的详细情况,可以用于入侵检测、损失的评估和恢复、证据保存等多个用途。由于使用了多达四种的Hash算法,因此准确度非常高。Tripwire也可检测多达十余种的Unix文件系统属性和二十余种的NT文件系统(包括注册表)属性,因此检测的结果也非常全面,几乎所有的变动都逃不过Tripwire的检查。它也是在系统管理员中最受欢迎的10种工具之一。
Tripwire软件分为商业版和开放源码版。由于两个版本的核心技术差别不大,并且开放源码的版本可以自由下载,所以本文就以最新的Tripwire(开放源码版)v2.3为例,讲解一下该软件的使用。
最新版的Tripwire v2.3支持以下平台:
- RedHat 7.0(Intel Only)
- Caldera 2.4 workstation
- TurboLinux 6.0.1
- SuSE 6.4


该软件基于预编写的策略工作,在基准数据库生成时,会根据策略文件中的规则读取指定的文件,同时生成该文件的数字签名并存贮在Tripwire自己的数据库中。为了达到最大限度的安全性,Tripwire提供了四种Hash算法--CRC32、MD5、SHA、HAVAL--用来生成签名。通常情况下采用前两种算法生成签名已经足够,当然也可全部采用。不过后两种算法对系统资源的耗费较大,使用时可根据文件的重要性灵活取舍。
进行完整性检查时,Tripwire会根据策略文件中的规则对指定的文件重新生成一次数字签名,并将此签名与存贮在数据库中的签名做对照。如果完全匹配,则说明文件没有被更改。如果不匹配,说明文件被改动了。然后在Tripwire生成的报告中查阅文件被改动的具体情况。
由上述可知,Tripwire自身的基准数据库是非常重要的。如果基准数据库变的不可靠,那么完整性检查的一切都没有意义。Tripwire软件安装完毕后,已经对配置文件、策略文件以及数据库文件均进行了高强度的加密。同时默认策略中也对自身文件进行完整性检查。当然,使用者自己也要做好这些文件的备份,因为Tripwire软件是不能恢复受损文件的,它只能详细列出每一个受损文件的详细情况。


步骤 1:编辑配置文件
首先打开文本格式的配置文件twcfg.txt。然后根据自己的需要修改配置文件,修改完毕后存盘。最后使用twadmin命令根据已编辑的文本文件生成一个加密的配置文件。
twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key twcfg.txt
安装完毕后,该文件已存在,因此不必再重新创建。通常情况下,配置文件的内容不会发生变化,因此没有必要去修改它,使用Tripwire默认的就可以了。
如果你想测试一下Email报告功能是否起作用,你可以输入以下命令进行测试。
tripwire --test --mail user@domain.com
步骤 2:编辑策略文件
首先打开文本格式的策略文件twpol.txt。Tripwire在安装时已经在策略文件中写入了默认的检查规则。这些默认的规则主要检查重要的系统文件和Tripwire自身文件的完整性。这些默认规则可以满足大部分人的需要,即保护系统。当然你也可以用Tripwire来保护其他任何的文件,这样,你的重要数据和应用系统也得到了保护。修改完策略文件后存盘。最后使用twadmin命令根据已编辑的文本文件生成一个加密的策略文件。注意,策略文件的文本文件最好删除,否则该文件的内容易被察看。
twadmin --create-profile twpol.txt
安装完毕后,该文件已存在,因此不必再重新创建。默认的策略中有一些被检测的文件可能在你的机器中不存在,因此使用默认策略进行基准数据库的生成和完整性检查时,系统会报出一些文件找不到的小错误。请不要惊慌,这是正常现象,不影响检查的结果。你可以修改策略文件,也可以执行步骤6来避免这些小错误。
如何书写Tripwre认可的规则呢?这些规则具有一定的语法,有几个部分组成。本文的第5部分详细的说明了Tripwire的规则写法。
步骤 3:生成基准数据库
配置文件和策略文件都编辑和生成好了之后,就应该根据配置文件的规则生成基准数据库。基准数据库在Tripwire安装完毕后生成一次即可。可以使用tripwire命令来生成基准数据库。
tripwire --init
基准数据库生成时,Tripwire会提示你输入local key,对其进行高强度的加密,以防止对文件内容的非法改变。它的存贮位置为/var/lib/tripwire/$(HOSTNAME).twd。
步骤 4:运行完整性检查
基准数据库生成完毕之后,就可以使用tripwire命令随时进行完整性检查了。
tripwire --check
进行检查时指定检查报告的存贮位置。
tripwire --check --twfile/var/lib/report/report.twr
进行检查时发送Email报告结果。
tripwire --check --email-report
进行检查时指定使用Email进行发送的报告等级。
tripwire --check --email-report --email-report-level 2
使用指定严重性等级的规则进行检查。
tripwire --check --severity 80
使用指定的规则名进行检查。
tripwire --check --rule-name rulename
只检查指定的文件或目录。
tripwire --check object1 object2 object3 …
进行检查时忽略某些属性(因为有些属性的检查比较耗费系统资源,比如Hash算法)。
tripwire --check --ignore "property, property, property, property"
如果完整性检查完毕后,发现Email报告功能未生效,可以检查两个方面:一个是策略文件中规则的emailto属性必须填写妥当,另一个是运行tripwire命令时,--email-report选项必须被包含。
生成基准数据库和进行完整性检查时,如果策略制订不当,资源耗费会比较大。这时应该调整你的策略,减少一些次重要文件的监测属性,尤其是耗时较多的属性。一个能取得性能和安全均衡点的策略不可能一次写成,你必须不断进行调整,直到满意为止。记住,编辑完策略文件不要忘了执行步骤7。
步骤5:查阅报告
完整性检查进行完毕后,你就可以查阅报告以发现有哪些文件遭到了改动,改动了什么。 使用twprint命令可以输出报告。
将加密的报告内容输出到显示器。
twprint --print-report --twrfile /var/lib/report/report.twr
将加密的报告内容输出到一个文本文件。
twprint --print-report --twrfile /var/lib/report/report.twr > myreport.txt
输出报告时指定输出的报告等级。
twprint --print-report --report-level 4 --twrfile /var/lib/report/report.twr
步骤6:升级基准数据库文件
如果在报告中发现了一些违反策略的错误,而这些错误又是你认为正常的,那么怎样才能使Tripwire检查时也认为这是正常的呢?使用tripwire命令可以做到更新基准数据库。
tripwire --update --twrfile /var/lib/report/report.twr
你也可以在进行完整性检查之后立即自动进行更新,命令如下。
tripwire --check --interactive
进行更新时Tripwire会显示出每条错误,形式如下。如果括号中有x,则该条错误将会被更新。如果没有,该条错误将不会被更新。
Modified:
[x] "/usr/local/tw"
drwxr -xr -x root(0) 512 Tue Nov 22 17:19:15 1999
在此步骤中,Tripwire软件会要求你输入local key。
步骤7:升级策略文件
随着系统的变化,原来的策略文件必然会不能满足需要,因此必须要不断的更新策略文件中的规则。更新和创建新的策略文件不同,因为如果为Tripwire创建了新的策略文件,那么你就必须要重新生成基准数据库。更新时首先打开策略文件的文本文件。
twadmin --print-profile > twpol.txt
然后编辑该文件,完毕后存盘。最后使用tripwire命令进行策略更新。
tripwire --update-policy twpol.txt
在此步骤中,Tripwire软件会要求你输入site key。
步骤8:改变site key和local key
sitekey和localkey是在安装时生成的,但是你也可以随时修改。注意,如果已经用来加密的密钥文件被删除了或是被覆盖了,那么Tripwire加密过的文件都不能访问了。因此,最好对这两个文件做备份。
很多时候你会发现你的口令可能不太安全,因此要改变口令。如果要这么做,只需执行以下命令即可。
twadmin --generate-keys --local-keyfile /etc/tripwire/site.key
twadmin --generate-keys --local-keyfile /etc/tripwire/local.key
但是这么做的话,会造成使用以前密钥进行加密的文件无法打开的情况。如果你仍想使用以前的策略文件、配置文件、数据库文件、报告文件的话,那么在改变口令之前,必须使用以下的命令把这些已加密的文件进行解密。
twadmin --remove-encryption file1 file2 ...
千万不要忘记,在生成新的密钥文件之后,应该用新密钥对这些文件进行加密。配置文件和策略文件只能用site key加密,而数据库文件和报告文件只能用local key加密。
twadmin --encrypt --site-keyfile /etc/tripwire/site.key file1 file2 file3 ...
twadmin --encrypt --local-keyfile /etc/tripwire/local.key file1 file2 file3 ...
如果你想知道究竟那个文件(Tripwire的自身文件)被加密,只需输入以下命令。
tripwire --examine file1 file2 ...


1、命令行语法
所有Tripwire命令(除了siggen)都必须遵守以下的命令行语法规范:
命令 选择的模式 [选项] [文件名]
注意:所有的命令行参数的顺序不能改变,否则将会产生错误。
2、具体命令介绍
Tripwire现在支持的命令有以下四种,各命令的主要功能如下所示。如想获得更详细的命令参数介绍,请参阅Tripwire软件的帮助及其使用手册。
tripwire命令
tripwire命令可以实现数据库初始化、完整性检查、数据库升级、策略文件升级、测试等功能。它是Tripwire软件中最核心的命令。
twadmin命令
twadmin命令可以实现创建和打印配置文件、创建和打印策略文件、加密和清除加密、验证加密、产生密钥等功能。
twprint命令
通常情况下,数据库文件和报告文件均已加密,无法直接查阅。twprint命令可以实现以文本格式查阅和打印数据库和报告的功能。
siggen命令
使用siggen命令可以显示特定文件的一个或多个Hash值。由于Tripwrie v2.3使用的算法不同于Tripwire v1.2或v1.3,所以对于同一文件,不同版本的Tripwire软件计算出的Hash值可能会不同。


在Tripwire软件中,策略文件包含着一系列的规则控制着Tripwire软件如何检查系统的完整性。Tripwire的策略文件有5个标准组成部分,分别是:规则、停止点、特征、指示符、预定义变量。

1、 规则
规则是策略文件的基本组成部分,指明了Tripwire在进行检查时会对哪些文件或目录检测哪些属性的变化。如:
# This is a comment.
/temp -> $(ReadOnly)+H-M;
# 是注释符号,指明了#号后的部分都是注释,Tripwire根据策略检查时,会忽略这部分。
-> 把检测的对象名和检测的属性分离开来。
; 用来结束一条规则
检测的对象名中含有特殊字符,只需用双引号将对象名括起即可。这里的特殊字符包括!{ } 〉( )\n \t , ; = $ # | \ ' +,其中还有空格。
$(ReadOnly) 是预定义变量之一。
+ 表示检测这项属性。- 表示不检测这项属性。
这个版本的Tripwire一共能够检测18项文件或目录属性。详细的属性信息请查阅Tripwire的 policyguide.txt 文件,该文件安装后的默认位置在/usr/doc/tripwire/。
2、 停止点
停止点指明了Tripwire在进行检查时不会对哪些文件或目录检测属性的变化。如:
!/etc/rc.d # will not check this object.
3、 特征
特征是为一条或一组规则提供其他信息而设。如:
(emailto = admin1@foo.com, severity = 90)
{
/etc/dog-> +pingus (severity = 75);
/etc/cat-> $(Dynamic) (emailto = admin2@foo.com);
}
规则后使用()括起的部分就是这条规则的特征。
一组规则前使用()括起的部分就是这组规则的特征。
如果既有规则组特征,又有每条规则自己的特征,那么最终以每条规则自己的特征为准。注意:emailto 特征正好相反,最终的特征是两者相加。
这个版本的Tripwire一共有4种特征。详细的特征信息请查阅Tripwire的 policyguide.txt 文件,该文件的默认位置在/usr/doc/tripwire/。
4、 指示符
指示符允许Tripwire有条件的应用这组规则。如:
@@ifhost salmon
/etc -> +abcdgimnpstul;
@@else
/bin -> +abcdgimnpstul;
@@endif
前两句将会使 Tripwire 在应用此项规则时,首先判断主机名是否是"salmon"。如果是,才会执行"/etc -> +abcdgimnpstul;"。如果不是,将会执行"/bin -> +abcdgimnpstul;"。
Tripwire支持7种指示符。详细的特征信息请查阅Tripwire的 policyguide.txt 文件,该文件的默认位置在/usr/doc/tripwire/。
5、 预定义变量
预定义变量是Tripwire内置的、已定义的变量,不同的变量代表了对文件不同的检测策略,也就是代表了不同的检测属性和不检测属性。
Tripwire已经预定义了6种变量,详细的特征信息请查阅Tripwire的 policyguide.txt 文件,该文件的默认位置在/usr/doc/tripwire/。
另外Tripwire还支持在规则文件中用户自由定义变量,如:
param1 = +SMCH; # Set variable param1.
 楼主| 发表于 2007-6-22 21:17:36 | 显示全部楼层
图二--Tripwire for Web Pages工作流程
   
    Tripwire for Servers
   
    Tripwire for Servers是一个最好的数据完整性解决方案,通过监控网站服务器上的临界文件(系统文件、二进制文件、应用文件、内容文件等)。若任一受监控的临界文件被更改(包括恶意修改和误操作引起),Tripwire for Servers都会发现并通知管理员。
   
    Tripwire for Servers在默认安装情况下已配置了对基础系统文件的监控。若Web服务器执行程序、支持的数据库和配置文件安装保护的系统目录下,那么则不需要对配置文件进行修改。然而,大多Internet网站产品都是把Web服务器从文件系统中分离出来的,如UNIX系统将Web服务提供内容装载为/www。
   
    不管Web应用文件是否安装在文件系统,Web内容往往都是与操作系统分离的。这些文件不是操作系统构架的一部分,用户需要在Tripwrie策略文件增加对这些文件的监控规则。
   
    配置Tripwire for Servers对网站文件和信息进行监控,您需要首先更新策略文件。策略文件包含所有您想让Tripwire for Servers对其进行监控的文件和目录。策略文件根据相似属性归组原则分解成若干个独立的规则组。例如:针对Web服务器中您可以定制名为"Application Binaries"的规则监测Web服务器的应用二进制文件的情况。
   
    在Tripwire for Servers的策略文件添加以下内容:
   
    1) 更新策略文件,添加对Web内容的监控,如/www。
   
    对这些内容需要使用最强的保护规则选项。在Windows NT中使用$(SECHIGHEST)选项,以及在Solaris下使用$(SEC_CRIT)选项对所有的文件属性进行监控和保护其文件内容。必须区分开新的规则。
   
    2) 以相同的样式添加Web服务器的应用二进制执行文件和配置文件。
   
    这仍然需要将这部份的规则内容从Web内容中分离出来或与其它系统规则简单的结合起来。
   
    Web内容需要从系统保护和系统应用文件的保护规则分离出来,其原因是:
   
    ? Web内容的变更是按一定的样式和时间进行更改的,此特性不同于系统文件和服务器应用文件。
   
    ? Web内容由很多的文件组成,入侵者对Web网站进行攻击都需要实现对基础系统(Web内容)的交互读写访问。
   
  适当的使用规则,Tripwire可以使用时间表定制较核心系统检测频繁的Web内容检测规则。每天有条理的对系统进行检测,以及将Web内容按频率进行检测都是十分重要的。我们需要将特定规则分离出来专门保护Web网站的主页以及它的基础构成(GIF、JPG图片等)。因为Web网站的入侵者通常以网站的"入口"为目标。对这些文件进行每隔5分钟的检测能大大减少被入侵的风险。
下图展示了如何使用时间表对Web服务器定制三个不同的检测事件。
   
    1. 第一个事件对主页内容进行检测。在这里,我们可以定制每隔10分钟检测主页文件。当此事件建立后,Tripwire for Servers即可对指定的规则进行定时检测。
   
    2. 第二和第三事件,"应用二进制执行文件和所有的操作系统检测",能对Web服务器应用二进制执行文件和所有操作系统文件进行监控。这些文件并不需要时常检测,我们定制检测的间隔时间为每天的中午。
  图三--为不同的规则建立检测执行时间表
   
    以下为用于对Web内容进行监控的部分Tripwire for Servers策略文件。
   
    注意:这些并非完整的策略文件内容,但这部分可为定制监控对象提供参考。
   
    #此部分为保护Web网站的规则
   
    @@SECTION NTFS
   
    #此规则保护Web内容
   
    (rulename ="Home Page ",severity =100,emailto [email==security@company.com]=security@company.com[/email])
   
    {
   
    #主页
   
    [define path to home page files ]…/default.htm ->$(ReadOnly);
   
    #如果有多个主页文件,将其添加到此项
   
    [define path to graphic files ]…/topbanner.gif ->$(ReadOnly);
   
    [define path to graphic files ]…/nav_bar.gif ->$(ReadOnly);
   
    }
   
    #此规则对Apache Web服务器的应用二进制文件及其配置进行监控
   
    (rulename ="Applications Binaries ",severity =100,emailto [email==security@company.com]=security@company.com[/email])
   
    {
   
    #保护Apache应用二进制执行文件和配置文件
   
    [define path to Apache binary ]…/httpd ->$(ReadOnly);
   
    [define path to Apache config ]…/httpd.conf ->$(ReadOnly);
   
    }
   
    #在Windows NT/2000上您需要对IIS的配置进行监控
   
    # NT注册表部分
   
    @@SECTION NTREG
   
    (rulename ="IIS Registry Keys &Values ",severity =100,emailto security@company.com)
   
    #监控IIS的注册键及其键值
   
    [HKEY_CURRENT_CONFIG …define path to IIS reg keys and v lues ]->$(ReadOnly);
   
结论
   
  Web服务器越来越成为入侵者的目标,为了维护"公众形象"迫切需要对其进行保护和监控。安全的Web服务器在启动时就需要校验和断定它是处于一个可知的良好状态和系统完整性。如果能做到这一点,你们就能相信你们的Web服务器并能展开其他策略来保护内容的安全性。如果核心操作系统文件不是处于可知状态,那么保护内容变得毫无意义,此时Web服务器很有可能已经受到攻击。
   
  Tripwire软件提供了一个全面的Web服务器的安全解决方案,它可以让您对Web服务器进行监控和诊断,以预防在提供服务时遭受攻击。如果没有了系统的完整性,您还能相信您的服务器吗?
 楼主| 发表于 2007-6-23 05:04:32 | 显示全部楼层
Tripwire 应用



  对unix管理员来说,主机系统的安全一直是个课题,一方面管理员通过更新patch,安装软硬件防火墙等手段努力使自己的系统可靠性增强,而另一方面unix操作系统的漏洞总是不断被发现并被公布出来,如BUGTRAQ这样的安全列表,从这个角度上可以很绝对的说,互联网上没有安全的主机。任何一台放在Internet上的主机被入侵的潜在可能性是不可逃脱的,而且,对入侵者而言,利用漏洞进入系统往往只是第一步,如果想得到更多的,如超级用户的密码,数据库的口令等,往往需要下点功夫,最便捷也是最有效的就是改动或特洛伊化受侵害的主机上的文件,如放置自己的监听程序,替代某些关键文件,修改编辑可信文件,设置suid文件等。

  一些管理员通unix自带的命令来检查文件的安全性,如检查文件生成的时间戳,但这样的可靠性微乎其微,有经验的入侵者可以很轻松的修改文件生成时间,有兴趣的管理员可以试试以下操作:
  # echo "+ +" > /.rhosts
  这一步生成一个.rhosts文件,看看它的时间。
  # ls -l /.rhosts
  -rw-r--r-- 1 root other 4 Jul 2 16:45 /.rhosts
  好,我们如下操作看看会怎么样?
  # touch -r /bin/sh /.rhosts
  #ls -l /.rhosts
  -rw-r--r-- 1 root other 4 Apr 5 16:32 /.rhosts

  我们看到时间戳已经变了。变成了一个"老"文件,这样很可能就会逃脱管理员的视线。比如,入侵者替换掉了su文件,在正当用户每次试图su时,这个特洛伊化的su文件都会读取口令并将口令记载下来,然后才把控制权交给真正的su程序,口令通过这种途径泄密了,虽然这不是管理员所期望的,但毕竟unix太大太复杂,发现起来很困难。

  Tripwire就是解决这一问题的经典工具,它是目前最为著名的unix下文件系统完整性检查的软件工具,这一软件采用的技术核心就是对每个要监控的文件产生一个数字签名,保留下来。当文件现在的数字签名与保留的数字签名不一致时,那么现在这个文件必定被改动过了。具体到监控项目,在Tripwire的配置文件中有如下相应说明:
  access permissions and file mode settings, including effective execution settings inode number in the file system

  number of links
  user ID of the owner
  group ID of the group of users to which access may be granted
  size of the item
  date and time the item was last accessed, the last modification made to the item, and the creation date and time associated with the items inode
  由上,我们可以看到Tripwire对文件的管理面是很宽的。

  2: Tripwire的工作原理
  当Tripwire运行在数据库生成模式时,会根据管理员设置的一个配置文件对指定要监控的文件进行读取,对每个文件生成相应数字签名,并将这些结果保存在自己的数据库中,在缺省状态下,MD5和SNCFRN(Xerox的安全哈希函数)加密手段被结合用来生成文件的数字签名。除此以外,管理员还可使用MD4,CRC32,SHA等哈希函数,但实际上,使用上述两种哈希函数的可靠性已相当高了,而且结合MD5和sncfrn两种算法(尤其是sncfrn)对系统资源的耗费已较大,所以在使用时可根据文件的重要性做取舍。当怀疑系统被入侵时,可由Tripwire根据先前生成的,数据库文件来做一次数字签名的对照,如果文件被替换,则与Tripwire数据库内相应数字签名不匹配, 这时Tripwire会报告相应文件被更动,管理员就明白系统不"干净"了。

  有一点要注意,上述保障机制的重点在于数据库内的数字签名,如果数据库是不可靠的,则一切工作都丧失意义。所以在Tripwire生成数据库后,这个库文件的安全极为重要。比较常见的做法是将数据库文件, Tripwire二进制文件,配置文件单独保留到"可拿走并锁起来"的质上,如软盘,将上述文件复制到软盘后,关闭写保护口,锁到保险柜中。除软盘外, 一次性介质,如cd-r也是很好的选择,这样即使侵入者拿到盘也无计可施。除这种办法外,利用PGP等加密工具对上述关键文件进行数字签名也是一个很好的选择。

  当然,当管理员自身对某些文件更动时, Tripwire的数据库必然是需要随之更新的, Tripwire考虑到了这一点,它有四种工作模式:数据库生成,完整性检查,数据库更新。交互更新。当管理员更动文件后,可运行数据库更新模式来产生新的数据库文件。

  3:下载Tripwire,安装前的准备工作
  Tripwire支持绝大多数Unix操作系统,它的安装需要编译环境,如gcc,cc等,还需要gzip,gunzip等解压工具。这些工具管理员可从相应站点获取,这里不讨论。Tripwire可从www.tripwire.com获得,到它的主页download部分,可以看到当前可免费download的Tripwire1.3 ASR版本,下载下来就是。

  4:安装Tripwire
  Tripwire的tar包解开后,我们可以看到如下目录结构,建议先看看根下的README文件,对Tripwire有个整体的了解。随后,我们就可以一步步的安装这个软件了。

  步骤1:匹配主机环境

  在Tripwire的根下有Ported这个文件,它是对支持的系统及相关配置文件的描述,管理员第一步需要打开这个文件,找到符合自己系统的描述,本文的测试环境是solaris2.6,我们截取相关部分来看看,
  vendor: Sun Microsystems, Inc.
  os: SunOS
  os version: 5.x (Solaris 2.x)
  compiler: cc
  cflags: -O
  ldflags:
  libs:
  conf.h: conf-svr4.h
  tw.config: tw.Conf.sunos5
  notes:
  在这一段描述中,要尤其注意的是conf.h 和tw.config对应的行,在下几步的配置中需要用到它们两个对应的文件。此处要注意的是:每种操作系统这两个地方所对应的文件是不同的。

  步骤2:配置监控目标

  进入include目录,编辑config.h文件,将第一步Ported中conf.h后对应的文件名和路径写入config.h开始#include部分,此例中即为
  #include "../configs/conf-svr4.h"
同时注意的是,在configh文件中还有Tripwire配置文件,Tripwire数据库文件的放置路径及生成数据库的文件名等设置,管理员按照个人喜好设置即可编辑好config.h后,还要根据本机情况编辑修改位于configs目录下的Tripwire配置文件,也就是上面Ported 文件中tw.config对应的tw.conf.sunos5,我们知道,对文件,目录等的监控就是在这里设置的。我们一段段的选取一部分这个文件来看看:
  #
  # - : ignore the following atributes
  # + : do not ignore the following attributes
  #
  # p : permission and file mode bits a: access timestamp
  # i : inode number m: modification timestamp
  # n : number of links (ref count) c: inode creation timestamp
  # u : user id of owner 1: signature 1
  # g : group id of owner 2: signature 2
  # s : size of file
  注意上述p,I,n,u,g,s,a,c,1,2等,它表示可以对文件,目录设置的监控项目,管理员可组合使用,最前面的-,+号表示选取或忽略这些属性。如下例:
  /var +pinugsm12-a
  它表示对目录/var下所有文件检查,监控项目分别有文件属性,inode,链接数,属组,属主,修改时间,生成时间,数字签名等,但是,对这个目录下的文件的访问不加监控,如果访问也监控的话,正常的用户访问也会被Tripwire捕捉,这没有必要。
  为了方便起见,Tripwire作者把常见组合做成了模板,如下,
  #
  # Templates: (default) R : [R]ead-only (+pinugsm12-a)
  # L : [L]og file (+pinug-sam12)
  # N : ignore [N]othing (+pinusgsamc12)
  # E : ignore [E]verything (-pinusgsamc12)
  #
  tw.conf.sunos5这个文件再向下,就是管理员根据情况填写了,把需要监控的文件及目录加入列表,赋予相应属性即可。如下:
  / R
  /.rhosts R # may not exist
  /.profile R # may not exist
  /etc/dfs/dfstab R
  /etc/hosts.equiv R
  /etc/inet/inetd.conf R
  /etc/inet/protocols R
  /etc/inet/services R
  /etc/init.d R
  /etc/motd L
  #/etc/named.boot R # may not exist
  /etc/opt R
  /etc/passwd L
  /etc/profile R

  步骤3:编译

  完成上两步后,就可以编译了,在Tripwire的根下,执行make,系统即会自动编译,编译成功后,可以再执行make test,Tripwire会自动检查编译情况及工作状态,它会一段一段的测试,我们选取一段如下:
  === test.Update.sh: DESCRIPTION
  This shell script exercises all the Tripwire integrity checking
  and database update functionalities。
  === test.update.sh: Setting up auxiliary scripts ===
  === test.update.sh: BEGIN ===
  ../src/tripwire -loosedir -c /tmp/twtest/tw.config -d /tmp/twtest/tw.db -i all
  === test.update.sh: testing GROWING (safe) files ===
  === test.update.sh: testing GROWING (unsafe) files ===
  === test.update.sh: testing ADDED files ===
  === test.update.sh: testing DELETED files ===
  === test.update.sh: testing CHANGED files ===
  === test.update.sh: testing input schemes ===
  === test.update.sh: tw.config from stdin
  === test.update.sh: database from stdin
  === test.update.sh: testing complex UPDATE cases
  === test.update.sh: changed ignore-mask (UPDATE file)
  === test.update.sh: changed ignore-mask (UPDATE entry)
  === test.update.sh: testing UPDATED files (7 cases)
  === test.update.sh: case 1: update: add new file ===
  === test.update.sh: case 2: update: delete file ===
  === test.update.sh: case 3: update: update file ===
  === test.update.sh: case 4: nonsense case (skipping) ===
  === test.update.sh: case 6: update: delete entry ===
  === test.update.sh: case 5: update: add entry ===
  === test.update.sh: case 7: update: update entry ===
  === test.update.sh: PASS ===
  我们可以看到,Tripwire对update功能一项项的做检测,并在最后PASS了,当Tripwire所有的检测项目都PASS后,编译就OK了。

  步骤4:生成数据库

  成功编译Tripwire,我们准备开始对需要监控的文件进行扫描,以生成Tripwire数据库,在Tripwire 的src目录下:如下操作。/tripwire -init,则系统会根据tw.conf.sunos5文件内的设置,开始扫描并生成相应的数据库,上面提到,数据库文件的路径是在第二步configh中设置的,在本例中为/var/tripwire,我们得到了名为tw.db_secu.unix.com的数据库文件。建议此时将Tripwire可执行文件,数据库文件,配置文件COPY到软盘等地方,放到安全的地方。以后需要安全鉴别时直接在软盘上执行即可。

  步骤5:测试

  数据库生成了,我们来测试一下吧,首先我们在根下touch生成一个goadd文件,其次我们把根下的.cshrc文件做一下改动,在里面加入几个#注释号。然后我们来运行一下Tripwire看如何:
  / Tripwire -c ./tw.config.sunos5 -d ./tw.db_secu.unix.com
  Tripwire(tm) ASR (Academic Source Release) 1.3.1
  File Integrity Assessment Software
  (c) 1992, Purdue Research Foundation, (c) 1997, 1999 Tripwire
  Security Systems, Inc。 All Rights Reserved。 Use Restricted to
  Authorized Licensees。
  ### Phase 1: Reading configuration file
  ### Phase 2: Generating file list
  ./tripwire: /.profile: No such file or directory
  ./tripwire: /kernel/unix: No such file or directory
  ### Phase 3: Creating file information database
  ### Phase 4: Searching for inconsistencies
  ###
  ### Total files scanned: 4437
  ### Files added: 1
  ### Files deleted: 0
  ### Files changed: 1
  ###
  ### Total file violations: 2
  ###
  added: -rw-r--r-- root 0 Jul 3 18:45:31 2000 /goadd
  changed: -r--r--r-- root 669 Jul 3 18:46:15 2000 /.cshrc
  ### Phase 5: Generating observed/expected pairs for changed files
  ###
  ### Attr Observed (what it is) Expected (what it should be)
  ### =========== ============================= =============================
  /.cshrc
  st_size: 669 668
  st_mtime: Mon Jul 3 18:46:15 2000 Mon Jul 3 09:00:41 2000
  st_ctime: Mon Jul 3 18:46:15 2000 Mon Jul 3 09:00:41 2000
  md5 (sig1): 3z9gKjlZGq5GbeWOxpYaF9 1Z7K0n3ZKAyuPpAZB1G8uq
  snefru (sig2): 1vCDeMR45lpRCChmDithiW 1oRYPpQ:oZA6hVx6Zi4.NG

  可以看到,系统运行经过了5个步骤,首先读取配置文件,其次生成配置文件中设置为需要监控,但实际并不存在的文件列表。第三部生成文件信息库,第四步报告检查情况。我们看到共扫描了4437个文件,其中有一个文件是新增加的,有一个文件发生了改变。在下面它列出了这两个文件-正是我们做了手脚的文件!在最后一步Tripwire将发生了改变的文件现在字节数,生成时间,修改时间, md5, snefru签名及数据库中的记录对比列出,是不是很爽?

  上面我们讲到的是Tripwire的主要功能,在命令行状态下敲入tripwire -h 就会有其它使用参数的介绍,有兴趣的管理员不妨一试。   The Tripwire Product Line
  Tripwire HQ Connector Bundle The HQ Connector bundle is comprised of Tripwires award-winning file integrity software,Tripwire version 2.2.1, and a communications agent that allows the software engine to "talk" to the Tripwire HQ Manager. Tripwire provides support for multiple platforms, including Windows NT, Solaris, Linux, HP-UX, IBM-AIX and others. With the Tripwire HQ Connector bundle, you can unequivocally answer the question: is my data the same today as it was yesterday? This information will help you keep your system in optimal working order and manage any changes - malicious or inadvertent - giving you complete control over data integrity. Tripwire HQ Manager HQ Manager is a software console with a graphical user interface that allows you to control hundreds of installations of HQ Connector. Named HQ Managerbecause its designed to operate as your information integrity headquarters, this product provides you with the very best way to manage data integrity across an enterprise network from a single, centralized location. Tripwire 2.2.1 for Linux With all the same great features as Tripwire 2.2.1 for other operating systems, Tripwire for Linux is available as a free download (without the agent that communicates with HQ Manager). In support of the open source community, Tripwire plans to release an open source version of this product this fall. For more information and future announcements about the open source release, check out www.tripwire.org. Tripwire Academic Source Release 1.3.1 With only slight changes, the Tripwire Academic Source Release (ASR) version 1.3.1 is the same as the original Tripwire software that was developed in 1992 by Dr. Eugene Spafford and Tripwire CTO Gene Kim. Tripwire offers this version as a free download, but does not provide product support for it.  

   中国教育和科研计算机网紧急响应组    
 楼主| 发表于 2007-6-23 05:06:13 | 显示全部楼层
tripwire-2.3.1-2简单介绍tripwire
下载地址 (HTTP):       http://telia.dl.sourceforge.net/sourceforge/tripwire/tripwire-2.3.1-2.tar.gz下载地址 (FTP):        使用版本:                   2.3.1-2软件包大小:                   1.5 MB预计磁盘使用空间:   63 MB
tripwire 包括tripwire程序,用来检查指定系统中文件的完整性。
tripwire 依赖于:gcc-2.95.3

安装 tripwire从下面这个地址下载tripwire的配置补丁:http://downloads.linuxfromscratch.org/blfs-patches.
安装tripwire 可以使用下面命令:
export PATH_HOLD=$PATH &&export PATH=/opt/gcc2/binPATH &&ln -s make /usr/bin/gmake &&cd src &&gmake release &&cd .. &&cp install/install.{sh,cfg} . &&patch -Np0 -i ../tripwire-cfg.patch &&./install.sh &&cp /etc/tripwire/tw.cfg /usr/sbin &&cp policy/*.txt /usr/share/doc/tripwire
取消上面做的修改:
rm /usr/bin/gmake &&export PATH=$PATH_HOLD

命令解释ln -s make /usr/bin/gmake : 我们之所以创建这个符号链接,是因为只有这样,tripware才能安装。在安装了以后,就可以安全地把这个链接删除。
gmake release : 这个命令创建tripwire程序.
cp install.{sh,cfg} . : 把这些拷贝到tripwire的主目录下,才能用它们来安装软件包。
cp policy/*.txt /usr/share/doc/tripwire : 这个命令安装文档。

配置 tripwire配置文件/etc/tripwire

配置信息Tripwire使用一个策略文件来决定检查哪一种文件完整性。默认的策略文件是(twpol.txt,放在/etc/tripwire/里) 是 Redhat 7.0的缺省安装,过时了。
策略文件也是自定义的,应该根据每个发行版和/或每个安装来定制。下面这里可以找到一些自定义的策略文件:
http://home.iprimus.com.au/glombowski/blfs/twpol-all.txt检查所有文件的完整性http://home.iprimus.com.au/glombowski/blfs/twpol-lfs.txtLFS 3.0 系统的自定义策略文件http://home.iprimus.com.au/glombowski/blfs/twpol-suse7.2.txtSuSE 7.2 系统的自定义策略文件
下载你想使用的策略文件,把它拷贝到/etc/tripwire/目录下,并用它代替 twpol.txt.然而,我们还是推荐你自己定制策略文件。从上面的例子里找些灵感,再读一下 /usr/share/doc/tripwire/policyguide.txt.twpol.txt 对初学者来说挺好的,因为它记录文件系统里所有的变化,甚至可以用来卸载软件包.
在你的策略文件拷贝到 /etc/tripwire/以后,就可以开始配置了:
twadmin -m P /etc/tripwire/twpol.txt &&tripwire -m i
配置过程中,tripwire将创建两个钥匙:一个 site key 和一个 local key,并保存在 /etc/tripwire/.

使用信息用下面的命令可以运行一次报告:
tripwire -m c > /etc/tripwire/report.txt
观察输出以检查你的文件的完整性。自动的完整性检查可以用 fcron 来进行。
注意,在运行了一次完整性检查以后,你必须查看报告或email,然后再修改 tripwire的本地文件数据库,以使 tripwire 不会老是告诉你在系统中不断变化的文件是安全问题。要做到这一点,你必须运行ls /var/lib/tripwire/report/ 并注意那个以linux-打头以 .twr结尾的最新文件。这个加密的文件是在最近的一次报告中生成的,将用来更新 tripwire 的本地数据库。然后,运行下面的命令,把问号换成合适的值:
tripwire -m u -r /var/lib/tripwire/report/linux-???????-??????.twr
你将被带到vim里面,并打开一份报告。如果所有的变化都是正常的,就输入:x,在输入了你的local key后,数据库就会更新。如果那些文件里有的是你仍然想监视的,把报告中相应文件名前的 x 移掉,再输入 :x.

改变策略文件如果你对自己的策略文件不满意,想改一下或用一个新的时,在修改了以后要运行下面的命令:
twadmin -m P /etc/tripwire/twpol.txt &&tripwire -m i


内容tripwire 包括 siggen, tripwire, twadmintwprint.
 楼主| 发表于 2007-6-23 05:07:19 | 显示全部楼层
文件系统完整性检查是安全中的重要一环。类 Unix 操作系统环境下文件系统完整性检查工具最负盛名的要数 Tripwire 了。 虽然 Tripwire 虽然很早就商业化了,但并不是独一份, AIDE 是一个不那么好用的可选的替代品,而 integrit 则是另外一个 Tripwire 的替代工具。尝试用了一下,觉得如下几个特点不错:

安装、配置、使用都简单便捷
占用资源较少,
使用最新的加密算法
从 integrit 站点下载文件后,解压.

# ./configure && make && make install 首先需要创建一个配置文件:

# cat /opt/oracle/software/integrit.conf
current=/opt/oracle/software/integrit.cdb
known=/opt/oracle/software/integritKnown.cdb
root=/opt/oracle/oradata
第一行设定当前的加密资料库. 第二行指的已知的加密资料库。第三行代表需要检查的系统目录。最基本配置的只需要这三行就可以了。

提示: integrit -h 显示命令帮助。

编辑完毕配置文件后,运行如下命令初始化或者更新资料库:

# integrit -C /opt/oracle/software/integrit.conf -u
integrit: ---- integrit, version 3.05 -----------------
integrit:                      output : human-readable
integrit:                   conf file : /opt/oracle/software/integrit.conf
integrit:                    known db : /opt/oracle/software/integritKnown.cdb
integrit:                  current db : /opt/oracle/software/integrit.cdb
integrit:                        root : /opt/oracle/oradata
integrit:                    do check : no
integrit:                   do update : yes
integrit: current-state db md5sum --------------
integrit: 515bb5d2f6159a94aeff4897fb29c1a6  /opt/oracle/software/integrit.cdb
把得到的资料库存储为已知的资料库(可选)。这一步的目的是有一个基准,以便新旧状态的对比分析。

# cp /opt/oracle/software/integrit.cdb /opt/oracle/software/integritKnown.cdb进行差异性对比检查:

# integrit -C /opt/oracle/software/integrit.conf -c

integrit: ---- integrit, version 3.05 -----------------
integrit:                      output : human-readable
integrit:                   conf file : /opt/oracle/software/integrit.conf
integrit:                    known db : /opt/oracle/software/integritKnown.cdb
integrit:                  current db : /opt/oracle/software/integrit.cdb
integrit:                        root : /opt/oracle/oradata
integrit:                    do check : yes
integrit:                   do update : no
changed: /opt/oracle/oradata/demo/sysaux01.dbf    s(d767300ae7992b694acd0dbd2d98f6cc9d8fd34a:5388d21fdc1881e34569a608318421e20435f210)
changed: /opt/oracle/oradata/demo/sysaux01.dbf    m(20060727-140328:20060727-141559) c(20060727-140328:20060727-141559)
changed: /opt/oracle/oradata/demo/redo02.log      s(8a9f29801d83ce5d783772e376bb1b495b18283d:c9c6552b6be8c04d14eb9742c50c61e97845730a)
changed: /opt/oracle/oradata/demo/redo02.log      m(20060727-140354:20060727-141601) c(20060727-140354:20060727-141601)
changed: /opt/oracle/oradata/demo/system01.dbf    s(5f68493e460072801856927f805e5643c139339e:37d04ffff72e1f30e460ca1093d819d9a6200928)
changed: /opt/oracle/oradata/demo/system01.dbf    m(20060727-140355:20060727-141553) c(20060727-140355:20060727-141553)
changed: /opt/oracle/oradata/demo/undotbs01.dbf   s(6ee4c7c5d6dda9e656ffb6af309b70cda6289bd9:a1f092d410d8f1918f1e997c24184aabd45fb926)
changed: /opt/oracle/oradata/demo/undotbs01.dbf   m(20060727-140355:20060727-141641) c(20060727-140355:20060727-141641)
changed: /opt/oracle/oradata/demo/control01.ctl   s(ec692bdeec475df7afc2932110433e45919a3947:c0071d216db7fe0dc2cfdb05b45f5797a64576cf)
changed: /opt/oracle/oradata/demo/control01.ctl   m(20060727-140420:20060727-141643) c(20060727-140420:20060727-141643)
changed: /opt/oracle/oradata/demo/control02.ctl   s(becc90726e800c707cb70d6d5d8e2454fe51b545:7680f589473c5a90e70cc6173a889abfdfd7edcd)
changed: /opt/oracle/oradata/demo/control02.ctl   m(20060727-140420:20060727-141643) c(20060727-140420:20060727-141643)
changed: /opt/oracle/oradata/demo/control03.ctl   s(becc90726e800c707cb70d6d5d8e2454fe51b545:7680f589473c5a90e70cc6173a889abfdfd7edcd)
changed: /opt/oracle/oradata/demo/control03.ctl   m(20060727-140420:20060727-141643) c(20060727-140420:20060727-141643)
integrit: not doing update, so no check for missing files检查之后,列出来相关的文件变动信息。(这里为了说明问题,我选定了一个特定的目录。)

当然,integrit 并不是只有这么简单,也有更为复杂的设定条件,具体可以参考 integrit 手册。
 楼主| 发表于 2007-6-23 05:08:57 | 显示全部楼层
Tripwire主机入侵检测和损失评估解决方案
信息技术管理出现了史无前例的危机--安全问题。在安全威胁不断扩大及网络攻击的不断出现的形势下,众多的与系统捆绑的系统管理工具和安全漏洞检测工具应运而生,但往往借助这些工具能确切地发现攻击是十分困难的。
   
  在这种信息安全的弱势下,数据和网络的完整性(DNI)工具如Tripwire软件有效的改变了这个局面。它通过完整性检测发现一切外部和内部的攻击和误操作,而不需要破坏现有的安全结构,这是不同于一些其他的入侵检测运作模式的。
   
应用需求
   
  新入侵手段层出不穷,传统的入侵检测需要根据入侵手段的更新而升级鉴别入侵手段的特征库。
   
  现行还没有对网络设备进行保护的完整的解决方案,入侵者很容易借助网络设备自身的漏洞进入和破坏网络设备。
   
  新病毒的产生远远比病毒码的更新要快得多,借助编制病毒和未扩散的新病毒入侵者让防病毒软件束手无策。
   
  操作系统及应用软件的复杂性导致了不可避免出现安全漏洞,尽管开发商不断推出补丁,但新补丁的装载又可能会包含新的潜在漏洞。
   
  系统管理人员读配置或启动文件的误操作是导致系统和网络故障,并为入侵者提供了机会。
   
  刚被解雇的不称职的系统管理员,在离开公司前放置了后门,这是其他入侵检测软件无法预防和很难解除的。
   
  系统维护人员的短缺使得事故处理时间延长。
   
入侵检测特性
   
  数据和网络是信息系统的基础组成部分,任何入侵者若不对数据和网络进行更改是无法实现对信息系统的入侵和控制的。
   
  对目标网络设备的攻击导致设备瘫痪,为入侵者创造机会。
   
  通过更改网络设备的配置及运行文件实现对网络设置的控制,使入侵者控制了整个网络的通信。
   
  需要对系统文件进行修改或启动新的进程,如修改Unix下的shadow文件和inetd.conf。
   
  在系统内放置恶性破坏执行文件,文件的启动需要借助特定事件的产生,更改启动配置文件(如  

Windows下的system.ini文件)或使用添加计划任务都是入侵者惯用的方法。
   
  在系统被放置木马病毒如netbus,为入侵者建立后门。
   
  通过植入的特定的程序代码或病毒(如nimda)扩散入侵的范围。
   
Tripwire软件保护
   
    1. 使用Tripwire for Route and Switch对网络中所有网络设备进行间隔10分钟的定时监控,并对关键性设备(如主路由器、核心交换机)的配置和运行文件进行自动恢复,保证网络通信不间断。
   
    2. 通过定义针对DNS服务器Tripwire for Servers策略对不同平台的DNS服务器进行保护。
   
    3. 在目录服务器中使用Tripwire for Servers对企业的用户信息进行监控。
   
    4. 在文件服务器上安装Tripwire for Servers,并在默认策略中添加对共享文件访问进行监控。
   
    5. 利用Tripwrie for Servers对邮件服务器的核心系统和用户邮件进行分级监控。
   
    6. Tripwire for Web Pages和Tripwire for Servers配合使用,借助Tripwire for Web Pages对提供服务的网页进行实时检测和恢复,并运用Tripwire for Servers对Web服务的核心系统文件和网站进行整体定时的监控,确保Web服务器对外提供正确且完整的服务。
   
结论
 楼主| 发表于 2007-6-23 05:12:44 | 显示全部楼层
rootkit综述
本文出自:http://www.netguard.com.cn 作者: nixe0n (2002-08-13 06:02:01)

在网络安全中经常会遇到rootkit,NSA安全和入侵检测术语字典( NSA Glossary of Terms Used in Security and Intrusion Detection)对rootkit的定义如下:A hacker security tool that captures passwords and message traffic to and from a computer. A collection of tools that allows a hacker to provide a backdoor into a system, collect information on other systems on the network,mask the fact that the system is compromised, and much more. Rootkit is a classic example of Trojan Horse software. Rootkit is available for a wide range of operating systems.

好多人有一个误解,他们认为rootkit是用作获得系统root访问权限的工具。实际上,rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。通常,攻击者通过远程攻击获得root访问权限,或者首先密码猜测或者密码强制破译的方式获得系统的访问权限。进入系统后,如果他还没有获得root权限,再通过某些安全漏洞获得系统的root权限。接着,攻击者会在侵入的主机中安装rootkit,然后他将经常通过rootkit的后门检查系统是否有其他的用户登录,如果只有自己,攻击者就开始着手清理日志中的有关信息。通过rootkit的嗅探器获得其它系统的用户和密码之后,攻击者就会利用这些信息侵入其它的系统。




什么是rootkit


Rootkit出现于二十世纪90年代初,在1994年2月的一篇安全咨询报告中首先使用了rootkit这个名词。这篇安全咨询就是CERT-CC的CA-1994-01,题目是Ongoing Network Monitoring Attacks,最新的修订时间是1997年9月19日。从出现至今,rootkit的技术发展非常迅速,应用越来越广泛,检测难度也越来越大。其中针对SunOS和Linux两种操作系统的rootkit最多(树大招风)。所有的rootkit基本上都是由几个独立的程序组成的,一个典型rootkit包括:



以太网嗅探器程程序,用于获得网络上传输的用户名和密码等信息。


特洛伊木马程序,例如:inetd或者login,为攻击者提供后门。


隐藏攻击者的目录和进程的程序,例如:ps、netstat、rshd和ls等。


可能还包括一些日志清理工具,例如:zap、zap2或者z2,攻击者使用这些清理工具删除wtmp、utmp和lastlog等日志文件中有关自己行踪的条目。


一些复杂的rootkit还可以向攻击者提供telnet、shell和finger等服务。


还包括一些用来清理/var/log和/var/adm目录中其它文件的一些脚本。


攻击者使用rootkit中的相关程序替代系统原来的ps、ls、netstat和df等程序,使系统管理员无法通过这些工具发现自己的踪迹。接着使用日志清理工具清理系统日志,消除自己的踪迹。然后,攻击者会经常地通过安装的后门进入系统查看嗅探器的日志,以发起其它的攻击。如果攻击者能够正确地安装rootkit并合理地清理了日志文件,系统管理员就会很难察觉系统已经被侵入,直到某一天其它系统的管理员和他联系或者嗅探器的日志把磁盘全部填满,他才会察觉已经大祸临头了。但是,大多数攻击者在清理系统日志时不是非常小心或者干脆把系统日志全部删除了事,警觉的系统管理员可以根据这些异常情况判断出系统被侵入。不过,在系统恢复和清理过程中,大多数常用的命令例如ps、df和ls已经不可信了。许多rootkit中有一个叫做FIX的程序,在安装rootkit之前,攻击者可以首先使用这个程序做一个系统二进制代码的快照,然后再安装替代程序。FIX能够根据原来的程序伪造替代程序的三个时间戳(atime、ctime、mtime)、date、permission、所属用户和所属用户组。如果攻击者能够准确地使用这些优秀的应用程序,并且在安装rootkit时行为谨慎,就会让系统管理员很难发现。



LINUX ROOTKIT IV


前面说过,大部分rootkit是针对Linux和SunOS的,下面我们介绍一个非常典型的针对Linux系统的rootkit--Linux Rootkit IV。Linux Rootkit IV是一个开放源码的rootkit,是Lord Somer编写的,于1998年11月发布。不过,它不是第一个Linux Rootkit,在它之前有lrk、lnrk、lrk2和lrk3等Linux Rootkit。这些rootkit包括常用的rootkit组件,例如嗅探器、日志编辑/删除工具、和后门程序的。

经过这么多年的发展,Linux Rootkit IV功能变的越来越完善,具有的特征也越来越多。不过,虽然它的代码非常庞大,却非常易于安装和使用,只要执行make install就可以成功安装。如果你还要安装一个shadow工具,只要执行make shadow install就可以了。注意:Linux Rootkit IV只能用于Linux 2.x的内核。下面我们简单地介绍一下Linux Rootkit IV包含的各种工具,详细的介绍请参考其发布包的README文件。

隐藏入侵者行踪的程序

为了隐藏入侵者的行踪,Linux Rootkit IV的作者可谓煞费心机,编写了许多系统命令的替代程序,使用这些程序代替原由的系统命令,来隐藏入侵者的行踪。这些程序包括:



ls、find、du

这些程序会阻止显示入侵者的文件以及计算入侵者文件占用的空间。在编译之前,入侵者可以通过ROOTKIT_FILES_FILE设置自己的文件所处的位置,默认是/dev/ptyr。注意如果在编译时使用了SHOWFLAG选项,就可以使用ls -/命令列出所有的文件。这几个程序还能够自动隐藏所有名字为:ptyr、hack.dir和W4r3z的文件。


ps、top、pidof

这几个程序用来隐藏所有和入侵者相关的进程。


netstat

隐藏出/入指定IP地址或者端口的网络数据流量。


killall

不会杀死被入侵者隐藏的进程。


ifconfig

如果入侵者启动了嗅探器,这个程序就阻止PROMISC标记的显示,使系统管理员难以发现网络接口已经处于混杂模式下。


crontab

隐藏有关攻击者的crontab条目。


tcpd

阻止向日志中记录某些连接


syslogd

过滤掉日志中的某些连接信息



木马程序

为本地用户提供后门,包括:



chfn

提升本地普通用户权限的程序。运行chfn,在它提示输入新的用户名时,如果用户输入rookit密码,他的权限就被提升为root。默认的rootkit密码是satori。


chsh

也是一个提升本地用户权限的程序。运行chsh,在它提示输入新的shell时,如果用户输入rootkit密码,他的权限就被提升为root。


passwd

和上面两个程序的作用相同。在提示你输入新密码时,如果输入rookit密码,权限就可以变成root。


login

允许使用任何帐户通过rootkit密码登录。如果使用root帐户登录被拒绝,可以尝试一下rewt。当使用后门时,这个程序还能够禁止记录命令的历史记录。


木马网络监控程序

这些程序为远程用户提供后门,可以向远程用户提供inetd、rsh、ssh等服务,具体因版本而异。随着版本的升级,Linux Rootkit IV的功能也越来越强大,特征也越来越丰富。一般包括如下网络服务程序:



inetd

特洛伊inetd程序,为攻击者提供远程访问服务。


rshd

为攻击者提供远程shell服务。攻击者使用rsh -l rootkitpassword host command命令就可以启动一个远程root shell。


sshd

为攻击者提供ssh服务的后门程序。


工具程序

所有不属于以上类型的程序都可以归如这个类型,它们实现一些诸如:日志清理、报文嗅探以及远程shell的端口绑定等功能,包括:



fix

文件属性伪造程序


linsniffer

报文嗅探器程序。


sniffchk

一个简单的bash shell脚本,检查系统中是否正有一个嗅探器在运行。


wted

wtmp/utmp日志编辑程序。你可以使用这个工具编辑所有wtmp或者utmp类型的文件。


z2

utmp/wtmp/lastlog日志清理工具。可以删除utmp/wtmp/lastlog日志文件中有关某个用户名的所有条目。不过,如果用于Linux系统需要手工修改其源代码,设置日志文件的位置。


bindshell

在某个端口上绑定shell服务,默认端口是12497。为远程攻击者提供shell服务。




如何发现rootkit


很显然,只有使你的网络非常安装让攻击者无隙可乘,才能是自己的网络免受rootkit的影响。不过,恐怕没有人能够提供这个保证,但是在日常的网络管理维护中保持一些良好的习惯,能够在一定程度上减小由rootkit造成的损失,并及时发现rootkit的存在。

首先,不要在网络上使用明文传输密码,或者使用一次性密码。这样,即使你的系统已经被安装了rootkit,攻击者也无法通过网络监听,获得更多用户名和密码,从而避免入侵的蔓延。

使用Tripwire和aide等检测工具能够及时地帮助你发现攻击者的入侵,它们能够很好地提供系统完整性的检查。这类工具不同于其它的入侵检测工具,它们不是通过所谓的攻击特征码来检测入侵行为,而是监视和检查系统发生的变化。Tripwire首先使用特定的特征码函数为需要监视的系统文件和目录建立一个特征数据库,所谓特征码函数就是使用任意的文件作为输入,产生一个固定大小的数据(特征码)的函数。入侵者如果对文件进行了修改,即使文件大小不变,也会破坏文件的特征码。利用这个数据库,Tripwire可以很容易地发现系统的变化。而且文件的特征码几乎是不可能伪造的,系统的任何变化都逃不过Tripwire的监视(当然,前提是你已经针对自己的系统做了准确的配置,关于Tripwire和aide的使用请参考本站的相关文章)。最后,需要能够把这个特征码数据库放到安全的地方。
 楼主| 发表于 2007-6-23 05:17:46 | 显示全部楼层
看起来这个开源项目维护的不是很好,好久没有更新了,而且在新版的linux上安装会有问题,好像是gcc版本的问题,找不到好的解决方法,因此放弃tarball安装,而采用rpm方式,后来发现官方网站提供的rpm包在我的AS4下也不能正常工作。只好下了个fedora版的src.rpm。
# wget http://download.fedora.us/fedora ... -20.fdr.1.1.src.rpm
# rpmbuild --rebuild tripwire-2.3.1-20.fdr.1.1.src.rpm
# cd /usr/src/redhat/RPMS/i386/
# rpm -ivh tripwire-2.3.1-20.fdr.1.1.i386.rpm

这个版本不带twinstall.sh文件,只好用下面这个命令完成这项工作了
# tripwire-setup-keyfiles
安装过程中会提示你输入site keyfile passphrase和local keyfile passphrase

然后初始化数据库
# tripwire --init
发表于 2007-6-23 19:37:03 | 显示全部楼层
可惜不支持windows
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|boway Inc. ( 冀ICP备10011147号 )

GMT+8, 2024-6-1 10:46 , Processed in 0.121348 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表