DEV Community

Pamie.
Pamie.

Posted on

19 6 5 5 6

Explorando abordagens de análise na Engenharia reversa:

A Engenharia reversa é crucial para diversas aplicações, desde a detecção e mitigação de malware até a melhoria da segurança de aplicações e sistemas. Se você é um entusiasta da tecnologia, sempre buscando entender melhor como os sistemas operam (ou falham), chega mais. Vamos desmistificar essas técnicas e ver como elas podem ser aplicadas na prática para aumentar nossa compreensão e proteção contra ameaças cibernéticas.
Esse método, envolve o estudo de um sistema para entender seu funcionamento interno, frequentemente sem acesso à sua documentação original. Dentro da engenharia reversa, existem várias abordagens de análise que ajudam a dissecar e compreender o comportamento de softwares e sistemas. Entre elas estão as análises black box, white box, gray box, análise dinâmica, análise estática e fuzzing.

Análise black box: O que está dentro da caixa?

É como tentar descobrir os segredos de uma caixa fechada. Você não tem ideia do que está dentro, então tudo o que pode fazer é manipular as entradas e observar as saídas.

  • Contexto: Teste de penetração externo

Imagine que você é contratado para testar a segurança de um site, mas não recebe nenhuma informação interna sobre ele. Você é um completo estranho tentando descobrir brechas. Esse é o cenário típico de um teste de penetração externo.

  • Ferramentas e metodologias

Burp suite e OWASP ZAP: Ótimas para testar a segurança de aplicações web.
Nmap: Essencial para mapear a rede e identificar portas abertas.

Você começa explorando a aplicação, tentando injetar comandos SQL aqui, explorando XSS ali, tudo sem nenhum conhecimento prévio do código ou da infraestrutura interna. O objetivo? Encontrar vulnerabilidades que um atacante real poderia explorar.

  • Resultados esperados

Ao final, você deve ter uma lista de vulnerabilidades que encontrou e recomendações de como corrigi-las. Tudo isso sem nunca ter visto uma linha de código do sistema!

  • Análise white box: Dentro da mente do criador

É o oposto da black box. Aqui, você tem acesso total ao código-fonte e à lógica interna do sistema. É como ler o diário secreto de um desenvolvedor.

  • Contexto prático: Revisão de código de segurança

Suponha que você trabalha em uma empresa de software que está prestes a lançar um novo produto. A segurança é prioridade máxima, então você realiza uma revisão completa do código-fonte.

  • Ferramentas e metodologias

SonarQube: Ferramenta para análise estática de código.
Checkmarx e Fortify: Excelentes para identificar vulnerabilidades de segurança.
Você analisa cada linha de código, procurando por buffer overflows, injeções SQL, e outras vulnerabilidades. Ferramentas automáticas ajudam a detectar problemas, mas o olhar humano é crucial para entender o contexto e a lógica do código.

  • Resultados esperados

O resultado é um código mais seguro, com vulnerabilidades corrigidas antes do lançamento. Você pode dormir tranquilo sabendo que fez tudo o que podia para proteger o software.

Análise gray box (que eu chamo de Hanna Montana): O melhor dos dois mundos

Combina elementos das abordagens de black e white box. Você tem algum conhecimento interno, mas não completo.

  • Contexto prático: teste de penetração interno

Você é contratado para testar a segurança de uma rede corporativa. Dessa vez, você tem acesso a algumas credenciais e documentos internos, mas não ao código completo.

  • Ferramentas e metodologias

Wireshark: Para monitoramento de rede.
Metasploit: Plataforma poderosíssima para testes de penetração.
Com esse conhecimento, você realiza ataques mais direcionados e eficientes, explorando vulnerabilidades que um atacante com acesso limitado interno poderia encontrar.

  • Resultados esperados

O resultado é um relatório detalhado com vulnerabilidades encontradas e recomendações de segurança, utilizando tanto seu conhecimento interno quanto técnicas externas.

  • Análise dinâmica: O show ao vivo

