YARA — 보안 분석 및 진단
최신 도구 가이드 / 보안 분석 및 진단 / yara.html
텍스트·바이너리에서 규칙으로 정의한 패턴을 찾아 내는 악성코드 탐지·분류 도구입니다.
기본 정보
| 프로그램 이름 | 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 파이프라인 등 활용 범위가 넓음
사용 전에 고려할 점
- 규칙 작성 능력에 따라 탐지 품질이 크게 좌우됩니다.
- 단순 문자열 규칙은 난독화에 취약할 수 있습니다.
- 공개 규칙만으로는 특정 타깃 공격을 커버하지 못할 수 있습니다.
비슷한 프로그램과 비교
| 프로그램 | 특징 | 이런 경우에 적합 |
|---|---|---|
| Sigma | SIEM용 탐지 규칙 표준(여러 엔진으로 변환) | 로그 기반 탐지 룰 관리 |
| ClamAV | 바이러스 스캐너 + 자체 서명 | 파일 상주·전송 시점 검사 |
| YARA-X | VirusTotal의 Rust 재작성 신규 엔진 | 차세대 성능·정확도 기대 |
공식 자료 및 추가 학습
- 공식 홈페이지 — https://virustotal.com/yara/
- 공식 문서 / 지식베이스 — https://yara.readthedocs.io/
- 공식 다운로드 — https://github.com/VirusTotal/yara/releases
- 릴리스 노트 — https://github.com/VirusTotal/yara/releases
- 소스 / 개발 자료 — https://github.com/VirusTotal/yara
버전·지원 환경 정보는 2026-10-18 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요.
실제 실행 화면
아래는 사용 흐름을 이해하기 위해 만든 합성 예시 화면입니다(실제 실행 결과 아님). 화면은 합성 예시이며 실제 실행 결과가 아닙니다.

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