mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-21 02:23:30 +00:00
50 lines
5 KiB
Markdown
50 lines
5 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 **Técnicas de De-obfuscação**
|
|
|
|
No campo da **segurança de software**, o processo de tornar o código obscurecido compreensível, conhecido como **de-obfuscação**, é crucial. Este guia explora várias estratégias para de-obfuscação, focando em técnicas de análise estática e reconhecimento de padrões de ofuscação. Além disso, apresenta um exercício para aplicação prática e sugere recursos adicionais para aqueles interessados em explorar tópicos mais avançados.
|
|
|
|
### **Estratégias para De-obfuscação Estática**
|
|
|
|
Ao lidar com **código ofuscado**, várias estratégias podem ser empregadas dependendo da natureza da ofuscação:
|
|
|
|
- **Código bytecode DEX (Java)**: Uma abordagem eficaz envolve identificar os métodos de de-obfuscação do aplicativo e, em seguida, replicar esses métodos em um arquivo Java. Este arquivo é executado para reverter a ofuscação nos elementos alvo.
|
|
- **Código Java e Nativo**: Outro método é traduzir o algoritmo de de-obfuscação para uma linguagem de script como Python. Esta estratégia destaca que o objetivo principal não é entender completamente o algoritmo, mas executá-lo de forma eficaz.
|
|
|
|
### **Identificando Ofuscação**
|
|
|
|
Reconhecer código ofuscado é o primeiro passo no processo de de-obfuscação. Indicadores-chave incluem:
|
|
|
|
- A **ausência ou embaralhamento de strings** em Java e Android, o que pode sugerir ofuscação de strings.
|
|
- A **presença de arquivos binários** no diretório de assets ou chamadas para `DexClassLoader`, sugerindo desempacotamento de código e carregamento dinâmico.
|
|
- O uso de **bibliotecas nativas juntamente com funções JNI não identificáveis**, indicando potencial ofuscação de métodos nativos.
|
|
|
|
## **Análise Dinâmica na De-obfuscação**
|
|
|
|
Ao executar o código em um ambiente controlado, a análise dinâmica **permite a observação de como o código ofuscado se comporta em tempo real**. Este método é particularmente eficaz para descobrir o funcionamento interno de padrões de ofuscação complexos que são projetados para ocultar a verdadeira intenção do código.
|
|
|
|
### **Aplicações da Análise Dinâmica**
|
|
|
|
- **Descriptografia em Tempo de Execução**: Muitas técnicas de ofuscação envolvem a criptografia de strings ou segmentos de código que só são descriptografados em tempo de execução. Através da análise dinâmica, esses elementos criptografados podem ser capturados no momento da descriptografia, revelando sua verdadeira forma.
|
|
- **Identificando Técnicas de Ofuscação**: Ao monitorar o comportamento do aplicativo, a análise dinâmica pode ajudar a identificar técnicas específicas de ofuscação sendo utilizadas, como virtualização de código, empacotadores ou geração dinâmica de código.
|
|
- **Descobrindo Funcionalidades Ocultas**: O código ofuscado pode conter funcionalidades ocultas que não são aparentes apenas através da análise estática. A análise dinâmica permite a observação de todos os caminhos de código, incluindo aqueles executados condicionalmente, para descobrir tais funcionalidades ocultas.
|
|
|
|
## Referências e Leitura Adicional
|
|
* [https://maddiestone.github.io/AndroidAppRE/obfuscation.html](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)
|
|
* BlackHat USA 2018: “Desempacotando o Desempacotador: 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 usadas por um aplicativo Android. 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 ocultar seu comportamento.
|