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
Ferramentas/GitHubGitHub/ernos/browser-xpi-malware-scanner
Análise EstáticaAnálise de VulnerabilidadesAnálise de CódigoAnálise ForenseEsteganografiaAnálise de MalwarePapers e PesquisaAprendizado e Educação

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 →

Sobre

GitHub
ernos/browser-xpi-malware-scanner

browser-xpi-malware-scanner

Ver Repositório
8há 4 mesesAinda não revisado

Um scanner abrangente de malware para extensões de navegador (.xpi) que procura por muitos truques comuns de malware, como:, táticas de ofuscação de roubadores de credenciais, esteganografia, payloads base64, truques de zip, execução remota de código, truques poliglota, truques de metadados, na tentativa de fornecer ao analista informações sobre onde é necessária uma análise mais aprofundada.

Compartilhar

Analisador XPI — Scanner de Segurança para Extensões Firefox

Uma ferramenta de linha de comando que analisa arquivos de extensão do Firefox (.xpi) em busca de sinais de malware, ofuscação, payloads ocultos, esteganografia e outras técnicas usadas para inserir código malicioso sem ser detectado pelas equipes de revisão de extensões.

O Que Faz

extension-scanner.py abre uma extensão do Firefox e realiza uma bateria de verificações de segurança em todos os arquivos dentro dela. Em seguida, produz um relatório colorido com os achados classificados por gravidade.

Guias/Tutoriais sobre como usar este scanner para encontrar malware ao vivo na loja de extensões do Firefox/Mozilla e examiná-los mais a fundo

  • Malware Analysis: Using browser-xpi-malware-scanner.py to find malware in the wild
  • The Ad-Blocker That Steals Your Clicks: Inside "Supreme Adblocker for Youtube"
  • How I Built a Browser Extension Malware Scanner — And Used It to Expose a Malicious "YouTube Downloader"

Verificações Realizadas

Níveis de Gravidade

  • CRÍTICO — Quase certamente malicioso; requer investigação imediata
  • ALTO — Fortemente suspeito; merece revisão cuidadosa
  • MÉDIO — Potencialmente arriscado; revisar no contexto
  • BAIXO — Preocupação menor; informativo
  • INFO — Metadados (hash, tamanho do arquivo, etc.)

Instalação

Pacotes pré-requisitos

  • Python 3.10+ é necessário. python3.11, python3.12 ou python3.13
  • **python3-venv** - Necessário se usar ambientes virtuais

Usando ambientes virtuais:

