Towards Paving the Way for Large-Scale Windows Malware Analysis: Generic Binary Unpacking with Orders-of-Magnitude Performance Boost

被引:47
作者
Cheng, Binlin [1 ,2 ]
Ming, Jiang [3 ]
Fu, Jianming [1 ]
Peng, Guojun [1 ]
Chen, Ting [4 ]
Zhang, Xiaosong [4 ]
Marion, Jean-Yves [5 ]
机构
[1] Wuhan Univ, Sch Cyber Sci & Engn, Wuhan 430072, Hubei, Peoples R China
[2] Hubei Normal Univ, Key Lab Aerosp Informat Secur & Trust Comp, Wuhan 430072, Hubei, Peoples R China
[3] Univ Texas Arlington, Arlington, TX 76019 USA
[4] Univ Elect Sci & Technol China, Chengdu 611731, Sichuan, Peoples R China
[5] Univ Lorraine, CNRS, LORIA, F-54000 Nancy, France
来源
PROCEEDINGS OF THE 2018 ACM SIGSAC CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY (CCS'18) | 2018年
基金
国家重点研发计划; 中国国家自然科学基金;
关键词
Windows Malware Analysis; Generic Binary Unpacking; Import Address Table; Kernel-level DLL Hijacking;
D O I
10.1145/3243734.3243771
中图分类号
TP301 [理论、方法];
学科分类号
081202 ;
摘要
Binary packing, encoding binary code prior to execution and decoding them at run time, is the most common obfuscation adopted by malware authors to camouflage malicious code. Especially, most packers recover the original code by going through a set of "written-then-executed" layers, which renders determining the end of the unpacking increasingly difficult. Many generic binary unpacking approaches have been proposed to extract packed binaries without the prior knowledge of packers. However, the high runtime overhead and lack of anti-analysis resistance have severely limited their adoptions. Over the past two decades, packed malware is always a veritable challenge to anti-malware landscape. This paper revisits the long-standing binary unpacking problem from a new angle: packers consistently obfuscate the standard use of API calls. Our in-depth study on an enormous variety of Windows malware packers at present leads to a common property: malware's Import Address Table (IAT), which acts as a lookup table for dynamically linked API calls, is typically erased by packers for further obfuscation; and then unpacking routine, like a custom dynamic loader, will reconstruct IAT before original code resumes execution. During a packed malware execution, if an API is invoked through looking up a rebuilt IAT, it indicates that the original payload has been restored. This insight motivates us to design an efficient unpacking approach, called BinUnpack. Compared to the previous methods that suffer from multiple "written-then-executed" unpacking layers, BinUnpack is free from tedious memory access monitoring, and therefore it introduces very small runtime overhead. To defeat a variety of ever-evolving evasion tricks, we design BinUnpack's API monitor module via a novel kernel-level DLL hijacking technique. We have evaluated BinUnpack's efficacy extensively with more than 238K packed malware and multiple Windows utilities. BinUnpack's success rate is significantly better than that of existing tools with several orders of magnitude performance boost. Our study demonstrates that BinUnpack can be applied to speeding up large-scale malware analysis.
引用
收藏
页码:395 / 411
页数:17
相关论文
共 102 条
[1]  
Aguila, 2016, SCYLL X64 X86 IMP RE
[2]  
[Anonymous], P 3 USENIX C OFF TEC
[3]  
[Anonymous], 2013, REFLECTIVE DLL INJEC
[4]  
[Anonymous], P 16 ACM C COMP COMM
[5]  
[Anonymous], 1999, 3 US WIND NT S
[6]  
[Anonymous], 2004, CODEBREAKERS J, V1
[7]  
[Anonymous], 2015, TOP MALICIOUSLY USED
[8]  
[Anonymous], P 23 ANN COMP SEC AP
[9]  
[Anonymous], 2005, P 2005 ACM SIGPLAN C
[10]  
[Anonymous], 2012, Practical malware analysis: the hands-on guide to dissecting malicious software