hacktricks/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md
2024-02-10 13:03:23 +00:00

6.2 KiB

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Tecniche di De-obfuscation Manuale

Nel campo della sicurezza del software, il processo di rendere comprensibile il codice oscurato, noto come de-obfuscation, è cruciale. Questa guida approfondisce diverse strategie per la de-obfuscation, concentrandosi sulle tecniche di analisi statica e sul riconoscimento dei modelli di obfuscation. Inoltre, introduce un esercizio per l'applicazione pratica e suggerisce ulteriori risorse per coloro interessati ad esplorare argomenti più avanzati.

Strategie per la De-obfuscation Statica

Nel trattare con il codice oscurato, possono essere utilizzate diverse strategie a seconda della natura dell'obfuscation:

  • Bytecode DEX (Java): Un approccio efficace consiste nell'identificare i metodi di de-obfuscation dell'applicazione, quindi replicare questi metodi in un file Java. Questo file viene eseguito per invertire l'obfuscation sugli elementi mirati.
  • Java e Codice Nativo: Un altro metodo consiste nel tradurre l'algoritmo di de-obfuscation in un linguaggio di scripting come Python. Questa strategia sottolinea che l'obiettivo principale non è comprendere completamente l'algoritmo, ma eseguirlo in modo efficace.

Riconoscimento dell'Obfuscation

Il riconoscimento del codice obfuscato è il primo passo nel processo di de-obfuscation. Gli indicatori chiave includono:

  • L'assenza o la confusione delle stringhe in Java e Android, che possono suggerire l'obfuscation delle stringhe.
  • La presenza di file binari nella directory delle risorse o chiamate a DexClassLoader, che suggeriscono il decompressione del codice e il caricamento dinamico.
  • L'uso di librerie native insieme a funzioni JNI non identificabili, che indicano un'eventuale obfuscation dei metodi nativi.

Analisi Dinamica nella De-obfuscation

Eseguendo il codice in un ambiente controllato, l'analisi dinamica consente di osservare come il codice obfuscato si comporta in tempo reale. Questo metodo è particolarmente efficace nel rivelare il funzionamento interno di modelli di obfuscation complessi progettati per nascondere la vera intenzione del codice.

Applicazioni dell'Analisi Dinamica

  • Decrittazione in Tempo di Esecuzione: Molte tecniche di obfuscation prevedono la crittografia di stringhe o segmenti di codice che vengono decrittati solo durante l'esecuzione. Attraverso l'analisi dinamica, questi elementi crittografati possono essere catturati nel momento della decrittazione, rivelando la loro vera forma.
  • Identificazione delle Tecniche di Obfuscation: Monitorando il comportamento dell'applicazione, l'analisi dinamica può aiutare a identificare specifiche tecniche di obfuscation utilizzate, come la virtualizzazione del codice, i packer o la generazione dinamica del codice.
  • Scoperta di Funzionalità Nascoste: Il codice obfuscato può contenere funzionalità nascoste che non sono evidenti solo attraverso l'analisi statica. L'analisi dinamica consente di osservare tutti i percorsi del codice, inclusi quelli eseguiti condizionalmente, per scoprire tali funzionalità nascoste.

Riferimenti e Ulteriori Letture

  • https://maddiestone.github.io/AndroidAppRE/obfuscation.html
  • BlackHat USA 2018: "Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library" [video]
  • Questa presentazione illustra l'ingegneria inversa di una delle librerie native anti-analisi più complesse che ho visto utilizzate da un'applicazione Android. Copre principalmente le tecniche di obfuscation nel codice nativo.
  • REcon 2019: "The Path to the Payload: Android Edition" [video]
  • Questa presentazione discute una serie di tecniche di obfuscation, esclusivamente nel codice Java, che un botnet Android stava utilizzando per nascondere il suo comportamento.
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: