Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
yarasafe — yara에서 함수를 매칭하기 위한 SAFE 임베딩 | Kitploit
도구/GitHubGitHub/lucamassarelli/yarasafe
Vulnerability AnalysisReverse EngineeringMalware AnalysisBinary AnalysisMachine Learning
GitHublucamassarelli/yarasafe

yarasafe

yara에서 함수를 매칭하기 위한 SAFE 임베딩

저장소 보기
100146년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

YARASAFE - Yara를 이용한 자동 바이너리 함수 유사성 검사

SAFE는 Massarelli L., Di Luna G.A., Petroni F., Querzoni L., Baldoni R.이 개발한 바이너리 함수 임베딩을 생성하기 위한 도구입니다. SAFE를 사용하여 yara 규칙 내에서 사용할 함수 임베딩을 생성할 수 있습니다.

관심이 있으시면 연구 논문을 참조하세요: https://arxiv.org/abs/1811.05296

이 도구를 연구에 사용하는 경우 다음을 인용해 주세요:

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

이는 논문의 실험을 재현하기 위한 코드가 아닙니다. 관심이 있으시면 다음을 참조하세요: https://github.com/gadiluna/SAFE

PyTorch를 선호한다면 SAFEtorch를 참조하세요: https://github.com/facebookresearch/SAFEtorch

소개

yarasafe를 사용하면 어셈블리 코드를 전혀 보지 않고도 바이너리 함수에 대한 시그니처를 쉽게 생성할 수 있습니다! 이 저장소의 IDA Pro Plugin 폴더에 있는 IDA Pro 플러그인을 설치하기만 하면 됩니다.

플러그인을 설치하면 매칭하려는 함수에 대한 임베딩을 생성할 수 있습니다. 이러한 임베딩은 yara 규칙에 삽입되어 yara를 사용하여 함수를 매칭할 수 있습니다.

강력한 규칙을 생성하려면 여러 함수의 임베딩을 표준 yara 규칙과 결합할 수 있습니다.

이 저장소에는 IDA Pro용 플러그인과 yarasafe 모듈이 있습니다.

Yarasafe는 50개 이상 150개 미만의 명령어를 가진 함수를 매칭할 수 있습니다.

요구 사항

  • python3
  • radare2
  • jansson

빠른 시작

먼저 IDA Pro 플러그인을 설치합니다. 설치 방법은 이 저장소의 ida-pro-plugin 폴더에서 확인할 수 있습니다. 그런 다음 Docker 컨테이너를 사용하거나 yarasafe 모듈로 yara를 빌드할 수 있습니다.

Docker

yarasafe를 사용하는 가장 빠른 방법은 Docker 컨테이너를 사용하는 것입니다.

이미지를 가져옵니다:

  • docker pull massarelli/yarasafe

규칙과 분석할 파일이 포함된 폴더를 마운트하여 Docker를 시작합니다:

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

Docker 내부에서 규칙과 함께 yara를 실행하세요!

Ubuntu

  • 저장소 복제:
root@kitploit:~
git clone https://github.com/lucamassarelli/yarasafe.git
  • yara 종속성 설치:
root@kitploit:~
sudo apt-get install automake libtool make gcc flex bison 
sudo apt-get install libjansson-dev
  • 시스템에 radare2 설치:
root@kitploit:~
git clone https://github.com/radare/radare2.git
cd radare2
./sys/install.sh
  • yarasafe 종속성 설치:
root@kitploit:~
cd yarasafe/python_script
pip3 install -r requirements.txt
  • 컴파일:
root@kitploit:~
./bootstrap.sh
./configure
make
  • 환경 변수 내보내기:
root@kitploit:~
export YARAPYSCRIPT={PATH_TO_YARASAFE_REPO}/python_script

MacOS

  • 저장소 복제:
root@kitploit:~
git clone https://github.com/lucamassarelli/yarasafe.git
  • yara 종속성 설치:
root@kitploit:~
brew install automake libtool flex bison 
brew install jansson
  • 시스템에 radare2 설치:
root@kitploit:~
git clone https://github.com/radare/radare2.git
cd radare2
./sys/install.sh

yarasafe 종속성 설치:

root@kitploit:~
cd yarasafe/python_script
pip3 install -r requirements.txt
  • 컴파일:
root@kitploit:~
./bootstrap.sh
./configure.sh
make
  • 환경 변수 내보내기:
root@kitploit:~
export YARAPYSCRIPT={PATH_TO_YARASAFE_REPO}/python_script

테스트

rules 폴더 안에 sample_safe_rule.yar 규칙이 있습니다. 이 규칙은 모든 PE 파일에서 트리거되어야 합니다:

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

규칙 작성 방법

자신만의 safe-yara-rule을 생성하려면 먼저 함수에 대한 임베딩을 생성해야 합니다. 이를 위해 이 저장소에 포함된 IDA Pro 플러그인을 사용할 수 있습니다. ida-pro-plugin 폴더 안에 플러그인 실행 방법에 대한 모든 정보가 있습니다!

함수의 임베딩을 얻으면 규칙을 생성하기만 하면 됩니다. safe-yara-rule의 예는 다음과 같습니다:

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
}

이 규칙은 샘플 내에 대상과의 유사도가 0.95보다 큰 함수가 하나 이상 존재할 때 만족됩니다.

자신의 yara 버전에 safe 추가하기

자신의 yara 저장소에 safe를 추가하려면:

  • 모든 종속성 설치

  • libyara/modules/safe.c 파일을 your_rep/libyara/modules/safe.c로 복사

  • libyara/include/python 폴더를 your_rep/libyara/include로 복사

  • libyara/modules/module_list 끝에 MODULE(safe) 추가

  • libyara/Makefile.am 수정:

    • 다음 줄 뒤에:
    root@kitploit:~
    libyara_la_LDFLAGS = -version-number 3:8:1
    
    • 추가:
    root@kitploit:~
    libyara_la_LDFLAGS += -LPATH_TO_PYTHON3.*_LIB -lpython3.*m -ljansson 
    
  • 컴파일!

도구 다운로드