텍스트·바이너리에서 규칙으로 정의한 패턴을 찾아 내는 악성코드 탐지·분류 도구입니다.
기본 정보
| 프로그램 이름 | 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 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요.
실제 실행 화면
아래는 사용 흐름을 이해하기 위해 만든 합성 예시 화면입니다(실제 실행 결과 아님). 화면은 합성 예시이며 실제 실행 결과가 아닙니다.
!YARA 예시: 규칙 파일 작성 후 디렉터리 스캔, yarac 컴파일
실제 운영 중인 서버
원문(HTML): https://games.cursorai.co.kr/programs/apps/security/yara.html
AI Knowledge Hub
방문자 댓글