前言
工作之余,间歇性死磕moonwalk纤程调度,总算有点眉目了,转眼又是一个月,水一个裁缝代码,可能在某些场景下有用,不过还是要进一步修改才能用,算是抛砖引玉吧。
UGuardMap编译
UGuardMap基于EFI-Guard + umap实现从引导阶段映射自定义驱动,再由驱动实现其他功能。UGuardMap则通过注入winlogon进程加载指定位置模块进而实现三环功能。
项目目录
VisualUefi:其中包含修改过的包EfiGuardPkg
WebBK:待映射的驱动
test:用于驱动注入的模块,简单的在桌面创建一个txt空文本
如何编译
驱动文件(EfiGuardDxe):可以直接使用VisualEFI编译
引导文件(Loader):
截至目前(2024.08.10),EFIGuard最新版本为V1.4
由于当前版本使用了协议gEfiLegacyBiosProtocolGuid,所以使用VisualEfi无法编译,还是需要使用edk2来编译。
-
• 克隆edk2-stable202311 或者之前的Tag,否则edk2/OvmfPkg/OvmfPkg.dec at edk2-stable202311 · tianocore/edk2 · GitHub 不包含协议gEfiLegacyBiosProtocolGuid,随后被弃用了。
-
• 克隆edk2-BaseTools-win32到edk2的同级目录
-
• git clone --recursive https://github.com/tianocore/edk2-BaseTools-win32
-
• 启动CMD,设置环境变量,路径修改为edkBaseTools路径
-
• set WORKSPACE=D:UEFIworkspace
-
• set EDK_TOOLS_PATH=D:UEFIworkspaceedk2BaseTools
-
• set EDK_TOOLS_BIN=D:UEFIworkspaceedk2-BaseTools-win32
-
• set PACKAGES_PATH=D:UEFIworkspaceedk2
-
• 执行edk2edksetup.bat (window平台)
-
• 将项目中的EfiGuardPkg包复制一份到edk2目录下
-
• build -a X64 -t VS2019 -p EfiGuardPkg/EfiGuardPkg.dsc -b RELEASE 构建64位Realese版本efi.
WebBk:webbk正常编译即可,编译完成之后二进制硬编码在EfiGuardDxe的mapper.h中
test:正常编译
你需要修改的
EfiGuardDxe:修改函数UMap_HookBlImgAllocateImageBuffer中BlImgAllocateImageBuffer特征码
当前在windows 22h2的指纹如下(在bootmgfw.efi中查找)
VOID* funcCall =
UMap_FindPattern(ImageBase, ImageSize,
"xE8x00x00x00x00x4cx8bx65xc7", "x????xxxx");
WebBk:修改函数ThreadFunction中模块的路径或者被注入进程
如何使用
准备一块fat32格式的U盘,修改编译好的Loader.efi为bootx64.efi同EfiGuardDxe.efi一起放入EFIBoot目录下
禁用安全启动
启动计算机并从U盘进行引导
引用
https://github.com/Mattiwatti/EfiGuard
https://github.com/btbd/umap
https://github.com/DarthTon/Blackbone
项目地址
https://github.com/jseclab/UGuardMap
原文始发于微信公众号(无名之):bootkit驱动映射,三环进程注入加载指定模块
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论