hacktricks/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md
2024-02-11 02:07:06 +00:00

6.1 KiB

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Handleiding De-obfuscation-tegnieke

In die domein van sagteware-sekuriteit is die proses om versluierde kode verstaanbaar te maak, bekend as de-obfuscation, van kritieke belang. Hierdie gids ondersoek verskeie strategieë vir de-obfuscation, met die klem op statiese analise-tegnieke en die herkenning van versluieringspatrone. Daarbenewens bied dit 'n oefening vir praktiese toepassing en stel dit verdere hulpbronne voor vir diegene wat belangstel om meer gevorderde onderwerpe te verken.

Strategieë vir Statische De-obfuscation

Wanneer dit kom by versluierde kode, kan verskeie strategieë gebruik word, afhangende van die aard van die versluiering:

  • DEX-bytekode (Java): Een effektiewe benadering behels die identifisering van die toepassing se de-obfuscation-metodes, gevolg deur die replicering van hierdie metodes in 'n Java-lêer. Hierdie lêer word uitgevoer om die versluiering op die geteikende elemente om te keer.
  • Java en Inheemse Kode: 'n Ander metode is om die de-obfuscation-algoritme te vertaal na 'n skripsietaal soos Python. Hierdie strategie beklemtoon dat die primêre doel nie is om die algoritme ten volle te verstaan nie, maar om dit doeltreffend uit te voer.

Identifisering van Versluiering

Die herkenning van versluierde kode is die eerste stap in die de-obfuscation-proses. Sleutelindikators sluit in:

  • Die afwesigheid of vermenging van strings in Java en Android, wat moontlik dui op string-versluiering.
  • Die teenwoordigheid van binêre lêers in die bates-gids of oproepe na DexClassLoader, wat dui op kode-ontpakkings en dinamiese laai.
  • Die gebruik van inheemse biblioteke saam met onidentifiseerbare JNI-funksies, wat moontlike versluiering van inheemse metodes aandui.

Dinamiese Analise in De-obfuscation

Deur die kode in 'n beheerde omgewing uit te voer, maak dinamiese analise dit moontlik om die gedrag van die versluierde kode in werklike tyd waar te neem. Hierdie metode is veral doeltreffend om die innerlike werking van komplekse versluieringspatrone bloot te lê wat ontwerp is om die ware bedoeling van die kode te verberg.

Toepassings van Dinamiese Analise

  • Tydontsleuteling: Baie versluieringstegnieke behels die versleuteling van strings of kode-segmente wat slegs tydens uitvoering ontsluit word. Deur dinamiese analise kan hierdie versleutelde elemente vasgevang word op die oomblik van ontsluiting, wat hul ware vorm onthul.
  • Identifisering van Versluieringstegnieke: Deur die gedrag van die toepassing te monitor, kan dinamiese analise help om spesifieke versluieringstegnieke te identifiseer wat gebruik word, soos kode-virtualisering, pakkers of dinamiese kode-generering.
  • Blootstelling van Versteekte Funksionaliteit: Versluierde kode kan versteekte funksionaliteit bevat wat nie deur statiese analise alleen sigbaar is nie. Dinamiese analise maak dit moontlik om alle kodepaaie waar te neem, insluitend diegene wat kondisioneel uitgevoer word, om sulke versteekte funksionaliteit bloot te lê.

Verwysings en Verdere Leeswerk

  • https://maddiestone.github.io/AndroidAppRE/obfuscation.html
  • BlackHat USA 2018: "Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library" [video]
  • Hierdie praatjie gaan oor die omgekeerde ingenieurswese van een van die mees komplekse anti-analise inheemse biblioteke wat ek gesien het wat deur 'n Android-toepassing gebruik word. Dit dek hoofsaaklik versluieringstegnieke in inheemse kode.
  • REcon 2019: "The Path to the Payload: Android Edition" [video]
  • Hierdie praatjie bespreek 'n reeks versluieringstegnieke, uitsluitlik in Java-kode, wat deur 'n Android-botnet gebruik is om sy gedrag te verberg.
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: