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
Outils/GitHubGitHub/joxeankoret/cosa-nostra
Analyse StatiqueRétro-ingénierieAnalyse ForensiqueAnalyse de MalwareAnalyse de BinairesApprentissage et Éducation
GitHubjoxeankoret/cosa-nostra

cosa-nostra

Cosa Nostra, une boîte à outils FOSS de clustérisation de malwares basée sur les graphes.

Voir le dépôt
23155il y a 2 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

Cosa Nostra

Cosa Nostra est un toolkit de clustering open source axé sur l'analyse de malwares. Il peut créer des arbres phylogénétiques d'échantillons de malwares binaires structurellement similaires. Il a été initialement présenté lors du SyScan360 Shanghai (2016).

Je le maintiens depuis 2016 pour mon unique utilisateur, qui se trouve être un ami... Eh bien.

Pour commencer

Outils tiers requis

Pour utiliser Cosa Nostra, vous aurez besoin d'une version de Python 3.X ainsi que de l'un des outils suivants pour effectuer l'analyse de code :

  • IDA Écrit en C++. Il permet d'analyser une pléthore de types d'exécutables dont vous n'avez probablement jamais entendu parler. Produit commercial. Seules les versions 7.X sont désormais supportées.
  • Radare2 Écrit en C pur. Comme IDA, avec le support de CPU et de formats binaires extrêmement rares. De plus, il est open source !

Analyse des binaires

Une fois que vous avez installé l'un des outils mentionnés précédemment, vous devrez utiliser l'outil batch approprié pour analyser les échantillons de malwares, comme dans l'exemple ci-dessous :

root@kitploit:~
$ cd $COSA_NOSTRA_DIR
$ /path/to/ida64 -B -A -S/full/path/to/ida_batch.py example.exe

Ou

root@kitploit:~
$ cd $COSA_NOSTRA_DIR
$ python r2_batch.py example.exe

Automatisation de l'analyse d'un ensemble de malwares

La manière la plus simple d'analyser un ensemble de malwares est d'exécuter une commande comme dans l'exemple suivant :

root@kitploit:~
$ find /your/malware/dataset/path -type f -exec python r2_batch.py {} ';'

Cela peut être fait en parallèle en utilisant l'outil « GNU Parallel », comme dans l'exemple suivant :

root@kitploit:~
$ find /your/malware/dataset/path -type f | parallel -j 8 ida64 -B -A -S/path/to/ida_batch.py {}

Dans l'exemple ci-dessus, cela lancera un total de 8 processus pyew_batch en parallèle.

Configuration de la base de données

Après l'analyse des échantillons de malwares, si l'analyse a réussi, les données du graphe d'appels pour chaque échantillon seront stockées, par défaut, dans une base de données SQLite nommée « db.sqlite ». Vous pouvez configurer le nom de la base de données, le chemin, le système de base de données, etc... en modifiant le fichier $COSA_NOSTRA_DIR/, comme indiqué ci-dessous :

root@kitploit:~
$ cat config.cfg 
########################################################################
# Configuration for SQLite3
########################################################################
[database]
dbn=sqlite
# Database name
db=db.sqlite

Si vous préférez utiliser, par exemple, un système de base de données MySQL, vous pouvez le configurer dans config.cfg en mettant les sections de configuration suivantes avec les valeurs appropriées pour votre installation :

root@kitploit:~
########################################################################
# Example configuration for MySQL
########################################################################

[database]
dbn=mysql
# Database hostname or IP address
host=localhost
# Database name
db=db_name
# Database username
user=username
# Database password
pw=password

Regroupement (clusterisation) des échantillons de malwares

