内核方式里的隐藏进程,反取证技术研究分析
本文是引见恶意病毒木马软件的耐久性及传播性技术这一系列的第一次迭代,这些技术中大局部是研讨人员几年前发现并披露的,在此引见的目的是树立这些技术和取证方面的学问框架。
用于证明概念的代码能够在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。
本文是引见恶意病毒木马软件的耐久性及传播性技术这一系列的第一次迭代,这些技术中大局部是研讨人员几年前发现并披露的,在此引见的目的是树立这些技术和取证方面的学问框架。
用于证明概念的代码能够在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。
www.wnhack.com
本文来自无奈人生安全网