Skip to content

druserx/exentero

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

exentero

ferramenta de análise estática de firmware ELF. fiz isso depois de passar horas olhando pra firmware de roteador que tinha senha hardcoded, sem PIE, sem stack canary, gets() em produção, chave privada RSA embutida direto no binário. literalmente sem vergonha nenhuma.

o nome é latim — exentero vem de "esvaziar as entranhas". parece adequado.


o que faz

  • identifica arquitetura (MIPS BE/LE, ARM, ARM64, x86, x86_64, PowerPC)
  • mapeia seções e símbolos do ELF
  • detecta funções perigosas (gets, strcpy, system, popen, ...)
  • procura por credenciais hardcoded no binário inteiro
  • acha chaves privadas PEM embutidas (RSA, EC, OpenSSH, PGP)
  • extrai URLs e endpoints suspeitos (update servers, telemetria, beacons)
  • verifica mitigações: PIE, RELRO, stack canary
  • detecta strings e símbolos de anti-debug (ptrace, /proc/self/status, ...)
  • exporta resultado em JSON

build

make

sem dependências externas. só libc padrão.


uso

./exentero firmware.bin
./exentero -v firmware.bin          # verboso: mostra seções e evidências
./exentero -v -o saida.json fw.elf  # salva JSON

exemplo de saída

[ EXENTERO v0.2.1 ]
════════════════════════════════════════════
  arquivo    : squashfs-root/usr/sbin/httpd
  tamanho    : 284672 bytes (278.0 KB)
  sha256     : 3a7f9c...
  formato    : ELF32 (big-endian)
  arch       : MIPS big-endian
  entry      : 0x403320
  stripped   : sim
  secoes     : 18
  simbolos   : 142

[ ACHADOS — 11 total ]
────────────────────────────────────────────
  [CRITICO ]  [funcao-perigosa ]  gets() importada — leitura sem limite, classico buffer overflow
  [CRITICO ]  [credencial      ]  senha hardcoded em 0x2f180
  [ALTO    ]  [funcao-perigosa ]  strcpy() importada — buffer overflow sem limite de tamanho
  [MEDIO   ]  [mitigacao       ]  binario sem PIE — ASLR ineficaz (EP: 0x403320)
  [MEDIO   ]  [mitigacao       ]  sem stack canary (__stack_chk_fail nao encontrado)
  ...

módulos

arquivo função
elf_parser.c parsing do cabeçalho ELF, seções, símbolos, suporte big/little endian
caçador.c todos os módulos de detecção
relatorio.c saída no terminal + exportação JSON

limitações

  • símbolos 64-bit ainda não implementados (ELF32 tem cobertura completa)
  • sem suporte a firmware compactado — extrai antes com binwalk
  • análise de SUID requer filesystem extraído

nao testei em tudo. se travar em algum binário esquisito abre uma issue.

About

analise estatica de firmware ELF — detecta funcoes perigosas, credenciais hardcoded, chaves privadas, ausencia de mitigacoes

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors