liminfo

YARA Reference

YARA 악성코드 탐지 규칙 레퍼런스

29개 결과

YARA Reference 소개

YARA 규칙 레퍼런스는 악성코드 연구자, 인시던트 대응자, 위협 인텔리전스 분석가가 악성 파일을 식별하고 분류하는 데 사용하는 패턴 매칭 도구 YARA의 구문과 기능을 다루는 검색 가능한 빠른 참조입니다. 문자열(nocase, wide, ascii, fullword 수정자를 포함한 텍스트 문자열 정의와 바이트 시퀀스를 포함한 16진수 문자열 패턴), 조건($a and $b 부울 논리, #a를 사용한 문자열 출현 횟수, @a를 사용한 오프셋 조건, any of them/all of ($a*)/2 of ($a, $b, $c) 같은 집합 연산), 모듈(PE 파일 분석을 위한 import "pe", ELF 바이너리를 위한 import "elf", 엔트로피 계산을 위한 import "math", MD5/SHA 해시 검증을 위한 import "hash"), 메타데이터(규칙 문서화를 위한 author, description, date, reference 필드), 정규식(/pattern/ 구문과 대소문자 무시 /i 플래그, 단일 라인 /s 플래그), 실행(단일 파일 스캔, -r 재귀 디렉토리 스캔, -s 매칭 문자열 표시, -c 횟수 출력을 위한 yara CLI 명령어)의 6개 카테고리로 구성되어 있습니다.

YARA는 보안 산업에서 악성코드 시그니처를 작성하는 사실상의 표준입니다. 단일 바이트 변경으로 무력화되는 단순 해시 기반 탐지와 달리, YARA 규칙은 파일 내용의 패턴 — 특정 문자열, 바이트 시퀀스, 파일 구조 특성, 엔트로피 같은 통계적 속성 — 을 매칭합니다. SOC(보안 운영 센터)는 수신 파일, 이메일 첨부파일, 네트워크 캡처 바이너리를 스캔하기 위해 YARA 규칙을 배포합니다. 위협 인텔리전스 팀은 MITRE ATT&CK, VirusTotal, 산업 ISAC 같은 플랫폼을 통해 YARA 규칙을 공유하여 신규 위협에 대한 집단 방어를 구현합니다. 모듈 시스템(PE, ELF, math, hash)은 단순 바이트 매칭을 넘어선 구조적 분석을 가능하게 합니다.

각 항목에는 정확한 YARA 구문, 목적 설명, 완전한 작동 예제가 포함됩니다. 문자열 섹션은 수정자를 포함한 텍스트 문자열(대소문자 무시 nocase, UTF-16을 위한 wide, 양쪽 인코딩을 위한 ascii wide, 단어 경계 매칭을 위한 fullword)과 MZ 헤더({ 4D 5A 90 00 }) 같은 원시 바이트 패턴의 16진수 문자열을 다룹니다. 조건 섹션은 강력한 부울 논리를 보여줍니다: 출현 횟수 계산(#a > 3), 오프셋 확인(@a < 100), 유연한 집합 연산(any of them, all of ($a*), 2 of ($a, $b, $c)). 모듈 예제는 실용적인 탐지 패턴을 보여줍니다: PE 섹션 수 확인, ELF 유형 검증, 높은 엔트로피(패킹/암호화된 콘텐츠) 탐지, 알려진 파일 해시 매칭. 모든 콘텐츠는 즉시 검색과 다크 모드 지원으로 탐색 가능합니다.

주요 기능

  • 문자열 정의: nocase, wide, ascii, fullword 수정자를 포함한 텍스트 문자열; 시그니처 매칭을 위한 { 4D 5A 90 00 } 같은 16진수 바이트 패턴
  • 조건 논리: 부울 AND/OR, 출현 횟수 계산(#a > 3), 오프셋 조건(@a < 100), 집합 연산(any of them, all of, N of M)
  • PE 모듈: pe.number_of_sections, 섹션명, imports, exports를 포함한 Windows 실행 파일 분석을 위한 import "pe"
  • ELF, math, hash 모듈: ELF 바이너리 유형 확인, 엔트로피 계산(패킹 탐지를 위한 math.entropy > 7.0), MD5/SHA 해시 매칭
  • 메타데이터 필드: 규칙 문서화, 귀속, 위협 인텔리전스 공유를 위한 author, description, date, reference
  • 정규식 지원: 유연한 패턴 매칭을 위한 /pattern/ 구문과 /i(대소문자 무시) 및 /s(단일 라인/dotall) 플래그
  • CLI 실행 명령어: 단일 파일 스캔용 yara, 재귀 디렉토리 스캔용 -r, 매칭 문자열 표시용 -s, 횟수 출력용 -c
  • 서버 처리 없이 모든 YARA 구문 요소를 즉시 검색 및 카테고리 필터링

자주 묻는 질문

이 레퍼런스에서 어떤 YARA 기능을 다루나요?

6개 카테고리를 다룹니다: 문자열(nocase, wide, ascii, fullword 수정자를 포함한 텍스트 및 16진수 문자열 정의), 조건(부울 논리, 출현 횟수, 오프셋 조건, any of them 및 N-of-M 같은 집합 연산), 모듈(Windows 실행 파일을 위한 PE, Linux 바이너리를 위한 ELF, 엔트로피를 위한 math, MD5/SHA 검증을 위한 hash), 메타데이터(author, description, date, reference 필드), 정규식(/i 및 /s 플래그를 포함한 정규 표현식 패턴), 실행(파일 및 디렉토리 스캔을 위한 yara CLI 명령어)입니다.

nocase, wide, ascii, fullword 수정자의 차이점은 무엇인가요?

nocase는 대소문자를 무시하여 "Malware"가 "malware", "MALWARE" 등과 매칭됩니다. wide는 각 ASCII 문자 뒤에 널 바이트가 오는 Windows에서 흔한 UTF-16 인코딩 문자열을 매칭합니다. ascii는 표준 단일 바이트 문자열을 매칭합니다. ascii wide를 결합하여 두 인코딩 모두 매칭할 수 있습니다. fullword는 문자열이 완전한 단어로 나타나도록 보장합니다 — fullword가 적용된 "domain"은 "domain.com"과 매칭되지만 "subdomain"은 비알파벳 문자나 파일 경계로 구분되어야 하므로 매칭되지 않습니다.

YARA로 패킹되거나 암호화된 파일을 어떻게 탐지하나요?

math 모듈로 엔트로피를 확인합니다: import "math"를 하고 조건에 math.entropy(0, filesize) > 7.0을 설정합니다. 엔트로피가 7.0(0-8 척도) 이상인 파일은 바이트 분포가 거의 랜덤하므로 압축, 패킹, 또는 암호화되었을 가능성이 높습니다. PE 모듈 확인과 결합할 수도 있습니다: pe.number_of_sections > 5이거나 패킹의 일반적인 지표인 비정상적인 섹션명을 확인합니다. 특정 패커의 경우 16진수 문자열로 특징적인 바이트 시그니처를 매칭합니다.

"any of them" 조건은 어떻게 작동하나요?

"any of them"은 규칙에 정의된 문자열 중 하나라도 대상 파일에서 발견되면 매칭됩니다. 악성코드 패밀리가 다양한 변형의 명령 문자열을 사용할 때 유용합니다. "all of them"은 정의된 모든 문자열이 존재해야 합니다. 와일드카드를 사용할 수 있습니다: "all of ($a*)"는 $a로 시작하는 모든 문자열이 매칭되어야 합니다. 더 정밀한 제어를 위해 "2 of ($a, $b, $c)"는 지정된 3개 문자열 중 최소 2개가 매칭되어야 합니다. 이 집합 연산은 가변적인 지표를 가진 악성코드 패밀리를 탐지하는 규칙 작성에 필수적입니다.

16진수 문자열로 바이트 패턴을 어떻게 매칭하나요?

중괄호로 16진수 문자열을 정의합니다: $hex = { 4D 5A 90 00 }은 정확한 바이트 시퀀스(표준 MZ/PE 헤더)를 매칭합니다. 와일드카드를 사용할 수 있습니다: { 4D 5A ?? 00 }에서 ??는 임의의 단일 바이트를 매칭합니다. 점프는 대괄호로 지정합니다: { 4D 5A [2-4] 00 }은 4D 5A와 00 사이에 2-4개의 임의 바이트를 매칭합니다. 대안은 괄호를 사용합니다: { (4D 5A | 7F 45) }는 MZ 또는 ELF 헤더 중 하나를 매칭합니다. 이 기능들은 샘플 간에 약간의 변형이 있는 바이너리 시그니처 매칭에 강력합니다.

YARA 모듈이란 무엇이고 어떤 것들이 다루어지나요?

YARA 모듈은 단순 문자열 매칭을 넘어 규칙 기능을 확장합니다. 이 레퍼런스에서는 4개 모듈을 다룹니다: pe(Windows PE 파일 분석 — 섹션 수, imports, exports, 타임스탬프, 리소스), elf(Linux ELF 바이너리 분석 — 파일 유형 ET_EXEC/ET_DYN, 섹션, 심볼), math(수학 함수 — 패킹/암호화 콘텐츠 탐지를 위한 엔트로피 계산), hash(암호화 해시 — 파일 또는 파일 영역의 MD5, SHA1, SHA256 검증). 모듈은 import "모듈명"으로 로드하고 조건 섹션에서 함수/속성을 사용합니다.

YARA 명령줄 도구로 파일을 어떻게 스캔하나요?

기본 스캔: yara rules.yar target.exe는 단일 파일에 규칙을 적용합니다. 재귀 디렉토리 스캔: yara -r rules.yar /path/to/directory/는 디렉토리 트리의 모든 파일을 스캔합니다. 매칭 문자열과 오프셋 표시: yara -s rules.yar target.exe는 어떤 문자열이 어디서 매칭되었는지 표시합니다. 횟수 전용 모드: yara -c rules.yar target.exe는 규칙명과 매칭 횟수만 출력합니다. 플래그를 결합할 수 있습니다: yara -r -s rules.yar /samples/는 재귀적으로 스캔하고 모든 파일의 매칭 문자열을 표시합니다.

이 레퍼런스 사용 시 데이터가 서버로 전송되나요?

아닙니다. 전체 YARA 레퍼런스 데이터셋은 페이지에 내장되어 클라이언트 사이드로 렌더링됩니다. 카테고리별(문자열, 조건, 모듈, 메타데이터, 정규식, 실행) 필터링, 검색, 항목 탐색 모두 JavaScript로 브라우저 내에서만 이루어집니다. YARA 규칙, 파일 데이터, 검색 쿼리가 어떤 서버로도 전송되지 않습니다.