一种WindowsShellcode自动构建方法与流程

文档序号:11250624阅读:765来源:国知局
一种Windows Shellcode自动构建方法与流程

本发明涉及一种windowsshellcode自动构建方法,属于计算机与信息科学技术领域。



背景技术:

目前已有的windowsshellcode构建方法存在可移植性差、对大型shellcode兼容性较低、易用性差及自动化程度较低的缺点。为了解决现有shellcode构建方法存在的缺陷和局限性,同时提高shellcode构建的可移植性、可靠性、兼容性以及自动化程度。为此,本发明将提供一种windowsshellcode自动构建方法,能在不同应用场景下提供高效易用的接口,降低构建shellcode的工作量和难度。

目前存在shellcode构建框架主要有writewithc、metasploitframework及shellforge以以为代表的几种典型的相关框架:

writewithc:writewithc框架的缺陷是只能在windowsx86下编写与生成shellcode,且提取生成shellcode的形式单一,没有shellcode编码与测试的功能。并且,通过计算函数偏移、大量shellcode代码运行时,编译器在自动优化shellcode会出现崩溃现象,健壮性低。

metasploitframework:metasploitframework内置的payload及encoder,构建shellcode只能使用payload和encoder,不能自定义不同功能的shellcode,存在较大的局限性。

kmsrussian:kmsrussian构建框架,其构建的原理与shellcodetemplate中c方式类似。都支持virtualstudio编译环境,能够直接对源代码调试,能够在windowsx64下编写与生成shellcode。但在计算函数偏移、shellcode提取,及x64、x86下开发都需要使用不同的环境,易用性低。同时没有shellcode编码与测试功能。

shellforge:虽然shellforge经过改良,已经升级到shellforgeg3,但仅能支持linux、unix、macos系统,且不支持其它环境。

综上所述,现有的技术是使用c/c++语言编写shellcode,但c/c++程序语言需要高度依赖编译环境构建shellcode,生成的shellcode易用性较低。通过对当前常用方法和技术的分析,目前已存在的shellcode构建系统及构建方法都存在可移植性差、对大型shellcode兼容性低、易用性较差的缺点。所以本发明提出一种windowsshellcode自动构建方法。



技术实现要素:

本发明的目的是为各种应用平台下的windowsshellcode构建提供兼容性高的易用接口,不借助其他工具(如kmsrussian)能够自动化构建shellcode。其中每个自步骤都能独立完成任务,能够自动化的构建大型功能性shellcode,提高shellcode构建的可靠性自动化程度、以及兼容性。能够在不同系统内高效的完成构建shellcode的任务。

本发明的设计原理为:

本发明根据shellcode的构建过程依次划分为框架预设、shellcode编写、调试与生成、提取与测试,以及编码与优化五个步骤。首先编写shellcode时,调用hash值生成和函数地址获取接口,利用编译器和调试器,通过设置属性选项等操作来生成shellcode,并直接对源代码调试;然后根据不同类型的文件(pe类型文件和其他类型文件)使用对应的方法提取shellcode;完成后测试shellcode正确性。最后使用多个自主研发的编码器对不同环境的shellcode进行编码、加密、去除坏字符等,最终根据需求,将不同格式的shellcode导出并保存,便于测试人员使用。

本发明的技术方案是通过如下步骤实现的:

步骤1,框架预设实现hash值计算、对齐堆栈接口和函数地址获取接口三个子接口供编写shellcode时调用。

步骤2,调试与生成主要利用编译器和调试器,构造稳定的编程环境、通过设置生成属性及编译属性选项来完成shellcode生成,并对源代码进行调试。

步骤3,提取与测试主要根据不同类型的文件(pe类型文件和其他类型文件)使用对应的方法提取shellcode;完成后测试shellcode可用性。

步骤4,用多个自主研发的编码器对不同环境的shellcode进行编码、加密、去除坏字符等,最终根据需求,将不同格式的shellcode导出并保存,便于测试人员使用。

有益效果

相比于其它不同框架在构建大型windowsshellcode的方法,本发明可以同时支持多个系统平台,其他构建系统只支持单一系统平台,具有较好的易用性、兼容性。

相比于其他构建框架生成的shellcodewindows的方法,本发明能够自动化的生成有效的shellcode,具有较高的可靠性。而其他构建框架生成运行大量的shellcode时,则会出现奔溃现象,不能正常运行。

附图说明

图1为本发明的原理图;

图2为具体实施方式中框架预设原理图;

图3为具体实施方式中原型系统功能结构图;

图4为具体实施方式中原型系统主程序流程图;

图5为具体实施方式中获取函数地址流程示意图;

图6为具体实施方式中shellcodewindows编码工作流程图。

具体实施方式

为了更好的说明本发明的目的和优点,下面结合附图和实施例对本发明方法的实施方式做进一步详细说明。

具体流程为:

步骤1,首先为shellcode编写者提供了获取函数地址、计算hash值接口、对齐堆栈接口、对齐堆栈接口以及预定义shellcode编程环境。

步骤1.1,获取接口主要通过匹配动态索引模块基址,将基址内的函数列表导出,再根据需求获取所需要的函数地址。

步骤1.2,通过普遍的hash位移算法实现计算hash值接口,并判断函数地址获取接口中的hash算法与对应接口中的hash位移算法是否相匹配。

步骤1.3,为确保支持其它环境架构,对齐堆栈接口采用预定义的生成方法,运行shellcode之前先执行对齐堆栈预定义代码。

步骤2,输入程序,将高级语言的程序转换为字节码。

步骤2.1,依靠编译器进行shellcode生成。

步骤2.2,利用调试器的集成开发环境,设置编译生成选项及debug模式,使用调试器进行c语言源代码调试。

步骤3,自动构建方法利用编译生成的shellcode的可执行程序,提取出实际的shellcode测试其有效性。同时,在分析漏洞攻击代码时,对进一步提取出来的shellcode进行分析。

步骤3.1,根据pe文件格式、指定的文件偏移获得code段中的shellcode。

步骤3.2,修改shellcode内存属性,通过改变程序执行流程到shellcode处执行,测试shellcode的有效性,并生成有效的shellcode。

步骤4,对shellcode进行多种格式的编码,将shellcode编码应用在不同环境中。

步骤4.1,对shellcode编码进行去除坏字符(\x00、\x20等)、多态shellcode编码、字母加数字shellcode编码等操作。

步骤4.2,对shellcode进行解析输出,输出成不同格式的shellcode,并将shellcode编码应用在不同环境中。

测试结果

总体来说,实验验证了这种windowsshellcode自动构建系统的有效性,且框架兼容x86、x64平台,具有兼容性好的特点。同时,在shellcode的构建过程中,除shellcode编写外人工参与较少,不需要另外借助其他工具,自动化程度较高。

以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1