2012년 8월 28일 화요일

악성코드 분석 - Bundestrojaner [3]






트로이 목마 악성코드를 분석한 과정과 결과를 정리하려고 합니다.








이제 GetSystemDirectory 함수를 통해 시스템 디렉토리 정보를 얻고 동적 분석에서 확인했던 파일들을 만들기 시작합니다.


분석하시다 보면 4010F0에서 파일을 생성하는 CreateFile 함수를 통해



동적 분석에서 확인한 C:\Windows\System32\mfc42ul.dll 파일을

생성하는 것을 확인하실 수 있습니다.

지금 만들어진 mfc42ul.dll은 빈 파일로, 4010CF 함수에서 파일 내용이 채워집니다.


조금 더 내려가면 403EC4에서 함수 401E60이 Call 되며 이때 mfc42.dll와 mfc42ul.dll이 스택에 저장되어 전달됩니다.

mfc42.dll은 System32 폴더에 존재하는 윈도우즈 dll이며, mfc42ul.dll은 악성코드가 만든 파일 이름입니다.


함수 401E60에서는 401DC0로 Call이 발생하며



여기서 GetFileTime 함수를 통해 mfc42.dll의 Filetime 정보를 얻습니다.


이제 00401E10 함수에서



함수 SetFileTime을 통해 mfc42ul.dll의 파일시간이 방금 얻은 mfc42.dll의 FileTime으로 변경됩니다.


setFileTime 함수가 실행되기 전에 system32 폴더에서 확인하면 Data Modified 시간이 다르지만


setFileTime 함수 실행 후  Data Modified 시간이 같은 것을 확인할 수 있습니다.

이러한 기법을 사용해서 포렌식에서 새로 만들어진 파일을 찾기 어렵게 만듭니다.



다시 F8을 통해 명령어를 분석하다 보면 403F0E에서 OllyDbg의 코멘트 winsys32.sys를 보실 수 있습니다.

악성코드 제작자는 종종 이런 코멘트를 통해 악성코드 분석가의 관심을 다른곳으로 돌려

잘못된 코드 분석을 유도하기도 하지만, 이 경우엔 그렇지 않았습니다.



여기서 조금 내려가면 403F37에서 4011C0으로의 함수 Call이 있으며 여기서 isWow64 함수를 통해

프로세스가 32비트 환경에서 실행되는지 64비트 환경에서 실행되고 있는지를 확인합니다.


다음은, mfc42ul.dll의 경우 처럼 winsys32 파일을 생성하는 함수가 호출되며



호출되는 과정에서 403F49에서 Call이 실행되고 계속 step into 하면 401160 에서 32비트 환경에서

만들어진 프로그램을 64비트 환경에서 실행하기 위해 리다이렉트되는 것을 막는 함수가 보입니다. (정확하지 않음)

이 과정은 winsys32.sys가 32비트 혹은 64비트 환경에서만 작동하는 드라이버이기 때문에 발생하고 있는것 같습니다.

이 과정은 악성코드의 작용과는 별 상관이 없으므로 넘어가도록 하겠습니다.



계속 명령어를 넘기다 보면 CreateFile 함수 Call이 일어나며 System32 폴더에 빈 winsys32.sys 파일을 만듭니다.


위의 사진은 system32 폴더에 생성된 winsys32.sys 파일입니다.



mfc42ul.dll 의 내용을 채울때 처럼 WriteFile 함수를 통해서 winsys32.sys 파일의 내용을 채웁니다.



악성코드 분석 - Bundestrojaner [4] :


댓글 없음:

댓글 쓰기