C'est l'étape qui prendra le plus de temps. Une fois que vous avez analysé tous les échantillons de malwares de vos ensembles de données et que les signatures de graphes d'appels, les nombres premiers correspondants, etc... sont calculés et stockés dans la base de données, l'étape suivante consiste à trouver des clusters. L'outil pour cela s'appelle « cn_clusterer.py ». Il utilisera le même fichier de configuration de base de données ($COSA_NOSTRA_DIR/config.cfg) pour extraire les signatures de graphes d'appels des échantillons analysés. Son exécution est aussi simple que de faire ce qui suit :

root@kitploit:~
$ cd $COSA_NOSTRA_DIR
$ ./cn_clusterer.py
(...)
Calculating difference matrix for 2357, iteration 5540280 out of 7507600 (4858784 matches, 600144 cache misses)
Calculating difference matrix for 2354, iteration 5543020 out of 7507600 (4861293 matches, 600373 cache misses)
Calculating difference matrix for 471, iteration 5545760 out of 7507600 (4863903 matches, 600373 cache misses)
(...)
Making tree for group with 59 sample(s), iteration 0 out of 256
Making tree for group with 393 sample(s), iteration 1 out of 256
Making tree for group with 1347 sample(s), iteration 2 out of 256
(...)
[Wed Nov  2 13:37:12 2016 2830:140561185462080] Creating unnamed cluster...
[Wed Nov  2 13:37:12 2016 2830:140561185462080] Creating cluster with name u'Win.Trojan.Skylock-4'...
[Wed Nov  2 13:37:12 2016 2830:140561185462080] Creating cluster with name u'Win.Downloader.133181-1'...
[Wed Nov  2 13:37:12 2016 2830:140561185462080] Creating cluster with name u'Win.Trojan.Agent-1213378'...
[Wed Nov  2 13:37:13 2016 2830:140561185462080] Done processing phylogenetic trees!
[Wed Nov  2 13:37:13 2016 2830:140561185462080] Done

Lorsque le processus se termine, des clusters regroupant les échantillons de malwares analysés seront créés dans la base de données spécifiée.

Visualisation des clusters : l'interface web

La dernière étape consiste à lancer l'application Web basée sur web.py et à se connecter :

root@kitploit:~
$ cd $COSA_NOSTRA_DIR
$ python cosa_nostra.py [optional port to listen to]
http://0.0.0.0:YOURPORT/

Ensuite, ouvrez un navigateur et accédez à l'adresse affichée par cosa_nostra.py. Un formulaire de connexion s'affichera demandant un nom d'utilisateur et un mot de passe. Par défaut, c'est « admin/cosanostra ». Vous pouvez le modifier dans le fichier $COSA_NOSTRA_DIR/config.py :

root@kitploit:~
$ cat config.py
#!/usr/bin/env python

#-----------------------------------------------------------------------
# Configuration for Cosa Nostra
#-----------------------------------------------------------------------
DEBUG=False
CN_USER="admin"
# SHA1 hash of the password "cosanostra", change to the SHA1 hash of
# whatever password you prefer.
CN_PASS="048920dedfe36c112d74dc8108abb4db5185a918"
(...)

Une fois connecté, vous pouvez sélectionner dans le panneau de gauche l'une des options suivantes :

  • Échantillons : Voir les échantillons dans la base de données actuelle.
  • Clusters : Voir la liste des clusters que Cosa Nostra a trouvés pour les ensembles de données donnés.

Dans la vue « Clusters », on peut sélectionner différents clusters et visualiser un graphe hiérarchique de la famille de malwares découverte.

Captures d'écran

Liste des clusters telle qu'affichée dans Cosa Nostra :

List of clusters as shown in Cosa Nostra

Un petit cluster de Trojan.Backspace-1 (nom donné par ClamAV) :

A small cluster of Trojan.Backspace-1, name by ClamAV

Un petit cluster de MiniDukes :

A small cluster of MiniDukes

Un cluster de Kazy/Bifroses :

A cluster of Kazy/Bifroses

Une petite partie d'un très grand cluster de FannyWorms :

A small part of a really big cluster of FannyWorms

Télécharger l’outil