tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Ręczne Techniki Deobfuskacji
W dziedzinie bezpieczeństwa oprogramowania, proces przekształcania zatartego kodu w zrozumiały, znany jako deobfuskacja, jest kluczowy. Ten przewodnik zagłębia się w różne strategie deobfuskacji, 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.
Strategie Deobfuskacji Statycznej
Podczas pracy z zatartym kodem, można zastosować kilka strategii w zależności od charakteru obfuskacji:
- Bytecode DEX (Java): Jednym z efektywnych podejść jest zidentyfikowanie metod deobfuskacji aplikacji, a następnie odtworzenie tych metod w pliku Java. Plik ten jest wykonywany, aby odwrócić obfuskację na docelowych elementach.
- Kod Java i natywny: Inną metodą jest przetłumaczenie algorytmu deobfuskacji 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.
Identyfikacja Obfuskacji
Rozpoznanie zatartego kodu to pierwszy krok w procesie deobfuskacji. 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 do
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 Deobfuskacji
Wykonując kod 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.
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ą oczywiste 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
- https://maddiestone.github.io/AndroidAppRE/obfuscation.html
- BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” [video]
- Ta prezentacja omawia inżynierię wsteczną jednej z najbardziej złożonych bibliotek natywnych antyanalizacyjnych, jakie widziałem w użyciu przez aplikację Android. Dotyczy głównie technik obfuskacji w kodzie natywnym.
- REcon 2019: “The Path to the Payload: Android Edition” [video]
- Ta prezentacja omawia szereg technik obfuskacji, wyłącznie w kodzie Java, które botnet Androida używał do ukrywania swojego zachowania.
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.