zamana 反恶意软件核心模块分析--amsdk.sys

zamana AntiMalware 是windows平台上的一款反恶意软件(轻量级),其核心模块amsdk.sys实现了内核层的功能;amsdk.sys没有加壳/混淆,而且还有很多调试信息,这有利用我们理解其开发流程和细节。

(分析环境:win 11 64,zamana AntiMalware 免费版)

以下从其六个主要的功能模块展开分析:

1,authentication manager (进程认证管理)

2,mini filter (文件过滤功能)

3,self guard (自我保护)

4,protect registry (注册表保护)

5,hook manager (hook管理)

6,irp_mj_device_control (用户层接口)

一,进程认证管理

这个模块主要通过PsSetCreateProcessNotifyRoutine注册函数来监控进程的创建与结束事件,其在回调函数中,如果是进程创建,就输出对应的调试信息;如果是进程结束,会判断其是否是已经认证过的进程,如果是,则将其从对应的数组中删除。(进程认证的接口在irp_mj_device_control对应的函数中,相关分析放在该部分)相关代码截图如下:

二 ,文件过滤功能

    这个模块相当于集成了一个文件过滤驱动,用来对文件读写内容包含以下字符串“X5O!P%@AP[4\PZX54(P^)7CC)7”的操作进行控制---不知道要干什么 (这个字符串是欧洲反恶意软件的测试文件内容)。通过FltRegisterFilter来注册过滤器,对create/write操作进行监控,如下图所示:

其效果如下:

 

 

 

三,自我保护

     通过PsSetLoadImageNotifyRoutine注册函数来监控加载的镜像并加以验证,来实现对恶意镜像加载的拦截:首先,判断当前加载镜像的进程是否是已经通过一模块中认证过;然后,如果当前进程和其父进程都是没有认证过的镜像,获取其IMAGE_NT_HEADERS中的五个数据:

NtHeaders.FileHeader.NumberOfSection  //节区数

NtHeaders.FileHeader.TimeDateStamp  //时间戳

NtHeaders.OptionalHeader.AddressOfEntryPoint  //镜像入口偏移

NtHeaders.OptionalHeader.SizeOfImage   //镜像大小

NtHeaders.OptionalHeader.CheckSum   //文件校验和

如下图:

 

通过自定义的计算函数,将以上五个dword 数据生成一个dword;最后,在其可配置的黑名单中查找,确定是否是不安全的镜像文件。

   镜像拦截,通过修改其入口点的代码。让其直接返回。支持32/64位文件。

四,注册表保护

   通过CmRegisterCallback注册回调函数,来保护白名单中的注册表不被修改/删除。

参考函数文档:https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-cmregistercallback

对RegSetValueKey操作进行过滤。

五,hook管理

   检查并修复可能被hook的以下函数:

   IofCallDriver,IofCompleteRequest,IoCallDriver,IoCompleteRequest,

    NtOpenProcess,NtQuerySystemInformation

  在某些条件下,hook ExQueueWorkItem 使watchdogs失效。

六,irp_mj_device_control 用户层接口

实现的功能列表如下:

    IOCTL_CREATE_FILE_BYPASS_FILTERS
    IOCTL_CHECK_DRIVER_DISPATCH_ROUTINES
    IOCTL_FIX_DRIVER_DISPATCH_ROUTINES
    IOCTL_REGISTER_PROCESS
    IOCTL_SCSI_READ
    IOCTL_SCSI_WRITE
   IOCTL_OPEN_PHYSICAL_DRIVE
   IOCTL_GET_KERNEL_IMAGE_INFORMATION
   IOCTL_DUMP_MINIPORT_INFORMATION
   IOCTL_FIX_CRITICAL_KERNEL_FUNCTIONS
   IOCTL_DELETE_FILE
   IOCTL_ENUM_PROCESSES
   IOCTL_ENUM_PROCESS_MODULES
   IOCTL_CREATE_KEY
   IOCTL_DELETE_KEY
   IOCTL_PROTECT_REGISTRY
   IOCTL_SAVE_MINIPORT_FIX
   IOCTL_TERMINATE_PROCESS
   IOCTL_OPEN_PROCESS
   IOCTL_BLOCK_UNSAFE_DLL
   IOCTL_GET_DRIVER_PROTOCOL
   IOCTL_DELETE_VALUE
   IOCTL_QUERY_DIRECTORY_FILE
   IOCTL_OPEN_THREAD

   等等。

总结

    通过其调试信息可以快速的摸清功能架构,分析完感觉少了点什么似的,可能不是会员版。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值