Envolve a execução do software para observar seu comportamento em tempo real. É como assistir a uma peça de teatro onde você pode interagir com os atores.

  • Contexto prático: Análise de malware

Você recebe um arquivo suspeito e precisa determinar se é malicioso. A análise dinâmica permite que você observe o comportamento do malware em um ambiente controlado.

  • Ferramentas e metodologias

Cuckoo sandbox: Para execução segura de arquivos suspeitos.
Process monitor e Sysinternals muite: Para monitorar o comportamento do sistema.
Você observa como o malware interage com o sistema, que chamadas de rede faz, e que arquivos modifica. É tipo um jogo estilo Sherlock Holmes onde você é o detetive e segue as pistas deixadas pelo software.

  • Resultados esperados

Ao final, você pode identificar atividades maliciosas e entender melhor o funcionamento interno do malware, ajudando a desenvolver defesas eficazes.

Análise estática: A arte de ler sem executar

Examina o código sem executá-lo. É como ler um livro para entender a história sem precisar assistir ao filme.

  • Contexto prático: Análise de vulnerabilidade de código

Você precisa garantir que seu código está livre de vulnerabilidades antes de uma atualização crítica.

  • Ferramentas e metodologias

Coverity e Flawfinder: Ferramentas para análise estática de código.
Você escaneia o código em busca de padrões de codificação inadequados e vulnerabilidades. Ferramentas automatizadas ajudam a identificar problemas, mas a interpretação humana é crucial para entender o contexto.

  • Resultados esperados

Um código mais seguro e confiável, pronto para ser lançado sem medo de vulnerabilidades escondidas.

Fuzzing: Testando os limites

Esse envolve enviar entradas malformadas ou aleatórias para um software para ver como ele responde. É como testar a resistência de um material até ele quebrar.

  • Contexto prático: teste de robustez de aplicação

Você quer garantir que sua aplicação web pode lidar com entradas inesperadas sem falhas.

  • Ferramentas e metodologias

AFL (american fuzzy lop) e Peach fuzzer: Ferramentas de fuzzing mais conhecidas.
Você configura o fuzzer para enviar uma variedade de entradas malformadas para sua aplicação e observa como ela responde. O objetivo é encontrar falhas e crashes que possam ser explorados.

  • Resultados esperados

Identificação de pontos fracos na aplicação que podem ser corrigidos antes que sejam explorados por atacantes.

Conclusão

Cada método tem seu lugar e propósito, dependendo do contexto e dos objetivos. Seja você um desenvolvedor, tester ou especialista em segurança, entender essas técnicas pode ajudar a criar sistemas mais robustos e seguros.

Image of AssemblyAI

Automatic Speech Recognition with AssemblyAI

Experience near-human accuracy, low-latency performance, and advanced Speech AI capabilities with AssemblyAI's Speech-to-Text API. Sign up today and get $50 in API credit. No credit card required.

Try the API

Top comments (2)

Collapse
 
lixeletto profile image
Camilo Micheletto

Muito foda! Eu já tinha ouvido falar desses conceitos mas ter um bom resumo sobre é ótimo. Como sempre consumi mas nunca me aprofundei, tem referências ou imagens de exemplo pra deixar mais claro pro leigo?

Collapse
 
nebulonix profile image
Nebulonix

Ótimo, parabéns! 👏🏻👏🏻
Mas porque chama grey box de Hannah Montana?

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

👋 Kindness is contagious

Immerse yourself in a wealth of knowledge with this piece, supported by the inclusive DEV Community—every developer, no matter where they are in their journey, is invited to contribute to our collective wisdom.

A simple “thank you” goes a long way—express your gratitude below in the comments!

Gathering insights enriches our journey on DEV and fortifies our community ties. Did you find this article valuable? Taking a moment to thank the author can have a significant impact.

Okay