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/lucamassarelli/yarasafe
Analyse des VulnérabilitésRétro-ingénierieAnalyse de MalwareAnalyse de BinairesApprentissage Automatique
GitHublucamassarelli/yarasafe

yarasafe

Plongements SAFE pour mettre en correspondance des fonctions dans yara

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

YARASAFE - Vérifications automatiques de similarité des fonctions binaires avec Yara

SAFE est un outil développé pour créer des plongements (embeddings) de fonctions binaires, développé par Massarelli L., Di Luna G.A., Petroni F., Querzoni L. et Baldoni R. Vous pouvez utiliser SAFE pour créer vos propres plongements de fonctions à utiliser dans des règles yara.

Si vous êtes intéressé, jetez un œil à notre article de recherche : https://arxiv.org/abs/1811.05296

Si vous utilisez ceci pour votre recherche, veuillez citer :

root@kitploit:~
@inproceedings{massarelli2018safe,
  title={SAFE: Self-Attentive Function Embeddings for Binary Similarity},
  author={Massarelli, Luca and Di Luna, Giuseppe Antonio and Petroni, Fabio and Querzoni, Leonardo and Baldoni, Roberto},
  booktitle={Proceedings of 16th Conference on Detection of Intrusions and Malware & Vulnerability Assessment (DIMVA)},
  year={2019}
}

Ceci n'est pas le code pour reproduire les expériences de l'article. Si cela vous intéresse, jetez un œil à : https://github.com/gadiluna/SAFE

Si vous préférez utiliser PyTorch, jetez un œil à SAFEtorch : https://github.com/facebookresearch/SAFEtorch

Introduction

Avec yarasafe, vous pouvez facilement créer des signatures pour des fonctions binaires sans même regarder le code assembleur ! Vous avez simplement besoin d'installer les plugins IDA Pro que vous trouverez dans le dossier IDA Pro Plugin de ce dépôt.

Une fois le plugin installé, vous pouvez commencer à créer des plongements pour la fonction que vous souhaitez faire correspondre. Ces plongements peuvent être insérés dans des règles yara pour faire correspondre des fonctions à l'aide de yara. Pour créer une règle puissante, vous pouvez combiner les plongements de plusieurs fonctions avec des règles yara standard.

Dans ce dépôt, vous trouverez le plugin pour IDA Pro et le module yarasafe.

Yarasafe peut faire correspondre des fonctions comportant plus de 50 instructions et moins de 150.

Prérequis

  • python3
  • radare2
  • jansson

Démarrage rapide

Tout d'abord, installez le plugin IDA Pro. Vous trouverez les instructions pour le faire dans le dossier ida-pro-plugin de ce dépôt. Ensuite, vous pouvez utiliser notre conteneur docker ou compiler yara avec le module yarasafe.

Docker

La façon la plus rapide d'utiliser yarasafe est d'utiliser notre conteneur docker.

Tirez les images :

  • docker pull massarelli/yarasafe

Démarrez le docker en montant le dossier qui contient la règle et le fichier à analyser :

  • docker run -v {FOLDER_TO_MOUNT}:/home/yarasafe/test -it massarelli/yarasafe bash

Lancez yara dans le docker avec votre règle !

Ubuntu

  • Clonez le dépôt :
root@kitploit:~
git clone https://github.com/lucamassarelli/yarasafe.git
  • Installez les dépendances yara :
root@kitploit:~
sudo apt-get install automake libtool make gcc flex bison 
sudo apt-get install libjansson-dev
  • Installez radare2 sur votre système :
root@kitploit:~
git clone https://github.com/radare/radare2.git
cd radare2
./sys/install.sh
  • Installez les dépendances yarasafe :
root@kitploit:~
cd yarasafe/python_script
pip3 install -r requirements.txt
  • Compilez :
root@kitploit:~
./bootstrap.sh
./configure
make
  • Exportez la variable d'environnement :
root@kitploit:~
export YARAPYSCRIPT={PATH_TO_YARASAFE_REPO}/python_script

MacOS

  • Clonez le dépôt :
root@kitploit:~
git clone https://github.com/lucamassarelli/yarasafe.git
  • Installez les dépendances yara :
