(论文笔记03. LogGC: Garbage Collecting Audit Log(CCF A) 2013)

LogGC: Garbage Collecting Audit Log(CCF A)

1.Abstract

  1. 基于日志审计取证的关键挑战是:产生日志文件的大小(每天可能会以Gigabytes的速率增加)
  2. 提出方法:本文提出了一种LogGC,一种带有垃圾收集能力(Garbage Collecting)的审计日志系统。
  3. 效果:可以大大减少系统事件之间的假依赖,以提高GC的效率。我们的结果表明,对于普通用户系统,LogGC可以减少14倍的审计日志大小,而对于服务器系统,LogGC可以减少37倍的审计日志大小,而不影响取证分析的准确性

2.Introduction

系统级别的审计日志可以记录应用与底层操作系统之间的交互(如文件读写,进程创建复制等等),在攻击取证中,审计日志对因果图的构建至关重,

  1. 因果图显示了系统级对象(例如,文件和套接字)和主题(例如,进程)之间的因果关系,包括过去存在的对象。
  2. 因果图可以用来跟踪攻击的根本原因。在系统中观察到可疑症状(例如,僵尸进程)时,
  3. 最初的发作可能发生在症状观察之前的几天甚至几周。因此,需要审计日志和导出的因果图来揭示攻击路径。此外,因果图将揭示攻击造成的损害或污染。

目前研究工作重点在于如何根据审计日志来生成一个准确完成的因果图,本文指出基于审计日志的攻击分析取证的一个痛点在于审计日志的真实大小,本研究的重点放在了审计日志数量的缩减上,研究发现在审计日志中的一些事件实体是可以在不影响未来的取证分析的前提下移除的,这些条目是关于系统对象(如文件、套接字)上的操作,这些操作既不影响也不受其他进程或系统对象的影响,我们将这种称为unreachable objects:我们对一台实验室机器进行了为期六天的监控,观察到每天超过94%的被访问对象被销毁(或终止),超过80%的被销毁对象(Objects)的生命周期非常短,通常只在单个进程内。这些对象很可能是不可访问的,这表明有减少日志的空间(这些对象访问了就被销毁,而且这些对象的生命周期很短)。

The main contributions of LogGC are the following(主要贡献):

  1. 开发了一个基本的GC算法,直接在审计日志上工作,每个日志都是一个平坦的事件序列。在系统执行期间,可以随时调用该算法,获取当前审计日志并生成新的和减少的审计日志
  2. 基本GC算法是对经典的基于可达性的内存GC算法(不能支持正向分析)的改进,取证分析的一个重要要求是理解攻击分支,这需要支持因果分析,因此本文对该算法提出了一个新的扩展。
  3. 为了提高GC效率,利用以前的技术BEEP将一个进程划分为多个执行单元。还提出了一种新技术,通过在一小组代码位置上检测用户应用程序来发出额外的系统事件,将数据文件划分为逻辑数据单元。因此,可以实现更好的精度,并且可以暴露出更多不可达事件并进行垃圾收集(第4节)。
  4. 提出利用应用程序自己的日志文件进一步删除审计日志中的事件条目。
  5. 我们在一组真实应用程序上对LogGC进行了广泛的评估。我们的结果表明,对于客户端系统,LogGC可以垃圾收集92.89%的原始审计日志,对于服务器系统,可以垃圾收集97.35%的原始审计日志。此外,通过一些案例研究,我们表明,减少日志在取证分析中同样有效。

Assumptions

  1. 我们认为操作系统是可以信任的,因为LogGC的收集,存取,修剪审计日志都是在内核级别的(kernel-level)
  2. 我们认为在LogGC一开启的时候,系统是“干净(clean)”,也就是说这个时候还没有攻击compromised。

以上的假设是已经存在的系统级的审计工具的一种标准假设。

3 BASIC DESIGN

设计思路:许多应用程序在执行过程中创建并操作临时文件。这些文件在应用程序终止后被销毁。因此,这些文件不会影响未来的系统行为,因此,在图中保留它们的来源是不必要的(比如一个程序读了一个信息,但是并没有存储这个信息,只是将该信息显示了出来)

设计原理:我们将root对象定义为调用LogGC时的活动进程和文件(具体是什么意思?)。然后在审计日志中向后遍历。如果任何root对象直接或传递地依赖于已记录的事件,则将该事件标记为可达,最后,将所有不可达的日志项从审计日志中删除。本文提出的算法将操作日志文件,这是一个线性的事件序列。

事件分类
在解释算法之前先将要处理的Event分成三类Event,算法会对不同的Event进行不同的处理,如下图所示:
在这里插入图片描述
Input events:从输入设备接收数据。
Output events:对其他系统对象产生影响,并且这个影响将持续到事件完成之后。
dead-end events:它只对事件中直接涉及的对象产生影响,并且不会在系统的后续执行中产生依赖关系(比如writes to stdout输出到屏幕)。

Algorithm 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值