如何使用Kdrill检测Windows内核中潜在的rootkit

news2024/11/16 19:53:15

关于Kdrill

Kdrill是一款用于分析 Windows 64b 系统内核空间安全的工具,该工具基于纯Python 3开发,旨在帮助广大研究人员评估Windows内核是否受到了rootkit攻击。

需要注意的是,该项目与Python2/3兼容,无其他依赖组件,无需 Microsoft 符号或网络连接即可执行安全检查。KDrill 还可以分析完整崩溃转储和内核崩溃转储(主要存储在 中C:\Windows\MEMORY.DMP)、完整原始内存转储和 AFF4 转储的压缩版本(zip,但不是压缩的)。

功能介绍

Kdrill可以访问物理内存并解码/重建操作系统内部结构来探索它们并验证它们的完整性,并能够执行以下检查:

1、已加载模块列表

2、内存代码中的驱动程序

3、内核对象和内部 ntoskrnl 列表的回调

4、即插即用树和过滤器

5、内核类型回调

6、FltMgr 回调

7、KTimers DPC 函数

8、IRP 驱动程序表

9、驱动程序使用回调签名全局变量

10、NDIS 筛选器和回调NDIS filters and callbacks

11、NetIO/FwpkCLNT 过滤调度

12、设备及其附加的设备对象

13、IDT 条目

14、PatchGuard 初始化和状态

工具要求

Python 3

工具安装

由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3环境。

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/ExaTrack/Kdrill.git

Rootkit示例

Winnti

Winnti替换了 TCPIP 的 NDIS 回调中的函数指针。使用以下cndis命令我们可以识别它:

#>> cndis

 [*] Checking NDIS Firewall layers

  [*] List from fffffa80033d3d70

    Driver      : pacer.sys

    GUID        : {B5F4D659-7DAA-4565-8E41-BE220ED60542}

    Description : QoS Packet Scheduler

    Driver      : wfplwf.sys

    GUID        : {B70D6460-3635-4D42-B866-B8AB1A24454C}

    Description : WFP LightWeight Filter

 [*] Checking NDIS Protocol layers

  [*] List from fffffa8002a71a60

    Name : NDIS6FW

  Callback fffff88003329e50 -> c:\users\toto\appdata\local\temp\tmp1ec3.tmp (not in white list) SUSPICIOUS

  Callback fffff88003329e50 -> c:\users\toto\appdata\local\temp\tmp1ec3.tmp (not in white list) SUSPICIOUS

[...]

    Name : NDISWAN

    Name : WANARPV6

    Name : WANARP

    Name : TCPIP6TUNNEL

    Name : TCPIPTUNNEL

    Name : TCPIP6

    Name : TCPIP

  Callback fffff8800332a660 -> c:\users\toto\appdata\local\temp\tmp1ec3.tmp (not in white list) SUSPICIOUS

  Callback fffff8800332a810 -> c:\users\toto\appdata\local\temp\tmp1ec3.tmp (not in white list) SUSPICIOUS

Turla/Uroburos

PspCreateProcessNotifyRoutine 内部的回调:

#>> ccb

  [*] Checking \Callback\TcpConnectionCallbackTemp : 0xfffffa8002f38360

  [*] Checking \Callback\TcpTimerStarvationCallbackTemp : 0xfffffa8004dfd640

  [*] Checking \Callback\LicensingData : 0xfffffa80024bc2f0

  [*] Checking \Callback\LLTDCallbackRspndr0006000006000000 : 0xfffffa80048713a0

[...]

 [*] PspLoadImageNotifyRoutine

 [*] PspCreateProcessNotifyRoutine

  Callback fffffa8004bc2874 -> SUSPICIOUS ***Unknown*** 48 89 5c 24 08 57 48 81 ec 30 01 00 00 48 8b fa

该rootkit还在FwpkCLNT中插入了网络IO过滤:

#>> cnetio

  [*] FwpkCLNT/NetIo Callouts (callbacks) : fffffa8004965000 (4790)

  Callback fffffa8004bd9580 -> SUSPICIOUS ***Unknown*** 48 8b c4 48 89 58 08 48 89 50 10 55 56 57 41 54

  Callback fffffa8004bca6b0 -> SUSPICIOUS ***Unknown*** 33 c0 c3 cc 40 53 48 83 ec 20 48 8b 89 50 01 00

工具使用演示

列出模块(带或不带过滤器):

#>> lm winp

 fffff806bd4f0000    10000  \??\C:\Kdrill\winpmem_x64.sys

显示特定地址的转储:

#>> dq nt 40

 FFFFF80668000000  0000000300905A4D 0000FFFF00000004  MZ..........##..

 FFFFF80668000010  00000000000000B8 0000000000000040  ........@.......

 FFFFF80668000020  0000000000000000 0000000000000000  ................

 FFFFF80668000030  0000000000000000 0000011800000000  ................

Kdrill 嵌入了 LDE,以实现最小的 x86 反汇编。你可以使用它来查看操作码的微小细节:

#>> u nt!NtReadFile 10

> fffff806685f44d0 | 4c894c2420                       |

  fffff806685f44d5 | 4c89442418                       |

  fffff806685f44da | 4889542410                       |

  fffff806685f44df | 53                               |

  fffff806685f44e0 | 56                               |

  fffff806685f44e1 | 57                               |

显示指向地址的转储:

#>> dq poi(nt!LpcPortObjectType)

 FFFFAA0F7DD524E0  FFFFAA0F7DD524E0 FFFFAA0F7DD524E0  .$.}..##.$.}..##

 FFFFAA0F7DD524F0  0000000000140012 FFFFD5000BF7DC90  ..............##

 FFFFAA0F7DD52500  00000000000000F9 0000107C0000002E  ............|...

 FFFFAA0F7DD52510  0000140B00000F31 000000000000137D  1.......}.......

您可以使用池中的引用来显示数据块Header:

#>> fpool poi(nt!LpcPortObjectType)

Pool        : ffffaa0f7dd52470

  Tag       : ObjT

  Size      : 150

  Prev Size : 0

列出对象目录对象:

#>> winobj \Callback

 Callback        \Callback\IGD_WNICShareObj  (ffffaa0f8697ae30)

 Callback        \Callback\WdProcessNotificationCallback  (ffffaa0f7ebf9d30)

 Callback        \Callback\LLTDCallbackRspndr0006008004000000  (ffffaa0f88872c60)

[...]

获取有关内存中随机对象的信息:

#>> !addr ffffaa0f7ed3fb10

Pool        : ffffaa0f7ed3fac0

  Tag       : Devi

  Size      : 210

  Prev Size : 0

#>> !addr FFFFF80668CFB280

fffff80668cfb280 in \SystemRoot\system32\ntoskrnl.exe

ntoskrnl+cfb280

获取页面的 PTE 权限:

#>> list fffff80668cfb280

    FFFFF80668CFB000 rw--

列出内核内存地址和映射文件之间的关系:

#>> filecache

Vacb : ffffaa0f7dde4000 ; size : 6

0xffffc186e4100000 \Windows\System32\catroot2\edb.log (9684)

0xffffc186fb4c0000 \$MapAttributeValue (320)

[...]

许可证协议

本项目的开发与发布遵循BSD-3-Clause开源许可协议。

项目地址

Kdrill:【GitHub传送门】

参考资料

GitHub - BeaEngine/lde64: LDE64 (relocatable) source code

WinPmem/src/binaries/winpmem_x64.sys at master · Velocidex/WinPmem · GitHub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2076281.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

女明星玩乙游,为何会推动国乙玩家“世纪大和解”?

“震惊!叠姐和光姐竟然世纪大和解了。” 这件在国乙圈匪夷所思、想都不敢想的事,竟然在一位女明星的推动下发生了,也因此诞生了国乙圈的“8.22事件”。 事情的起因是女艺人乃万在社交平台上发布了乙游相关言论,引起了乙游玩家不…

SAP 有趣的‘bug‘ 选择屏幕输入框没了

如下代码将会输出一个P_U的字段 PARAMETERS p_u TYPE string VISIBLE LENGTH 12 MEMORY ID m1.AT SELECTION-SCREEN OUTPUT.LOOP AT SCREEN.IF screen-name P_U.screen-invisible 1.MODIFY SCREEN.ENDIF.ENDLOOP. 如果我们给这个字段设置一个默认值,参考如下代码…

8.26-docker创建容器+打包镜像+docker文件的学习

一、回顾 创建容器:docker run -it --name a1 centos:latest /bin/bash 查看容器:docker ps(查看正在up的容器) docker ps -a(查看所有的容器) 切回宿主机:ctrl p q 启动容器:d…

Furion+SqlSugar环境配置与项目创建

一、速通一图流 二、安装 .NET 8 1. 下载与安装 .NET 8 SDK 访问 .NET 下载页面 并下载最新版本的 .NET 8 SDK。根据操作系统选择适合的安装包(如 Windows、macOS 或 Linux),并按照提示完成安装。 2. 验证安装 打开终端或命令提示符&…

SpringMVC - 第一个 SpringMVC 程序

MVC: 模块 视图 控制器 的简写,表示层 属于 C V,业务层和逻辑层属于 M SpringMVC 是对 web 使用的一套框架,可以更加快捷高效的管理 web应用 所有的请求都会经过 DispatcherServlet 这一个 Servlet 支持 IoC 和 AOP 统一处理请求 可以解析多…

找工作——行秋24届求职面试经验汇总

前言 求职记录:本人bg双9(末流),共投岗位200,收到5个offer,求职方向偏向于国企,求职城市青睐新一线城市。个人求职记录 (qq.com)https://docs.qq.com/sheet/DSlBBVWRKZVZ5TWlD?tabBB08J2&…

C 06 编译4阶段

c语言编译的4个阶段:预处理、 编译、 汇编、 链接 预处理阶段会在源代码中查找预编译指令,其中主要是头文件展开(include),宏定义(defind),选择性编译(ifdef)三种指令 预…

Claude 3.5 Sonnet引入了LaTeX公式渲染功能!!

终于,Claude 也引入了LaTeX公式渲染功能,消息一出,评论区的网友们热议不断。 【最新版】手把手Claude 3.5 Sonnet 详细步骤注册方法!_claude 3.5 sonnet 注册 早在 ChatGPT 率先支持 LaTeX 语言用于输入和显示数学公式时&#xf…

[从0开始AIGC][LLM]:LLM中Encoder-Only or Decoder-Only?为什么主流LLM是Decoder-Only?

LLM中Encoder-Only or Decoder-Only & 为什么主流LLM是Decoder-Only? 文章目录 LLM中Encoder-Only or Decoder-Only & 为什么主流LLM是Decoder-Only?1. 什么是Encoder-only、Decoder-Only2. 为什么当前主流的LLM都是Decoder-only的架构低秩问题 …

欧瑞康oerlikon PECVD 系统 KAI MT R1.0 模块化 操作说明

欧瑞康oerlikon PECVD 系统 KAI MT R1.0 模块化 操作说明

HTML5手机端通用网站模板源码

文章目录 1.设计来源1.1 主界面1.2 文章信息界面1.3 文章列表界面1.4 双列文章列表界面1.5 通用标签界面1.6 联系我界面1.7 折叠框标签界面1.8 相关界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作…

如何给笔记本或台式机顺利升级内存条

先查一下主板还有无剩下卡槽 win r 输入命令 taskmgr 调用后台查看 获取两个关键信息 速度 2666MHZ ,卡槽 2/4 意味着还剩下两个空卡槽 接下来 用鲁大师纯净版查一下主板型号 鲁大师 v5.21.1300 绿色纯净版 - 果核剥壳 (ghxi.com) 查完之后&#xff0…

如何使用双重IP代理实现更安全的网络访问

在进行网络爬虫或其他需要隐匿真实IP的操作时,单一的代理IP有时并不能完全满足我们的需求。为了进一步提高安全性和隐私保护,我们可以使用双重IP代理。本文将详细介绍如何使用Java实现双重IP代理,帮助你在网络环境中更加游刃有余。 什么是双重…

TOMCAT “tom小猫”向你招手!!赶紧学起来!

一、WEB技术 1.1HTTP协议和B/S 结构 操作系统有进程子系统,使用多进程就可以充分利用硬件资源。进程中可以多个线程,每一个线程可以被CPU调度执行,这样就可以让程序并行的执行。这样一台主机就可以作为一个服务器为多个客户端提供计算服务。…

文件系统 -文件的基本了解

文章目录 一、文件的基本了解1. 文件 内容 属性2. 文件被访问之前,要被打开3. 谁在打开文件? 二、fopen()w 方式打开文件① 基本使用:② 标准重定向: a 方式打开文件① 基本使用:② 重定向: fopen&#x…

Runtime:源码解析Golang 的map实现原理

go version 1.15.6 map作为一种常见的 key-value 数据结构,不同语言的实现原理基本差不多。首先在系统里分配一段连接的内存地址作为数组,然后通过对map键进行hash算法(最终将键转换成了一个整型数字)定位到不同的桶bucket(数组的索引位置),然…

【国产游戏行业的崛起与挑战:技术革新与全球市场机遇】

近年来,国产游戏行业确实取得了显著的发展,不仅在技术水平上不断提升,而且在国际市场上也崭露头角。然而,面对全球游戏市场的激烈竞争,国产游戏技术仍面临一些挑战和机遇。 首先,国产游戏在原创IP方面存在…

Autodesk系列软件批量激活工具出现许可证管理器版本不被支持问题解决方案!

使用Autodesk系列软件批量激活工具时,如果出现许可证管理器版本不被支持。 解决办法: 1、确定您安装的最高Autodesk软件版本。 例如,如果您同时安装了AutoCAD2020和Inventor 2022,那么您应该下载2022版对应的AdskLicensing。 说明&#xf…

汽车信息安全--攻破SecOC,就在今天!

目录 1.SecOC和系统安全? 2.破解实录 2.1 破解安全访问授权 2.2 程序控制的漏洞 3.小结 2020年左右,汽车信息安全开始在业内普及。 对于这种新概念,部分OEM仍采取以往开发模式,在不影响软件架构的大背景下,直接进…

企业级NoSql数据库Redis集群

一、关系型数据库和 NoSQL 数据库 1.1 数据库主要分为两大类:关系型数据库与 NoSQL 数据库 关系型数据库,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据主流的 MySQL、Oracle、MS SQL Server 和 …