频道栏目
首页 > 安全 > 网络安全 > 正文

内核方式里的隐藏进程研究之反取证技术分析

2017-10-03 14:32:00      个评论      
收藏   我要投稿

内核方式里的隐藏进程研究之反取证技术分析。本文是引见恶意病毒木马软件的耐久性及传播性技术这一系列的第一次迭代,这些技术中大局部是研讨人员几年前发现并披露的,在此引见的目的是树立这些技术和取证方面的学问框架。

\

用于证明概念的代码能够在CERT的GitHub上查看。由于CERT剖析师Devoteam在这个范畴的经历,学问框架会不时完善。

第一篇文章将讨论DKOM(散布式组件对象形式)进程躲藏的以下几个方面:

Windows进程

躲藏直接内核对象的修正

概念性证明(PoC)

运用Volatility停止内存检测

这个概念在2004年的美国黑帽大会上被引见,不过到如今还被用于几个内核工具,比方引见者自己所开发的FU-rootkit。

Windows进程

Windows内核运用EPROCESS来处置进程,这些是不透明进程,且没有被微软记载,规范编译头也没有细致标明。

MSDN链接:EPROCESS (Windows Driver)

但是这依然能经过运用KD经过内核调试被剖析。

\
\

该示例中的构造有207个字段(Windows 10 64位系统)。

只要三个相关的能够解释该技术。

\
\
\

此列表包含两个链接:Flink和Blink。这些链接很有趣,由于它们指向属于属于下一个进程(Forwardlink)和之前的进程(Backlink)的另外两个LIST_ENTRY构造。

\

Windows系统中的一切进程经过其ActiveProcessLinks构造中的指针来援用。它们构成了诸如taskmgr.exe(任务管理器)或某些SysInternals(例如procexp.exe)等工具运用的双链表。

\

双链表会被定时检查以更新进程显现。

躲藏直接内核对象的修正

DKOM技术躲藏了一个取消链接它本人的ActiveProcessLinks的进程,并将“前一个”和“下一个”进程直接互相链接。

\

从双链表中获取进程(示例图中的smss.exe)使得它不依赖于此列表的工具来显现进程。

取消链接流程不会影响其执行流程。调度器将计算时间分配给线程,而不是进程。

当修正恶意病毒木马进程的ActiveProcessList时,它的Blink和Flink被修正以指向它们本人的构造。这样做是为了防止在进程退出时呈现任何问题。假如Blink或Flink指向的是旧的或无效的内存地址,那么当尝试更新“相邻”进程时,内核可能会引发异常。

\

完成

关于概念性证明(PoC)的评论

CERT在Github上的代码是一个测试驱动程序,它是从运用内核形式驱动程序框架的Windows示例中完成的。驱动配置的初始化运用WDF_DRIVER_CONFIG_INIT()被hook。该hook搜索一个ImageFileName字段为virus.exe的进程,并运用DKOM技术停止躲藏。

留意:这不是一个功用性的工具(只是在装置的时分会尝试躲藏一个进程),而且只被用于教学目的。

该代码大量运用Windows 10 64位测试的硬编码的存储器偏移。它们被用于直接访问EPROCESS字段,并且在其他Windows版本上可能无法正常工作。

\

以上显现的偏移能够在Windows进程局部的第一个KD截图中找到。

代码很容易被改良,能够运用更稳定的访问这些字段的方式然后提供一个用户控制界面。

EPROCESS字段访问及版本

Windows API没有提供EPROCESS的构造定义,但是能够运用API调用来检索这些构造的指针。

PoC中运用的函数是PsGetCurrentProcess(),它返回一个当行进程“EPROCESS”构造的指针。在执行的过程中,它返回一个指向System进程构造的指针,一旦找到一个EPROCESS构造,就调用一个搜索函数,以便经过EPROCESS循环列表来查找virus.exe ImageFileName。

\

假如搜索返回一个EPROCESS构造,那么它的ActiveProcessLinks就会被修以躲藏它。这经过EPROCESS构造在内存中的操作来完成。

\

其他相关与当前操作系统的维护

PoC生成的驱动程序已提交到https://nodistribute.com/平台,以检查能否会报毒。

\

没有一个报了毒,思索到代码非常简单,系统调用量也很低,这样一来就一点也不奇异了。另外,固然这种技术十分荫蔽,但是并不是在一切Windows版本上都很稳定。

