Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
workshop_firmware_reverse_engineering — Workshop on firmware reverse engineering | Kitploit
Ferramentas/GitHubGitHub/emproof-com/workshop_firmware_reverse_engineering
Embedded Systems SecurityStatic AnalysisReverse EngineeringMalware AnalysisHardware & IoT SecurityBinary AnalysisLearning & EducationFirmware AnalysisLabs & Practice

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHubemproof-com/workshop_firmware_reverse_engineering

workshop_firmware_reverse_engineering

Workshop on firmware reverse engineering

Ver Repositório
44355há 10 mesesRevisado pelo Kitploit

Workshop: Engenharia Reversa de Firmware

Este repositório contém slides e materiais práticos para o workshop da Emproof sobre engenharia reversa de firmware, apresentado no ScapyCon Automotive 2025. O workshop é direcionado a um público técnico com experiência mínima em segurança e ensina os fundamentos por meio de tarefas práticas e autocontidas. Os tópicos incluem

  • análise básica de arquivos/ELF;
  • cracking de software e keygenning;
  • descriptografia de strings e triagem de malware;
  • desempacotamento de firmware Linux embarcado;
  • análise bare-metal;
  • detecção de criptografia;
  • técnicas de ofuscação/antianálise e como contorná-las;

Se isso é do seu interesse, confira também a série de webinars técnicos da Emproof com exercícios adicionais e sessões gravadas.

O conteúdo do workshop foi projetado e organizado por Tim Blazytko, com apoio de Simran Kathpalia.

Configuração

Para configurar o ambiente, clone o repositório:

root@kitploit:~
git clone https://github.com/emproof-com/workshop_firmware_reverse_engineering
cd workshop_firmware_reverse_engineering

Para várias tarefas, precisamos de um ambiente de execução Linux AArch64. Fornecemos um contêiner Docker baseado no Kali Linux com ferramentas comuns (por exemplo, GNU Binutils, Binwalk) pré-instaladas. Isso simplifica o ambiente em Linux, Windows e macOS — independentemente da arquitetura da CPU do host. Para iniciar o contêiner e entrar no shell, execute:

root@kitploit:~
./docker_run.sh

Nota: A primeira execução pode demorar um pouco para construir a imagem.

Nota (arquitetura): O serviço Docker Compose define platform: "linux/arm64".
Em hosts x86_64 (Intel macOS/Windows/Linux), o Docker Desktop executará a imagem sob emulação, então a primeira construção e inicialização podem ser mais lentas — isso é esperado. Em hosts ARM64 nativos (Apple Silicon, servidores ARM), ele é executado nativamente e é mais rápido.

Nota: O contêiner Docker também pode executar binários ARMv7 (armhf). Instalamos o runtime armhf (dynamic loader + libs) na imagem e registramos manipuladores binfmt para aarch64 e arm através do script de inicialização.

Além disso, instale as seguintes ferramentas gráficas no seu host para tarefas interativas de engenharia reversa (elas não estão incluídas no contêiner):

  • Ghidra
  • Binary Ninja Free

Ambas as ferramentas estão disponíveis para Windows, Linux e macOS.

Nota: O Binary Ninja Free não suporta AArch64. Para análise AArch64, use Ghidra (ou uma versão licenciada do Binary Ninja). Portanto, vários laboratórios incluem um binário companheiro ARMv7 (*.armv7) especificamente para o Binary Ninja Free; eles também podem ser executados no mesmo contêiner.

Ordem das Tarefas

Cada tarefa é autocontida em tasks/<nome>/ e inclui:

  • samples/ — binários (e às vezes código-fonte) usados no exercício
  • task.md — a tarefa com instruções passo a passo e dicas

As tarefas podem ser realizadas de forma independente, mas fornecemos uma ordem recomendada (listada abaixo) que aumenta a dificuldade e introduz gradualmente novas técnicas. A maioria das amostras tem como alvo ARMv7 (Thumb/ARM32) ou AArch64; quando relevante, as anotações da tarefa indicam a arquitetura, as ferramentas necessárias e quaisquer necessidades especiais de tempo de execução.

  • tasks/hello_world: fundamentos de arquivos ELF e análise de metadados; primeiros passos no Ghidra / Binary Ninja.

  • tasks/license_check: extrair segredos codificados / desbloquear recursos; patching básico para contornar validações (cracking).

  • tasks/game: jogo simples de adivinhação de números; entender a lógica e quebrar o modo trial vs. completo.

  • tasks/keygenning_1: reverter uma validação de licença e escrever um keygen mínimo para gerar seriais válidos.

  • tasks/keygenning_2: uma tarefa de keygenning um pouco mais sofisticada (salts/keys, codificação hexadecimal).

  • tasks/string_encryption: binário com strings criptografadas (comum em malware); identificar o decriptador e recuperar strings estaticamente.

  • tasks/mirai: malware embarcado usando uma rotina de descriptografia de strings; navegar por uma base de código maior, identificar construções interessantes e lidar com strings ofuscadas.

  • tasks/embedded_linux_1: firmware Linux embarcado com sistema de arquivos; desempacotar, explorar e quebrar informações de login do Linux (estilo CTF).

  • tasks/embedded_linux_2: similar, mas encontrar e analisar um binário oculto que não deveria estar lá.

  • tasks/car_demo: análise de firmware bare-metal: identificar arquitetura, placa, mapa de memória, artefatos da toolchain; extrair credenciais Wi-Fi e endpoints de protocolo.

Licença

Salvo indicação em contrário, todos os materiais do workshop neste repositório estão licenciados sob a GNU General Public License, versão 2 (GPL-2.0). Consulte LICENSE para o texto completo.

Algumas amostras de terceiros / de fontes externas são excluídas da GPL e fornecidas apenas para análise/educação (sem redistribuição). Estas são:

  • tasks/mirai/samples/
  • tasks/embedded_linux_1/samples/
  • tasks/embedded_linux_2/samples/

Nota: Se um subdiretório incluir seu próprio arquivo de licença ou cabeçalho, essa licença terá precedência para o conteúdo desse subdiretório.

Baixar ferramenta
  • tasks/iot_diag: dump de firmware bare-metal de uma ferramenta de diagnóstico; recriar layouts de memória a partir da folha de dados e encontrar a senha para desbloquear o modo de diagnóstico.

  • tasks/crypto_detection: binário AArch64 realizando operações criptográficas com uma chave AES codificada; localizar a chamada EVP e rastrear chave/IV para decriptar sem o programa.

  • tasks/license_check_anti_patching: antipatching via soma de verificação de código; entender a proteção CRC e aprender maneiras de contorná-la.

  • tasks/fibonacci_obfuscation: implementações Fibonacci limpas vs. ofuscadas (switch flattening, computed goto, predicados opacos, ofuscação aritmética, pequena VM); entender técnicas e normalizá-las.