Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
yarasafe — SAFE embeddings para hacer coincidir funciones en yara | Kitploit
Herramientas/GitHubGitHub/lucamassarelli/yarasafe
Análisis de VulnerabilidadesIngeniería InversaAnálisis de MalwareAnálisis de BinariosAprendizaje Automático
GitHublucamassarelli/yarasafe

yarasafe

SAFE embeddings para hacer coincidir funciones en yara

Ver Repositorio
10014hace 6 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

YARASAFE - Verificaciones Automáticas de Similitud de Funciones Binarias con Yara

SAFE es una herramienta desarrollada para crear Embeddings de Funciones Binarias por Massarelli L., Di Luna G.A., Petroni F., Querzoni L. y Baldoni R. Puedes usar SAFE para crear tu embedding de funciones para usar dentro de reglas de yara.

Si estás interesado, echa un vistazo a nuestro artículo de investigación: https://arxiv.org/abs/1811.05296

Si usas esto para tu investigación, por favor cita:

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}
}

Este no es el código para reproducir los experimentos del artículo. Si estás interesado, echa un vistazo a: https://github.com/gadiluna/SAFE

Si prefieres usar PyTorch, echa un vistazo a SAFEtorch: https://github.com/facebookresearch/SAFEtorch

Introducción

Usando yarasafe puedes crear fácilmente firmas para funciones binarias sin mirar el código ensamblador en absoluto! Solo necesitas instalar los Plugins de IDA Pro que encuentras en la carpeta IDA Pro Plugin de este repositorio.

Una vez que hayas instalado el plugin, puedes comenzar a crear embeddings para la función que deseas coincidir. Estos embeddings se pueden insertar en reglas de yara para coincidir funciones usando yara. Para crear reglas potentes, puedes combinar embeddings de múltiples funciones con reglas yara estándar.

En este repositorio encontrarás el plugin para IDA Pro y el módulo yarasafe.

Yarasafe puede coincidir funciones con más de 50 instrucciones y menos de 150.

Requisitos

  • python3
  • radare2
  • jansson

Inicio rápido

Primero que nada, instala el plugin de IDA Pro. Puedes encontrar las instrucciones para hacerlo en la carpeta ida-pro-plugin de este repositorio. Luego puedes usar nuestro contenedor docker o compilar yara con el módulo yarasafe.

Docker

La forma más rápida de usar yarasafe es usar nuestro contenedor docker.

Descarga las imágenes:

  • docker pull massarelli/yarasafe

Inicia el docker montando la carpeta que contiene la regla y el archivo a analizar:

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

¡Ejecuta yara dentro del docker con tu regla!

Ubuntu

  • Clona el repositorio:
root@kitploit:~
git clone https://github.com/lucamassarelli/yarasafe.git
  • Instala las dependencias de yara:
root@kitploit:~
sudo apt-get install automake libtool make gcc flex bison 
sudo apt-get install libjansson-dev
  • Instala radare2 en tu sistema:
root@kitploit:~
git clone https://github.com/radare/radare2.git
cd radare2
./sys/install.sh
  • Instala las dependencias de yarasafe:
root@kitploit:~
cd yarasafe/python_script
pip3 install -r requirements.txt
  • Compila:
root@kitploit:~
./bootstrap.sh
./configure
make
  • Exporta la variable de entorno:
root@kitploit:~
export YARAPYSCRIPT={PATH_TO_YARASAFE_REPO}/python_script

MacOS

  • Clona el repositorio:
root@kitploit:~
git clone https://github.com/lucamassarelli/yarasafe.git
  • Instala las dependencias de yara:
root@kitploit:~
brew install automake libtool flex bison 
brew install jansson
  • Instala radare2 en tu sistema:
root@kitploit:~
git clone https://github.com/radare/radare2.git
cd radare2
./sys/install.sh
  • Instala las dependencias de yarasafe:
root@kitploit:~
cd yarasafe/python_script
pip3 install -r requirements.txt
  • Compila:
root@kitploit:~
./bootstrap.sh
./configure.sh
make
  • Exporta la variable de entorno:
root@kitploit:~
export YARAPYSCRIPT={PATH_TO_YARASAFE_REPO}/python_script

Pruebas

Dentro de la carpeta rules puedes encontrar la regla sample_safe_rule.yar. Esta regla debería activarse con cualquier archivo PE:

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

Cómo escribir tu regla

Para crear tu regla safe-yara, primero necesitas crear los embeddings para tu función. Para lograr esto, puedes usar el plugin de IDA Pro incluido en este repositorio. Dentro de la carpeta ida-pro-plugin puedes encontrar toda la información sobre cómo ejecutar el plugin.

Una vez que obtengas los embeddings para tus funciones, solo necesitas crear la regla. Un ejemplo de regla safe-yara es:

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 regla se cumplirá si dentro de la muestra hay al menos una función cuya similitud con el objetivo sea mayor a 0.95.

Añadir safe a tu versión de yara

Si quieres añadir safe a tu repositorio de yara:

  • Instala todas las dependencias
  • Copia el archivo libyara/modules/safe.c a tu_rep/libyara/modules/safe.c
  • Copia la carpeta libyara/include/python a tu_rep/libyara/include
  • Al final de libyara/modules/module_list añade MODULE(safe)
  • Modifica libyara/Makefile.am:
    • después de la línea:
    root@kitploit:~
    libyara_la_LDFLAGS = -version-number 3:8:1
    
    • añade:
    root@kitploit:~
    libyara_la_LDFLAGS += -LPATH_TO_PYTHON3.*_LIB -lpython3.*m -ljansson 
    
  • ¡Compila!
Descargar herramienta