본문 바로가기
악성코드 정보

DarunGrim을 이용한 패치된 부분 알아내기

by 알 수 없는 사용자 2009. 8. 17.

우리는 윈도우 파일에 보안상의 취약점이 발견되면 윈도우 업데이트를 통해 패치를 받습니다. 패치를 받고나면 해당 파일은 패치가 되고 취약점을 이용한 악의적인 공격을 사전에 방지할 수 있게 됩니다. 패치가 된 파일은 수정이 되어있겠죠?

이번에 소개할 툴은 DarunGrim이라는 툴입니다. 툴 이름에서 느낄 수 있듯이 한국사람이 만들었습니다. 이 툴을 사용하게 되면 패치 전과 후의 파일의 수정된 부분을 쉽게 찾을 수가 있습니다.

예를들기 위해 사용될 ani 파일은(윈도우의 애니메이션 커서를 위해 사용되는 그래픽 파일 포맷) RIFF 파일 포맷을 근간으로 하고 있습니다. (ani 파일 외에 wmf, emf 파일 등이 있습니다.) 이러한 파일들은 처음 시작부분이 RIFF로 시작되게 됩니다. 아래 그림은 헥사에디터로 ani파일을 열었을 때의 화면입니다. 보시면 처음에 RIFF로 시작을 하고 밑에 빨간 박스로 표시된 부분 "24h"는 데이터 블럭의 size를 의미합니다.


이 취약점은 데이터 블럭의 size 값을 변경시킨 후 24h 크기 이상의 메모리 복사 작업을 하여 return address를 조작하게 됩니다. 이렇게 return address를 조작한 위치에는 쉘 코드를 적재해 악의적인 공격이 가능하게 됩니다.

그럼 패치 전과 후, 어떻게 수정이 됐는지 DarunGrim을 통해서 살펴보겠습니다. 아래 그림을 보시면 Match Rate라는 부분이 있는데, 값이 1이 아니면 패치 전과 다른 부분입니다.


Match Rate의 값이 1이 아닌 것을 더블 클릭하면 아래 그림과 같은 화면이 출력됩니다. 수정된 부분은 Buffer Overflow가 일어나는 부분에 size 값을 검사해주는 코드가(cmp    [ebp+var_24], 24h) 삽입 되었음을 확인할 수가 있습니다.


이렇게 DarunGrim으로 윈도우 파일 뿐만 아니라 패치 전,후 파일들의 차이점을 쉽게 파악할 수가 있습니다. 수정된 코드를 근거로 패치 전 파일의 취약점을 분석해 나가면 되겠죠? ^^

P.S : 한국분이 이런 훌륭한 툴을 개발해서 기분은 좋은데, 소문으론 심심풀이 땅콩으로 만들었다고 하니...


댓글