
Analyse de triage à haute intensité
[][docs]
[
][tests]
[
][codecov]
[
][pypi]
__ __ High Octane Triage Analysis __
|| _||______ __ __________ _____ ||
|| \||___ \__| ____/ ______/___ / ____\ ||
==||=====|| | __/ |/ \ /==| / __ \ __\===]|
'======|| | \ | | \_ _| \ ___/| | ||
||____ /__|___|__/ / | \____]| | ||
=========''====\/=========/ /==|__|=====|__|======'
\ /
\/
Binary Refinery™ est une collection de scripts Python qui implémentent des transformations de données binaires telles que la compression et le chiffrement.
Nous y ferons souvent référence simplement par refinery, qui est aussi le nom du paquet correspondant.
Les scripts sont conçus pour lire exclusivement l'entrée depuis stdin et écrire la sortie vers stdout.
La philosophie principale est que chaque script doit être une unité au sens où il effectue une tâche,
et les unités individuelles peuvent être combinées en pipelines avec l'opérateur de pipe | en ligne de commande pour réaliser des tâches plus complexes.
L'objectif principal du projet est le triage de malwares,
et constitue une tentative d'implémenter quelque chose comme CyberChef en ligne de commande.
Créez un environnement virtuel Python. Vous avez besoin de Python 3.11 ou ultérieur. Installez refinery comme ceci :
python -m pip install -U pip
python -m pip install -U binary-refinery[extended]
Exécutez les unités avec -h pour apprendre comment elles fonctionnent, parcourez la [documentation][docs] ou utilisez la commande binref pour les trouver.
Regardez [une vidéo récente][VOD3] si vous voulez le voir en action.
Mais aussi, lisez le reste de ce readme.
Il n'y a pas de calendrier de publication, mais les versions sortent très fréquemment et il est recommandé de mettre à jour périodiquement. Les corrections de bugs ne sont pas documentées en dehors de GIT, mais tous les autres changements (c'est-à-dire les nouvelles fonctionnalités) sont documentés dans le changelog. Suivez-moi sur [Mastodon][] pour les mises à jour concernant les versions particulièrement importantes.
Le texte d'aide affiché lors de l'exécution d'une unité avec le commutateur -h ou --help constitue sa documentation principale.
La [documentation générée automatiquement][docs] contient une compilation de cette sortie pour chaque unité au niveau supérieur,
mais contient également la spécification des trois concepts fondamentaux de la boîte à outils :
[framing][frame], [arguments multibin][argformats], et [méta variables][meta].
Une recherche en texte intégral de la description et du texte d'aide pour chaque unité est également disponible en ligne de commande,
via la commande binref fournie. Reconnaissant que la documentation de référence peut être quelque peu aride,
un effort continu est mené pour produire une série de tutoriels ; je recommande vivement de les consulter.
En plus de cela, je rassemble des ressources supplémentaires (y compris certaines produites par des tiers) ci-dessous.
[!NOTE]
Refinery est encore en alpha et l'interface peut parfois changer, c'est-à-dire que des unités et des paramètres peuvent être supprimés ou renommés. Par conséquent, il peut arriver que des lignes de commande spécifiques provenant d'anciennes vidéos et articles de blog ne fonctionnent plus.
2021/08] [OALabs][OA] a eu la gentillesse de me laisser [faire une démo de la boîte à outils dans une vidéo dédiée][VOD1].
Dans la vidéo, je parcours essentiellement le contenu du
premier tutoriel.2021/11] [Johannes Bader][JB] a écrit un excellent [article de blog][BLOG] sur l'analyse de malspam avec binary refinery.2024/03] [Malware Analysis For Hedgehogs][MH] a réalisé [une vidéo sur le dépaquetage d'un échantillon XWorm][VOD2] en utilisant refinery.2024/11] [the CyberYeti][CY] m'a invité [en stream pour présenter refinery][VOD3].2025/06] J'étais [de nouveau en stream][VOD4] avec [the CyberYeti][CY], celui-ci est un peu plus brut.
Tous les bugs que vous pouvez voir ici ont été corrigés. 😉Les démonstrations incluent à nouveau des échantillons de la section d'exemples ci-dessous et des tutoriels.
The Binary Refinery est (c) 2019 Jesko Hüttenhain, et publié sous une [licence BSD 3-Clause][license]. Ce dépôt contient également une copie du texte complet de la licence. Si vous souhaitez en faire quelque chose qui n'est pas couvert par cette licence, n'hésitez pas à contacter l'auteur.
Refinery nécessite au moins Python 3.11. Il est recommandé de l'installer dans son propre [environnement virtuel][venv] : Le paquet peut tirer un grand nombre de dépendances, et l'installer dans votre Python global est quelque peu sujet aux conflits de versions. De plus, comme la boîte à outils introduit un grand nombre de nouvelles commandes, il y a de bonnes chances que certaines d'entre elles entrent en conflit sur certains systèmes, et les garder dans leur propre environnement virtuel séparé est un moyen de l'éviter.
Si vous souhaitez avoir toutes les commandes refinery disponibles dans votre shell à tout moment (c'est-à-dire sans avoir à basculer vers un environnement virtuel personnalisé),
vous avez également la possibilité de choisir un préfixe pour l'installation,
qui sera placé devant chaque shim de commande installé.
Par exemple, si vous choisissez r. comme préfixe, alors l'unité [emit][] sera installée en tant que commande r.emit.
Un avantage supplémentaire est que vous pouvez taper r. et appuyer deux fois sur Tab pour obtenir une liste de toutes les commandes refinery disponibles.
Notez cependant qu'aucun préfixe n'est supposé dans la documentation et que c'est un objectif de développement de refinery de ne pas entrer en conflit sur la plupart des systèmes.
L'auteur n'utilise pas de préfixe et fournit cette option comme filet de sécurité.