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
stringsifter — Un outil d'apprentissage automatique qui classe les chaînes de caractères en fonction de leur pertinence pour l'analyse de logiciels malveillants. | Kitploit
Outils/GitHubGitHub/mandiant/stringsifter
Rétro-ingénierieAnalyse de MalwareAnalyse de BinairesApprentissage Automatique
GitHubmandiant/stringsifter

stringsifter

Un outil d'apprentissage automatique qui classe les chaînes de caractères en fonction de leur pertinence pour l'analyse de logiciels malveillants.

Voir le dépôt
761126il y a 1 moisVé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

StringSifter est un outil d'apprentissage automatique qui classe automatiquement les chaînes de caractères en fonction de leur pertinence pour l'analyse de logiciels malveillants.

Liens rapides

  • Article de blog technique - Learning to Rank Strings Output for Speedier Malware Analysis
  • Article d'annonce - Open Sourcing StringSifter
  • Conférence DerbyCon - StringSifter: Learning to Rank Strings Output for Speedier Malware Analysis
  • Versions de StringSifter sur PyPi

Utilisation

StringSifter requiert Python version 3.9 ou plus récent. Exécutez les commandes suivantes pour obtenir le code, exécuter les tests unitaires et utiliser l'outil :

Installation

root@kitploit:~
pip install stringsifter

Pour le développement, utilisez poetry :

root@kitploit:~
git clone https://github.com/mandiant/stringsifter.git
cd stringsifter
poetry install --with dev

Exécution des tests unitaires

Pour exécuter les tests unitaires depuis le répertoire d'installation de StringSifter :

root@kitploit:~
poetry run tests -v

Utilisation en ligne de commande

La commande pip install installe deux scripts exécutables, flarestrings et rank_strings, dans votre environnement Python. Lors du développement à partir des sources, utilisez pipenv run flarestrings et pipenv run rank_strings.

flarestrings reproduit les fonctionnalités de strings de GNU binutils, et rank_strings accepte une entrée par pipe, par exemple :

root@kitploit:~
flarestrings <my_sample> | rank_strings

rank_strings prend en charge un certain nombre d'arguments en ligne de commande. L'argument positionnel input_strings spécifie un fichier de chaînes à classer. Les arguments optionnels sont :

Les chaînes classées sont écrites sur la sortie standard, sauf si l'option --batch est spécifiée, auquel cas les sorties classées sont écrites dans des fichiers nommés <input_file>.ranked_strings.

flarestrings prend en charge l'option -n (ou --min-len) pour afficher les séquences de caractères d'au moins min-len caractères, au lieu de 4 par défaut. Par exemple :

root@kitploit:~
flarestrings -n 8 <my_sample> | rank_strings

affichera et classera uniquement les chaînes d'une longueur de 8 caractères ou plus.

Utilisation depuis un conteneur Docker

  • Après avoir cloné le dépôt, construisez le conteneur. Depuis le répertoire racine du paquet :
root@kitploit:~
docker build -t stringsifter -f docker/Dockerfile .
  • Exécutez le conteneur avec l'argument flarestrings ou rank_strings pour utiliser la commande correspondante. Les commandes conteneurisées peuvent être utilisées dans des pipelines :
root@kitploit:~
cat <my_sample> | docker run -i stringsifter flarestrings | docker run -i stringsifter rank_strings
  • Ou exécutez le conteneur sans argument pour obtenir une invite de commande shell, en utilisant le drapeau -v pour exposer un répertoire hôte au conteneur :
root@kitploit:~
docker run -v <my_malware>:/samples -it stringsifter

où <my_malware> contient des échantillons à analyser, par exemple :

root@kitploit:~
docker run -v $HOME/malware/binaries:/samples -it stringsifter
  • À l'invite du conteneur :
root@kitploit:~
flarestrings /samples/<my_sample> | rank_strings <options>

Tous les arguments de ligne de commande sont pris en charge dans les scripts conteneurisés.

Utilisation sur la sortie de FLOSS

