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

82 lines
5.9 KiB
Markdown

<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## Como Desofuscar
As estratégias de desofuscação dependem do método de ofuscação. Esta seção introduz técnicas de desofuscação estática, adequadas para análise estática ou reversa:
* Para bytecode DEX (Java), uma abordagem comum é identificar e replicar os métodos de desofuscação da aplicação em um arquivo Java, que é então executado contra os elementos ofuscados.
* Tanto para Java quanto para Código Nativo, outra técnica envolve traduzir o algoritmo de desofuscação para uma linguagem de script familiar como Python, enfatizando que entender o algoritmo não é tão crucial quanto ser capaz de executá-lo.
## Indicadores de Ofuscação
Reconhecer a ofuscação envolve identificar certos indicadores, com os seguintes exemplos fornecidos:
* Ausência de strings ou presença de strings embaralhadas em Java e Android, indicando ofuscação de strings.
* Existência de arquivos binários no diretório de ativos ou chamadas DexClassLoader, indicando possível desempacotamento e carregamento de código.
* Uso de bibliotecas nativas sem funções JNI identificáveis, sugerindo ofuscação de métodos nativos.
### Exercício de Desofuscação de Strings
Um exercício é fornecido para praticar a desofuscação de strings dentro de um contexto de análise estática. A tarefa envolve um arquivo de amostra com um digest SHA256 específico, exigindo que o analista descubra uma string Javascript ofuscada sem executar a aplicação dinamicamente.
A solução envolve um script Python que decifra a string codificada, revelando um script embutido originário de coinhive.com e iniciando um minerador.
### Recursos Adicionais
Mais insights sobre desofuscação de aplicativos Android, especialmente focando em técnicas avançadas de ofuscação, podem ser explorados nas palestras do BlackHat USA 2018 e REcon 2019, cada uma cobrindo aspectos únicos da ofuscação em aplicativos Android.
Exercício de https://maddiestone.github.io/AndroidAppRE/obfuscation.html:
```python
enc_str = "773032205849207A3831326F1351202E3B306B7D1E5A3B33252B382454173735266C3D3B53163735222D393B475C7A37222D7F38421B6A66643032205849206477303220584920643D2223725C503A3F39636C725F5C237A082C383C7950223F65023F3D5F4039353E3079755F5F666E1134141F5C4C64377A1B671F565A1B2C7F7B101F42700D1F39331717161574213F2B2337505D27606B712C7B0A543D342E317F214558262E636A6A6E1E4A37282233256C"
length = len(enc_str)
count = 0
dec_str = [0] * (length/2)
while (count < length):
dec_str[count/2] = (int(enc_str[count], 16) << 4) + int(enc_str[count + 1], 16) & 0xFF
count += 2
print dec_str
key = [75, 67, 81, 82, 49, 57, 84, 90]
enc_str = dec_str
count = 0
length = len(enc_str)
while (count < length):
dec_str[count] = chr(enc_str[count] ^ key[count % len(key)])
count += 1
print ''.join(dec_str)
```
# Referências e Leitura Adicional
* [https://maddiestone.github.io/AndroidAppRE/obfuscation.html](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)
* BlackHat USA 2018: “Desempacotando o Empacotador: Engenharia Reversa de uma Biblioteca Anti-Análise Android” \[[vídeo](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
* Esta palestra aborda a engenharia reversa de uma das bibliotecas nativas anti-análise mais complexas que já vi utilizadas por um aplicativo Android. Ela cobre principalmente técnicas de ofuscação em código nativo.
* REcon 2019: “O Caminho para o Payload: Edição Android” \[[vídeo](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
* Esta palestra discute uma série de técnicas de ofuscação, exclusivamente em código Java, que um botnet Android estava usando para esconder seu comportamento.
<details>
<summary><strong>Aprenda hacking em AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>