Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
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
CVE-2023-27216 — Abordagem de iniciante para hacking de firmware | Kitploit
Ferramentas/GitHubGitHub/hoangrealer/cve-2023-27216
Segurança de Sistemas EmbarcadosSegurança IoTAnálise de VulnerabilidadesEngenharia ReversaDepuradoresHacking de HardwareAprendizado e EducaçãoAnálise de FirmwareExploração de Binários
GitHubhoangrealer/cve-2023-27216

CVE-2023-27216

Abordagem de iniciante para hacking de firmware

317há 2 anosAinda não revisado

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
Ver Repositório

CVE-2023-27216 - Roteador D-Link

Este documento é o relato da minha experiência pessoal como novato em engenharia reversa e exploração de firmware. Firmware onde??

Escopo

Para demonstração, analisaremos e reproduziremos a CVE-2023-27216.

  • Número do CVE: CVE-2023-27216
  • Descrição da vulnerabilidade: Um problema encontrado no D-Link DSL-3782 v.1.03 permite que usuários autenticados remotos executem código arbitrário - como root - por meio da página de configurações de rede.
  • Modelo do equipamento: D-Link DSL-3782
  • Versão do firmware: DSL-3782_A1_EU_1.01
  • Site oficial do fabricante: http://www.dlink.com.cn/
  • Endereço do firmware: https://media.dlink.eu/support/products/dsl/dsl-3782/driver_software/dsl-3782_a1_eu_1.01_07282016.zip

Tarefas

Para explorar qualquer firmware, existem os seguintes passos:

  • Obter os firmwares. Existem 2 maneiras: extraí-los diretamente do hardware (câmera, roteador, impressora, etc.) ou você pode obtê-los no site do fabricante. Isso será discutido em outro documento.
  • Analisar o firmware e encontrar vulnerabilidades
  • Emular o firmware.
  • Compilar gdbserver estaticamente para depurar.

Análise do firmware

Normalmente, um arquivo binário de firmware contém um bootloader (uBoot), um arquivo de kernel, um cabeçalho de kernel para o bootloader (uImage), um sistema de arquivos compactado (geralmente no formato SquashFS), uma tabela CRC/MD5 (para verificar a integridade dos arquivos) e outros arquivos diversos.

Primeiro, encontre uma maneira de analisar o firmware, faça algumas pesquisas e reúna alguns recursos:

  • Binwalk para analisar e extrair o firmware
  • Como emular: https://boschko.ca/qemu-emulating-firmware/ Binwalk verifica assinatura

Extrair arquivos importantes

Extraia o firmware usando o binwalk: binwalk -Me DSL-3782_A1_EU_1.01_07282016.bin Extração com Binwalk

Obtive a pasta squashfs-root extraída e alguns arquivos estranhos. Arquivos extraídos

Bônus: Se você não vir a pasta squashfs-root, use unsquashfs em qualquer arquivo ".squashfs" que encontrar. Eles são como arquivos zip 😅.

Analisar como o firmware funciona

Verifique a arquitetura e o endianness do firmware. Isso pode ser verificado analisando alguns binários extraídos do firmware. Verifique a arquitetura e o firmware: file <binary> Arquitetura do firmware

Aqui podemos quase confirmar que o firmware roda na arquitetura MIPS de 32 bits MSB. O motivo do "quase" é que alguns firmwares podem rodar em uma arquitetura diferente com MIPS Compatible, como Lexra.

Verifiquei a pasta squashfs-root e encontrei alguns arquivos interessantes:

  • usr/etc/init.d/rcS => Este é o script que executa quando o firmware inicia
  • usr/etc/passwd => Este é o arquivo que contém as informações dos usuários
  • userfs/romfile.cfg => Existe uma credencial admin:admin

Verifiquei o arquivo rcS e encontrei um código interessante:

echo "admin:$1$$iC.dUsGpxNNJGeOm1dFio/:0:0:root:/:/bin/sh" > /usr/etc/passwd
  • Este código é usado para gravar as informações do usuário no arquivo passwd
  • Executa um servidor web chamado boa server. O Boa é um servidor web antigo, usado principalmente em dispositivos embarcados como roteadores nos anos 2000. No entanto, o servidor Boa interrompeu seu desenvolvimento em 2005! Mesmo estando morto há quase 20 anos, ele ainda vive até hoje graças ao nosso fornecedor. Inicialização do Boa

Emulação completa do firmware

Recomendo usar um sistema operacional baseado em Debian para o processo de emulação, como Ubuntu ou Kali. Existe outro sistema operacional focado em hacking de firmware chamado AttifyOS. Neste documento, usei Kali Linux. Começando pelo processo de emulação, existem 2 ferramentas:

  • QEMU => Não reinvente a roda 🙏 🛐
  • FAT - Firmware-analysis-toolkit => Funciona, você pode ler o código-fonte para saber o que ele faz.

Persista

Vamos ver como usar o FAT para emular completamente um firmware. Primeiro, clonamos o repositório do GitHub para sua máquina Kali. E passamos pelo processo de configuração. Você também precisa alterar o arquivo fat.config, caso contrário não funcionará.

git clone https://github.com/attify/firmware-analysis-toolkit.git

cd firmware-analysis-toolkit

./setup.sh

vi fat.config # Modify to your sudo password.

Em seguida, copiamos o binário do firmware (o que baixamos do fabricante) para a pasta do FAT em nossa máquina Kali e o executamos.

./fat.py DSL-3782_A1_EU_1.01_07282016.bin

Nota: Durante o processo de configuração do FAT, podemos encontrar erros. Ele pode dizer que não há libmagic. Falha na execução do Fat

Basta executar

pip unistall python-magic
pip install python-magic

Isso deve resolver o seu problema; em seguida, executamos o comando de compilação novamente. Agora deve funcionar perfeitamente.

Execução do Fat bem-sucedida

Pressione Enter para executar. O processo de emulação deve funcionar bem, e você pode acessar http://192.168.1.1 (na máquina Kali) para verificar se funciona.

Página principal do roteador

Você também pode fazer login no console se tiver as credenciais. Aqui está admin:admin.

Login no console

Se você decidir desligar o firmware emulado, basta pressionar Ctrl+A X. Quando precisar executar novamente, não rode fat.py outra vez, pois o firmware já foi transformado em uma imagem. Você só precisa executar o script que já foi gerado.

cd firmadyne/scratch/<Image-ID>
./run.sh

Reexecutar a imagem

Depurador

Compile gdbserver para fins de depuração. Existem muitas maneiras de compilar gdbserver. Você também pode baixar um servidor compilado estaticamente. Há um repositório que armazena alguns binários compilados estaticamente. No entanto, prefiro compilar o gdbserver eu mesmo, pois os do repositório do GitHub são bastante antigos e podem apresentar problemas de compatibilidade.

Baixar ferramenta