yara rule에서 많이 쓰이는 strings에 대해 자세히 알아보자
각 strings는 $로 시작하는 식별자(알파벳, 숫자 그리고 _를 사용가능)를 text나 hex, 정규식(이후 regex) 형태로 정의한다.
text의 형태로 넣을때는 "(큰 따옴표)로 hex의 형태로 넣을 때는 {}(중괄호)를 사용한다.
hex에서 띄어쓰기는 있어도 되고 없어도 된다. 하지만 hex형태에서 10진수는 사용불가함을 알자
regex형태는 양 끝에 "/"를 넣어서 만든다. 안에는 정규식을 넣으면 된다.
이제 진짜 활용성이 높은 jump([#-#]), wild-cards(??), alternatives(|)를 알아보자.
먼저 wild-cards는 리눅스에서의 wild-cards와 매우 유사하다. ??면 그곳에 뭐가 들어가도 상관없다는 것이고 3?는 hex값이 3으로 시작하되 뒤는 상관없다는 것이다.(30,31,32 ....)
jump는 wild-cards여러개를 줄인 형태라고 보면 된다.
[3-4]면 ?? ?? ??와 ?? ?? ?? ??를 대체한다. 3칸~4칸은 무시하고 다음것을 보겟다는 것이다.
alternatives는 생긴것 대로 그냥 or이다. 괄호로 묶고 앞과 뒤중 하나라도 만족하면 true가 된다.
마지막으로 ascii wide fullword nocase에 대해 알아보자
띄어쓰기로 되어있듯 각각은 모두 다른 옵션이다.
ascii는 기본 옵션,
wide는 유니코드,
fullword는 숫자이외의 문자로 표시,
nocase는 대소문자 구분안함
보통 저렇게 모두 사용한다.
strings는 여기까지 하자
'악성코드 분석 관련 > yara rule' 카테고리의 다른 글
yara rule사용법(1) (0) | 2018.09.12 |
---|
WRITTEN BY
- Dukup11ch1
무근본, 실력 0, 아는척하기위한 블로그. 저는 귀엽습니다