利用API内存地址参数执行shellcode

2024-04-24 19:04

本文主要是介绍利用API内存地址参数执行shellcode,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对恶意文档(maldocs)进行大量分析,在目前使用的流行变种中,利用本机 Windows 函数调用来将执行跳转到的shellcode,收集存在在类似的利用方式。

示例通过使用 EnumResourceTypesA 来说明如何通过相关函数执行 shellcode。

EnumResourceTypesA(__in_opt HMODULE hModule,__in     ENUMRESTYPEPROCA lpEnumFunc,__in     LONG_PTR lParam);

EnumResourceTypesA function (winbase.h)

枚举二进制模块中的资源类型。从 Windows Vista 开始,这通常是一个与语言无关的可移植可执行文件(LN 文件),枚举还包括来自包含可本地化语言资源的相应特定于语言的资源文件(.mui 文件)之一(如果存在)的资源。也可以使用 hModule 指定 .mui 文件,在这种情况下,仅搜索该文件的资源类型。

或者,应用程序可以调用 EnumResourceTypesEx,这样可以更精确地控制要枚举的资源文件。

lpEnumFunc 指向要为每个枚举的资源类型调用的回调函数的指针。如果我将 shellcode 的内存地址提供给 lpEnumFunc,它会将每个枚举资源传递给该函数,但是,由于它是 shellcode,会执行提供的内存地址处的任何内容 - 注:内存页面需要允许代码可执行。

在恶意文档的上下文中,VBA 为您提供了直接调用 Windows 函数的能力,但是,在 VBA 之外,如果您知道目标应用程序已经导入了函数,那么这些函数也可以在典型的利用攻击中被利用。可以节省通常用于执行类似功能的某些小工具的 ROP 链空间,具体取决于功能和所需的参数。此外,从一般的 offsec 角度来看,如果继续对恶意文档使用相同的函数调用,会留下非常清晰的动态和静态特征。

列举所有可能的函数,查看 Windows 7 x86 SDK 中的 C 头文件。

$ cat *.h |tr '\r\n' ' ' |tr ';' '\n' |sed -e 's/--//g' -e 's/    / /g' |grep -iE "__in.+(Func|Proc|CallBack| lpfn| lpproc)," |grep -oE " [a-zA-Z]+\([a-zA-Z0-9*_, ]+\)" |grep "__in" |cut -d"(" -f1 |sort -u |sed -e 's/^ //g'

它的核心是 ‘(Func|Proc|CallBack| lpfn| lpproc)’ 的 grep,其余的主要是尝试标准化头文件函数结构以便于解析

在获得可选函数列表后,测试每个函数以尝试找出最有可能在恶意文档中使用的函数。阅读 MSDN 文章以了解该功能的用途,然后快速阅读几行 VBA 以查看是否可以使其正常工作。虽然其中大部分很可能会被用于在您指定的地址执行代码,但将多个功能链接在一起并使用大量“简单”功能来执行此操作并没有太多回报。例如,DestroyCluster 函数具有类似的回调参数,但您还必须首先调用 CreateCluster 和 OpenCluster 来设置环境,这对于用例来说有点多。

下表列出了已识别的函数,这些函数似乎能够接受内存地址以执行代码,并且可能会被利用。

123
AddClusterNodeBluetoothRegisterForAuthe

这篇关于利用API内存地址参数执行shellcode的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/932582

相关文章

python通过curl实现访问deepseek的API

《python通过curl实现访问deepseek的API》这篇文章主要为大家详细介绍了python如何通过curl实现访问deepseek的API,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... API申请和充值下面是deepeek的API网站https://platform.deepsee

MySQL中SQL的执行顺序详解

《MySQL中SQL的执行顺序详解》:本文主要介绍MySQL中SQL的执行顺序,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql中SQL的执行顺序SQL执行顺序MySQL的执行顺序SELECT语句定义SELECT语句执行顺序总结MySQL中SQL的执行顺序

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Java对接Dify API接口的完整流程

《Java对接DifyAPI接口的完整流程》Dify是一款AI应用开发平台,提供多种自然语言处理能力,通过调用Dify开放API,开发者可以快速集成智能对话、文本生成等功能到自己的Java应用中,本... 目录Java对接Dify API接口完整指南一、Dify API简介二、准备工作三、基础对接实现1.

一文详解如何在Vue3中封装API请求

《一文详解如何在Vue3中封装API请求》在现代前端开发中,API请求是不可避免的一部分,尤其是与后端交互时,下面我们来看看如何在Vue3项目中封装API请求,让你在实现功能时更加高效吧... 目录为什么要封装API请求1. vue 3项目结构2. 安装axIOS3. 创建API封装模块4. 封装API请求

史上最全nginx详细参数配置

《史上最全nginx详细参数配置》Nginx是一个轻量级高性能的HTTP和反向代理服务器,同时也是一个通用代理服务器(TCP/UDP/IMAP/POP3/SMTP),最初由俄罗斯人IgorSyso... 目录基本命令默认配置搭建站点根据文件类型设置过期时间禁止文件缓存防盗链静态文件压缩指定定错误页面跨域问题

SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法

《SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法》在SQLyog中执行存储过程时出现的前置缩进问题,实际上反映了SQLyog对SQL语句解析的一个特殊行为,本文给大家介绍了详... 目录问题根源正确写法示例永久解决方案为什么命令行不受影响?最佳实践建议问题根源SQLyog的语句分

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效