작은 메모장
Yara Rule 모듈 사용 기본 본문
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(출력 내용) | 명령 프롬프트에 파라미터로 들어온 값을 출력 | - |
'KISA 사이버 보안 훈련 > YARA 정규표현식 활용' 카테고리의 다른 글
Yara Docs 사용법 및 Epoch 시간 변환 실습 (0) | 2023.06.26 |
---|---|
Yara Rule 모듈 사용 실습 (0) | 2023.06.26 |
Yara Rule 작성 응용 실습 (0) | 2023.06.25 |
Yara Rule 작성 기본 실습 (0) | 2023.06.25 |
Yara Rule (0) | 2023.06.25 |