YARA — 보안 분석 및 진단

최신 도구 가이드 / 보안 분석 및 진단 / yara.html

보안 분석 및 진단원문등록 2026-10-18

텍스트·바이너리에서 규칙으로 정의한 패턴을 찾아 내는 악성코드 탐지·분류 도구입니다.

기본 정보

프로그램 이름YARA (야라)
한 줄 소개텍스트·바이너리에서 규칙으로 정의한 패턴을 찾아 내는 악성코드 탐지·분류 도구입니다.
개발·유지VirusTotal (Plusvic)
공식 홈페이지https://virustotal.com/yara/
공식 문서https://yara.readthedocs.io/
공식 다운로드https://github.com/VirusTotal/yara/releases
지원 운영체제Linux, macOS, Windows
라이선스GPL-2.0-or-later
안정 버전4.5.8 (2026-07-28 출시) — 확인일 2026-10-18
GitHub 저장소https://github.com/VirusTotal/yara
분류보안 분석 및 진단 (태그: 악성코드, 탐지, 규칙, 포렌식, 보안)

이 프로그램은 무엇인가?

YARA는 '패키지처럼' 파일·메모리에서 특정 문자열·바이트 시퀀스·조건 조합을 찾는 규칙 엔진입니다. 보안 연구원이 악성코드 특징을 rules 파일로 정의하면, 스캔 대상에서 그 규칙에 걸리는 파일을 모아 줍니다.

명령줄 도구(yarac·yara)로 쓰이지만 본질은 규칙 언어입니다. 문자열 일치뿐 아니라 PE 헤더 값, XOR 난독화 조건, 와일드카드 같은 논리 조건을 조합할 수 있어 커뮤니티·상용 탐지 엔진에서도 표준으로 쓰입니다.

어떤 문제를 해결하는가?

  • ('보안 점검에서', '의심 파일이 악성코드 기능과 관련 있는지 빠르게 판단해야 할 때', '기존 공개 규칙으로 스캔해 유사 특징을 확인할 수 있습니다.')
  • ('포렌식에서', '대량 로그·파일 중 공격 관련 파일만 골라내야 할 때', '규칙으로 필터링해 분석 대상을 좁힐 수 있습니다.')
  • ('탐지 파이프라인에서', '파일 수집·스토리지에 자동 분류가 필요할 때', 'CI·감시 시스템에 규칙 스캔을 결합할 수 있습니다.')

주요 기능

규칙 기반 스캔

strings·condition 블록으로 탐지 규칙을 정의해 파일 스캔

  • 활용 상황: 공개 악성코드 규칙 적용
  • 얻는 결과: 조건에 맞는 파일 목록·오프셋 출력
  • 제한 사항: 규칙 품질에 따라 오탐·미탐이 크게 달라집니다.

여러 입력 형식

파일·디렉터리·메모리 덤프를 대상으로 스캔

  • 활용 상황: 포렌식·실시간 감시
  • 얻는 결과: 다양한 증거 소스를 한 엔진으로 처리
  • 제한 사항: 대용량 트래픽은 스캔 비용 관리 필요.

컴파일·재사용

yarac으로 규칙을 컴파일해 배포

  • 활용 상황: 엔진 업데이트 시 규칙 재빌드
  • 얻는 결과: 런타임 규칙 로딩 비용 절감
  • 제한 사항: 플랫폼별 바이너리 컴파일 주의.

모듈 지원

PE·ELF·dotnet 등 파일 구조 모듈로 조건 확장

  • 활용 상황: 실행 파일 상세 조건
  • 얻는 결과: 헤더·섹션·가져오기 테이블로 정밀 규칙
  • 제한 사항: 모듈 문서 학습이 필요합니다.

설치 및 실행

Linux (소스 빌드)

빌드 의존성(automake·libtool·openssl-dev)을 설치한 뒤 소스에서 빌드합니다.

sudo apt install automake libtool libssl-dev gcc make
git clone https://github.com/VirusTotal/yara.git
cd yara && ./bootstrap.sh && ./configure && make && sudo make install

Linux (배포판 패키지)

일부 배포판 저장소에서 제공합니다. 버전이 오래될 수 있습니다.

sudo apt install yara

macOS / Windows

brew 또는 소스 빌드로 설치합니다.

brew install yara   # macOS
# Windows: cygwin/WSL 환경 또는 소스 빌드

실제 사용 예제

규칙 파일 작성

rule 키워드로 규칙을 정의하고 strings에 패턴, condition에 매칭 조건을 씁니다.

$ cat susp_http.yar
rule suspicious_http {
  strings:
    $a = "User-Agent: sqlmap"
    $b = "UNION SELECT"
  condition:
    any of them
}

디렉터리 스캔

yara에 규칙 파일과 스캔 대상 디렉터리를 지정해 매칭 결과를 확인합니다.

$ yara susp_http.yar /var/log/apache2/
suspicious_http /var/log/apache2/access.log
suspicious_http /var/log/apache2/error.log

컴파일·배포

yarac으로 규칙을 컴파일하면 스캔 시 빠르게 로드할 수 있습니다.

$ yarac susp_http.yar susp_http.compiled
$ yara -C susp_http.compiled /srv/www/uploads/

장점과 한계

장점

  • 무료·오픈소스(GPL) — 커뮤니티 공개 규칙을 그대로 활용 가능
  • 규칙 언어가 유연해 문자열·헤더·논리 조건을 조합한 정밀 탐지 가능
  • 경량·저자원 — 서버 상주 감시에도 부담이 적음
  • 포렌식·탐지·CI 파이프라인 등 활용 범위가 넓음

사용 전에 고려할 점

  • 규칙 작성 능력에 따라 탐지 품질이 크게 좌우됩니다.
  • 단순 문자열 규칙은 난독화에 취약할 수 있습니다.
  • 공개 규칙만으로는 특정 타깃 공격을 커버하지 못할 수 있습니다.

비슷한 프로그램과 비교

프로그램특징이런 경우에 적합
SigmaSIEM용 탐지 규칙 표준(여러 엔진으로 변환)로그 기반 탐지 룰 관리
ClamAV바이러스 스캐너 + 자체 서명파일 상주·전송 시점 검사
YARA-XVirusTotal의 Rust 재작성 신규 엔진차세대 성능·정확도 기대

공식 자료 및 추가 학습

버전·지원 환경 정보는 2026-10-18 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요.

실제 실행 화면

아래는 사용 흐름을 이해하기 위해 만든 합성 예시 화면입니다(실제 실행 결과 아님). 화면은 합성 예시이며 실제 실행 결과가 아닙니다.

YARA 예시: 규칙 파일 작성 후 디렉터리 스캔, yarac 컴파일

실제 운영 중인 서버

이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.