
Cadre modulaire de collecte et de corrélation d'artefacts d'analyse de logiciels malveillants
Subparse est un framework modulaire développé par Josh Strochein, Aaron Baker et Odin Bernstein. Le framework est conçu pour analyser et indexer des fichiers malveillants et présenter les informations trouvées lors de l'analyse dans un visualiseur web consultable. Le framework est modulaire, utilisant un moteur d'analyse principal, des modules d'analyse et une variété d'enrichisseurs qui ajoutent des informations supplémentaires aux index de malwares. Les principales valeurs d'entrée du framework sont des répertoires de fichiers malveillants, que le moteur d'analyse principal ou un moteur d'analyse spécifié par l'utilisateur analyse avant d'ajouter des informations supplémentaires provenant de tout moteur d'enrichissement spécifié par l'utilisateur, le tout avant d'indexer les informations analysées dans un index Elasticsearch. Les informations recueillies peuvent ensuite être recherchées et visualisées via un visualiseur web, qui permet également de filtrer sur toute valeur recueillie à partir de n'importe quel fichier. Il existe actuellement 3 moteurs d'analyse, les moteurs d'analyse par défaut (PEParser, OLEParser et ELFParser), et 2 moteurs d'enrichissement (ABUSEEnricher et CAPEEnricher).
Pour commencer à utiliser Subparse, quelques programmes requis/recommandés doivent être installés et configurés avant d'essayer de travailler avec notre logiciel.
| Logiciel | Statut | Lien |
|---|
Après avoir installé les logiciels requis/recommandés sur votre système, quelques autres étapes doivent être suivies pour installer Subparse.
sudo get apt install build-essential pip3 install -r ./requirements.txt
docker-compose up
Remarque : Cela peut prendre un certain temps en raison du téléchargement des images et de la configuration des conteneurs nécessaires à Subparse.
Options de ligne de commande disponibles pour subparse/parser/subparse.py :
Pour visualiser les résultats des analyseurs de Subparse, accédez à localhost:8080. Si vous rencontrez des difficultés pour accéder au site, assurez-vous que le conteneur est démarré dans Docker et qu'aucun autre processus ne tourne sur le port 8080, ce qui pourrait empêcher l'accès au site.
Avant l'exécution de tout analyseur, des informations générales sont collectées sur l'échantillon, quel que soit le type de fichier sous-jacent. Ces informations comprennent :
Les analyseurs ne sont exécutés QUE sur les échantillons qui correspondent au type de fichier. Par exemple, les fichiers PE seront par défaut soumis au PEParser en raison du type de fichier correspondant à ceux que le PEParser peut examiner.
Ces modules sont facultatifs et ne seront exécutés que s'ils sont spécifiés via l'option -e | --enrichers sur la ligne de commande.
La vue web de Subparse a été construite avec Bootstrap pour son CSS, ce qui permet d'utiliser tout CSS Bootstrap intégré lors du développement de vos propres fichiers Vue.js pour analyseur/enrichisseur personnalisé. Nous avons également fourni un exemple pour chacun pour vous aider à démarrer et avons également implémenté quelques widgets personnalisés pour faciliter le processus de développement et promouvoir la standardisation dans la façon dont les informations sont affichées. Tous les fichiers Vue.js sont utilisés pour afficher dynamiquement les informations de l'analyseur/enrichisseur personnalisé et servent de modèles pour les données.
Remarque : Les conventions de nommage, tant pour les noms de classe que pour les noms de fichiers, doivent être strictement respectées ; c'est la première chose à vérifier si vous rencontrez des problèmes pour que votre analyseur/enrichisseur personnalisé soit exécuté. La convention de nommage de votre analyseur/enrichisseur doit utiliser le même nom dans tous les fichiers et noms de classe.
L'objet logger est une implémentation singleton du logger Python par défaut. Pour une utilisation approfondie, veuillez vous référer à la Documentation officielle. Pour Subparse, les seules méthodes de journalisation que nous recommandons d'utiliser sont les niveaux de journalisation pour la sortie. Ce sont :
| Docker | Requis | Installation Guide |
| Python3.8.1 | Requis | Installation Guide |
| Pyenv | Recommandé | Installation Guide |
| Argument | Alternative | Requis | Description |
|---|
| -h | --help | Non | Affiche le menu d'aide |
| -d SAMPLES_DIR | --directory SAMPLES_DIR | Oui | Répertoire des échantillons à analyser |
| -e ENRICHER_MODULES | --enrichers ENRICHER_MODULES | Non | Modules d'enrichissement à utiliser pour une analyse supplémentaire |
| -r | --reset | Non | Réinitialiser/supprimer toutes les données dans le cluster Elasticsearch configuré |
| -v | --verbose | Non | Afficher la sortie détaillée de la ligne de commande |
| -s | --service-mode | Non | Entre en mode service permettant d'ajouter des échantillons au SAMPLES_DIR pendant le traitement |