Skip to content

devguilhrm/malware-analyzis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Static Malware Analyzer

Ferramenta de analise estatica de arquivos PE para estudos de Threat Intelligence, Malware Analysis e engenharia reversa defensiva.

O projeto foi implementado em Go e examina executaveis Windows sem executar nenhum byte do binario analisado.

Objetivo

O static-malware-analyzer ajuda a fazer triagem inicial de arquivos .exe, .dll e .sys, gerando indicadores tecnicos e um score de risco baseado em heuristicas defensivas.

Ele foi desenhado para ser simples de compilar, facil de auditar e util em laboratorio, estudos, portifolio e pipelines basicos de triagem.

Features

  • Parsing PE com debug/pe
  • Hashes MD5, SHA1 e SHA256
  • Metadados PE: arquitetura, machine type, subsystem, image base, entry point e timestamp de compilacao
  • Secoes com tamanho bruto, tamanho virtual, offset, flags e entropia
  • Deteccao de secoes suspeitas
  • Imports agrupados por DLL
  • Imports suspeitos mapeados para comportamentos
  • Import hash aproximado para clustering
  • Extracao de strings ASCII
  • Deteccao de URLs, PowerShell e termos comuns em ransom notes
  • Execucao de regras YARA
  • Fallback interno para regras YARA simples quando o binario yara nao esta instalado
  • Enriquecimento opcional com VirusTotal
  • Deteccao de overlay
  • Indicadores de packers, como UPX e secoes de alta entropia
  • Findings normalizados com severidade
  • Score de risco e verdict final
  • Relatorios JSON por amostra
  • Modo batch para diretorios
  • Exportacao CSV de resumo
  • Configuracao opcional via arquivo YAML simples

Tecnicas Detectadas

Comportamento Exemplo ATT&CK
Process Injection VirtualAllocEx, WriteProcessMemory, CreateRemoteThread T1055
Ransomware strings de resgate, CryptEncrypt, Bitcoin T1486
Keylogging SetWindowsHookEx, GetAsyncKeyState T1056
Anti Debug IsDebuggerPresent, NtQueryInformationProcess T1622
Persistencia CreateServiceA T1547
Beacon/C2 InternetOpenA, HttpSendRequestA, URLs T1071
Execucao CreateProcessA T1106

Requisitos

  • Go 1.26 ou superior
  • Opcional: yara instalado e disponivel no PATH
  • Opcional: chave da API do VirusTotal

O projeto nao depende de CGO e compila bem no Windows.

Build

Linux/macOS:

go build -o static-malware-analyzer ./cmd/analyzer

Windows PowerShell:

go build -o static-malware-analyzer.exe ./cmd/analyzer

Uso Basico

Analise de um arquivo:

.\static-malware-analyzer.exe .\samples\malware.exe

Definindo diretorio de regras e saida:

.\static-malware-analyzer.exe .\samples\malware.exe --rules .\rules --output .\output

Com VirusTotal:

.\static-malware-analyzer.exe .\samples\malware.exe --vt-key SUA_API_KEY

Modo batch em um diretorio:

.\static-malware-analyzer.exe .\samples --output .\output

Batch com CSV:

.\static-malware-analyzer.exe .\samples --output .\output --csv .\output\summary.csv

Usando config:

.\static-malware-analyzer.exe --config .\config.example.yml .\samples

Opcoes da CLI

Flag Descricao Padrao
--rules Diretorio com regras .yar ./rules
--output Diretorio dos relatorios JSON ./output
--vt-key API key do VirusTotal vazio
--min-string-len Tamanho minimo para strings ASCII 6
--csv Caminho opcional para resumo CSV vazio
--config Arquivo YAML simples de configuracao vazio

Configuracao

Exemplo:

rules_dir: ./rules
output_dir: ./output
min_string_len: 6
csv_path: ./output/summary.csv

# vt_key: SUA_API_KEY

Flags passadas pela CLI sobrescrevem valores do arquivo de configuracao.

Saida JSON

Cada amostra gera um relatorio em output/report_<sha256-prefix>.json.

Campos principais:

  • filename, path, size e analyzed_at
  • hashes
  • pe
  • strings
  • yara_matches
  • virustotal
  • risk

Exemplo resumido:

{
  "filename": "sample.exe",
  "hashes": {
    "sha256": "..."
  },
  "pe": {
    "is_pe": true,
    "architecture": "x64",
    "import_hash": "...",
    "packer_hints": ["high entropy section .text"]
  },
  "risk": {
    "score": 75,
    "verdict": "HIGH",
    "reasons": ["process_injection: +40", "yara matches"]
  }
}

YARA

Se o binario yara estiver instalado no PATH, o analyzer usa o engine oficial via CLI.

Quando yara nao esta instalado, o projeto usa um avaliador interno simples compativel com as regras incluidas em rules/malware_patterns.yar.

O fallback cobre:

  • strings textuais
  • nocase
  • any of them
  • 2 of them
  • any of ($a,$b)
  • $a and any of ($b,$c)

Para regras YARA avancadas, instale o YARA oficial.

Score de Risco

O score e heuristico e vai de 0 a 100.

Score Verdict
0-14 LOW
15-39 SUSPICIOUS
40-69 MEDIUM
70-100 HIGH

Fatores considerados:

  • comportamentos inferidos por imports
  • secoes com alta entropia
  • strings suspeitas
  • matches YARA
  • deteccoes do VirusTotal
  • overlay
  • packer hints
  • findings PE

Testes

go test ./...

Limites Conhecidos

  • Analise completamente estatica; nao detecta comportamento em runtime.
  • Import hash e aproximado, nao equivalente perfeito ao imphash do pefile.
  • O fallback YARA nao implementa a linguagem YARA completa.
  • O score e uma heuristica de triagem, nao uma classificacao definitiva.
  • VirusTotal depende de conectividade, cota e chave valida.

Roadmap

  • Export HTML
  • Detalhes de resources e version info
  • Authenticode parsing completo
  • Rich Header
  • TLS callbacks
  • Assinaturas de packers adicionais
  • Paralelismo no modo batch
  • SARIF ou STIX/TAXII para integracoes defensivas

Aviso Legal

Uso exclusivamente educacional e defensivo.

Nao execute malware em ambientes reais. Analise amostras em laboratorio isolado, com snapshots e sem credenciais sensiveis.

About

Ferramenta de analise estatica de arquivos PE para estudos de Threat Intelligence, Malware Analysis e engenharia reversa defensiva.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

No contributors