root@kitploit:~
brew install automake libtool flex bison 
brew install jansson
  • Installez radare2 sur votre système :
root@kitploit:~
git clone https://github.com/radare/radare2.git
cd radare2
./sys/install.sh

Installez les dépendances yarasafe :

root@kitploit:~
cd yarasafe/python_script
pip3 install -r requirements.txt
  • Compilez :
root@kitploit:~
./bootstrap.sh
./configure.sh
make
  • Exportez la variable d'environnement :
root@kitploit:~
export YARAPYSCRIPT={PATH_TO_YARASAFE_REPO}/python_script

Test

Dans le dossier rules, vous trouverez la règle sample_safe_rule.yar. Cette règle devrait se déclencher avec n'importe quel fichier PE :

root@kitploit:~
yara {PATH_TO_YARASAFE_REPO}/rules/sample_safe_rule.yar {FILES}

Comment écrire votre règle

Pour créer votre règle safe-yara, vous devez d'abord créer les plongements pour votre fonction. Pour ce faire, vous pouvez utiliser le plugin IDA Pro fourni dans ce dépôt. Dans le dossier ida-pro-plugin, vous trouverez toutes les informations sur la façon d'exécuter le plugin !

Une fois que vous avez obtenu les plongements pour vos fonctions, il vous suffit de créer la règle. Un exemple de règle safe-yara est :

root@kitploit:~
import "safe"

rule example
{
    meta:
        description = "This is just an example"
        threat_level = 3
        in_the_wild = true

    condition:
        safe.similarity("[-0.02724416,0.00640265,0.01138294,-0.07013566,0.00306808,-0.09757628,0.10414989,-0.13555837,-0.07873314,-0.00725415,-0.01418876,-0.05907412,-0.12452127,0.06237456,0.02260636,-0.06013175,0.11689295,-0.00200026,-0.03594812,0.07857288,-0.00288544,0.01148411,0.00891006,0.04702956,0.1205316,0.0079077,-0.07449158,0.00653283,0.15414064,0.13021031,0.01325423,-0.35491243,-0.00992016,-0.21460094,0.0558461,-0.07761839,-0.10909985,-0.05616508,0.01800609,0.06736821,0.00308393,0.04241242,-0.08351246,0.13501632,-0.10729794,-0.10229874,0.00066896,-0.01963937,0.05516102,-0.01612499,-0.09743191,-0.0314435,-0.01470971,-0.00125769,-0.01774654,0.2332938,0.14166495,0.16998142,-0.04843156,-0.08931472,0.13102795,0.14147657,0.02275739,-0.04335862,0.05724025,0.03936686,-0.10526938,-0.11637416,-0.0112917,0.05484914,-0.06934103,0.2543144,-0.17833991,-0.00828893,0.00174531,-0.03048271,-0.04773486,0.095866,-0.14434388,0.11433239,-0.10749247,0.03952292,0.03988512,-0.11541581,-0.07812429,-0.04978319,0.32052052,-0.0497911,-0.13022986,0.02477266,-0.05968329,0.01724695,0.01577485,-0.0497415,0.24494685,0.00361651,-0.08172874,-0.07473877,-0.01046288,0.02298573]") > 0.95
}

La règle sera satisfaite si dans l'échantillon il y a au moins une fonction dont la similarité avec la cible est supérieure à 0,95.

Ajouter safe à votre version de yara

Si vous souhaitez ajouter safe à votre dépôt yara :

  • Installez toutes les dépendances

  • Copiez le fichier libyara/modules/safe.c dans votre_rep/libyara/modules/safe.c

  • Copiez le dossier libyara/include/python dans votre_rep/libyara/include

  • À la fin de libyara/modules/module_list, ajoutez MODULE(safe)

  • Modifiez libyara/Makefile.am :

    • après la ligne :
    root@kitploit:~
    libyara_la_LDFLAGS = -version-number 3:8:1
    
    • ajoutez :
    root@kitploit:~
    libyara_la_LDFLAGS += -LPATH_TO_PYTHON3.*_LIB -lpython3.*m -ljansson 
    
  • Compilez !

Télécharger l’outil