Manual DeObfuscation
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
In die wêreld van sagteware sekuriteit, is die proses om obscured kode verstaanbaar te maak, bekend as de-obfuscation, van kardinale belang. Hierdie gids ondersoek verskeie strategieë vir de-obfuscation, met fokus op statiese analise tegnieke en die herkenning van obfuscation patrone. Daarbenewens stel dit 'n oefening voor vir praktiese toepassing en stel verdere hulpbronne voor vir diegene wat belangstel om meer gevorderde onderwerpe te verken.
Wanneer daar met obfuscated kode gewerk word, kan verskeie strategieë toegepas word, afhangende van die aard van die obfuscation:
DEX bytecode (Java): Een effektiewe benadering behels die identifisering van die aansoek se de-obfuscation metodes, en dan die replisering van hierdie metodes in 'n Java-lêer. Hierdie lêer word uitgevoer om die obfuscation op die geteikende elemente om te keer.
Java en Native Code: 'n Ander metode is om die de-obfuscation algoritme in 'n skriptaal soos Python te vertaal. Hierdie strategie beklemtoon dat die primêre doel nie is om die algoritme ten volle te verstaan nie, maar om dit effektief uit te voer.
Die herkenning van obfuscated kode is die eerste stap in die de-obfuscation proses. Sleutel aanwysers sluit in:
Die afwesigheid of vermenging van strings in Java en Android, wat kan dui op string obfuscation.
Die teenwoordigheid van binêre lêers in die batesgids of oproepe na DexClassLoader
, wat dui op kode unpacking en dinamiese laai.
Die gebruik van native biblioteke saam met onidentifiseerbare JNI funksies, wat moontlike obfuscation van native metodes aandui.
Deur die kode in 'n beheerde omgewing uit te voer, laat dinamiese analise die waarneming van hoe die obfuscated kode in werklike tyd optree toe. Hierdie metode is veral effektief om die innerlike werking van komplekse obfuscation patrone wat ontwerp is om die werklike bedoeling van die kode te verberg, te onthul.
Runtime Decryption: Baie obfuscation tegnieke behels die enkripsie van strings of kode segmente wat slegs tydens runtime gedekript word. Deur dinamiese analise kan hierdie geënkripteerde elemente op die oomblik van dekripsie vasgevang word, wat hul werklike vorm onthul.
Identifisering van Obfuscation Tegnieke: Deur die aansoek se gedrag te monitor, kan dinamiese analise help om spesifieke obfuscation tegnieke wat gebruik word, soos kode virtualisering, packers, of dinamiese kode generasie, te identifiseer.
Ontdek van Verborgen Funksionaliteit: Obfuscated kode kan verborgen funksionaliteite bevat wat nie deur statiese analise alleen duidelik is nie. Dinamiese analise laat die waarneming van alle kodepaaie toe, insluitend dié wat voorwaardelik uitgevoer word, om sulke verborgen funksionaliteite te ontdek.
BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” [video]
Hierdie praatjie bespreek die omgekeerde ingenieurswese van een van die mees komplekse anti-analise native biblioteke wat ek gesien het wat deur 'n Android aansoek gebruik word. Dit dek meestal obfuscation tegnieke in native kode.
REcon 2019: “The Path to the Payload: Android Edition” [video]
Hierdie praatjie bespreek 'n reeks obfuscation tegnieke, slegs in Java kode, wat 'n Android botnet gebruik het om sy gedrag te verberg.