hacktricks/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md

66 lines
5.8 KiB
Markdown

{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Manual **De-obfuscation Techniques**
U oblasti **bezbednosti softvera**, proces pretvaranja zamagljenog koda u razumljiv, poznat kao **de-obfuscation**, je ključan. Ovaj vodič istražuje različite strategije za de-obfuscation, fokusirajući se na tehnike statičke analize i prepoznavanje obrazaca zamagljivanja. Pored toga, uvodi vežbu za praktičnu primenu i predlaže dodatne resurse za one koji su zainteresovani za istraživanje naprednijih tema.
### **Strategies for Static De-obfuscation**
Kada se radi sa **obfuscated code**, može se primeniti nekoliko strategija u zavisnosti od prirode zamagljivanja:
- **DEX bytecode (Java)**: Jedan efikasan pristup uključuje identifikaciju metoda de-obfuscation aplikacije, a zatim repliciranje ovih metoda u Java datoteci. Ova datoteka se izvršava kako bi se obrnulo zamagljivanje na ciljnim elementima.
- **Java and Native Code**: Druga metoda je prevođenje algoritma de-obfuscation u skriptni jezik poput Pythona. Ova strategija naglašava da primarni cilj nije potpuno razumevanje algoritma, već njegovo efikasno izvršavanje.
### **Identifying Obfuscation**
Prepoznavanje zamagljenog koda je prvi korak u procesu de-obfuscation. Ključni indikatori uključuju:
- **odsustvo ili premeštanje stringova** u Javi i Androidu, što može sugerisati zamagljivanje stringova.
- **prisutnost binarnih datoteka** u direktorijumu resursa ili pozivi na `DexClassLoader`, što ukazuje na raspakivanje koda i dinamičko učitavanje.
- Korišćenje **native biblioteka zajedno sa neidentifikovanim JNI funkcijama**, što ukazuje na potencijalno zamagljivanje native metoda.
## **Dynamic Analysis in De-obfuscation**
Izvršavanjem koda u kontrolisanom okruženju, dinamička analiza **omogućava posmatranje kako se zamagljeni kod ponaša u realnom vremenu**. Ova metoda je posebno efikasna u otkrivanju unutrašnjih mehanizama složenih obrazaca zamagljivanja koji su dizajnirani da sakriju pravu nameru koda.
### **Applications of Dynamic Analysis**
- **Runtime Decryption**: Mnoge tehnike zamagljivanja uključuju enkripciju stringova ili kodnih segmenata koji se dekriptuju samo u vreme izvršavanja. Kroz dinamičku analizu, ovi enkriptovani elementi mogu se uhvatiti u trenutku dekripcije, otkrivajući njihov pravi oblik.
- **Identifying Obfuscation Techniques**: Praćenjem ponašanja aplikacije, dinamička analiza može pomoći u identifikaciji specifičnih tehnika zamagljivanja koje se koriste, kao što su virtualizacija koda, pakovanje ili dinamičko generisanje koda.
- **Uncovering Hidden Functionality**: Zamagljeni kod može sadržati skrivene funkcionalnosti koje nisu očigledne samo kroz statičku analizu. Dinamička analiza omogućava posmatranje svih putanja koda, uključujući one koje se izvršavaju uslovno, kako bi se otkrile takve skrivene funkcionalnosti.
## References and Further Reading
* [https://maddiestone.github.io/AndroidAppRE/obfuscation.html](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)
* BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” \[[video](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
* Ova prezentacija se bavi obrnuto inženjeringom jedne od najkompleksnijih anti-analitičkih native biblioteka koje sam video da se koriste u Android aplikaciji. Pokriva uglavnom tehnike zamagljivanja u native kodu.
* REcon 2019: “The Path to the Payload: Android Edition” \[[video](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
* Ova prezentacija diskutuje o nizu tehnika zamagljivanja, isključivo u Java kodu, koje je Android botnet koristio da sakrije svoje ponašanje.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}