导出地址表保护减轻措施的实现,类似于导出地址过滤(EAF)
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/connormcgarr/EATGuard
小编记录
EATGuard 是一个针对导出地址表(Export Address Table)保护的实现,类似于导出地址过滤(EAF)技术。它旨在提供一种有效的方法来减轻恶意软件对系统的攻击,保护系统的安全性和稳定性。
使用 EATGuard 可以帮助防止恶意软件利用导出地址表的弱点进行攻击。它提供了一层额外的保护,使得对导出函数的访问变得更加受限,从而增强了系统的安全性。通过分析导出地址表的访问模式,EATGuard 可以及时检测并阻止恶意行为,保护系统免受潜在的攻击。
EATGuard 是一个概念验证项目,模仿了导出地址过滤技术的功能。它为安全研究人员和系统开发人员提供了一个实验平台,用于探索导出地址表保护的实现方式,并为构建更强大的系统安全解决方案提供了有益的参考。
EATGuard
导出地址表保护减轻措施的实现,类似于导出地址过滤(EAF)
工作原理
该项目由三个二进制文件组成,在编译后可以在 EATGuard\bin\ 目录下找到它们:
EATGuardApplication.exe- "恶意" 应用程序,加载EATGuardDll.dll到进程中,然后执行一些可执行代码(shellcode),用于执行notepad.exe。EATGuardDll.dll- DLL 文件,提供用户模式和内核模式之间的"桥梁"。该 DLL 注册一个向量异常处理程序(VEH),将对kernel32.dll的导出地址表(EAT)访问的检测发送到EATGuardDriver.sys驱动程序。该 DLL 在kernel32.dll的 EAT 上分配了一个守卫页面,当在EATGuardApplication.exe进程空间内访问 EAT 时,会引发异常。这将导向注册的 VEH,该处理程序处理这些异常,并负责在完成分析后继续执行。EATGuardDriver.sys- 内核模式设备驱动程序,验证对kernel32.dll的 EAT 的访问。目前,作为概念验证,它检查访问kernel32.dll的内存是否由磁盘支持。
如何使用
请注意,EATGuardApplication.exe 从相对路径中加载 EATGuardDll.dll。这意味着在执行时,.exe 和 .dll 文件需要位于同一目录下。请注意,在启用内核调试的计算机上不要运行此项目。这可能会引起问题,因为 EATGuardDll.dll 使用单步异常来继续执行。以下是该项目的示例用法:
C:\Users\ANON\Desktop>sc create EATGUARD type= kernel binPath= C:\Users\ANON\Desktop\EATGuardDriver.sys
[SC] CreateService SUCCESS
C:\Users\ANON\Desktop>sc start EATGUARD
SERVICE_NAME: EATGUARD
TYPE : 1 KERNEL_DRIVER
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 0
FLAGS :
C:\Users\ANON\Desktop>EATGuardApplication.exe
[+] KERNEL32.dll EAT: 0x00007FFB1D83F898
[+] Number of functions in the KERNEL32.dll EAT: 1678
[+] EATGuard 分析完成!
[+] 目标地址: 0x24AA138005C
[>] 是否为 R/W/X 内存: TRUE
[>] 是否为 R/W/X 映射的节: FALSE
[>] 是否为映像支持的内存: FALSE
[>] 页面保护是否已更改: FALSE
[>] 区域基址地址: 0x24AA1380000
[>] 内存区域大小: 0x1000
[>] 内存提交大小: 0x1000
[+] EATGuard 分析完成!
[+] 目标地址: 0x24AA138005F
[>] 是否为 R/W/X 内存: TRUE
[>] 是否为 R/W/X 映射的节: FALSE
[>] 是否为映像支持的内存: FALSE
[>] 页面保护是否已更改: FALSE
[>] 区域基址地址: 0x24AA1380000
[>] 内存区域大小: 0x1000
[>] 内存提交大小: 0x1000
[+] EATGuard 分析完成!
[+] 目标地址: 0x24AA138008F
[>] 是否为 R/W/X 内存: TRUE
[>] 是否为 R/W/X 映射的节: FALSE
[>] 是否为映像支持的内存: FALSE
[>] 页面保护是否已更改: FALSE
[>] 区域基址地址: 0x24AA1380000
[>] 内存区域大小: 0x1000
[>] 内存提交大小: 0x1000
[+] EATGuard 分析完成!
[+] 目标地址: 0x24AA138009B
[>] 是否为 R/W/X 内存: TRUE
[>] 是否为 R/W/X 映射的节: FALSE
[>] 是否为映像支持的内存: FALSE
[>] 页面保护是否已更改: FALSE
[>] 区域基址地址: 0x24AA1380000
[>] 内存区域大小: 0x1000
[>] 内存提交大小: 0x1000
[+] EATGuard 分析完成!
[+] 目标地址: 0x24AA13800A2
[>] 是否为 R/W/X 内存: TRUE
[>] 是否为 R/W/X 映射的节: FALSE
[>] 是否为映像支持的内存: FALSE
[>] 页面保护是否已更改: FALSE
[>] 区域基址地址: 0x24AA1380000
[>] 内存区域大小: 0x1000
[>] 内存提交大小: 0x1000
(...)TRUNCATED(...)
该项目是一个模仿导出地址过滤(Export Address Filtering)功能的概念验证。
标签:工具分享, 思路分享, 学习笔记