Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
malcom — Malcom - Analyseur de communications de malwares | Kitploit
Outils/GitHubGitHub/tomchop/malcom
Criminalistique RéseauAnalyse de MalwareRenseignement sur les Menaces
GitHubtomchop/malcom

malcom

Malcom - Analyseur de communications de malwares

Voir le dépôt
1.2k2161il y a 8 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Malcom - Analyseur de communications de malwares

Malcom est un outil conçu pour analyser les communications réseau d'un système à l'aide de représentations graphiques du trafic réseau, et les recouper avec des sources de malwares connues. Cela s'avère utile lors de l'analyse de la manière dont certaines espèces de malwares tentent de communiquer avec l'extérieur.

  • Qu'est-ce que Malcom ?
  • Guide rapide
  • Installation
  • Options de configuration
  • Instance Docker
  • Note rapide sur l'interception TLS
  • Environnement
  • Flux
  • Spécifications techniques
  • Feuille de route
  • Avertissement
  • Licence

Qu'est-ce que Malcom ?

Malcom peut vous aider à :

  • détecter les serveurs de commande et de contrôle (C&C)
  • comprendre les réseaux pair-à-pair
  • observer les infrastructures DNS fast-flux
  • déterminer rapidement si un artefact réseau est « connu comme malveillant »

Le but de Malcom est de rendre l'analyse des malwares et la collecte de renseignements plus rapides en fournissant une version lisible par l'humain du trafic réseau provenant d'un hôte ou d'un réseau donné. Convertissez les informations de trafic réseau en renseignements exploitables plus rapidement.

Consultez le wiki pour un démarrage rapide avec de belles captures d'écran et un tutoriel sur comment ajouter vos propres flux.

Si vous avez besoin d'aide ou souhaitez contribuer, n'hésitez pas à rejoindre la liste de diffusion ou à essayer de trouver quelqu'un sur IRC (#malcom sur freenode.net, c'est assez calme mais il y a toujours quelqu'un). Vous pouvez aussi me contacter sur Twitter @tomchop_

Voici un exemple de graphe pour l'hôte tomchop.me nodes-tomchop.png

Vue de l'ensemble de données (filtrée pour n'afficher que les IP) dataset-view.png

