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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
firmware-workshop — Nesta sessão de workshop, vamos extrair o firmware de um carregador de EV, mergulhar no firmware e, por fim, emulá-lo para que possamos interagir com os serviços em tempo real. | Kitploit
Ferramentas/GitHubGitHub/onekey-sec/firmware-workshop
Segurança de Sistemas EmbarcadosAnálise Dinâmica (Sandboxing)Segurança IoTEngenharia ReversaAnálise de BináriosAprendizado e EducaçãoAnálise de FirmwareLabs e Prática
GitHubonekey-sec/firmware-workshop

firmware-workshop

Nesta sessão de workshop, vamos extrair o firmware de um carregador de EV, mergulhar no firmware e, por fim, emulá-lo para que possamos interagir com os serviços em tempo real.

591322há 3 mesesRevisado pelo Kitploit

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

Extração, Exploração e Emulação Prática de Firmware

Junte-se a nós nesta demonstração prática do Unblob, o extrator de firmware flexível. Durante esta sessão de workshop, vamos extrair firmware de um carregador de veículos elétricos, explorar o firmware e, por fim, emulá-lo para interagirmos com os serviços em tempo real. Unblob funciona tanto com versões de firmware em hardware quanto com versões para download, por isso temos um ambiente rico em alvos. Não é necessária experiência prévia, esta sessão é adequada para todos os níveis de habilidade e estamos ansiosos para vê-lo lá.

Nosso alvo

Nosso alvo é um controlador de estação de carregamento para veículos elétricos da Phoenix Contact. Você pode encontrar mais detalhes sobre ele aqui.

CHARX control modular, controlador de carregamento AC, com sistema Linux embarcado, IEC 61851-1, modo de operação: Stand-Alone, Client, Server,

Interfaces:

  • Ethernet (2x)
  • Comunicação celular (4G/2G)
  • Barramento do sistema CHARX control modular
  • MICRO-USB tipo C

Protocolos de comunicação:

  • OCPP 1.6J
  • Modbus/TCP
  • MQTT

Dispositivos periféricos conectáveis:

  • Medidor de energia
  • RFID
  • Detecção de corrente residual DC
  • Montagem em trilho DIN

Pré-requisitos

Há algumas ferramentas de que precisamos neste workshop. Você pode instalá-las executando o script install-prerequisites assim:```sh ./install-prerequisites

## Obtendo o firmware

O firmware pode ser obtido no site do fornecedor. Existe um script chamado
`download-firmware` neste repositório que você usa para baixar o firmware
sem a necessidade de abrir um navegador.

Nosso foco hoje é no firmware fornecido pelo fornecedor, pois ele contém tudo
o que precisamos. Mas um fluxo de trabalho semelhante pode ser aplicado a um dump de memória extraído de
um dispositivo real. O interessante aqui é que podemos extrair, explorar e
emular sem nem precisar de um dispositivo real.

## Extração com Unblob

Vamos começar garantindo que todas as dependências estejam disponíveis:```
unblob --show-external-dependencies
The following executables found installed, which are needed by unblob:
    7z                          ✓
    debugfs                     ✓
    jefferson                   ✓
    lz4                         ✓
    lziprecover                 ✓
    lzop                        ✓
    sasquatch                   ✓
    sasquatch-v4be              ✓
    simg2img                    ✓
    ubireader_extract_files     ✓
    ubireader_extract_images    ✓
    unar                        ✓
    zstd                        ✓

