论文研究-基于进程组织的Linux内存取证分析 .pdf

所需积分/C币:10 2019-08-16 11:15:31 246KB .PDF
7
收藏 收藏
举报

基于进程组织的Linux内存取证分析,高宇航,,内存作为数字证据的重要来源,研究还处于起步阶段。Linux平台下的内存取证工作首要解决的问题是定位进程的位置,才能根据查找到的�
国技论文在线 http://www.paper.edu.cn -+t-RueAAH 4111一 DILv 图进程通过 挂接到各个链表 作为内核全局变量被导出,查找如下 在实验环境中,根据内核版本的不同将 昳射到物理地址。然后根 据 的成员遍历所有进程。因为进程控制块都是处于內核空间的,因此在遍 历过程中的地址转换郗可以用宏实现。 散列组织 在需要遍历所有进程的吋候,使用线性衣就可以满足需求。但当系统常需要根据进程号 査找进程,若通过遍历的方法查找,时间量级是 显然时间耗费过大。 使用哈希 表为基础的进程队列米实现快速定位进程地址。在进程创建的过程中,当分配好进程号后, 先对进程号进行散列,以哈希值为下表在杂凑表中招到一个队列,再顺着该队列就可以比较 容易的找到特定的进程 内核定义了一个进程哈希表: 同时定义了哈希表的大小 可见,杂凑表的大小为每个进程通过指向 的 指针链入到某个哈希队列中。内核通过宏 和函数 分别 计算哈希值并将进程添加到某个哈希队列中: 国技论文在线 http://www.paper.edu.cn 综上所述,进程通过哈希表的组织如下所示: 山此,可以得出 下根据哈希表查找进程的方法 根据 内核符号表查找 变量的虚拟地址。 使用宏映射 的虚拟地址到物理地址。 每次读哈希表个字节。若 则遍历此链表。否则,读下一个 结构,直到读完该表 对进程散列表做了较大的改进,首先是在结构中引入了结构,撤 销」 了而撤销了 和 指针。是作为表专用的单指针表头双 循坏链表,的表头仅有一个指向首节点的指针,而没有指向尾节点的指针 结构 连接方式如图所示其次是定义了更为复杂的结构如下所示 使的计数 进程号 通过此链衣挂接到的哈希链上。 可以通过成员的点连接 到应 表上 同时,进程描述符加入了 数组结构的成员以匹配进程描述符中的成员, 为,定义如下所示: 结构定义如下 hIis nod hlis: node hist nod己 hist head PPI Prev Prev 每个进程在创建的时候会调用 分配结构,同时通过结构的 成员连接进入相应的 哈希队列的。而在 函数中,通过 建立起 结构和新建进程以及其他进程的联系,具体联系是通过 建立的。同时,如果进程也希望链入 国技论文在线 http://www.paper.edu.cn 进程组或会话组,可以通过 的 或 链入 进程结构的相应队列。 最后, 定义成指向 结构数组的指针,并且数组的大小由 计算, 指向的 数组通过引导内存分配器分配内存 综上所述可以建立起进程散列表的结构图,如图所示。 对于 可以得到根据进程散列表查找进稈的方法 、定义仝局变量 用于存放找到的进程。 根据 内核符号表查找 变量的虚拟地址 使用地址转换映射 的虚拟地址到物理地址,取其值就是 结构数 组的虚拟地址 、每次读哈希衣 结构个字节,若 转向。否 结构,直到读完该 表 pruss I pid: [ C-rod pids[c-node Lesko pid: []->rode pid:[ ]->node tasks[ 图 组织结构 、根据 计算结构中的 的佰,该值指冋进程描 述符中 的成员。这样就可以根据成员的偏移得到 的地址。同时,从 的节点开始遍历哈希链表,查找进程。对 和 进行相同操作。找到的进程若不与 中的 进程重复,则放到 中 其他结构 进程的组织结构是复杂的,除了上述的哈希表和双向链表外。进程还有家谱式的组织结 构,以及根据进程是否在就绪队列的组织结构。但是对于家谱式的组织结构来说,遍历起来 复杂;对」就绪队列来说,不能完全枚举出系统中所冇的进程,因为处」睡眠状态、僵死状 态和其他状态的进程都不在此刎中。 但是,对于恶意进程常常会修改进程的组织结构,但是个进程如果希望得到运行·定 要被加入到调度器的 队列中。可以通过遍历 队列遍历所有的进程 的调度算法定义了一个全局数据结构 该结构实际上是一个双 向链表 结构。调度器需要选择最佳调度进程会遍历这个就绪队列,选择最佳进程 时间复杂度为进程措述符 通过 挂接到这个就绪队列中。 国技论文在线 http://www.paper.edu.cn 采用新的调度机制,将就绪队列定义为·个复杂的数据结构 成员是其中最关键的数据结构。每个 的就绪队列按时间片是否用完分为两部分,分别通过 指针和 指针访问, 指向时间片没用完、当前可被调度的就绪进程, 指向时间片已用完的就绪进 程。每一类就绪进程都用一个 的结构表示如下: 本进程组小的进程数 以优先级为索引的 表 加速以 表访问的位图 每个处于就绪队列的进程都通过 结构的 成员连接到相应的队列 中。每当进程进行调度吋,就会从优先级数组中选取优先级最高的进程运行 实验结果 本文分别针对 和编写了稈序,并分别针对虚拟机下的内存文件、内存转储 工具获得的内存映像进行了分析。 不同内核版本的进程描述符结构不尽相同,但 只需要较少的代码修改就可以适应其他内核版木。 同目录下列出进程比较 的枚举了当前系统中的活动进程,既包括内核线程也包括用户进程。但是, 无论是根据线性链表还是散列表搜索得到的进程数目要远多于录下枚举的进程 数日。在用户进行正常操作后,统计得到的下进程数日是,而通过线性链表和 散列表搜索的数口达到和。这两种搜索得到的进程不仅包括活动进程,而且囊括了 僵死、 (可中断睡眠)、 不 可中断睡眠)、 退出等状态。 线性链表和散列表的比较 每个正常运行的进稈都会连接到这两个链表中。实验证明,无论是在 还是 内核下,通过线性链表和散列表定位进程得刭的进程数目不一样,但是差别 比较小 由于进程的创建、退出以及链入线性链表和散列表都需要时间,一个进程可能在某 个时刻在线性链表而不再散列表中,反之亦然。例如,在进程执行 调用退出 吋,会先从线性链衣中拖链。然后要结束执行的进程通过 向父进程发 出信号,告知父进程了进程将退出。父进程在 调用中等待,调用 将 进程从散列表中脱除,同时释放进程描述符。时序上的不同步,使得遍历线性链表和散 列表会产生差别。 入侵检测 上述方法不仅可以应用于内存取证分析,而且可以用于入侵检测。因为所有的进 国技论文在线 http://www.paper.edu.cn 程都需要链入到这些队列中去,遍历链表、链表、进程家谱以及就绪队列就可以查 找出内存中创建的所有进程。 而当前的恶意程序隐藏进程的方式通常是挂钩相应的内核函数,或是直接操作内核对象 的方式,很难直接从所有的进程关系网中全部脱离出去。即使脱离了,由于诈多内核函数需 要遍历全部进程以选择最适合进程,那么恶意程序就需要挂钩更多的内核函数而使自己有机 会执行。 同时,上述方法的地址转换是简单易行的,且直接从内存中抽取进程结构解析,因此不 必担心恶意软件钩挂内核函数的问题。 结束语 如何针对计算机犯罪进行取证是计算机安全领域中重要的问题。传统的取证技术已经不 能满足当今的取证需求。本文着眼于内存取讦,根据进程的组织结构查找线性队 列和散列表査找进稈。实验证明这种方法可以査找普通进稈、系统线稈、陀藏的进程和正在 退出的进程。同时,取证人员查找到进程以后,可以根据进程进一步分析,获得用户打开的 文件列表、建立的网络连接等,为计算机取证提供有力支持 参考文献 第三版美国, 白洛,李俊奎,刘森林译 虚拟内存管理第一版北京北京航空航天大学出版

...展开详情
试读 7P 论文研究-基于进程组织的Linux内存取证分析 .pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
weixin_39840914 如果觉得有用,不妨留言支持一下
2019-08-16
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 至尊王者

    成功上传501个资源即可获取
关注 私信
上传资源赚积分or赚钱
最新推荐
论文研究-基于进程组织的Linux内存取证分析 .pdf 10积分/C币 立即下载
1/7
论文研究-基于进程组织的Linux内存取证分析 .pdf第1页
论文研究-基于进程组织的Linux内存取证分析 .pdf第2页

试读结束, 可继续读1页

10积分/C币 立即下载 >