Entreprise d'experts en Sécurité Informatique : Audits et conseils en cybersécurité
Entreprise française de cybersécurité depuis 2004
☎ 03 60 47 09 81 - info@securiteinfo.com

munin, vérificateur de hashs en ligne pour Virustotal et d'autres services


MALWARE OUTIL D'ADMINISTRATION

Qu'est-ce que Munin ?


nunin est un utilitaire de vérification de hashs en ligne qui récupère des informations précieuses à partir de diverses sources en ligne.
La version actuelle de Munin interroge les services suivants :

Copie d'écran


node par défaut : Lecture des hashs à partir d'un fichier


Utilisation


usage: munin.py [-h] [-f path] [-c cache-db] [-i ini-file] [-s sample-folder]
[--comment] [-p vt-comment-prefix] [--download]
[-d download_path] [--nocache] [--intense] [--retroverify]
[-r num-results] [--nocsv] [--verifycert] [--sort] [--debug]

Online Hash Checker

optional arguments:
-h, --help show this help message and exit
-f path File to process (hash line by line OR csv with hash in
each line - auto-detects position and comment)
-c cache-db Name of the cache database file (default: vt-hash-
db.pkl)
-i ini-file Name of the ini file that holds the API keys
-s sample-folder Folder with samples to process
--comment Posts a comment for the analysed hash which contains
the comment from the log line
-p vt-comment-prefix Virustotal comment prefix
--download Enables Sample Download from Hybrid Analysis. SHA256
of sample needed.
-d download_path Output Path for Sample Download from Hybrid Analysis.
Folder must exist
--nocache Do not use cache database file
--intense Do use PhantomJS to parse the permalink (used to
extract user comments on samples)
--retroverify Check only 40 entries with the same comment and
therest at the end of the run (retrohunt verification)
-r num-results Number of results to take as verification
--nocsv Do not write a CSV with the results
--verifycert Verify SSL/TLS certificates
--sort Sort the input lines (useful for VT retrohunt results)
--debug Debug output

Caractéristiques



Affichage



Contrôles supplémentaires



Pour commencer




Lignes de commande typiques


Traiter un résultat Virustotal Retrohunt et trier les lignes avant de vérifier afin que les signatures correspondantes soient vérifiées par blocs

python3 munin.py -i my.ini -f ~/Downloads/retro_hunt

Traiter un fichier IOC et montrer qui a commenté ces exemples sur Virustotal (utilise PhantomJS, utilisation plus importante de la CPU)

python3 munin.py -i my.ini -f ~/Downloads/misp-event-1234.csv --sort --intense

Traiter un répertoire avec des échantillons et vérifier leurs hachages en ligne

python3 munin.py -i my.ini -s ~/malware/case34

Utiliser l'interface de ligne de commande (nouveauté de la version 0.14)

python3 munin.py -i my.ini


Obtenir vos clés API utilisées par Munin


Virustotal


  • Créer un compte ici https://www.virustotal.com/gui/join-us
  • Allez chercher votre clé publique d'API dans Profile > My API key

  • Malshare


    Créer un compte ici https://malshare.com/register.php

    Hybrid Analysis


  • Créer un compte ici https://www.hybrid-analysis.com/signup
  • Après s'être logué, vérifier Profile > API key

  • MISP


  • Logez vous sur votre MISP
  • Aller sur votre profil (My Profile)
  • La valeur de Authkey est utilisée comme clé API
  • Notez que le fichier ini utilise à la fois une liste d'instance MISP et les clés API correspondantes

  • Valhalla


    Actuellement pour les clients, et les chercheurs, sur invitation.

    Mode interface de ligne de commande


    Exécutez munin avec l'option --cli et suivez les instructions.

    exemple :

    python3 munin.py -i my.ini --cli

    Coller les valeurs de hashs puis pressez CTRL+D pour terminer la saisie. La dernière ligne à besoin d'un "ligne break" à la fin.

    Par défaut, l'outil va créer un fichier CSV avec la date courante et le nom du fichier.



    Mode service web


    Exécutez munin avec l'option --web et, facultativement, spécifier un port avec -w port

    exemple :

    python3 munin.py -i my.ini --web -w 8080

    Le service web attend les chaines de caractères dans ce format :

    http://server:port/

    Les chaines de caractères peut être n'importe quoi, sans line break. Exemple :

    Emotet:1585ad28f7d1e0ca696e6c6c2f1d008a
    ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa;IOC1
    dc9b5e8aa6ec86db8af0a7aa897ca61db3e5f3d2e0942e319074db1aaccfdc83

    Le résultat sera :

    {
        "comment": "Emotet",
        "commenter": "-",
        "comments": "0",
        "copyright": "Copyright (C) America Online, Inc. 1999 - 2004",
        "description": "Utilities",
        "expired": false,
        "filenames": "sourcedev.exe, MISCUTIL, x8ykNnr_9WofXq7Nh_xuEzSPW.exe, jwuKBLWN681ztj6Zks.exe",
        "filetype": "Win32 EXE",
        "first_submitted": "2019-01-19 13:46:21 UTC ( 2 months, 2 weeks ago )",
        "firstsubmission": "2019-01-19 13:46:21 UTC ( 2 months, 2 weeks ago )",
        "harmless": false,
        "hash": "1585ad28f7d1e0ca696e6c6c2f1d008a",
        "hybrid_available": false,
        "hybrid_compromised": "-",
        "hybrid_date": "-",
        "hybrid_score": "-",
        "imphash": "2820d9bdc397f88a8a1e957e1a824482",
        "last_submitted": "2019-02-27 09:44:03",
        "malshare_available": false,
        "md5": "1585ad28f7d1e0ca696e6c6c2f1d008a",
        "misp_available": true,
        "misp_events": "",
        "misp_info": [],
        "mssoft": false,
        "origname": "-",
        "positives": 48,
        "rating": "malicious",
        "res_color": "\u001b[41m",
        "result": "48 / 64",
        "revoked": false,
        "sha1": "4561d0ad575d5f02fb06e062a37de15861c3bd89",
        "sha256": "35e304d10d53834e3e41035d12122773c9a4d183a24e03f980ad3e6b2ecde7fa",
        "signed": false,
        "signer": "-",
        "total": 64,
        "urlhaus_available": true,
        "vendor_results": {
            "CrowdStrike": "win/malicious_confidence_100% (W)",
            "ESET-NOD32": "a variant of Win32/Kryptik.GOUY",
            "F-Secure": "Trojan.TR/AD.Emotet.pdiuu",
            "GData": "Trojan.GenericKD.40960256",
            "Kaspersky": "HEUR:Trojan.Win32.Generic",
            "McAfee": "Emotet-FLL!1585AD28F7D1",
            "Microsoft": "Trojan:Win32/Emotet.DN",
            "Sophos": "Mal/Emotet-Q",
            "Symantec": "Trojan.Gen.2",
            "TrendMicro": "-"
        },
        "virus": "Microsoft: Trojan:Win32/Emotet.DN / Kaspersky: HEUR:Trojan.Win32.Generic / McAfee: Emotet-FLL!1585AD28F7D1 / CrowdStrike: win/malicious_confidence_100% (W) / ESET-NOD32: a variant of Win32/Kryptik.GOUY / Symantec: Trojan.Gen.2 / F-Secure: Trojan.TR/AD.Emotet.pdiuu / Sophos: Mal/Emotet-Q / GData: Trojan.GenericKD.40960256",
        "virusbay_available": false,
        "vt_positives": 48,
        "vt_queried": false,
        "vt_total": 64,
        "vt_verbose_msg": "Scan finished, information embedded"
    }

    Les requêtes vers Virustotal ont besoin d'être ralenties. Donc le service web applique une temps de ralentissement, qui est minimisé par la substraction du temps que pennenent chaque plateforme à exécuter la requête, des 15 secondes d'attentes.

    cooldown_time = vt_wait_time - process_time

    Pendant le ralentissement, les requêtes répondrons cette réponse :

    {"status": "VT cooldown active"}

    Le ralentissement n'est pas applicable lorsque les hashs intéroogés sont dans le cache.

    Hosts Munin


    La vérification de hosts et d'adresses IP de Munin (munin-host.py) récupère plus d'informations sur les adresses IP et les hosts ou noms de domaines dans les listes IOC

    Utilisation


    usage: munin.py [-h] [-f path] [-c cache-db] [-i ini-file] [-s sample-folder]                 [--comment] [-p vt-comment-prefix] [--download]
                    [-d download_path] [--nocache] [--intense] [--nocsv]
                    [--verifycert] [--sort] [--web] [-w port] [--debug]

    Online Hash Checker

    optional arguments:
      -h, --help            show this help message and exit
      -f path               File to process (hash line by line OR csv with hash in
                            each line - auto-detects position and comment)
      -c cache-db           Name of the cache database file (default: vt-hash-
                            db.pkl)
      -i ini-file           Name of the ini file that holds the API keys
      -s sample-folder      Folder with samples to process
      --comment             Posts a comment for the analysed hash which contains
                            the comment from the log line
      -p vt-comment-prefix  Virustotal comment prefix
      --download            Enables Sample Download from Hybrid Analysis. SHA256
                            of sample needed.
      -d download_path      Output Path for Sample Download from Hybrid Analysis.
                            Folder must exist
      --nocache             Do not use cache database file
      --intense             Do use PhantomJS to parse the permalink (used to
                            extract user comments on samples)
      --nocsv               Do not write a CSV with the results
      --verifycert          Verify SSL/TLS certificates
      --sort                Sort the input lines
      --web                 Run Munin as web service
      -w port               Web service port
      --cli                 Run Munin in command line interface mode
      --debug               Debug output

    Copie d'écran



    Exemples


    Balayez le fichier de démonstration pour extraire les IP et les hosts, ne vous contentez pas de vérifier que les domaines sont toujours résolvables et de télécharger les fichiers directement à partir des systèmes distants.

    python3 munin-host.py -i your-key.ini -f ./munin-hosts-demo.txt --noresolve --download

    Attention


    Utiliser munin-host.py dans un réseau surveillé par un IDS provoquera des alertes puisque munin-host.py fait des requêtes DNS des domaines malicieux et a une option pour télécharger les fichiers malicieux.

    Problèmes

    pycurl sur macOS


    Le script munin-host.py nécessite le module pycurl. C'est quelquefois assez compliqué à le faire fonctionner sur macOS puisqu'il nécessite l'installation d'openssl, qui est utilisé lors de la compilation du module.

    Si cette erreur survient, essayer ce qui suit (vous aurez besoin de pip3)

    pip uninstall pycurl
    brew update
    brew reinstall openssl
    export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig"
    export LDFLAGS="-L/usr/local/opt/openssl/lib"
    export CPPFLAGS="-I/usr/local/opt/openssl/include"
    export PYCURL_SSL_LIBRARY=openssl
    pip install pycurl --global-option="--with-openssl"

    Téléchargement



    Tags


    MALWARE OUTIL D'ADMINISTRATION


    Inscription à notre lettre d'information


    Inscrivez-vous à notre lettre d'information pour vous tenir au courant de nos actualités et de nos dernières trouvailles.


    SecuriteInfo.com est une entreprise française de cybersécurité. Nous proposons différentes solutions matérielles et prestations de services permettant de sécuriser les données des Systèmes d'Information d'entreprises ou de collectivités. Notre périmètre d'intervention couvre l'intégralité de votre système d'information : Sécurité périmétrique, réseaux, accès distants, VPN, solutions anti-spam et anti-malwares, différents audits réseaux et systèmes, vérification de la politique de sécurité, hébergement sécurisé ...
    Facebook SecuriteInfo.com
    Twitter de SecuriteInfo.com
    Github de SecuriteInfo.com
    Calculs scientifiques distribués contre les maladies, équipe SecuriteInfo.com
    Depuis 2015, SecuriteInfo.com soumet et analyse des malwaressur VirusTotal
    Depuis 2020, SecuriteInfo.com participe à la lutte antivirale avec nos amis suisses de Malware Baazar (Abuse.ch)
    © 2000-2026 - Tous droits réservés SecuriteInfo.com