그냥저냥

ssdeep + Fuzzy Hash 본문

System

ssdeep + Fuzzy Hash

ex3llo 2016. 8. 12. 00:11

ssdeep은 Fuzzy Hash를 사용하여 파일의 유사도를 측정할 수 있는 프로그램이다. 

즉, 원본파일과 비교할 파일들을 서로 비교하여 파일이 얼마나 유사한지를 %로 보여준다.


그럼 ssdeep 프로그램을 사용하기전에 Fuzzy Hash에 대해 먼저 알고 넘어가자.



* Fuzzy Hash (Context Triggered Piecewise Hash)

 - 기존 Hash의 무결성 확보 뿐만 아니라 원본 파일과의 유사도를 파악

 - 파일 전체에 대한 해쉬값을 계산하지 않고, 일정 크기 단위로 구분하여 각 단위 블록에 대한 해쉬값을 만들어내는 방식

 - 각 영역의 마지막 몇 바이트에 대한 해쉬값을 이용하여 체크섬 데이터를 만든 후 유사도를 비교


이제 ssdeep 사용법을 보자. -h 옵션을 입력하면 아래 사진처럼 각 옵션 설명을 볼 수 있다.



테스트에 사용할 파일은 사내 교육용으로 만든 PPT 파일을 대상으로 했다.

명령 : ssdeep.exe [대상파일명]  


결과를 보면 blocksize:hash:hash,filename 순으로 보여진다.

blocksize : 24576

hash : RsXLMEwi7WGGf30K+ch43QQm5L1AkSC8OBWBBTmjpuOnOytJQs7Ko8mw+Iw05kUv

hash : zqWR0GV1FhiOnOzAY5kNmJJg46LwToJg

filename : C:\ssdeep-2.13\RootKit.pptx



원본파일에 대한 결과를 얻었으니 이제 원본 파일을 약간 수정하여 파일의 유사도를 측정해보자.

아래 사진은 원본 파일과 약간 수정을 거친 파일을 비교한 사진이다.


원본 파일 정보 (MD5) : RootKit.pptx (fe530d1a9b9d2512b7dbbb846b64f71c)

비교 대상 파일 정보 #1 (MD5) : RootKit1.pptx (600b4ec3f4e0c3b441b33c0474250dbd)

비교 대상 파일 정보 #2 (MD5) : RootKit2.pptx (664 0ec4b97b13c112059e4625f07a5b2)



우선 첫번째 테스트는 파일 속성의 설명 부분에 데이터를 추가했을 경우를 보자

좌측 사진이 원본 파일의 속성 내용이고, 우측 사진이 수정한 파일의 속성 내용이다. 수정한 파일의 설명 부분에 Test1 이라는 내용을 추가했다.

     


파일 유사도를 측정해보면 99% 일치한다는 것을 볼 수 있다.



두번째 테스트는 PPT 슬라이드에 데이터를 추가했을 경우이다.

좌측 사진이 원본 파일의 슬라이드 내용이고, 우측 사진이 수정한 파일의 슬라이드 내용이다.


   


파일 유사도를 측정해보면 69% 일치한다는 것을 볼 수 있다.



마지막으로 테스트에 사용했던 파일들의 해시값을 비교한 내용이다.

원본 파일과 RootKit1.pptx 파일은 해시값이 거의 동일하지만, RootKit2.pptx 파일과는 많이 다른 해시값을 보여준다.



이처럼 ssdeep 툴을 이용하면 파일의 유사도를 측정할 수 있고, 만약 악성코드 샘플이 상당히 많을 경우 ssdeep을 활용하면 샘플을 그룹화 시킬 수 있지 않을까 하는 생각이 든다.


ssdeep 의 단점은 파일의 크기가 작을 경우 고정된 시그니처 및 구조를 가지기 때문에 비교할 파일들의 내용이 많은 차이를 보이더라도 

파일이 유사하다고 판별될 수 있다.


'System' 카테고리의 다른 글

Universal ShellCode 기초 정리  (0) 2017.02.06
DKOM (프로세스 은닉)  (0) 2016.07.31
BootKit 동작과정 (보류)  (0) 2016.07.31
CPU Ring Level  (0) 2016.07.31
Comments