CSS09-Robust Signatures for Kernel Data Structures

DKOM Rootkit检测
本文提出一种自动查找内核数据结构特征值的方法,通过fuzzing验证这些特征值的修改不会导致内核崩溃,以此来识别robust特征,并基于这些特征提出一种新的rootkit检测方法。

Abstract

1.             rootkits 经常使用 DKOMDirect Kernel Object Manipulation ) 技术隐藏自己

2.            传统工具试图通过线性扫描整个内存区域中的这些隐藏数据结构通过手动指定一些特征。这种方式比较脆弱并依赖于一些数据结构中不重要的特征字段,比较容易被绕过。

3.            本文提出了一种自动查找内核数据结构(例如进程数据结构)中特征值的方法,并通过 fuzzing 的方式证明了这些特征值的修改不会引起内核崩溃。

4.             使用动态分析的方法,采样了目标数据结构,获知了那些域是经常用到的——从而不能被 DKOM ——而使用 fuzzing 证明了剩下哪些域可以被修改而不会引起系统崩溃。

5.            实验中,匹配了现有的所有恶意软件的特征值,并开发了原型 rootkit 使用我们新发现的特征值

 

操作系统通过创建相关内核对象来登记和审计系统资源,DKOM(Direct Kernel Object Manipulation) Rootkit [3] 则通过修改这些内核对象来隐藏特定资源。Fu RootkitDKOM Rootkit 的代表,它通过修改活 动进程列表实现进程隐藏。

Windows 系统枚举进程使用的是活动进程列表PsActive ProcessList ,它是一个双向链表,每个结点对应一 个进程的EPROCESS 数据结构,所有结点通过EPROCESS 结构中的ActiveProcessLinks 双向指针链在一起。要 隐藏某个进程,只需修改对应EPROCESSActiveProcessLinks ,将其从链表中摘除即可。由于系统执行线 程调度使用的是其他的数据结构,因此这样的修改不会影响进程运行。


 

Introduction

1.     现有的对 DKOM 的查杀对于一些绕过技术比较无奈,比如

[47] 中说的,许多进程特征码可以简单的修改一个进程头部的比特位从而绕过,而该比特位不会影响进程的正常运行。这引发出下面的问题:给定数据结构中到底哪些域才是必要的?

2.     特征选择机制(feature selection mechanism )使用下面两步决定数据结构中哪些部分对于功能是关键的。

 

  • 监控操作系统执行,标记哪些域经过读写

 

 

  • 看哪些域修改过之后不会引起崩溃

 

3.     选定了 robust 域之后,在内核数据结构中收集了许多例子,并使用了动态常量检测技术【 12 】发现了它们的可以用于签名的一些值的限制。

 

contributions

1.               提供了大量证据,现有的特征值都是可以轻易绕过的

2.               开发了系统级的 robust feature 选择方法

3.               基于发现的 robust feature ,提出了一种产生 signature 的方法

 

paper 的结果可以立即应用于许多当前的安全扫描工具上:例如 XXX

 

Related work

1.      病毒开发者可以修改自己的代码使之不被检测到,而对于定长度的多态病毒的可靠性探测已经被证明是 NP 完全问题。

2.      对于网络蠕虫的探测也存在类似问题,开始的方法是使用简单的特征码来过滤数据包,如 snort 。后来发现检测多态混杂攻击也是一个 NP 完全问题。

3.     总之,特征值方法就是一个 NP 完全问题

 

尽管看起来没前途了,但还是有一些希望的:在病毒代码中,恶意输入的语法由攻击者定义,但是其语义只要保持不变就好了。而 rootkit 中, kernel 数据结构的语法由 OS 控制,攻击者只能修改包含在结构体中的数据,并且不能搞坏原有功能。

 

1.     许多方式可以找到隐藏进程:【 18 】跟踪了 CR3 寄存器的值,当虚拟机执行的时候,来区分一个单独的虚拟地址空间。【 34 】通过检查调度器的线程表来查找隐藏进程,但是绕过这种方法的恶意程序也已经出来了【 1 】。【 47 】【 35 】【 43 】描述了修改内核数据结构中的某些位而不会引起异常。

 

Overview

一个扫描器的范例

一个隐藏的范例:将 Eprocess 结构体的 size 设成 0x00 ,这样进程可以被调度器调度,但不会出现在任务管理器中

 

架构:分 3 部分

1.               抽样我们选的数据结构,看哪些 field 最常用,从未用到的部分可以被 attacker 控制

2.               最常访问的域进行 fuzz ,决定哪些可以被修改而不会 crash 的部分,也可以被 attacker 控制

3.               收集正确的例子,基于其建立 signature

 

1.               抽样和 fuzzing 阶段分别基于 Xenvmware 实现。 xen 能获得监控内存的能力,而 vmware 可以存储状态

2.               修改 xen 代码,将包含监控数据的页 Present 位置 0 ,这样访问时可以实时记录

3.               fuzzing 的几种数据类型: 0 ,随机,随机素数,随机聚合类型(如结构体)

4.               signature 的生成: 4 种检测: 0 ,常量,按位与( bitwise and ),对齐

 

讨论:

1.                profilefuzzing 的评估: network_listener 31337 端口测试,看是否正常

2.               >对 signature 的生成的评估

 

实验结果:

最终的准确性对比psscan2PTFinder ,可以发现隐藏进程

 

缺点:

如何保证fuzzing 的覆盖面足够完全

采样阶段也不可能将每个内核数据结构都添加进来

这样还是会有遗漏

 

另:除了Eprocess 结构体外,还有别的方法可以隐藏rootkit 吗?

 

### Ret-Robust 技术概述 Ret-Robust 是一种旨在提高图像处理和计算机视觉应用鲁棒性的技术框架。此框架通过融合多种先进的图像预处理方法和技术来增强系统的稳定性和准确性。 #### 图像校准与角点检测 在 Ret-Robust 中,图像校准是一个重要环节,用于验证标定过程的成功与否以及获取角点信息。返回值 `dst` 包含两个部分:`retval` 表明标定是否成功(True 或 False),而 `corners` 则存储了所找到的角点坐标[^1]。这一阶段对于后续的特征匹配至关重要,因为它提供了精确的空间定位基础。 #### 灰度转换的作用 为了优化计算效率并简化数据结构,在许多情况下会先执行灰度转换操作。这种做法能够有效降低色彩维度带来的冗余信息量,并有助于提升某些特定算法的表现效果。具体来说,灰度化可以减少不必要的复杂度,使得进一步的操作更加高效[^2]。 #### 配置指令的应用 当涉及到复杂的系统设置或者功能定制时,配置指令显得尤为重要。例如,在 Apache HTTP Server 上使用的 mod_rewrite 模块可以通过一系列重写规则来进行 URL 路径映射调整。类似的机制也可以应用于其他领域内的参数调控,从而满足不同应用场景下的需求[^3]。 #### Haar 特征提取 作为一种经典的机器学习模型输入形式之一,Haar 特征被广泛运用于物体识别任务当中。它利用简单形状模式(如边缘、线条)捕捉局部区域间的亮度差异关系,进而构建出有效的分类器训练样本集。尽管其适用范围有限制,但在早期版本的人脸检测等领域取得了显著成就[^4]。 ```python import cv2 import numpy as np def haar_feature_extraction(image_path): img = cv2.imread(image_path, 0) cascade_classifier = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') faces = cascade_classifier.detectMultiScale(img) features = [] for (x,y,w,h) in faces: roi_gray = img[y:y+h, x:x+w] feature_vector = compute_haar_features(roi_gray) features.append(feature_vector) return features def compute_haar_features(region_of_interest): # 计算haar特征的具体逻辑 pass ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值