Analysis of Virtual Machine based obfuscation
Analýza zatemnění programů založeného na virtuálních strojích
diploma thesis (DEFENDED)

View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/102504Identifiers
Study Information System: 202716
Collections
- Kvalifikační práce [11325]
Author
Advisor
Referee
Bálek, Martin
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Mathematics for Information Technologies
Department
Department of Algebra
Date of defense
18. 9. 2018
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
Keywords (Czech)
deobfuskace, virtuální stroje, wprotectKeywords (English)
deobfuscation, virtual machines, wprotectSoftwarové systémy mohou obsahovat citlivá data, která může být zapotřebí chránit. V momentě, kdy má analytik plný přístup k systému, je žádoucí, aby existovaly prostředky pro úpravu kódu, které by zvýšily jeho odolnost vůči reverznímu inženýrství při zachování funkcionality. Zatemnění strojového kódu řeší tento problém zesložitěním struktury programu, odstraněním obvyklých vzorů a různými abstrakcemi. Jedním takovým řešením je zatemňovací engine WProtect, který využívá virtuálního zásobníkového stroje s vlastními instrukcemi pro dosažení tohoto cíle. Tato práce se zaobírá analýzou WProtectu a jeho zatemňovacích algoritmů. Součástí analýzy je návrh obecného algoritmu pro extrakci kódu chráněného WProtectem a obecný framework pro statickou extrakci takového kódu. Tento framework je dostatečně konfigurovatelný, aby mohl podporovat různé konfigurace WProtectu. Zároveň je představeno několik vylepšení WProtectu jak v oblasti konfigurace, tak i designu. Tyto návrhy jsou cíleny především na odstranění zranitelností, které algoritmus pro extrakci kódu využívá. Několik návrhů taktéž cílí na ochranu proti statické analýze. 1
Software systems may contain sensitive data that should be protected. In a scenario, where an analyst has full access to the system, it may be desirable to transform the program to become harder to understand and reverse-engineer, while preserving the original functionality of the program. Machine code obfuscation tackles this problem by adding complexity to the pro- gram's control flow, a programming idiom removal, and various abstractions. Specifically, WProtect is an obfuscation engine that utilises a stack virtual ma- chine and its own instruction set to achieve these properties. In this thesis, I will analyse WProtect obfuscation engine, its obfuscation algo- rithms and present a generic approach to an extraction of a code protected by WProtect. Furthermore, I will design a generic framework for a static code ex- traction that is tweakable in order to support different WProtect configurations. Several improvements to WProtect, both in terms of configuration and design, will also be proposed. These proposals mostly intend to mitigate vulnerabilities that are exploited in the code extraction, however, several proposals shall also include improvements specifically targeting static analysis prevention. 1