'악성코드 분석 관련/yara rule'에 해당하는 글 2건

yara rule에서 많이 쓰이는 strings에 대해 자세히 알아보자


각 strings는 $로 시작하는 식별자(알파벳, 숫자 그리고 _를 사용가능)를 text나 hex, 정규식(이후 regex) 형태로 정의한다.


rule sample
{
strings:
$a1="test"
$a2={12 34 56}
$a3= /http:\/\/[a-z]{5}.com/
condition:
$a1 or $a2 or $a3
}

text의 형태로 넣을때는 "(큰 따옴표)로 hex의 형태로 넣을 때는 {}(중괄호)를 사용한다.

hex에서 띄어쓰기는 있어도 되고 없어도 된다. 하지만 hex형태에서 10진수는 사용불가함을 알자

regex형태는 양 끝에 "/"를 넣어서 만든다. 안에는 정규식을 넣으면 된다.


이제 진짜 활용성이 높은 jump([#-#]), wild-cards(??), alternatives(|)를 알아보자. 

rule sample
{
strings:
$wild1={12 ?? 56}
$wild2={12 3? 56}
$jump1={12 [3-4] 56}
$alternatives1={12 (34|43) 56}
condition:
$wild1 or
$wild2 or
$jump1 or
$alternatives1
}

먼저 wild-cards는 리눅스에서의 wild-cards와 매우 유사하다. ??면 그곳에 뭐가 들어가도 상관없다는 것이고 3?는 hex값이 3으로 시작하되 뒤는 상관없다는 것이다.(30,31,32 ....)


jump는 wild-cards여러개를 줄인 형태라고 보면 된다. 

[3-4]면 ?? ?? ??와 ?? ?? ?? ??를 대체한다. 3칸~4칸은 무시하고 다음것을 보겟다는 것이다.


alternatives는 생긴것 대로 그냥 or이다. 괄호로 묶고 앞과 뒤중 하나라도 만족하면 true가 된다.


마지막으로  ascii wide fullword nocase에 대해 알아보자

rule sample
{
strings:
$no="test" ascii wide fullword nocase
condition:
$no
}

띄어쓰기로 되어있듯 각각은 모두 다른 옵션이다.

ascii는 기본 옵션,

wide는 유니코드,

fullword는 숫자이외의 문자로 표시,

nocase는 대소문자 구분안함

보통 저렇게 모두 사용한다.

strings는 여기까지 하자

'악성코드 분석 관련 > yara rule' 카테고리의 다른 글

yara rule사용법(1)  (0) 2018.09.12

WRITTEN BY
Dukup11ch1
무근본, 실력 0, 아는척하기위한 블로그. 저는 귀엽습니다

,

rule test

{
condition:
false
}

해당 코드는 가장 기본적인 yara rule이다.

각 룰은 'rule'로 구별 되며, test의 위치에 식별자가 들어가게 된다.



위 표는 yara rule의 키워드들이다. 키워드는 식별자로 사용할 수 없음을 유의하자.


rule sample
{
meta:
author = "dukup11ch1"
type = "test"
filetype= "Win32 EXE"
version = "1.0"
date = "2018-09-11"
SHA256 = 18543929355CD9239E3CD4A6A17544716CDC66ADF18C185CE2A6DED7558D3653

strings:
$a1="test"
$a2={12 34 56}
condition:
$a1 or $a2
}

이제 yara rule의 구조를 알아 보자.

크게 3부분으로 나눌 수 있다. meta부분은 주석이나 마찬가지이다. 다른사람들에게 자신이 짠 yara rule의 정보를 전달하기위해 존재한다.

strings 부분은 상수를 저장한다고 생각 하면 된다.

condition에서는 조건의 참거짓을 판별한다.


지금까지가 기본적인 yara rule의 구조이다. 다음 것 부터 상세하게 알아보자



'악성코드 분석 관련 > yara rule' 카테고리의 다른 글

yara rule사용법(2)  (0) 2018.09.17

WRITTEN BY
Dukup11ch1
무근본, 실력 0, 아는척하기위한 블로그. 저는 귀엽습니다

,