StringSifter peut être appliqué à des listes arbitraires de chaînes, ce qui le rend utile aux praticiens cherchant à tirer des enseignements de sources alternatives de collecte de renseignements telles que les vidages de mémoire vive, les exécutions en sandbox, ou les binaires contenant des chaînes obfusquées. Par exemple, FireEye Labs Obfuscated Strings Solver (FLOSS) extrait les chaînes imprimables tout comme Strings, mais révèle en plus les chaînes obfusquées qui ont été encodées, empaquetées ou construites manuellement sur la pile. Il peut être utilisé comme remplacement direct de Strings, ce qui signifie que StringSifter peut être invoqué de la même manière sur la sortie de FLOSS en utilisant la commande suivante :

root@kitploit:~
$PY2_VENV/bin/floss –q <options> <my_sample> | rank_strings <options>

Remarques :

  1. L'argument –q supprime les en-têtes et le formatage pour n'afficher que les chaînes extraites. Pour en savoir plus sur les options supplémentaires de FLOSS, consultez sa documentation d'utilisation.
  2. FLOSS requiert Python 2, tandis que StringSifter requiert Python 3. Dans la commande d'exemple, au moins l'un des deux floss ou rank_strings doit inclure un chemin relatif faisant référence à un environnement virtuel Python.
  3. FLOSS peut être téléchargé sous forme d'exécutable autonome. Dans ce cas, il n'est pas nécessaire de spécifier un environnement Python car l'exécutable ne dépend pas d'un interpréteur Python.

Remarques sur l'exécution de strings

Cette distribution inclut le programme flarestrings pour garantir une sortie prévisible sur toutes les plateformes. Si vous choisissez d'exécuter le programme strings installé sur votre système, notez que ses options ne sont pas cohérentes entre les versions et les plateformes :

Linux

La plupart des distributions Linux incluent le programme strings de GNU Binutils. Pour extraire à la fois les chaînes « wide » et « narrow », le programme doit être exécuté deux fois, avec redirection vers un fichier de sortie :

root@kitploit:~
strings <my_sample>       > strs.txt   # narrow strings
strings -el <my_sample>  >> strs.txt   # wide strings.  note the ">>"

macOS

Certaines versions de BSD strings fournies avec macOS ne prennent pas en charge les chaînes « wide ». Notez également que l'option -a permettant à strings d'analyser la totalité du fichier peut être désactivée dans la configuration par défaut. Sans -a, des chaînes informatives peuvent être perdues. Nous recommandons d'installer GNU Binutils via Homebrew ou MacPorts pour obtenir une version de strings qui prend en charge les caractères « wide ». Veillez à invoquer la bonne version de strings.

Windows

strings n'est pas installé par défaut sur Windows. Nous recommandons d'installer Windows Sysinternals, Cygwin ou Malcode Analyst Pack pour obtenir un strings fonctionnel.

Discussion

Cette version de StringSifter a été entraînée à partir des sorties de Strings sur des binaires de logiciels malveillants échantillonnés associés au premier jeu de données EMBER. Les étiquettes ordinales ont été générées à l'aide de procédures de supervision faible, et l'apprentissage supervisé est effectué par arbres de décision à boosting de gradient avec une fonction objectif d'apprentissage au classement (learning-to-rank). Consultez Liens rapides pour plus de détails techniques. Veuillez noter que ni les données étiquetées ni le code d'entraînement ne sont actuellement disponibles, bien que nous puissions reconsidérer cette approche dans les futures versions.

Problèmes

Nous utilisons GitHub Issues pour signaler les bogues et les demandes de fonctionnalités.

Remerciements

  • Merci aux équipes FireEye Data Science (FDS) et FireEye Labs Reverse Engineering (FLARE) pour leur relecture et leurs retours.
  • StringSifter a été conçu et développé par Philip Tully (FDS), Matthew Haigh (FLARE), Jay Gibble (FLARE) et Michael Sikorski (FLARE).
  • Le logo de StringSifter a été conçu par Josh Langner (FLARE).
  • flarestrings est dérivé de l'excellent outil FLOSS.
Télécharger l’outil
Option
Signification
--scores (-s)Inclure les scores de classement dans la sortie
--limit (-l)Limiter la sortie aux limit meilleures chaînes classées
--min-score (-m)Limiter la sortie aux chaînes ayant un score >= min-score
--batch (-b)Spécifier un dossier de sorties strings pour le traitement par lots