Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
yarasafe — Embeddings SAFE para corresponder a funções no yara | Kitploit
Ferramentas/GitHubGitHub/lucamassarelli/yarasafe
Análise de VulnerabilidadesEngenharia ReversaAnálise de MalwareAnálise de BináriosAprendizado de Máquina
GitHublucamassarelli/yarasafe

yarasafe

Embeddings SAFE para corresponder a funções no yara

Ver Repositório
10014há 6 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

YARASAFE - Verificações Automáticas de Similaridade de Funções Binárias com Yara

SAFE é uma ferramenta desenvolvida para criar Embeddings de Funções Binárias, desenvolvida por Massarelli L., Di Luna G.A., Petroni F., Querzoni L. e Baldoni R. Você pode usar SAFE para criar seu embedding de função para usar dentro de regras yara.

Se você estiver interessado, dê uma olhada em nosso artigo de pesquisa: https://arxiv.org/abs/1811.05296

Se você estiver usando isso para sua pesquisa, por favor cite:

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 não é o código para reproduzir os experimentos do artigo. Se você estiver interessado, dê uma olhada em: https://github.com/gadiluna/SAFE

Se você preferir usar PyTorch, dê uma olhada em SAFEtorch: https://github.com/facebookresearch/SAFEtorch

Introdução

Usando o yarasafe, você pode criar facilmente assinaturas para funções binárias sem precisar olhar para o código assembly! Você só precisa instalar os Plugins do IDA Pro que estão na pasta IDA Pro Plugin deste repositório. Depois de instalar o plugin, você pode começar a criar embeddings para as funções que deseja corresponder. Esses embeddings podem ser inseridos em regras yara para corresponder funções usando yara. Para criar regras poderosas, você pode combinar embeddings de múltiplas funções com regras yara padrão. Neste repositório você encontrará o plugin para IDA Pro e o módulo yarasafe. O Yarasafe pode corresponder funções com mais de 50 instruções e menos de 150.

Requisitos

  • python3
  • radare2
  • jansson

Início rápido

Primeiramente, instale o plugin do IDA Pro. Você pode encontrar as instruções para isso na pasta ida-pro-plugin deste repositório. Depois, você pode usar nosso contêiner docker ou compilar o yara com o módulo yarasafe.

Docker

A maneira mais rápida de usar o yarasafe é usar nosso contêiner docker.

Baixe as imagens:

  • docker pull massarelli/yarasafe

Inicie o docker montando a pasta que contém a regra e o arquivo a ser analisado:

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

Lance o yara dentro do docker com sua regra!

Ubuntu

  • Clone o repositório:
root@kitploit:~
git clone https://github.com/lucamassarelli/yarasafe.git
  • Instale as dependências do yara:
root@kitploit:~
sudo apt-get install automake libtool make gcc flex bison 
sudo apt-get install libjansson-dev
  • Instale o radare2 no seu sistema:
root@kitploit:~
git clone https://github.com/radare/radare2.git
cd radare2
./sys/install.sh
  • Instale as dependências do yarasafe:
root@kitploit:~
cd yarasafe/python_script
pip3 install -r requirements.txt
  • Compile:
root@kitploit:~
./bootstrap.sh
./configure
make
  • Exporte a variável de ambiente:
root@kitploit:~
export YARAPYSCRIPT={PATH_TO_YARASAFE_REPO}/python_script

MacOS

  • Clone o repositório:
root@kitploit:~
git clone https://github.com/lucamassarelli/yarasafe.git
  • Instale as dependências do yara:
root@kitploit:~
brew install automake libtool flex bison 
brew install jansson
  • Instale o radare2 no seu sistema:
root@kitploit:~
git clone https://github.com/radare/radare2.git
cd radare2
./sys/install.sh

Instale as dependências do yarasafe:

root@kitploit:~
cd yarasafe/python_script
pip3 install -r requirements.txt
  • Compile:
root@kitploit:~
./bootstrap.sh
./configure.sh
make
  • Exporte a variável de ambiente:
root@kitploit:~
export YARAPYSCRIPT={PATH_TO_YARASAFE_REPO}/python_script

Testando

Dentro da pasta rules você pode encontrar a regra sample_safe_rule.yar. Esta regra deve disparar com qualquer arquivo PE:

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

Como escrever sua regra

Para criar sua regra safe-yara, primeiro você precisa criar os embeddings para sua função. Para fazer isso, você pode usar o plugin IDA Pro fornecido neste repositório. Dentro da pasta ida-pro-plugin você encontra todas as informações sobre como executar o plugin! Depois de obter os embeddings para suas funções, você só precisa criar a regra. Um exemplo de regra safe-yara é:

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
}

A regra será satisfeita se dentro da amostra houver pelo menos uma função cuja similaridade com o alvo seja superior a 0,95.

Adicionando safe à sua versão do yara

Se você quiser adicionar safe ao seu repositório yara:

  • Instale todas as dependências

  • Copie o arquivo libyara/modules/safe.c para your_rep/libyara/modules/safe.c

  • Copie a pasta libyara/include/python para your_rep/libyara/include

  • No final de libyara/modules/module_list adicione ``` MODULE(safe)

  • Modifique libyara/Makefile.am:

    • após a linha:
    root@kitploit:~
    libyara_la_LDFLAGS = -version-number 3:8:1
    
    • adicione:
    root@kitploit:~
    libyara_la_LDFLAGS += -LPATH_TO_PYTHON3.*_LIB -lpython3.*m -ljansson 
    
  • Compile!

Baixar ferramenta