작은 메모장

Yara Rule 모듈 사용 기본 본문

KISA 사이버 보안 훈련/YARA 정규표현식 활용

Yara Rule 모듈 사용 기본

으앙내눈 2023. 6. 26. 22:00

Yara Rule 작성 시, 더욱 다양한 조건을 표현할 수 있도록 확장 기능을 제공

룰 작성시 상단에 import [모듈 명]을 작성하여 모듈을 불러올 수 있음

[모듈 명].[함수 명] 형태로 모듈이 제공하는 함수만 사용 가능

Import "pe"

rule singleSection {
	condition:
    	pe.number_of_sections == 1
        ...
}

 

PE 모듈

Portable Executable, 윈도우 실행 파일에 대하여 자세한 규칙을 작성

제공하는 주요 함수 및 속성값은 아래를 따름

함수/속성 의미 반환 값
checksum OptionalHeader에 저장된 PE 체크섬 값 반환 정수
calculate_checksum() PE 체크섬 값을 계산하여 값을 반환 정수
subsystem 실행 파일의 서브시스템이 XBOX인지, GUI인지, CUI인지 등을 확인하여 반환 정수
timestamp PE 타임스탬프 값을 반환 정수
entry_point PE 파일의 실질적 시작위치, Entry point값 반환 정수
characteristics PE 파일의 속성을 나타내며, 실행 가능한 형태인지 등 정보 반환 정수
Imports(DLL 이름) Import Directory에서 해당 DLL 파일로부터 호출하는 함수의 개수를 반환 정수
Imports(DLL 이름, 함수 명) Import Directory에서 해당 DLL 파일로부터 호출 여부를 반환 0 혹은 1
Imphash() 사용되는 라이브러리, 함수 명, 실행 파일 내 특정 순서를 이용해 해시 값을 반환 MD5 해시

 

Hash 모듈

파일의 특정 오프셋 구간 혹은 문자열을 Hash 값으로 출력하는 모듈

항상 소문자로 출력

함수/속성 의미 반환 값
md5(오프셋 위치, 크기) 오프셋 위치부터 크기만큼의 byte값을 MD5 해시로 변환 MD5 해시
md5(문자열) 문자열을 MD5 해시로 변환 MD5 해시
sha1(오프셋 위치, 크기) 오프셋 위치부터 크기만큼의 byte값을 SHA1 해시로 변환 SHA1 해시
sha1(문자열) 문자열을 SHA1 해시로 변환 SHA1 해시
sha256(오프셋 위치, 크기) 오프셋 위치부터 크기만큼의 byte값을 SHA256 해시로 변환 SHA256 해시
sha256(문자열) 문자열을 SHA256 해시로 변환 SHA256 해시
checksum32(오프셋, 크기) 오프셋 위치부터 크기만큼의 byte값을 문자열의 모든 바이트 값의 합계로 변환 정수
checksum32(문자열) 문자열의 모든 바이트 값의 합계로 변환 정수
crc32(오프셋, 크기) 오프셋 위치부터 크기만큼의 byte값을 crc32 체크섬 값으로 변환 정수
crc32(문자열) 문자열을 crc32 체크섬 값으로 변환 정수

 

Math 모듈

파일의 특정 오프셋 구간 혹은 문자열로부터 특정 값을 계산

함수/속성 의미 반환 값
entropy(오프셋 위치, 크기) 오프셋 위치부터 크기만큼의 byte값을 검색 대상 전체와 비교하여 기댓값을 반환 0 이상 8 미만의 실수
entropy(문자열) 문자열의 기댓값을 반환 0 이상 8 미만의 실수
mean(오프셋 위치, 크기) 오프셋 위치부터 크기만큼의 byte값의 평균을 반환 실수
mean(문자열) 문자열의 평균을 반환 실수
max(정수1, 정수2) 정수1, 정수2 파라미터 중, 최댓값을 반환 정수
min(정수1, 정수2) 정수1, 정수2 파라미터 중, 최솟값을 반환 정수
abs(정수) 정수 파라미터의 절대값을 반환 정수

 

Time 모듈

현재 시간을 구할 수 있음

함수/속성 의미 반환 값
now() 현재 시간을 반환 정수(epoch)

 

Console 모듈

명령 프롬프트 값을 출력

함수/속성 의미 반환 값
log(출력 내용) 명령 프롬프트에 파라미터로 들어온 값을 출력 -