
Scanner d'entropie pour Linux afin de détecter les binaires compressés ou chiffrés liés aux logiciels malveillants. Trouve les fichiers malveillants et les processus Linux et fournit une sortie avec des hachages cryptographiques.
sandfly-entropyscan est un utilitaire pour analyser rapidement des fichiers ou des processus en cours d'exécution et signaler leur entropie (mesure du caractère aléatoire) et s'il s'agit d'un exécutable de type ELF Linux/Unix. Certains malwares Linux sont packés ou chiffrés et présentent une entropie très élevée. Cet outil peut rapidement trouver des fichiers et processus exécutables à haute entropie qui sont souvent malveillants.
L'entropie est une mesure du caractère aléatoire. Pour les données binaires, 0.0 signifie non-aléatoire et 8.0 est parfaitement aléatoire. Un bon cryptage ressemble à un bruit blanc aléatoire et sera proche de 8.0. Une bonne compression supprime les données redondantes, les rendant plus aléatoires que si elles étaient non compressées, et généralement au-dessus de 7.7.
De nombreux exécutables malveillants sont packés pour éviter la détection et rendre le rétro-ingénierie plus difficile. La plupart des binaires Linux standards ne sont pas packés car ils n'essaient pas de cacher ce qu'ils sont. Rechercher des fichiers à haute entropie est un bon moyen de trouver des programmes qui pourraient être malveillants simplement parce qu'ils possèdent ces deux attributs : haute entropie et exécutable.
Utilisation de sandfly-entropyscan :
-csv
affiche les résultats au format CSV (nom_fichier, chemin, entropie, elf_fichier [true|false], MD5, SHA1, SHA256, SHA512)
-delim
change le délimiteur par défaut pour les fichiers CSV de "," vers celui de votre choix ("|", etc.)
-dir string
nom du répertoire à analyser
-file string
chemin complet d'un seul fichier à analyser
-proc
vérifie les processus en cours (vérification par défaut uniquement des ELF)
-elf
vérifie uniquement les exécutables ELF
-entropy float
affiche tout fichier/processus dont l'entropie est supérieure ou égale à cette valeur (0.0 min - 8.0 max, par défaut 0 pour afficher tous les fichiers)
-version
affiche la version et quitte
Rechercher tout fichier exécutable sous /tmp :
sandfly-entropyscan -dir /tmp -elf
Rechercher les exécutables à haute entropie (7.7 et plus) (souvent packés ou chiffrés) sous /var/www :
sandfly-entropyscan -dir /var/www -elf -entropy 7.7
Génère l'entropie et les hachages cryptographiques de tous les processus en cours au format CSV :
sandfly-entropyscan -proc -csv
Rechercher tout processus avec une entropie supérieure à 7.7 indiquant qu'il est probablement packé ou chiffré :
sandfly-entropyscan -proc -entropy 7.7
Génère l'entropie et les valeurs de hachage cryptographique de tous les fichiers sous /bin et les affiche au format CSV (par exemple, pour sauvegarder et comparer les hachages) :
sandfly-entropyscan -dir /bin -csv
Analyser un répertoire pour tous les fichiers (ELF ou non) avec une entropie supérieure à 7.7 : (liste potentiellement longue de fichiers compressés, PNG, JPG, fichiers objet, etc.)
sandfly-entropyscan -dir /path/to/dir -entropy 7.7
Vérifier rapidement un fichier et générer l'entropie, les hachages cryptographiques et indiquer s'il est exécutable :
sandfly-entropyscan -file /dev/shm/suspicious_file
Effectuez des vérifications ponctuelles sur les systèmes que vous soupçonnez d'avoir un problème de malware. Ou vous pouvez automatiser l'analyse de manière à obtenir une sortie si nous trouvons quelque chose de suspect à haute entropie dans un endroit inattendu. Ou simplement signaler tout fichier exécutable de type ELF qui se trouve dans un endroit étrange (par exemple, dans /tmp ou sous le répertoire HTML d'un utilisateur). Par exemple :
Un binaire à haute entropie est-il apparu dans le répertoire système /var/www ? Cela pourrait être quelqu'un qui a placé un dropper de malware sur votre site web :
sandfly-entropyscan -dir /var/www -elf -entropy 7.7
Configurez une tâche cron pour analyser vos répertoires /tmp, /var/tmp et /dev/shm pour tout type de fichier exécutable, qu'il soit à haute entropie ou non. Les fichiers exécutables sous les répertoires tmp sont fréquemment des droppers de malware.
sandfly-entropyscan -dir /tmp -elf
sandfly-entropyscan -dir /var/tmp -elf
sandfly-entropyscan -dir /dev/shm -elf
Configurez une autre tâche cron ou une analyse de sécurité automatisée pour vérifier ponctuellement la présence de binaires fortement compressés ou chiffrés en cours d'exécution :
sandfly-entropyscan -proc -entropy 7.7
git clone https://github.com/sandflysecurity/sandfly-entropyscan.git
go build
./sandfly-entropyscan
Quelques scripts de construction de base qui construisent pour différentes plates-formes. Vous pouvez les utiliser pour construire ou les modifier selon vos besoins. Pour les intervenants en réponse aux incidents, il peut être utile de conserver des binaires pré-compilés prêts à être utilisés sur votre boîte d'investigation.
build.sh - Construit pour le système d'exploitation actuel sur lequel vous exécutez le script.
Nous utilisons une méthode simple pour déterminer si un fichier peut être un exécutable de type ELF. Nous pouvons repérer les fichiers au format ELF pour plusieurs plates-formes. Même si un malware a des binaires dropper pour Intel/AMD, MIPS et ARM, nous pourrons toujours les repérer tous.
Il est possible de signaler un binaire légitime qui a une entropie élevée en raison de la façon dont il a été compilé, ou parce qu'il a été packé pour des raisons légitimes. D'autres fichiers comme .zip, .gz, .png, .jpg, etc. ont également une entropie très élevée car ce sont des formats compressés. La compression supprime la redondance dans un fichier, ce qui le rend plus aléatoire et lui donne une entropie plus élevée.
Sous Linux, certaines bibliothèques (fichiers .so) peuvent être signalées si vous analysez des répertoires de bibliothèques.
Cependant, selon notre expérience, les binaires exécutables qui ont également une entropie élevée sont souvent malveillants. C'est particulièrement vrai si vous les trouvez dans des zones où les exécutables ne devraient normalement pas se trouver (comme encore les répertoires tmp ou html).
Le calcul de l'entropie nécessite de lire tous les octets du fichier et de les compter pour obtenir un nombre final. Cela peut utiliser beaucoup de CPU et d'E/S disque, en particulier sur des systèmes de fichiers très volumineux ou des fichiers très volumineux. Le programme a une limite interne où il ne calcule pas l'entropie pour les fichiers de plus de 2 Go, et il n'essaie pas non plus de calculer l'entropie sur un fichier qui n'est pas un type de fichier régulier (par exemple, il n'essaiera pas de calculer l'entropie sur des périphériques comme /dev/zero).