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

36 lines
3.7 KiB
Markdown
Raw Normal View History

## Ręczne **Techniki De-obfuskacji**
2022-04-28 16:01:33 +00:00
W dziedzinie **bezpieczeństwa oprogramowania**, proces przekształcania zatartego kodu w zrozumiały, znany jako **de-obfuskacja**, jest kluczowy. Ten przewodnik zagłębia się w różne strategie de-obfuskacji, koncentrując się na technikach analizy statycznej i rozpoznawaniu wzorców obfuskacji. Dodatkowo wprowadza ćwiczenie do praktycznego zastosowania i sugeruje dalsze zasoby dla tych, którzy są zainteresowani zgłębianiem bardziej zaawansowanych tematów.
2022-04-28 16:01:33 +00:00
### **Strategie dla Statycznej De-obfuskacji**
2022-04-28 16:01:33 +00:00
Podczas pracy z **zatartym kodem**, można zastosować kilka strategii w zależności od charakteru obfuskacji:
2022-04-28 16:01:33 +00:00
- **Bytecode DEX (Java)**: Jednym z efektywnych podejść jest zidentyfikowanie metod de-obfuskacji aplikacji, a następnie odtworzenie tych metod w pliku Java. Plik ten jest wykonywany, aby odwrócić obfuskację na docelowych elementach.
- **Kod Java i Native**: Inną metodą jest przetłumaczenie algorytmu de-obfuskacji na język skryptowy, taki jak Python. Ta strategia podkreśla, że głównym celem nie jest pełne zrozumienie algorytmu, ale skuteczne jego wykonanie.
2022-04-28 16:01:33 +00:00
### **Identyfikacja Obfuskacji**
2022-04-28 16:01:33 +00:00
Rozpoznanie zatartego kodu to pierwszy krok w procesie de-obfuskacji. Kluczowe wskaźniki to:
- **brak lub zniekształcenie ciągów** w Java i Android, co może sugerować obfuskację ciągów.
- **obecność plików binarnych** w katalogu zasobów lub wywołania `DexClassLoader`, co sugeruje rozpakowywanie kodu i dynamiczne ładowanie.
- użycie **bibliotek natywnych obok nieidentyfikowalnych funkcji JNI**, co wskazuje na potencjalną obfuskację metod natywnych.
## **Analiza Dynamiczna w De-obfuskacji**
Poprzez wykonywanie kodu w kontrolowanym środowisku, analiza dynamiczna **umożliwia obserwację, jak zatarte kody zachowują się w czasie rzeczywistym**. Ta metoda jest szczególnie skuteczna w odkrywaniu wewnętrznych mechanizmów złożonych wzorców obfuskacji, które mają na celu ukrycie prawdziwego zamiaru kodu.
2024-02-11 01:46:25 +00:00
### **Zastosowania Analizy Dynamicznej**
- **Deszyfrowanie w czasie rzeczywistym**: Wiele technik obfuskacji polega na szyfrowaniu ciągów lub segmentów kodu, które są deszyfrowane tylko w czasie wykonywania. Dzięki analizie dynamicznej te zaszyfrowane elementy mogą być uchwycone w momencie deszyfrowania, ujawniając ich prawdziwą formę.
- **Identyfikacja Technik Obfuskacji**: Monitorując zachowanie aplikacji, analiza dynamiczna może pomóc zidentyfikować konkretne techniki obfuskacji, które są używane, takie jak wirtualizacja kodu, pakowanie lub dynamiczne generowanie kodu.
- **Odkrywanie Ukrytej Funkcjonalności**: Zatarte kody mogą zawierać ukryte funkcjonalności, które nie są widoczne tylko poprzez analizę statyczną. Analiza dynamiczna pozwala na obserwację wszystkich ścieżek kodu, w tym tych wykonywanych warunkowo, aby odkryć takie ukryte funkcjonalności.
## Odniesienia i Dalsza Lektura
2024-02-03 15:45:32 +01:00
* [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)]
* Ta prezentacja omawia inżynierię wsteczną jednej z najbardziej złożonych bibliotek natywnych antyanalizacyjnych, jakie widziałem w użyciu przez aplikację Android. Skupia się głównie na technikach obfuskacji w kodzie natywnym.
* 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)]
* Ta prezentacja omawia szereg technik obfuskacji, wyłącznie w kodzie Java, które botnet Androida używał do ukrywania swojego zachowania.