思绪整理

思绪整理

Tags
notes
Published
Published November 25, 2023

制作一款Bypass AC的CE

一切源自于这个教程引起的探索
 

手动映射驱动

方法1 利用在野驱动的漏洞映射自己的驱动 或 直接利用读写内存

为了避免白驱动被AC拉入黑名单 一般仅用于映射自己的驱动
此处使用nvidia的驱动程序
 
另一个大佬挖出的 可直接PhysicalRead/W
 

方法2 禁用DSE

为了成功注入驱动 要么采用EV签名(纯粹的钱包问题)要么采用禁用DSE(篡改纯粹是技术挑战)Win10 以上引入了PG(PatchGuard) 尝试映射非签名驱动会被检测到然后蓝屏 但检测不是实时且有时间间隔 所以暂时更改然后映射自己的驱动再更改回来
以下是几个利用驱动程序以禁用驱动程序签名强制 (DSE)的项目 最常见的是Kdmapper 但被检测
GDRV驱动
Kdmapper
禁用DSE的攻防研究

Rootkits

在了解利用GDRV关闭dse时,意识到可以有一个全能的恶意驱动存在以方便做其他事情 例如隐藏进程或隐藏驱动摘除回调等 进而发现了Rootkits的存在
广义而言,Rootkit也可视为一项技术。今天,Rootkit一词更多指伪装成驱动程序加载到操作系统内核中的恶意软件,其代码在特权模式运行,能造成意外危险。
Black Angel Rootkit
Windows Kernel Rookit in Rust (Codename: Eagle)
关于Rootkits的文章

新的方法

滥用 LargePageDrivers 将 shellcode 复制到有效的内核模块中 (Lpmapper)

加载作弊驱动程序的最常用方法是使用kdmapper等工具手动映射它。不幸的是,以这种方式手动映射驱动程序会导致代码位于有效模块之外。且与驱动通信的方法IOTLC会被检测到。
"有效模块"指的是操作系统内核的合法、经过签名或认证的模块,通常是由操作系统或硬件厂商提供并被认为是可信的。这些模块包括正式的设备驱动、文件系统驱动等,它们通过操作系统的加载机制被载入内核。在这里,"有效模块之外"表示作弊驱动被手动映射到内核,但没有经过正规的、系统认可的加载过程。 手动映射是指通过一些工具(如 kdmapper)将自定义的驱动程序加载到内核空间,而不是通过系统提供的标准加载机制。这可能是为了绕过一些系统的安全机制,例如签名验证或其他安全检查。在这种情况下,作弊驱动可能位于内核地址空间的一部分,但并没有经过系统正常的加载过程。
 

GhostMapper 将您的驱动程序映射到签名内存中

 

其他好玩的

仅当调用线程属于用户模式进程时 从内核模式显示消息框

Defcon的媒体服务器

C++内核编程以及RUST的书籍(废了好大力气搞来的)

但要找个高效的阅读法子
 
 
 
 
function renameComponents(c) local i if c.Component then for i=0,c.ComponentCount-1 do renameComponents(c.Component[i]) end end if c.Caption then c.Caption='WTF' end end for i=0,getFormCount()-1 do local form = getForm(i) for j=0,form.ControlCount-1 do renameComponents(form) end form.Caption='Bla' end registerFormAddNotification(function(f) f.registerCreateCallback(function(frm) renameComponents(f) end) end)