root@kitploit:~
sudo apt install python3 python3-venv
git clone https://github.com/ernos/extension-scanner.git
cd extension-scanner

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Pacotes opcionais

  • **python3-numpy** - Recomendado para esteganografia, instalação em todo o sistema (caso contrário pip install -r requirements.txt)
  • pillow: Recomendado para esteganografia
  • numpy: Recomendado para esteganografia
    ```bash
    pip install pillow numpy
    #System-wide install on ubuntu:
    sudo apt install python3-pillow python3-numpy
root@kitploit:~
git clone https://github.com/ernos/extension-scanner.git
cd extension-scanner
chmod +x extension-scanner.py
mkdir -p ~/.local/share/bin
ln -s $PWD/extension-scanner.py ~/.local/share/bin/extension-scanner


# Required for LSB steganography analysis (optional but recommended)
pip install pillow numpy

# OPTION 1. Only for current user:
# Enable bash completions for simpler use (TAB for autocompleting commands)
mkdir -p ~/.local/share/bash-completion/completions
cp extension-scanner-completions ~/.local/share/bash-completion/completions
echo "source ~/.local/share/bash-completion/completions/extension-scanner-completions" >> ~/.bashrc

# OPTION 2. Enable completions globally for all users (Should be auto-sourced from your .bashrc)
cp extension-scanner-completions /usr/share/bash-completion/completions

Se Pillow/NumPy não estiverem instalados, a ferramenta ainda funciona — as verificações de LSB e entropia de pixel são simplesmente ignoradas e um aviso é exibido.


Uso

root@kitploit:~
usage: xpiscanner [-h] [--update-blocklist] [--min-severity {CRITICAL,HIGH,MEDIUM,LOW,INFO}] [--json] [--compact] [-v] [-m] [--scans CHECK [CHECK ...]]
                  [targets ...]

Firefox Extension Scanner - Scans XPI files for security risks and malware indicators

positional arguments:
  targets               One or more XPI files or directories containing XPIs to analyze

options:
  -h, --help            show this help message and exit
  --update-blocklist, --update, -u
                        Fetch fresh domain blocklists from URLhaus and Peter Lowe's list, merge with the bundled snapshot, and saves to
                        /home/peb/projects/Firefox-Extensions/extension-scanner/blocklist.json. Exits after updating.
  --min-severity {CRITICAL,HIGH,MEDIUM,LOW,INFO}
                        Minimum severity to display (CRITICAL, HIGH, MEDIUM, LOW, INFO; default: INFO)
  --json                Output results as JSON instead of formatted text
  --compact, -c         Print each finding on 1-2 lines instead of the default 3-line format
  -v, --verbose         Enable verbose output: show additional context for findings
  -m, --manifest        Show full extension manifest for each target
  --scans, -s CHECK [CHECK ...]
                        Limit analysis to specific check types. Choices: anti-analysis, api-abuse, credentials, cross-file,
                        file-meta, hidden-elements, obfuscation, payloads, permissions, polyglot, remote-code,
                        signatures, steganography, time-bomb, zip-tricks. Omit to run all checks (default).

    extension-scanner.py — Analyze Firefox (and other browsers) extension XPI files for security risks and malware indicators.

    Read README.md for information on how to interpret findings, limitations, and best practices for use.  
    This tool is intended for security researchers, analysts, and advanced users who want to perform a 
    comprehensive static analysis of browser extensions. It should work well for other browsers as well, 
    but this has only been tested on firefox.

Usage:
    python3 extension-scanner.py [OPTIONS] targets...

Targets can be individual .xpi files or directories containing .xpi files. Use glob patterns (e.g. *.xpi) for convenience.

Available check types:
    permissions               Dangerous/broad manifest permissions and CSP issues
    remote-code               Background pages or service workers loaded from remote URLs
    obfuscation               eval/atob/encoding tricks, suspicious URLs, high-entropy strings
    payloads                  Base64-encoded blobs decoded and scanned for executables/scripts
    steganography             PNG appended data (auto-decoded via base64/zlib/gzip), unknown chunks, LSB channel analysis
    credentials               Hardcoded API keys, tokens, passwords, private keys, IP addresses
    file-meta                 Magic bytes, double extensions, suspicious filenames, file entropy
    polyglot                  Files valid in two formats simultaneously (e.g. HTML+ZIP)
    zip-tricks                Path traversal, null bytes, duplicate entries, ZIP comments
    cross-file                HTML class tokens cross-referenced against JS localStorage keys
    signatures                Known strings from confirmed malicious extension families (qingcaila, YTMP4, etc.)
    api-abuse                 Browser API calls indicating data theft or exfiltration (cookies, tabs, history, keylogger, clipboard, executeScript)
    hidden-elements           Invisible iframes, zero-dimension element injection, tracking pixels (new Image().src)
    time-bomb                 Long-delay setTimeout, Date.now() gates, localStorage install-date checks, Math.random() gates
    anti-analysis             navigator.webdriver, zero-size window, bare debugger statement, performance.now() timing

Examples:
    python3 extension-scanner.py extension.xpi
    python3 extension-scanner.py *.xpi
    python3 extension-scanner.py /path/to/extensions/
    python3 extension-scanner.py a.xpi b.xpi --min-severity HIGH
    python3 extension-scanner.py ext.xpi --scans obfuscation payloads
    python3 extension-scanner.py ext.xpi --s steganography zip-tricks file-meta
    python3 extension-scanner.py ext.xpi --verbose
    python3 extension-scanner.py --update-blocklist
    python3 extension-scanner.py --manifest

Tips:
    - Make sure to source scanner-completions.sh from your .bashrc or .zshrc to enable tab completion for --scans categories and target file paths.
    - Use --min-severity to focus on the most critical findings first.
    - Use --scans to limit the analysis to specific categories of checks if you're looking for something specific or want to speed up the scan.
    - Review the full manifest with --manifest for context on permissions, content scripts, and other extension metadata that can help interpret findings.
    - Regularly update the blocklist with --update-blocklist to ensure the latest malicious domains are included in the checks.

Credits:
    Developed by Ernos @ https://www.yourdev.net
    Email: max at yourdev.net
    GitHub: https://www.github.com/ernos/extension-scanner

Opções



Lendo a Saída

root@kitploit:~
════════════════════════════════════════════════════════════════════════════
  XPI ANALYZER — example.xpi
════════════════════════════════════════════════════════════════════════════
  Overall verdict: HIGH RISK

  Findings: 1 CRITICAL  3 HIGH  2 MEDIUM  1 LOW

  ── CRITICAL ────────────────────────────────────────────────────────────
  [CRITICAL ] [JS_OBFUSCATION] content.js
           eval() call — can execute arbitrary code from strings
           Evidence: var x = eval(atob("dmFyIGE9MTs…"))

  ── HIGH ────────────────────────────────────────────────────────────────
  [HIGH     ] [PERMISSION] manifest.json
           Dangerous permission: 'nativeMessaging' — Can spawn native OS …
           Evidence: permissions: ['nativeMessaging', 'storage', '<all_urls>']
  …

Ao analisar múltiplos arquivos, uma tabela de comparação é exibida após os relatórios individuais, mostrando todas as extensões lado a lado.


Códigos de Saída

CódigoSignificado
0Nenhum achado CRÍTICO ou ALTO
1Pelo menos um achado ALTO
2Pelo menos um achado CRÍTICO

Isso torna simples o uso em pipelines de CI ou scripts shell:

root@kitploit:~
python3 extension-scanner.py extension.xpi --min-severity HIGH
if [ $? -eq 2 ]; then echo "CRITICAL issues found!"; fi

Limitações

  • Apenas análise estática. A ferramenta não executa nenhum código. Técnicas dinâmicas (payloads obtidos em tempo de execução, polimorfismo no servidor) não serão detectadas.
  • Heurísticas de esteganografia LSB produzem falsos positivos em algumas imagens naturalmente ruidosas ou fortemente comprimidas.
  • Padrões de ofuscação focam em técnicas comuns; empacotadores personalizados ou novos podem não disparar alertas.
  • Domínios na whitelist (APIs do Google, Mozilla, W3C) não são sinalizados nas verificações de URL. Extensões legítimas que chamam outras CDNs confiáveis podem aparecer como achados HIGH.
  • A ferramenta não envia arquivos para nenhum serviço externo. Toda a análise é local.

Autor

Maximilian Cornett

Contato

https://www.yourdev.net https://www.github.com/ernos

Licença

GNU General Public License - Esta ferramenta é destinada apenas a pesquisa de segurança e análise defensiva.

Baixar ferramenta
CategoriaO Que Procura
PermissõesPermissões perigosas ou excessivamente amplas (nativeMessaging, <all_urls>, debugger, desktopCapture, etc.)
Política de Segurança de Conteúdounsafe-inline, unsafe-eval, fontes de script remotas na CSP
Ofuscação de JavaScripteval(), atob(), abuso do construtor Function(), sequências de escape hex, remontagem split/join/reverse, literais de string codificados, setTimeout com argumentos de string
URLs SuspeitasDomínios externos codificados classificados como conhecido-ruim (acerto na blocklist → ALTO), desconhecido (não na whitelist → MÉDIO) ou conhecido-bom (na whitelist → suprimido). Execute --update-blocklist para atualizar a blocklist de domínios a partir de URLhaus e da lista de Peter Lowe.
Credenciais e SegredosChaves de API, tokens (AWS, GitHub, Slack, Google), senhas, chaves privadas e endereços IP codificados
Payloads Base64Decodifica blobs base64 incorporados e os escaneia em busca de executáveis, scripts e código de rede
Esteganografia PNGDetecta dados anexados após IEND do PNG e decodifica automaticamente o trailer (base64, zlib, gzip e combinações); os payloads decodificados são escaneados recursivamente em busca de ofuscação JS, credenciais e URLs suspeitas. Também detecta tipos de chunk desconhecidos, anomalias no canal LSB e entropia de pixel anormalmente alta
Metadados de ArquivoDetecção de bytes mágicos de executáveis (.exe, .elf, .dylib), extensões duplas (ex.: photo.png.js), nomes de arquivo suspeitos (keylog, miner, wallet)
Arquivos PoliglotasArquivos que são simultaneamente válidos em dois formatos (ex.: HTML + ZIP)
Truques ZIPEntradas de path traversal, bytes nulos em nomes de arquivo, entradas duplicadas que podem enganar parsers, comentários ZIP carregando payloads
Código RemotoPáginas de fundo ou service workers carregados de URLs remotas
Alta EntropiaArquivos ou literais de string com entropia suspeitamente alta (provavelmente payloads criptografados ou comprimidos)
Abuso de APIChamadas de API de extensão de navegador que indicam roubo de dados ou exfiltração: cookies.getAll({}), tabs.query({}), history.search, listeners de teclado, leituras de área de transferência, scripting.executeScript com uma função dinâmica. Escala para CRÍTICO quando uma chamada de coleta de dados é pareada com um envio de rede de saída no mesmo arquivo.
Elementos OcultosIframes invisíveis criados dinamicamente (display:none, dimensões zero) injetados no DOM — pings de afiliados silenciosos ou canais C2. Pixels de rastreamento via new Image().src apontando para URLs externas.
Bomba-RelógiosetTimeout/setInterval com atrasos ≥ 5 minutos; portas aritméticas Date.now(); verificações de data de instalação localStorage que ativam comportamento dias após a primeira execução; portas de limite Math.random() que disparam em apenas uma fração dos carregamentos de página.
Anti-AnáliseVerificações de navigator.webdriver; comparações de janela com largura/altura zero; instruções debugger simples; aritmética performance.now() usada para detecção de sandbox baseada em tempo.
FlagDescrição
--update-blocklistBusca listas de domínios atualizadas de URLhaus e da lista de servidores de anúncios/malware de Peter Lowe, mescla com o snapshot incluído e salva em blocklist.json ao lado do script. Sai após a atualização.
targetsUm ou mais arquivos .xpi ou diretórios
--min-severityFiltra a saída: CRITICAL, HIGH, MEDIUM, LOW, INFO (padrão: INFO)
--jsonEmite os achados como um documento JSON em vez do relatório legível
--verbose ou -vExibe o conteúdo de manifest.json e também inclui ~5 linhas de código ao redor do padrão suspeito encontrado
--checksEscaneia apenas estas categorias de verificação específicas (veja abaixo)
Categorias de verificação disponíveisDescrição das verificações na categoria
permissionsPermissões de manifesto perigosas/amplas e problemas de CSP
remote-codePáginas de fundo ou service workers carregados de URLs remotas
obfuscationTruques de eval/atob/codificação, URLs suspeitas, strings de alta entropia
payloadsBlobs codificados em Base64 decodificados e escaneados em busca de executáveis/scripts
steganographyDados anexados a PNG, chunks desconhecidos, análise de canal LSB
credentialsChaves de API, tokens, senhas, chaves privadas, endereços IP codificados
file-metaBytes mágicos, extensões duplas, nomes de arquivo suspeitos, entropia de arquivo
polyglotArquivos válidos em dois formatos simultaneamente (ex.: HTML+ZIP)
zip-tricksPath traversal, bytes nulos, entradas duplicadas, comentários ZIP
cross-fileTokens de classe HTML referenciados cruzadamente com chaves de localStorage JS
api-abuseChamadas de API do navegador que indicam roubo de dados ou exfiltração (cookies, tabs, history, teclado, área de transferência). CRÍTICO quando coleta + envio de rede aparecem no mesmo arquivo.
hidden-elementsInjeção de iframe invisível e pixels de rastreamento. ALTO quando iframe está oculto + anexado ao DOM.
time-bombsetTimeout com atraso longo, portas aritméticas Date.now(), data de instalação localStorage, limite Math.random().
anti-analysisnavigator.webdriver, janela de tamanho zero, instrução debugger simples, aritmética performance.now().