Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Malware Analyzer

Outil en ligne de commande qui interroge l'API VirusTotal v3 pour un fichier donné et produit un rapport Markdown lisible : verdict consolidé, moteurs ayant levé une détection, classification de la menace.

Écrit pour le tri de fichiers suspects au quotidien — le genre de vérification qu'on fait vite, souvent, et qu'on veut pouvoir archiver ou joindre à un ticket.

Fonctionnement

Le fichier est d'abord haché en local, puis recherché sur VirusTotal par son SHA-256. Si l'échantillon est déjà connu — c'est le cas de l'immense majorité des malwares en circulation — le rapport arrive en une seule requête, sans transmettre le moindre octet du fichier.

L'envoi n'a lieu que si le hash est inconnu, et uniquement avec --upload. C'est délibéré : tout fichier soumis à VirusTotal devient accessible à la communauté. Un document interne envoyé par réflexe est une fuite de données.

        fichier
           │
    SHA-256 local
           │
   GET /files/{sha256}
           │
     ┌─────┴─────┐
   connu      inconnu
     │            │
     │      --upload ? ── non ──▶ arrêt, rien n'est transmis
     │            │ oui
     │      POST /files
     │            │
     │   sondage /analyses/{id}
     │            │
     └─────┬──────┘
           │
   rapport Markdown

Installation

git clone https://github.com/NoaMatout/Malware_Analyzer.git
cd Malware_Analyzer
pip install -r requirements.txt

Il faut une clé API VirusTotal, disponible gratuitement dans les réglages du compte : https://www.virustotal.com/gui/my-apikey

export VT_API_KEY="votre_cle"        # Linux / macOS
$env:VT_API_KEY = "votre_cle"        # PowerShell

La clé est lue depuis l'environnement, jamais demandée en clair à l'écran ni écrite sur le disque.

Utilisation

# Fichier déjà connu de VirusTotal — aucune transmission
python malware_analyzer.py suspect.exe

# Autoriser l'envoi si le hash est inconnu
python malware_analyzer.py suspect.exe --upload

# Choisir la destination du rapport
python malware_analyzer.py suspect.exe -o rapports/incident-4821.md

Options

Option Rôle
-o, --output Chemin du rapport (défaut : rapport-virustotal.md)
-t, --template Template Jinja2 personnalisé
--upload Autorise l'envoi du fichier si son hash est inconnu

Codes de sortie

Code Signification
0 Aucune détection
1 Fichier signalé comme malveillant ou suspect
2 Erreur (clé absente, quota dépassé, fichier introuvable)

Ces codes rendent l'outil scriptable — par exemple en boucle sur un répertoire de pièces jointes mises en quarantaine :

for f in /quarantaine/*; do
    python malware_analyzer.py "$f" -o "rapports/$(basename "$f").md" \
        || echo "À examiner : $f"
done

Exemple de rapport

Un rapport complet généré sur un échantillon WannaCry est disponible dans docs/exemple-rapport.md — 61 moteurs sur 72 le classent malveillant.

Personnaliser le rapport

Le rendu est piloté par templates/report.md.j2. Les variables exposées au template :

Variable Contenu
name Nom le plus courant associé à l'échantillon
sha256, size, file_type Caractéristiques du fichier
threat_label Classification consolidée (ex. ransomware.wannacry)
stats Répartition des verdicts par catégorie
reputation, votes Réputation et votes de la communauté
detections Moteurs ayant levé une détection, hors moteurs muets

Se procurer un échantillon de test

Ce dépôt ne contient volontairement aucun binaire malveillant. Pour vérifier que l'outil fonctionne, le fichier de test EICAR suffit : il est inoffensif, mais reconnu par tous les antivirus.

printf '%s' 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > eicar.com
python malware_analyzer.py eicar.com

Votre antivirus va probablement mettre le fichier en quarantaine dès sa création — c'est le comportement attendu.

Limites

  • L'API publique est plafonnée à 4 requêtes par minute et 500 par jour.
  • Au-delà de 32 Mo, l'envoi passe par un point d'entrée dédié (géré automatiquement).
  • Un verdict VirusTotal est un faisceau d'indices, pas une preuve. Les faux positifs sur binaires peu diffusés ou compilés maison sont fréquents.

Licence

MIT — voir LICENSE.

About

Analyse de fichiers suspects via l'API VirusTotal v3 — recherche par hash avant tout envoi, rapport Markdown, codes de sortie scriptables

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages