报告时间: 2018年6月14日9:30到11:00
报告地点:计算机大楼B404
报告人:明江博士
报告简介:二进制代码的加壳问题, 是指在程序运行前先对二进制代码进行压缩或者加密,然后在运行时,加过壳的程序先恢复出原始代码,之后再把控制权交还给原始代码。加壳已经成为病毒作者用来混淆病毒代码的最常用方法。特别是, 很多复杂的壳会通过一系列的“written-then-executed”的操作来恢复出原始代码, 这样使得确定脱壳何时结束变得越来越困难。虽然有很多通用脱壳技术被用来提取被加壳的二进制文件,但是运行时的庞大时间开销和缺乏抗分析能力严重的限制了通用脱壳技术的应用。在过去的二十年里,海量的加壳病毒一直是反病毒领域里一个巨大挑战。我们的研究从一个新的角度重新审视了长期存在的通用脱壳问题: 加壳程序通常会混淆标准的Windows API调用。我们对大量的Windows病毒加壳/脱壳程序进行了深入分析后发现了一个很普遍的特征: 软件的导入地址表 (IAT) 作为动态链接的 API 调用的查找表, 通常会被加壳程序删除以到达进一步混淆的目的; 然后脱壳程序会在原始代码恢复执行之前重建 IAT。在加过壳的恶意软件执行过程中, 如果正在调用 的API是通过查找已重建的 IAT进行寻址的, 则表明原始代码已经被还原。基于此,我们设计一种高效的脱壳方法, 称为 “BinUnpack”。与以前的通用脱壳方法相比, BinUnpack 没有繁琐的内存访问监控, 因此它只引入了非常小的运行时开销。并且为了绕过一系列的抗脱壳分析的方法,我们设计了一种新的内核级 DLL 劫持技术作为BinUnpack 的 API 监控模块。我们已经使用BinUnpack测试了超过238000的加壳病毒和多个 Windows程序。BinUnpack 的成功率明显优于现有的方法并且具有1-3倍的数量级的性能提升。
报告人简历:明江博士本科毕业于武汉大学信息安全专业, 2016年毕业于宾夕法尼亚州立大学信息科学与技术学院,现在是德克萨斯大学阿灵顿分校计算机科学与工程系 (University of Texas at Arlington) 的助理教授。他的研究重点是利用程序分析的方法论来解决软件安全问题,具体的研究方向包括污点分析、软件剽窃检测、二进制代码分析以及病毒分析。明江在计算机安全领域有着丰富的学术和行业经验。他的工作已经发表在系统安全和软件工程方向顶级会议 (IEEE S&P, Usenix Security, CCS, FSE, ASE)。
邀请人:傅建明,彭国军