Guide rapide

  • Installer
  • S'assurer que mongodb et redis-server sont en cours d'exécution
  • Élever vos privilèges à root (oui, je sais, voir l'avertissement)
  • Lancer le serveur web avec la configuration par défaut : ./malcom.py -c malcom.conf (ou voir les options avec ./malcom.py --help) ** Pour un exemple de fichier de configuration, vous pouvez copier malcom.conf.example vers malcom.conf ** Le port par défaut est 8080 ** Sinon, exécutez les flux depuis celery. Voir la section flux pour plus de détails sur la procédure.

Installation

Malcom est écrit en Python. Si vous disposez des bibliothèques nécessaires, vous devriez pouvoir l'exécuter sur n'importe quelle plateforme. Je recommande vivement l'utilisation d'environnements virtuels Python (virtualenv) afin de ne pas perturber les bibliothèques système.

Ce qui suit a été testé sur Ubuntu Server 14.04 LTS :

  • Installer git, python et les bibliothèques libevent, mongodb, redis, ainsi que d'autres dépendances

    root@kitploit:~
      $ sudo apt-get install build-essential git python-dev libevent-dev mongodb libxml2-dev libxslt-dev zlib1g-dev redis-server libffi-dev libssl-dev python-virtualenv
    
  • Cloner le dépôt Git :

    root@kitploit:~
      $ git clone https://github.com/tomchop/malcom.git malcom
    
  • Créer votre virtualenv et l'activer :

    root@kitploit:~
      $ cd malcom
      $ virtualenv env-malcom
      $ source env-malcom/bin/activate
    
  • Obtenir et installer scapy :

    root@kitploit:~
      $ cd .. 
      $ wget http://www.secdev.org/projects/scapy/files/scapy-latest.tar.gz
      $ tar xvzf scapy-latest.tar.gz
      $ cd scapy-2.1.0
      $ python setup.py install
    

Options de configuration

Base de données

Par défaut, Malcom tentera de se connecter à une instance MongoDB locale et créera sa propre base de données nommée malcom. Si cela vous convient, vous pouvez sauter les étapes suivantes. Sinon, vous devez modifier la section database de votre fichier malcom.conf.

Définir un autre nom pour votre base de données Malcom

Par défaut, Malcom utilise une base de données nommée malcom. Vous pouvez modifier ce comportement en éditant le fichier malcom.conf et en définissant la directive name dans la section database comme vous le souhaitez.

root@kitploit:~
    [database]
    ...
    name = my_malcom_database
    ...
Base(s) de données distante(s)

Par défaut, Malcom tentera de se connecter à localhost, mais votre base de données peut se trouver sur un autre serveur. Pour modifier cela, définissez simplement la directive hosts. Vous pouvez utiliser des noms d'hôtes ou des adresses IPv4/v6 (n'oubliez pas d'encadrer vos adresses IPv6 entre [ et ], par exemple [::1]).

Si vous souhaitez utiliser une base de données autonome sur l'hôte my.mongo.server, définissez :

root@kitploit:~
    [database]
    ...
    hosts = my.mongo.server
    ...

Vous pouvez également spécifier le port sur lequel mongod écoute en l'indiquant après le nom/adresse de votre serveur, séparé par : :

root@kitploit:~
    [database]
    ...
    hosts = localhost:27008
    ...

Et si vous utilisez un ReplicaSet regroupant my.mongo1.server et my.mongo2.server, définissez :

root@kitploit:~
    [database]
    ...
    hosts = my.mongo1.server,my.mongo2.server
    ...
Utiliser l'authentification

Vous avez peut-être configuré vos instances mongod pour imposer des connexions authentifiées. Dans ce cas, vous devez définir le nom d'utilisateur que le pilote devra utiliser pour se connecter à votre instance mongod. Pour cela, ajoutez simplement une directive username dans la section database du fichier malcom.conf. Vous devrez peut-être également définir le mot de passe avec la directive password. Si l'utilisateur n'a pas de mot de passe, ignorez (commentez) la directive password.

root@kitploit:~
    [database]
    ...
    username = my_user
    password = change_me
    ...

Si l'utilisateur n'est pas lié à la base de données malcom mais à une autre (par exemple la base admin pour un utilisateur administrateur), vous devrez définir la directive authentication_database avec le nom de cette autre base.

root@kitploit:~
    [database]
    ...
    authentication_database = some_other_database
    ...
Cas d'un jeu de réplicas

Lors de l'utilisation d'un jeu de réplicas, vous devrez peut-être vous assurer que vous êtes connecté au bon. Pour cela, ajoutez la directive replset pour forcer le pilote mongo à vérifier le nom du jeu de réplicas :

root@kitploit:~
    [database]
    ...
    replset = my_mongo_replica
    ...

Par défaut, Malcom tentera de se connecter au nœud principal du jeu de réplicas. Vous devrez peut-être modifier ce comportement. Pour cela, définissez la directive read_preference. Voir la documentation MongoDB pour plus d'informations.

root@kitploit:~
    [database]
    ...
    read_preference = NEAREST
    ...

Les préférences de lecture prises en charge sont :

  • PRIMARY
  • PRIMARY_PREFERRED
  • SECONDARY
  • SECONDARY_PREFERRED
  • NEAREST

Instance Docker

Le moyen le plus rapide de commencer est de tirer l'image Docker depuis le dépôt Docker public. Pour utiliser des versions Docker plus anciennes et plus stables, utilisez tomchop/malcom au lieu de tomchop/malcom-automatic.

root@kitploit:~
    $ sudo docker pull tomchop/malcom-automatic
    $ sudo docker run -p 8080:8080 -d --name malcom tomchop/malcom-automatic

La connexion à http://<docker_host>:8080/ devrait vous permettre de commencer.

Note rapide sur l'interception TLS

Malcom supporte désormais l'interception TLS. Pour que cela fonctionne, vous devez générer des clés dans le répertoire malcom/networking/tlsproxy/keys. Consultez le fichier KEYS.md qui s'y trouve pour plus d'informations sur la procédure.

Assurez-vous également de disposer d'IPtables (vous devriez déjà l'avoir) et des permissions nécessaires pour effectuer du transfert de port avec celui-ci (vous devez généralement être root pour cela). Vous pouvez le faire à l'aide du script pratique forward_port.sh. Par exemple, pour intercepter toutes les communications TLS vers le port 443, utilisez forward_port.sh 443 9999. Vous devrez ensuite indiquer à Malcom d'exécuter un proxy d'interception sur le port 9999.

Attendez-vous à ce que ce processus soit automatisé dans les versions futures.

Environnement

Malcom a été conçu et testé sur une VM Ubuntu Server 14.04 LTS.

Si vous avez l'habitude de faire de l'analyse de malwares, vous avez probablement déjà des tonnes de machines virtuelles fonctionnant sur un système hôte. Installez simplement Malcom sur une nouvelle VM, et acheminez les connexions de vos autres VMs via Malcom. Utilisez enable_routing.sh pour activer le routage/NAT sur la VM sur laquelle Malcom s'exécute. Vous devrez ajouter une carte réseau supplémentaire au système invité.

Tant qu'il reçoit des données réseau de couche 3, Malcom peut être déployé n'importe où. Bien qu'il ne soit pas recommandé de l'utiliser sur des réseaux à haute disponibilité (il n'a pas été conçu pour être rapide, voir l'avertissement), vous pouvez le faire fonctionner à l'extrémité du port miroir de votre commutateur ou sur votre passerelle.

Flux

