CN112632536A - 基于pe文件改造的内存加载方法 - Google Patents

基于pe文件改造的内存加载方法 Download PDF

Info

Publication number
CN112632536A
CN112632536A CN202011528824.8A CN202011528824A CN112632536A CN 112632536 A CN112632536 A CN 112632536A CN 202011528824 A CN202011528824 A CN 202011528824A CN 112632536 A CN112632536 A CN 112632536A
Authority
CN
China
Prior art keywords
file
loader
host
target
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011528824.8A
Other languages
English (en)
Other versions
CN112632536B (zh
Inventor
张磊
王劭华
刘亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan University
Original Assignee
Sichuan University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sichuan University filed Critical Sichuan University
Priority to CN202011528824.8A priority Critical patent/CN112632536B/zh
Publication of CN112632536A publication Critical patent/CN112632536A/zh
Application granted granted Critical
Publication of CN112632536B publication Critical patent/CN112632536B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了基于PE文件改造的内存加载方法,包括压缩目标PE文件;开发PE加载器;将压缩后的目标PE文件和PE加载器拼接后加密,并将加密后的数据编码成图片作为资源插入宿主PE文件;开发代码加载器,用于提取位图资源、解密并执行PE加载器,并将PE加载器插入宿主PE文件的代码段;对宿主PE文件OEP附近的控制流进行劫持得到执行权,释放最终的宿主PE文件并运行。本发明对宿主PE文件进行改造,将目标PE文件压缩,并与PE加载器拼接、加密后编码成图片资源插入宿主PE文件,后由代码加载器对资源进行提取、解密和执行,并通过入口点模糊、反沙箱检测等技术提升绕过检测机制的能力。

Description

基于PE文件改造的内存加载方法
技术领域
本发明涉及网络安全技术领域,具体的说,是一种基于PE文件改造的内存加载方法。
背景技术
随着计算机、互联网技术的飞速发展,信息在当今社会成为一种重要的资源。而即使是最先进的系统也可能受到恶意代码的攻击,恶意软件在目标系统中持续的时间越长,它收集的信息就越多,对目标造成的危害和损失就越大。内存加载就是恶意软件实现隐蔽性的关键技术之一。与传统的恶意软件加载技术不同,使用内存加载的恶意软件不必驻留在硬盘上,而是利用一些合法的、受信任的进程提供的条件或系统组件来运行自身以躲避检测。它们的隐蔽特性是对恶意代码分析人员的巨大挑战。由于内存具有易失性,计算机重启后恶意代码执行痕迹就不复存在,导致对其恶意行为进行取证比较困难。执行恶意功能的代码只存在于内存中,其呈现出的隐蔽性强、潜伏周期久、危害性大等特点,已对信息安全构成巨大的威胁。现有检测机制能发现大部分已知恶意代码技术,但不能应对新的、未知的威胁。因此,研发一种新的可以绕过现有检测机制的内存加载方法,对于增强现有安全机制的恶意代码检测能力和保护重要信息系统基础设施具有重要的实际应用价值。
发明内容
本发明的目的在于提供一种基于PE文件改造的内存加载方法,用于缓解现有检测机制不能应对未知内存加载方法的问题,为增强现有恶意代码检测机制和机器学习模型提供参考依据。
本发明通过下述技术方案解决上述问题:
一种基于PE文件改造的内存加载方法,包括:
步骤S1:压缩目标PE(Portable Executable)文件;
步骤S2:以Shellcode形式开发PE加载器,PE加载器用于执行解压目标PE文件、PE文件内存展开、基址重定位和IAT修复等功能;
步骤S3:将压缩后的目标PE文件和PE加载器拼接后加密,并将加密后的数据编码成图片;
步骤S4:将图片作为资源插入宿主PE文件;
步骤S5:以Shellcode形式开发代码加载器,用于提取位图资源、解密并执行PE加载器,并将PE加载器插入宿主PE文件的代码段;
步骤S6:对宿主PE文件程序的入口点OEP附近的控制流进行劫持得到执行权,释放最终的宿主PE文件,运行最终的宿主PE文件即可内存加载目标程序。
本发明提出一种基于PE文件改造的内存加载方法。通过模拟Windows的PE加载器,设计实现内存加载执行PE文件的基本功能,并将主要功能代码编写为Shellcode,利用图片隐写技术将Shellcode编码成PE文件的图片资源,并使用入口点模糊、反沙箱等技术提升其绕过检测机制的能力,其中入口点模糊是在不改变宿主文件入口点特征的情况下跳转执行代码加载器的代码;反沙箱具体实现可以是为代码加载器设置静默时长,但不限于此。
所述步骤S1中采用LZMA算法对读取的目标PE文件进行压缩。
所述PE加载器和代码加载器以Shellcode形式开发。为提升Shellcode开发的效率,本发明使用C语言配合微软SDK提供的各种头文件中的结构体定义进行开发。开发步骤包括(1)API函数地址获取、(2)常规C语言开发以及(3)Shellcode提取。其中(1)API地址获取的具体过程是:计算需要调用的API函数名称的哈希值HASH1,接着通过PEB枚举当前进程空间中的用户模块列表并遍历各个模块的导出表,同时对遍历到的导出API函数用同样的方法计算哈希值HASH2,若HASH1和HASH2匹配,则HASH2对应的导出API函数地址即为需要调用的API函数地址。值得注意的是,这里的哈希值计算方法不唯一;(2)常规C语言开发指的是在上一步获取了所需API函数地址之后,就可以用地址来调用API,与C语言函数调用无异。为了下一步提取Shellcode方便,将相关C语言代码写进预设名称的函数中,本发明实现时将相关代码写入函数Shellcode(),但不限于此。利用Visual Studio的函数顺序设置,将Shellcode代码紧密排列。值得注意的是,由于Shellcode开发时,PE加载器和代码加载器的参数未知,所以在Shellcode()起始部分添加获取外部参数的代码。C语言代码写好后编译生成包含所需Shellcode的二进制可执行文件;(3)Shellcode的提取方法是在上一步生成包含所需Shellcode的二进制可执行文件中,提取出预设的函数部分的二进制数据写入单独的二进制文件,即为所需的Shellcode。
提取包含PE加载器主要功能逻辑的shellcode的.bin文件之后和外部参数、压缩的目标PE文件拼装成最终的PE加载器。同样,将外部参数、包含代码加载器主要功能逻辑的shellcode二进制文件拼装得到最终的代码加载器。
所述步骤S6中采用HOOK技术对程序的入口点OEP附近的控制流进行劫持得到执行权,使用入口点模糊提升绕过检测机制的能力。
本发明与现有技术相比,具有以下优点及有益效果:
本发明对宿主PE文件进行改造,将目标PE文件压缩,并与Shellcode形式开发的PE加载器拼接、加密后编码成图片资源插入宿主PE文件,后由Shellcode形式开发的代码加载器对资源进行提取、解密和执行,并通过代码混淆、反沙箱检测等技术提升绕过检测机制的能力。
附图说明
图1为本发明中对宿主PE文件进行改造的流程图;
图2为本发明中PE加载器的实现流程图;
图3为本发明中代码加载器的实现流程图;
图4为本发明中最后释放的宿主PE文件的执行流程图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例:
本发明提出一种基于PE文件改造的内存加载方法,可内存加载目标PE文件,绕过部分安全产品的检测。如图1所示,改造宿主文件的流程:首先将目标文件和宿主文件读入内存,再对两者进行初始化检查,这一步主要是检查两者是否均为PE文件;接着使用LZMA算法对目标PE文件进行压缩;然后将PE加载器的数据即Shellcode读入内存,并对PARAM_PE_LOADER结构进行填充,这里的PARAM_PE_LOADER结构为Shellcode形式的PE加载器提供外部参数,参数包括①压缩后目标程序的大小、②目标程序原始大小、③PE加载器总大小以及其他参数,其中①②指导目标程序的解压缩、其他参数保证PE加载器的正常运行;接下来拼装PE加载器,整个PE加载器包含PARAM_PE_LOADER结构、Shellcode形式的PE加载器二进制数据以及压缩,目标文件;然后将整个PE加载器加密,并伪装成.bmp格式的文件,这里伪装成.bmp格式是考虑了改造后文件的大小问题,此步骤也可更换使用更精妙的隐写技巧,只要保证后续能够提取并解压目标文件即可;再将.bmp文作为宿主文件的位图资源插入;下一步读取Shellcode形式的代码加载器数据,并填充PARAM_CODE_LOADER结构,这里的PARAM_CODE_LOADER结构为Shellcode形式的代码加载器提供外部参数,参数包括①PE加载器的总大小、②PE加载器的解密密钥、③静默时间、④代码加载器总大小以及其他参数,其中①②指导PE加载器的解密和运行、③用于反虚拟机、其他参数保证代码加载器的正常运行;接下来拼装代码加载器,整个代码加载器包含PARAM_CODE_LOADER结构、Shellcode形式的代码加载器二进制数据以及加密后的PE加载器;然后将代码加载器写入宿主文件的代码段;再对宿主文件的TLS表进行处理,目的是使改造后PE文件执行顺序与正常PE文件无异,即先执行TLS;接下来是在适当的位置设置HOOK,跳转到代码加载器,这里的适当位置指的是不破坏宿主文件入口点的特征;最后修复宿主PE文件的校验和,使其能够正常运行,并释放最终生成的改造后的PE文件。
PE加载器的实现流程如图2所示,执行首部jmp,实现跳转;而后获取Shellcode外部参数PARAM_PE_LOADER指导解压目标PE文件;获取后续操作所需API地址以便后续操作能够正常运行;然后通过先解压目标PE文件,对其进行内存展开、基址重定位、IAT修复、内存属性设置等步骤将目标PE文件在内存中转化成可执行的状态。
代码加载器实现流程如图3所示,执行首部jmp,实现跳转,获取Shellcode外部参数PARAM_CODE_LOADER指导解密PE加载器,获取API地址,提取伪装成图片的PE记载器,解密PE加载器,将控制流转移到PE加载器。
宿主PE文件的执行流程如图4所示,①运行宿主PE文件后到达OEP(程序的入口点);②由于在OEP附近设置了HOOK来劫持执行流,不久后就跳转到代码加载器;③执行代码加载器,提取位图资源并解密释放PE加载器;④跳转并内存执行PE加载器;⑤内存加载执行目标程序。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。

Claims (4)

1.一种基于PE文件改造的内存加载方法,其特征在于,包括:
步骤S1:压缩目标PE文件;
步骤S2:开发PE加载器,PE加载器用于解压目标PE文件、PE文件内存展开、基址重定位和IAT修复;
步骤S3:将压缩后的目标PE文件和PE加载器拼接后加密,并将加密后的数据编码成图片;
步骤S4:将图片作为资源插入宿主PE文件;
步骤S5:开发代码加载器,用于提取位图资源、解密并执行PE加载器,并将PE加载器插入宿主PE文件的代码段;
步骤S6:对宿主PE文件OEP附近的控制流进行劫持得到执行权,释放最终的宿主PE文件并运行。
2.根据权利要求1所述的基于PE文件改造的内存加载方法,其特征在于,所述步骤S1中采用LZMA算法对读取的目标PE文件进行压缩。
3.根据权利要求1所述的基于PE文件改造的内存加载方法,其特征在于,所述PE加载器和代码加载器以Shellcode形式开发。
4.根据权利要求1所述的基于PE文件改造的内存加载方法,其特征在于,所述步骤S6中采用HOOK技术对OEP附近的控制流进行劫持得到执行权。
CN202011528824.8A 2020-12-22 2020-12-22 基于pe文件改造的内存加载方法 Active CN112632536B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011528824.8A CN112632536B (zh) 2020-12-22 2020-12-22 基于pe文件改造的内存加载方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011528824.8A CN112632536B (zh) 2020-12-22 2020-12-22 基于pe文件改造的内存加载方法

Publications (2)

Publication Number Publication Date
CN112632536A true CN112632536A (zh) 2021-04-09
CN112632536B CN112632536B (zh) 2023-03-21

Family

ID=75320929

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011528824.8A Active CN112632536B (zh) 2020-12-22 2020-12-22 基于pe文件改造的内存加载方法

Country Status (1)

Country Link
CN (1) CN112632536B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590220A (zh) * 2021-08-02 2021-11-02 上海米哈游璃月科技有限公司 动作资源配置信息的检测方法、装置、电子设备及介质
CN116881869A (zh) * 2023-09-07 2023-10-13 麒麟软件有限公司 一种Linux系统上可执行程序的加密保护方法及系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090280124A1 (en) * 2003-04-07 2009-11-12 Hera Biomedical Inc. Methods for the Diagnosis and Treatment of Preeclampsia
CN101964040A (zh) * 2010-09-10 2011-02-02 西安理工大学 一种基于PE Loader的软件加壳保护方法
CN103678692A (zh) * 2013-12-26 2014-03-26 北京奇虎科技有限公司 一种下载文件的安全扫描方法及装置
CN104820612A (zh) * 2015-05-22 2015-08-05 网宿科技股份有限公司 一种可执行文件的内存执行方法
CN105512548A (zh) * 2015-12-02 2016-04-20 湘潭大学 基于隐藏可执行镜像并注入dll保护镜像代码的方法
CN108038376A (zh) * 2017-12-21 2018-05-15 中国人民解放军战略支援部队信息工程大学 基于混合分析的加壳程序通用脱壳方法及装置
CN109344577A (zh) * 2018-09-25 2019-02-15 四川大学 一种art下使用自修改技术进行软件保护的方法
CN111563259A (zh) * 2020-07-15 2020-08-21 北京升鑫网络科技有限公司 一种傀儡进程检测方法、装置、可读存储介质及计算设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090280124A1 (en) * 2003-04-07 2009-11-12 Hera Biomedical Inc. Methods for the Diagnosis and Treatment of Preeclampsia
CN101964040A (zh) * 2010-09-10 2011-02-02 西安理工大学 一种基于PE Loader的软件加壳保护方法
CN103678692A (zh) * 2013-12-26 2014-03-26 北京奇虎科技有限公司 一种下载文件的安全扫描方法及装置
CN104820612A (zh) * 2015-05-22 2015-08-05 网宿科技股份有限公司 一种可执行文件的内存执行方法
CN105512548A (zh) * 2015-12-02 2016-04-20 湘潭大学 基于隐藏可执行镜像并注入dll保护镜像代码的方法
CN108038376A (zh) * 2017-12-21 2018-05-15 中国人民解放军战略支援部队信息工程大学 基于混合分析的加壳程序通用脱壳方法及装置
CN109344577A (zh) * 2018-09-25 2019-02-15 四川大学 一种art下使用自修改技术进行软件保护的方法
CN111563259A (zh) * 2020-07-15 2020-08-21 北京升鑫网络科技有限公司 一种傀儡进程检测方法、装置、可读存储介质及计算设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JIA0 LONG—LONG等: "PE文件加壳技术研究与实现" *
任海翔等: "软件安全保护:加壳与脱壳" *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590220A (zh) * 2021-08-02 2021-11-02 上海米哈游璃月科技有限公司 动作资源配置信息的检测方法、装置、电子设备及介质
CN116881869A (zh) * 2023-09-07 2023-10-13 麒麟软件有限公司 一种Linux系统上可执行程序的加密保护方法及系统
CN116881869B (zh) * 2023-09-07 2023-12-26 麒麟软件有限公司 一种Linux系统上可执行程序的加密保护方法及系统

Also Published As

Publication number Publication date
CN112632536B (zh) 2023-03-21

Similar Documents

Publication Publication Date Title
KR101518420B1 (ko) 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법
US10586026B2 (en) Simple obfuscation of text data in binary files
US20120317421A1 (en) Fingerprinting Executable Code
CN110929234B (zh) 一种基于代码虚拟化的Python程序加密保护系统与方法
CN112632536B (zh) 基于pe文件改造的内存加载方法
CN106203006A (zh) 基于dex与so文件动态执行的Android应用加固方法
CN107291485B (zh) 动态链接库的加固方法、运行方法、加固装置和安全系统
CN110825363B (zh) 智能合约获取方法、装置、电子设备及存储介质
CN107273723B (zh) 一种基于so文件加壳的Android平台应用软件保护方法
CN107077540B (zh) 用于提供基于云的应用安全服务的方法和系统
Aronson et al. Towards an engineering approach to file carver construction
CN112269970A (zh) 一种脚本加密方法、装置、服务器及存储介质
CN109241707A (zh) 应用程序的混淆方法、装置和服务器
CN104915240B (zh) 一种atm设备软件升级的方法
CN113741954A (zh) 系统软件生成方法、装置、电子设备及存储介质
TW201804349A (zh) 隨選碼解密
CN107169370A (zh) 可执行文件的加密方法及加密装置
CN109002710B (zh) 一种检测方法、装置及计算机可读存储介质
KR101645412B1 (ko) 악성파일진단장치 및 악성파일진단장치의 진단 방법
KR102203200B1 (ko) 역난독화 장치 및 방법
CN107239703B (zh) 一种动态链接库缺失的可执行程序的动态分析方法
JP2021005375A (ja) 難読化解除方法および装置
Chen et al. Tackling android stego apps in the wild
KR101745821B1 (ko) 시큐어 부팅 방법 및 시스템
CN110135152A (zh) 应用程序攻击检测方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant