确保事件日志文件可验证性的技术

信息安全 取证 日志记录 合法的
2021-09-05 08:07:47

在整个取证方面有点新手 - 但我正试图找出在攻击之前我应该具备的条件。虽然互联网上关于从扣押开始进行取证的材料没有尽头,但我正在尝试更多地了解如何制作具有足够质量的事件(特别是网络服务器日志)的安全记录以被视为证据。

在我读过的东西中,对非易失性媒体、散列和签名的引用含糊不清;这些当然提供了一种展示一致快照的方法 - 但本质上并没有提供一种机制来证明数据在初始捕获和快照之间没有改变,例如我可以获取今天的日志文件并进行搜索/替换以覆盖日期提交快照之前的其他内容。

电子签名如何证明数据在初始捕获和签名之间没有被篡改——它只是支持签名者的断言吗?

完整性验证方法必须实时实施吗?例如,将数据直接写入 DVD 不是很实用,一次最多只能尽可能接近实时,但性能损失巨大。

关于适合非律师的内容的任何指针?(偏好欧盟/英国偏见)。

3个回答

这是一个极好的和重要的问题。有几个重要的技术需要了解:

  • 远程记录。与其将日志条目存储在 Web 服务器上,不如将 Web 服务器配置为通过网络将每个日志条目发送到日志服务器。日志服务器应该是定制的机器,配置为单次使用(仅限日志记录),并且经过加固。您应该小心地尽量减少可以访问日志服务器的人员,将其与外界隔离,并确保它运行的服务最少。这将有助于防止在生成日志后对其进行篡改。

  • 哈希链。另一项重要的技术是使用加密方法来保护日志记录的完整性,一旦它们被存储。日志条目应该是一对X n = (M n , T n ),其中M n收到的第n 条日志消息,其中T n = Hash( X n-1) 是最后一个日志条目的加密哈希。为此,请使用 SHA256 或其他一些抗冲突加密哈希函数。这样做是为了确保攻击者无法在不被发现的情况下篡改日志中间的条目。攻击者可以替换“链”中的所有条目,或者丢弃后缀并用新的东西替换它们,但这限制了攻击者可以做的事情。重要的是,加密确保如果您将任何日志条目写入一次写入媒体,则攻击者无法在不被发现的情况下更改任何较早的日志条目。那是巨大的。

    有关更多信息,请阅读使用哈希链的安全时间戳。

  • 一次写入媒体。如果您有一次写入存储介质,您可以将日志写入一次写入介质,这样可以防止写入后被篡改。不幸的是,这里的选择不是很好。据我所知,它们基本上是:

    • CD-ROM 和 DVD-ROM 是一次写入的,如果您使用 TAO 模式,则允许追加,但也有点笨重。

    • 行式打印机打印在纸上,是一种非常有效的一次写入介质,只要您保持供纸供应。

    • 如果您使用曼彻斯特编码,则 PROM 是一次性写入的不幸的是,如今 PROM 大多已被 EEPROM 取代,因此很难找到真正的 PROM。

    • 维基百科也有一个一次性媒体列表

    • SanDisk 有一张带有 1GB 一次写入存储的 SD 卡,专为取证和日志存储目的而设计。

    一次写入媒体非常好地补充了哈希链。您可以做的是将所有日志条目存储在一些普通的存储介质(例如,硬盘驱动器)上,然后每小时存储一次最新的日志条目(或只是其哈希)到一次写入存储。这确保了入侵或以其他方式篡改日志服务器的攻击者只能修改一小时前的记录,以及(当然)所有未来的记录,但不能修改入侵前一小时以上记录的记录。那是巨大的。

  • 复制。您可以将日志条目的多个副本存储在多个服务器上,以提供冗余并防止篡改。闯入一台服务器并篡改它的攻击者将无法篡改其他服务器上的副本。

    为此,您需要服务器是独立的,这样攻击者就不太可能破坏所有服务器。例如,您可能将服务器物理地放置在不同的位置或不同的机房中,设置为没有人可以物理访问所有位置。您可能有单独的人员管理它们,因此没有人可以登录访问所有服务器。您可能在您的系统上运行一个日志服务器,以及一个远程托管的副本(例如,在云中运行)。

    复制很好地补充了哈希链。例如,您可以只复制每m个日志条目中的 1 个,而不是复制每个日志条目。此外,如果您不想将私有日志数据暴露给某些副本(例如,在云中运行的副本),您不必存储整个日志条目:您可以只存储哈希T n这个散列值没有透露日志条目本身的任何信息,因为加密散列函数是单向的。

我敢肯定还有很多可以说的,但我希望这有助于向您介绍几种可用于保护日志的技术方法。

通常的免责声明:我不是律师。请就特定法庭案件的可受理性寻求法律建议。

不过,律师告诉我的是,如果日志是作为正常业务过程的一部分被捕获的,那么这些日志在法庭上是可以接受的。因此,您不必为此做任何具体的事情。

尽管对方可能会吐槽,但您确实必须满足证据要求。因此,拥有一个监管链和证明日志未被篡改的证据可能有用,并增加日志在争论您的观点时的权重,例如证明特定用户或机器在事件中被使用。用外行的话来说,监管链意味着能够证明“对实物或电子证据的扣押、保管、控制、转移、分析和处置”。对于取证,特别是在刑事调查中,当局需要能够显示监管链,以便法庭可以接受证据

为此,将日志从源系统导出到管理员无权访问的中央安全事件和信息管理 ( SIEM ) 系统是一个很好的措施。将其存档以写入一次读取多次 (WORM) 媒体也很好。一些 SIEM 将允许您生成带有时间戳的日志的加密哈希并将其存储在单独的媒体或系统上,这将允许您通过重新计算哈希来证明日志未被篡改。

显然,如果您可以实时或至少每天进行散列和存档,这将为您在法庭上提供最佳论据。但是,即使每月完成一次,也会为您提供比我想象的更好的论据。

Snare 允许您通过标准 Syslog 传输附加到每条消息的 MD5 哈希。您几乎可以使用任何 SIEM 接收此信息。大多数情况下,顶层的 SIEM 都支持保留日志的散列。这主要用于搜索和索引,但也可以用作监管链的组成部分。

结合强大的职责分离和保留日志和校验和日志的 WORM 存档,您可以获得其中的很大一部分。如果没有 WORM 存档(毕竟不是每个都运行 Solaris),您仍然拥有可用于相同目的的备份磁带。

磁带本身,如果加密并由另一个人管理,也可以帮助建立强大的监管链。在这一点上,存档文件是必不可少的,大多数公司出于法律原因要求移除和传递具有强大监管链的备份磁带。

有了这些部分,您就可以获得一组强有力的证据。一旦你让律师参与进来,那就是另一回事了。