基于API Hook的Stealth Loader局部堆问题解决
2021-02-27徐晓亭
现代计算机 2021年35期
徐晓亭
(四川大学网络空间安全学院,成都 610207)
0 引言
鉴于当今恶意代码爆炸性增长趋势,国外安全厂商如卡巴斯基、VirusTotal等,和国内安全厂商如腾讯、微步等均推出了自动化判别未知恶意代码系统。API调用序列无疑是判别未知程序有无恶意行为的关键信息,其记录的完整与否直接影响判定结果。
Windows API可分为用户层和内核层,一个用户层API的调用将需要多个内核层API的配合才能完成,因而用户层API可以提供更加抽象的语义信息,相应的动态检测误报率和漏报率会更低。为了绕过动态检测,攻击者使用了API混淆技术来干扰用户层行为信息收集过程。
API混淆技术指在进行静态或动态分析恶意代码时,获取API地址对应的名称失败,从而可以隐藏它的真实意图,增加分析难度。Kawakoya等人[1]提出最新的 API混淆方案 Stealth Loader是该方向的最新成果,可击败大多数静态和动态反混淆技术。但本身也存在多种缺陷,如ntdll模块初始化、多个DLL之间局部堆共享、消息回调函数注册失败等。程斌林等人[2]提出的BinUnpack属于自动化脱壳方向的最新成果,可以检测到Stealth Loader,跟踪记录加壳后的程序调用的API,实现反混淆。
本文聚焦堆共享问题,依靠API Hook的原理解决此问题,使得其支持更加广泛的内存管理函数。将基于空闲链表的内存管理系统嵌入Stealth Loader中,删除加壳后程序的IAT,成功逃脱Bi⁃nUnpack的检测。
1 相关工作
1.1 API反混淆技术原理
根据上述对API混淆的定义,与之相对的反混淆就是将API地址与名称重新建立连接。现有的反混淆技术大多都是基于以下两个条件:……p>
登录APP查看全文
