文件完整性检查系统检查计算机中自上次检查后文件变化情况。文件完整性检查系统保存有每个文件的数字文摘数据库,每次检查时,它重新计算文件的数字文摘并将它与数据库中的值相比较,如不同,则文件已被修改,若相同,文件则未发生变化。
在入侵者进入系统后,而让系统文件并不改动是非常困难的,所以文件完整性校验是入侵检测中的一项重要功能。一个文件完整性校验器可以对所有需要保护的文件计算出一个校验值并将它保存。过一段时间后,你可以再对文件计算出一个值,用当前值和保存值做比较来判断文件是否遭到修改。市场上基于主机的入侵检测系统现在都集成了检测文件完整性这个功能。
文件的数字文摘通过Hash函数计算得到。不管文件长度如何,它的Hash函数计算结果是一个固定长度的数字。与加密算法不同,Hash算法是一个不可逆的单向函数。采用安全性高的Hash算法,如MD5、SHA时,两个不同的文件几乎不可能得到相同的Hash结果。从而,当文件一被修改,就可检测出来。
文件完整性检查系统的优点:
从数学上分析,攻克文件完整性检查系统,无论是时间上还是空间上都是不可能的。文件完整性检查系统是非常强劲的检测文件被修改的工具。实际上,文件完整性检查系统是一个检测系统被非法使用的最重要的工具之一。
文件完整性检查系统具有相当的灵活性,可以配置成为监测系统中所有文件或某些重要文件。
当一个入侵者攻击系统时,他会干两件事,首先,他要掩盖他的踪迹,即他要通过更改系统中的可执行文件、库文件或日志文件来隐藏他的活动;其它,他要作一些改动保证下次能够继续入侵。这两种活动都能够被文件完整性检查系统检测出。
文件完整性检查系统的弱点:
文件完整性检查系统依赖于本地的文摘数据库。与日志文件一样,这些数据可能被入侵者修改。当一个入侵者取得管理员权限后,在完成破坏活动后,可以运行文件完整性检查系统更新数据库,从而瞒过系统管理员。当然,可以将文摘数据库放在只读的介质上,但这样的配置不够灵活性。
做一次完整的文件完整性检查是一个非常耗时的工作,在Tripwire中,在需要时可选择检查某些系统特性而不是完全的摘要,从而加快检查速度。
系统有些正常的更新操作可能会带来大量的文件更新,从而产生比较繁杂的检查与分析工作,如,在Windows NT系统中升级MS-Outlook将会带来1800多个文件变化。