
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.
Malcom peut vous aider à :
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

Vue de l'ensemble de données (filtrée pour n'afficher que les IP)

mongodb et redis-server sont en cours d'exécution./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.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
$ 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 :
$ git clone https://github.com/tomchop/malcom.git malcom
Créer votre virtualenv et l'activer :
$ cd malcom
$ virtualenv env-malcom
$ source env-malcom/bin/activate
Obtenir et installer scapy :
$ 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
Depuis votre virtualenv, installer les paquets Python nécessaires à partir du fichier requirements.txt :
$ 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/ :
$ 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.
malcom.conf.example vers malcom.conf et exécuter ./malcom.py -c malcom.confPar 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.
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.
[database]
...
name = my_malcom_database
...
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 :
[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 : :
[database]
...
hosts = localhost:27008
...
Et si vous utilisez un ReplicaSet regroupant my.mongo1.server et my.mongo2.server, définissez :
[database]
...
hosts = my.mongo1.server,my.mongo2.server
...
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.
[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.
[database]
...
authentication_database = some_other_database
...