Agora podemos extrair o firmware com o unblob:``` unblob CHARXSEC3XXXSoftwareBundleV190.raucb

A extração leva cerca de 3 minutos em um laptop razoável. Você deve ver uma barra de progresso avançando:

![unblob_progress](https://assets.kitploit.com/production/public/readmes/48963/9bdd3fefdf4e600ee070a461172a3ef07e482cde75b8e8a5d881021c7fa341e6.png)


Quando a extração for concluída, um diretório chamado
`CHARXSEC3XXXSoftwareBundleV190.raucb_extract` deve estar visível. Você pode
entrar nele e listar o conteúdo.

### Chunks, Chunks Desconhecidos

O Unblob funciona identificando chunks de dados dentro dos arquivos. Se um chunk for um
fluxo comprimido, ele é descomprimido. Se for um sistema de arquivos ou um arquivo, ele
é extraído. Se a extração ou descompressão foi bem-sucedida, o chunk
que foi gravado em disco é excluído para recuperar espaço.

Aqui, um chunk little-endian da versão 4 do SquashFS foi gravado em disco, extraído,
e excluído. Os arquivos (e, portanto, os diretórios de extração) são nomeados com
a nomenclatura `{start_offset}-{end_offset}.{type}`.

Podemos ver que 11KB de chunk "desconhecido" aparecem após o sistema de arquivos squashfs.```
./0-132173824.squashfs_v4_le_extract
./132173824-132184833.unknown

Você pode executar binwalk nele para ver o que ele contém:``` binwalk 132173824-132184833.unknown

DECIMAL HEXADECIMAL DESCRIPTION

0 0x0 Object signature in DER format (PKCS header length: 4, sequence length: 10997 58 0x3A Certificate in DER format (x509 v3), header length: 4, sequence length: 4372 4434 0x1152 Certificate in DER format (x509 v3), header length: 4, sequence length: 4387

Você pode verificar os certificados com openssl:```
dd if=132173824-132184833.unknown bs=1 skip=58 | openssl x509 -in /dev/stdin -inform der -noout -text
dd if=132173824-132184833.unknown bs=1 skip=4434 | openssl x509 -in /dev/stdin -inform der -noout -text

Isso significa que os firmwares provavelmente são assinados com a chave privada do fornecedor, para que os dispositivos possam garantir que os firmwares sejam autênticos.

Essa é uma das vantagens do unblob: transformar desconhecidos desconhecidos em desconhecidos conhecidos que podem ser investigados.

Sistemas de arquivos

Vamos ver o conteúdo do nosso sistema de arquivos squashfs:``` ls -al 0-132173824.squashfs_v4_le_extract total 460532 drwxrwxr-x 4 kali kali 4096 dec 5 09:51 . drwxrwxr-x 3 kali kali 4096 dec 5 09:51 .. -rw-rw-r-- 1 kali kali 20971520 sep 8 09:59 bootimg.vfat drwxrwxr-x 3 kali kali 4096 dec 5 09:51 bootimg.vfat_extract -rwxrwxr-x 1 kali kali 2654 sep 19 2022 hook -rw-rw-r-- 1 kali kali 442 sep 8 09:59 manifest.raucm -rw-rw-r-- 1 kali kali 450584576 sep 8 09:59 root.ext4 drwxrwxr-x 22 kali kali 4096 sep 8 09:57 root.ext4_extract

Podemos ver um manifesto em texto simples, um script de shell, um MBR e um sistema de arquivos EXT4:```
find -maxdepth 1 -type f -exec file {} \;
./manifest.raucm: ASCII text
./hook: a /usr/bin/env sh script, ASCII text executable
./bootimg.vfat: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, reserved sectors 4, root entries 512, sectors 40960 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 40, sectors/track 63, heads 255, hidden sectors 163158016, reserved 0x1, serial number 0xd09aad9c, label: "KERNEL     ", FAT (16 bit)
./root.ext4: Linux rev 1.0 ext4 filesystem data, UUID=8ed19606-02c4-42e7-9cfb-1a2839f93ec4 (extents) (large files) (huge files)

Ambos bootimg.vfat e root.ext4 foram processados e extraídos pelo unblob. A partição VFAT contém tudo relacionado a boot e sistema operacional (kernel Linux, DTB, TEE):``` oftree: Device Tree Blob version 17, size=27469, boot CPU=0, string block size=1657, DT structure block size=25756 tee.bin: data zImage: Linux kernel ARM boot executable zImage (little-endian) zImage-imx6ul-ksp0632.dtb: Device Tree Blob version 17, size=27469, boot CPU=0, string block size=1657, DT structure block size=25756

Você verá que o unblob é um pouco ganancioso e extrairá um arquivo ELF e um arquivo CPIO
do kernel Linux (`zImage`), que correspondem ao kernel mínimo e ao ramdisk.
Baixar ferramenta