Pour lancer une instance de Malcom qui SEULEMENT récupère des informations à partir de flux, exécutez Malcom avec l'option --feeds ou modifiez le fichier de configuration.

Votre base de données devrait être automatiquement remplie. Si vous pouvez fouiller dans le code, l'ajout de flux est assez simple (en supposant que vous générez des objets Evil). Vous trouverez un exemple de flux dans /feeds/zeustracker. Un tutoriel plus détaillé est disponible ici.

Vous pouvez également utiliser celery pour exécuter les flux. Assurez-vous que celery est installé en exécutant $ pip install celery depuis votre virtualenv. Vous pouvez ensuite utiliser celery worker -E --config=celeryconfig --loglevel=DEBUG --concurrency=12 pour lancer le processus d'alimentation avec 12 travailleurs simultanés.

Spécifications techniques

Malcom a été écrit principalement à partir de zéro, en Python. Il utilise les frameworks suivants :

  • flask - un framework web Python léger
  • mongodb - une base de données NoSQL. Elle s'interface avec Python via pymongo
  • redis - un magasin clé-valeur avancé en mémoire
  • d3js - une bibliothèque JavaScript qui produit des graphes orientés force impressionnants (https://github.com/mbostock/d3/wiki/Gallery)
  • bootstrap - un framework CSS qui finira par tuer le design web, mais qui permet de « webiser » très facilement des applications qui ne fonctionneraient qu'en ligne de commande.

Feuille de route

Collaboration - La principale direction que je souhaite donner à cet outil est de le rendre collaboratif. J'ai quelques idées à ce sujet, et je pense qu'il deviendra 100 fois plus utile une fois le partage de données mis en œuvre.

Extensibilité - L'autre chose que je veux inclure dans l'outil est la possibilité de l'étendre plus facilement. Je n'ai pas les mêmes besoins que tout le monde, et cet outil a été conçu en fonction de mes besoins. Vous pouvez désormais personnaliser Malcom en ajoutant de nouveaux flux.

Une fois la collaboration et l'extension opérationnelles, je pense que cela sera utile à plus d'un intervenant en incident. :-)

Avertissement

Cet outil a été codé pendant mon temps libre. Comme un grand nombre d'outils que nous téléchargeons et utilisons quotidiennement, je ne recommanderais pas de l'utiliser dans un environnement de production où la stabilité et la fiabilité des données sont primordiales.

  • Il peut être cassé, présenter des failles de sécurité (l'exécuter en tant que root dans des environnements non contrôlés n'est probablement pas une bonne idée), ou ne pas fonctionner du tout.
  • Il est écrit en Python, donc ne vous attendez pas à ce qu'il soit ultra-rapide ou qu'il gère facilement de grandes quantités de données.
  • Je ne suis pas un codeur, donc ne vous attendez pas à voir du code pythonique magnifique partout où vous regardez. Ou beaucoup de commentaires.

Il en est aux premiers stades de développement, ce qui signifie « ça marche pour moi ». Vous êtes libre de le partager, de l'améliorer, de demander des pull requests.

Licence

Malcom - Analyseur de communications de malwares Copyright (C) 2013 Thomas Chopitea

Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier selon les termes de la GNU General Public License telle que publiée par la Free Software Foundation ; soit la version 3 de la Licence, soit (à votre discrétion) toute version ultérieure.

Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou d'ADAPTATION À UN USAGE PARTICULIER. Voir la GNU General Public License pour plus de détails.

Vous devriez avoir reçu une copie de la GNU General Public License avec ce programme ; si ce n'est pas le cas, consultez http://www.gnu.org/licenses/.

Veuillez noter que Redis, MongoDB, d3js, Maximind et Bootstrap (ainsi que d'autres bibliothèques tierces incluses dans Malcom) peuvent avoir leurs propres licences compatibles avec la GPL.

Télécharger l’outil

Depuis votre virtualenv, installer les paquets Python nécessaires à partir du fichier requirements.txt :

root@kitploit:~
  $ cd ../malcom
  $ pip install -r requirements.txt
  • Pour que la géolocalisation IP fonctionne, vous devez télécharger la base de données Maxmind et extraire le fichier dans le répertoire malcom/Malcom/auxiliary/geoIP. Vous pouvez obtenir la base de données gratuite (donc plus ou moins précise) de Maxmind depuis le lien suivant : http://dev.maxmind.com/geoip/geoip2/geolite2/ :

    root@kitploit:~
      $ cd Malcom/auxiliary/geoIP
      $ wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz
      $ gunzip -d GeoLite2-City.mmdb.gz
      $ mv GeoLite2-City.mmdb GeoIP2-City.mmdb
    
  • Lancer le serveur web depuis le répertoire malcom avec ./malcom.py. Consultez ./malcom.py --help pour l'interface d'écoute et les ports.

    • Pour commencer, vous pouvez copier le fichier malcom.conf.example vers malcom.conf et exécuter ./malcom.py -c malcom.conf