一个叫PatchGuard的对Windows 64位的维护能够检测前面提到的操作。PatchGuard也被称为内核补丁维护(KPP),于2005年在Windows XP 64位和Windows Server 2003 SP1中被引入。

KPP以一个随机频率考证内核构造,几非常钟能够分开成两个检查。当检测到异常时,会引发0×109 - CRITICAL_STRUCTURE_CORRUPTION内核错误,然后强迫阻止系统执行。其实KPP并没有真正阻止这种技术的执行,它只是关闭了操作系统。

由于该技术旨在提供荫蔽性,而蓝屏的显现会毁坏其有效性。另外,该维护仅在64位版本的Windows中完成,所以32位系统就会容易遭到攻击。往常,大多数人装置的都是64位,因而他们会被维护免受这种要挟。

不过即便运用了KPP,这种技术也不能无视,由于:

在32位系统的事情响应中能够遇到。

内核形式驱动(依然是一个活泼的研讨范畴)存在对PatchGuard的攻击。

运用Volatility停止内存检测

运用工具在受感染的主机上检测这种技术可能有点棘手,不过它能够很容易地在内存捕获中被检测到。事实上,许多监控/系统工具(例如SysInternals Microsoft套件)都是基于双链表的进程枚举。

为了演示这个概念,PoC已在运转Windows 10 Professional版本的主机上执行。

在PoC系统上执行的Process Explorer,VMMap,ListDlls和Handle64的示例

\
\
\

这个进程关于这几个工具是不可见的。但是该进程其实正在运转,并且其系统事情能够被进程监视器捕获。

\

在理想生活中,很多rootkit能够修正和劫持大量的系统功用,使得大多数实时检测变得愈加艰难。这里引荐运用诸如Volatility等顺应框架对RAM转储然后脱机研讨。

以前提到的Windows版本由具有Win10x64_14393的配置文件的Volatility 2.6支持。

\

内存转储由Winpmem完成,该工具是Google Rekall项目分发的工具。

\

在Winpmem的输出中列出了驱动程序称号,我们能够看到PoC二进制文件(这里称为2017_remote_helloworld)。

\

一旦内存捕获过程完成,研讨就能够开端了。

Volatility有几个插件来剖析转储中的运转进程,能够经过以下方式停止快速比拟:

\

只要psscan和psxview发现了我们的躲藏过程。

\

这些插件的文档能够协助我们理解为什么有些人会发现这个进程,为什么有些人没有发现。

pslist – 经过检查双链表来检测进程

pstree – 运用了相同技术,只是显现有小小的差异

psscan – 在内存中扫描_POOL_HEADER构造(内存页池)以辨认相关进程

psxview – 几种技术的组合:

pslist:如上所述

psscan:如上所述

thrdproc:线程扫描,检索调度程序运用的_KTHREAD列表(不能在不中缀进程执行的状况下修正它),然后搜索相关的_EPROCESS对象。

pspcid

csrss:csrss.exe进程保存着能够在其内存中检索到的进程的独立列表。

session

deskthrd

在这些插件中,psxview是剖析正在运转的进程的最快办法,它为用户提供了不同检测技术。

我们晓得躲藏的进程称为virus.exe,且PID为4952,如今能够应用Volatility进一步研讨。

在这种“躲藏”状况下,PID不能直接被Volatility插件运用,因而必需指定进程内存偏移量。

\

关于大多数动摇插件,能够运用存储器偏移(P代表Physical)替代PID。

有了这个信息,能够取得很多东西,例如:

翻开系统资源的处置(文件,注册表项…)

\

进程命令行

\

驱动程序/rootkit也能够从内存转储中恢复

\
\
\

References

Direct Kernel Object Manipulation. Jamie Butler, Black Hat 2004.

The Rootkit Arsenal, Escape and Evasion in the dark Corners of the System. Bill Blunden, 2013.

FU rootkit source code, Jamie Butler.

FUTo rootkit source code, Peter Silberman.

Windows Internals, Mark Russinovich, David A. Solomon, Alex Ionescu, 2012.

上一篇:让黑客都犯愁的最难破解密码居然是这些
下一篇:银行木马Retefe居然也使用了NSA“永恒之蓝”EXP
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站