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

5.9 KiB

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

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:

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
  • BlackHat USA 2018: “Desempacotando o Empacotador: Engenharia Reversa de uma Biblioteca Anti-Análise Android” [vídeo]
  • 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]
  • 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.
Aprenda hacking em AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks: