(论文笔记01.Backtracking Intrusions(CCF A) 2003)

Backtracking Intrusions (CCF A) 2003

1.ABSTRACT

分析入侵是一项艰巨的任务,主要是手工操作,因为系统管理员缺乏所需的信息和工具,无法轻松理解攻击中发生的步骤顺序。BackTracker的目标是自动识别入侵过程中可能发生的步骤序列。从单个检测点(例如,可疑文件)开始,BackTracker识别可能影响该检测点的文件和进程,并在依赖关系图中显示事件链。我们使用BackTracker分析了几个针对我们设置为“蜜罐”的计算机的真实攻击。在每种情况下,BackTracker都能够有效地突出用于进入系统的入口点,以及从入口点到我们注意到入侵点的步骤序列。支持BackTracker所需的日志记录增加了9%的运行时间开销,并为操作系统密集型工作负载每天生成1.2 GB的日志数据.

2.INTRODUCTION

2.1 Question

目前来(在2003年)说大多数的检测,它们不能提供攻击期间泄露的完整历史,大多数工具和信息来源的一般限制是将入侵者的动作(或由这些动作引起的状态)与合法用户的动作/状态混合在一起。即使在日志和磁盘状态包含足够的信息来理解攻击的情况下,识别从最初的妥协到检测点的事件序列在很大程度上仍然是一个手动过程。

2.2 Solution

这篇文章描述了一个叫做BackTracker的工具,它试图解决当前工具和信息源的不足,从而帮助管理员更容易地理解在攻击期间发生了什么。从一个检测点向后工作,BackTracker识别可能导致被检测到的修改的事件链。然后,管理员可以将她的侦查工作集中在这些事件链上,从而更快、更容易地识别漏洞。为了识别这些事件链,BackTracker记录了导致操作系统对象之间最直接依赖的系统调用(例如,创建进程,读取和写入文件)。BackTracker的目标是为大多数攻击提供有用的信息;它不能提供每一次可能的攻击的完整信息。相当于提供一个攻击链,通过这个链来关联攻击的历史活动

本文在两个组件中实现了Linux的BackTracker:一个在线组件记录事件,另一个离线组件绘制与攻击相关的事件。BackTracker目前跟踪许多(但不是所有)相关的操作系统事件。我们发现,这些事件可以在适当的时间和空间开销下被记录和分析,而BackTracker生成的输出有助于理解针对我们设置为“蜜罐”的计算机的几次真实攻击(本文是对设置好的蜜罐进行真实攻击测试效果

3.DESIGN OF BACKTRACKER

网络级日志为远程攻击提供了更多信息,但加密或混淆会使它们变得无用,应用程序级日志(如Apache的HTTP请求日志)语义丰富。但是,它们不提供攻击者自己程序的信息,而且它们可以被获得特权访问权的攻击者禁用。
BackTracker通过观察系统级对象(如文件、文件名、进程)和事件(如系统调用)来工作。这个级别是应用程序级别(语义丰富但易于禁用)和机器级别(难以禁用但语义较差)之间的折中。与应用程序级日志记录不同,系统级日志记录不能分离应用程序中的对象(例如,用户级线程),而是将应用程序视为一个整体。(虽然对内核进行攻击也可以扰乱系统级别的判断,但是那种攻击难度要大的多)。

3.1 Objects(对象)

本文作者提出了三种类型的系统级对象与BackTracker的分析相关:进程文件文件名

  1. 进程进程ID版本号唯一标识,BackTracker跟踪一个进程,从它被fork或克隆系统调用(可以理解为创建进程的系统调用)创建一直到进程结束。
  2. 文件包括特定于该文件的任何数据或元数据(如其内容、所有者或修改时间),文件由设备inode号版本号唯一标识。因为文件是用inode号而不是名称标识的,所以BackTracker跨重命名操作跟踪文件(意思应该是就是根据inode号来跟踪文件,所以文件即使重名了也能正确找到文件)
  3. 文件名对象是指将名称映射到文件对象的目录数据。文件名对象由规范名称唯一标识,规范名称是包含所有./和…/(应该是包含存储目录地址的),注意文件和文件名是不一样的,文件不通过文件名唯一标识。文件名更像是一种存储位置目录数据的记录

可以使用不同的粒度跟踪对象,而不是进程、文件和文件名。可以跟踪细粒度对象(如文件块)或粗粒度对象(如目录中的所有文件)。以更细的粒度跟踪对象可以减少错误依赖,但会更困难,并可能导致更高的开销(查的越细,开销越大)。

3.2 Potential Dependency-Causing Events(潜在的因果依赖事件)

依赖关系由三个部分指定:源对象接收对象时间间隔

  1. 例如,进程读取文件会导致该进程(接收对象)依赖于该文件(源对象)。
    使用时间间隔来减少错误的依赖。
  2. 例如,在时间10读取文件的进程并不依赖于在时间10之后对文件的写操作。时间是以递增的事件计数器来度量的。除非另有说明,事件的间隔时间从系统调用时开始,到系统调用返回时结束。
  3. 一些类型的事件(如共享内存访问)在较长的时间间隔内聚合为单个事件,因为很难确定单个事件的时间。(大概是说比如共享内存访问这种有较长事件间隔的多个事件聚合成为单个事件处理)
3.2.1 Process/Process Dependencies(进程和进程之间的依赖)

是指一个进程直接影响另一个进程执行的事件,一个进程可以通过创建它、与它共享内存或发出信号来直接影响另一个进程

  1. 如果一个进程创建了另一个进程,那么就存在一个父进程->子依赖关系,因为父进程初始化了子进程的存在,而且子进程的地址空间是用来自父进程地址空间的数据初始化的
  2. 除了传统的fork系统调用外,Linux还支持克
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值