본문 바로가기

study/악성코드분석&리버싱

기초 동적 분석, lab01-01.exe, lab01-01.dll

728x90

2020/04/16 - [study/Reversing] - 기초 정적 분석, lab01-01.exe, lab01-01.dll 분석하기

 

기초 정적 분석, lab01-01.exe, lab01-01.dll 분석하기

2020/04/16 - [study/Malicious code basic, Reversing] - 기초 정적 분석에 필요한 도구 기초 정적 분석에 필요한 도구 악성코드의 기능을 파악하기 위해서 코드나 프로그램의 구조를 분석해보아야 합니다. 하지..

hxxyxxn-1238.tistory.com

위의 정적분석에 이어 동적분석을 진행하는 포스팅입니다! 정적분석을 먼저 확인하고 와주세요.


*저는 맥os에 가상머신 Virtual Box를 설치 후, window xp환경에서 진행하고 있습니다.

*윈도우os에서도 동일하게 가상머신 설치 후 진행하시면 됩니다.

*가상머신 스냅샷 기능을 이용하여 진행합니다.

*기초 동적 분석에 필요한 환경 설치: 악성코드 샘플, Promon, Process Explorer

 

가상머신에 기본 세팅 후, 스냅샷(Take Snapshot) 기능을 이용하여 기본이 되는 환경을 찍어놓습니다.

이전에 진행했던 정적분석을 다시 리마인드 하면서 보겠습니다.

호스트 기반 증거를 확인할 때, kernel32.dll파일이 정상 임포트 파일인데 kerne132.dll로 위장하여 임포트 하는 것을 보았었습니다.

kernel32.dll파일이 있는 곳은 c:\WINDOW\system32 폴더 아래에 있습니다. 

여기있는 파일들의 속성을 보면 microsoft사의 것인 것도 알 수 있습니다. 윈도우 폴더 자체가 ms의 것이기도 하고, 중요한 시스템 폴더 중의 하나입니다. 여기서 파일을 잘못 삭제하면 프로그램이 실행이 안될 수도 있습니다.

 

이제 악성코드 예제 파일을 한번 실행해보겠습니다. 

lab01-01.exe 를 더블클릭해서 실행해보면 어떤 창이 나타났다가 사라지고, 별다른 변화는 없어보입니다.

눈에 보이는 것이 없으니까 우리는 Process Monitor를 통해 어떤 변화가 일어나는지 알아보아야합니다.

어떤 악성코드는 한번 실행 후에는 다시 실행을 진행하지 않는 것도 있으니, 스냅샷을 찍어두었던 clear로 다시 돌아가서 promon을 켜두고 악성코드를 실행해보겠습니다. promon은 모니터가 켜진 이후에 실행되는 것들만 나타나니 미리 켜두고 진행해야합니다!

스냅샷 clear로 돌아가서 process monitor를 실행한 뒤, 악성코드파일에 관한 것만 보기위해 필터 설정을 해줍니다.

process name is Lab01-01.exe로 해주면 빼곡했던 라인들이 공백으로 뜹니다. (아직 악성코드 파일 실행전이므로)

필터 설정을 한 뒤에 lab01-01.exe를 더블클릭하여 실행해줍니다.

그럼 이렇게 필터링 해놓은 결과에 대해서만 뜨게 됩니다. 

operation을 위주로 보면 됩니다. path부분에는 system32폴더에 접근하는 경로가 나오는 것을 확인할 수 있습니다.

operation의 파일검색기 형태의 아이콘을 보면 path부분에 윈도우에 기본적으로 실행되는 파일들의 리스트들을 확인할 수있고, 종료하는 것까지 볼 수 있습니다.

dll이 몇개 나오는데 기본 dll들(이 파일이 임포트하는 dll들)만 보이고, lab01-01.dll이나 kene132.dll은 보이지 않습니다.

즉, 악성코드로 실행은 되었으나 제대로 실행되지는 않았다는 것을 의미합니다.

 

악성코드를 실행하는 방법은 두가지가 있습니다. 

1. 더블 클릭

2. cmd창에서 실행

더블클릭에서는 보이지 않았으니, cmd에서 실행해보도록 하겠습니다.

cmd창 실행방법은 시작>실행>cmd입력 입니다.

cmd창에서 lab01-01.exe아이콘을 드래그 해서 실행하면 되겠습니다.

이렇게 다시 실행한 결과는 이전의 결과보다 dll의 개수도 많고 길이도 훨씬 길게 나타납니다. 그 전보다는 제대로 실행되었다는 뜻입니다.
하지만 lab01-01.exe가 제대로 실행되기위해서는 lab01-01.dll도 같이 실행이 되어야합니다.

두번째 시도에서도 lab01-01.dll에 대한 것은 찾아볼 수 없으니, 다른 방법을 찾아야합니다.

 

이전의 upx프로그램을 기억하시나요? 패킹/언패킹을 할때 옵션 -d 를 사용하기도 하였는데

정적분석을 할 때도 옵션을 붙여서 처리하는 방법이 있습니다.

이 exe파일이 단독파일이 아닌 것은 분명하기 때문에 세번째 방법으로 옵션을 통해 제대로 실행하는 것을 보고자 하는 것입니다.

그래서 정적분석의 결과중에 옵션이 될만한 것을 찾아봐야합니다.

이전에 정적 분석을 진행하면서 Strings로 보았던 부분입니다. 악성코드임을 나타낼 수 있는 WARNING_THIS_WILL_DESTROY_YOUR_MACHINE을 옵션으로 사용할 수 있을거같습니다.

 

cmd창에서 드래그해서 파일경로를 옮기고, WARNING_THIS_WILL_DESTROY_YOUR_MACHINE 을 뒤에 붙여줍니다.

보기 편하도록 창은 clear아이콘을 통해 지워놓고, 옵션명령어까지 추가하여 실행해봅니다.

아래쪽에 우리가 찾던 Lab01-01.dll이 보입니다. 

operation이 api함수중에 하나였던 createfile이고, 경로는 우리가 cmd창을 띄워서 명령어를 입력한 그 폴더입니다. 

 

하지만 dir을 통해서 보면 lab01-01.dll이라는 것은 없습니다. 이 말은, lab01-01.exe파일이 제대로 실행된 것이 아닙니다.

결국은 lab01-01.exe를 제대로 실행시키려면 반드시 dll이 있는 곳에서 실행을 해야합니다.

 

악성코드 파일이 있는 폴더 안으로 위치를 변경하고 다시 악성코드를 실행해보도록 하겠습니다.

cd 명령어를 이용하여 폴더를 변경하고, 악성코드 파일을 드래그 한 뒤, 이전에 입력했던 실행 메시지를 입력합니다.

promon은 clear상태로 둔 뒤 엔터를 눌러 실행시킵니다.

이번에는 길이도 눈에띄게 길어졌고, 아래로 내리다보면 lab01-01.dll파일도 여러번 실행된 것을 볼 수 있습니다.

그리고 우리가 찾던 kerne132.dll파일이 실행된 것도 볼 수 있습니다.

이쯤에서 다시 스냅샷을 찍어놓고, 이제 writefile된 kene132.dll이 생겼는지 system32폴더에서 직접 확인도 해보겠습니다.

system32폴더 아래에 kernel32와 kene132가 같이 있는 것을 확인할 수 있습니다.

 

이렇게 나온 것을 가지고 다시 2차로 확인해보겠습니다. kernel32.dll이 무슨일을 하는건지 알아야 합니다. 

kernel32.dll은 거의 모든 윈도우 응용프로그램에 호출이 되서 무언가 일을 했습니다. 윈도우 자원에 관련된 라이브러리들이 많기 때문입니다. 그런데 kene132.dll은 이름이 비슷하고 system32밑에 설치된 것으로 봐서 인젝션을 할 확률이 높습니다.

process explorer를 통해 보도록 하겠습니다.

process explorer를 실행하고 방금 실행한 proexp를 클릭해준뒤, view dlls를 하면 아래 처럼 보이게 됩니다.

아래 내려보면 kene132.dll이 보이는데, 이 말은 우리가 실행한 proexp프로그램에 우리가 설치한 악성코드에 해당하는 kene132.dll이 인젝션이 되었다는 뜻입니다. 

인젝션 되었음을 비교해보기 위해 실행되어있는 파일들 중에 위쪽에 있는 winlogon.exe의 dll을 보겠습니다.

이 실행파일에는 kenel32.dll만 있고, kene132.dll은 같이보이지 않습니다.

악성코드 실행기점 이후부터 인젝션이 들어가기때문에, 지금 메모장을 한번 실행시켜보고 dll을 확인해보겠습니다.

notepad.exe가 아래에 붙어서 실행되었고, dll은 kenel32와 kene132 둘다 함께 보이는 것이 확인되었습니다.

스냅샷으로 clean상태에서 메모장을 켜보면 dll은 기존의 kenel32.dll만 뜨는 것으로보아 악성코드 실행을 기점으로 인젝션이 실행됨을 확인할 수 있습니다. 

 

kenel32.dll은 ms의 것으로 속성에서 확인했었는데, 그럼 kene132.dll은 어떻게 나올까요?

해당 dll파일과 악성코드 파일이 있었던 폴더의 lab01-01.dll파일의 속성을 같이 보겠습니다.

파일 사이즈도 비슷하고, 이 kene32.dll을 MD5에 돌려보면 아이디값도 동일합니다. 

그 말은 즉 kene132.dll은 새로 생성된 파일이 아니라 lab01-01.exe가 dll파일을 복사해서 kene132.dll로 넣은 것이라고 할 수 있습니다.

결국 exe는 복사하는 악성코드이고, 정적분석의 string부분을 다시 보면

findnextfile/ findfirstfile 함수로 자신의 앞 뒤 파일의 이름을 확인한 뒤(이름이 같아서 근처에 있을 확률이 높으니까) dll을 찾아서

system32폴더 아래에 복사해넣고 실행되는 거의 모든 프로그램에 붙어 실행되고

127.26.152.13 ip주소에 접근할 확률이 높습니다.

 

이렇게 프로세스 모니터를 통해 kene132.dll이 생성되는 것을 확인했고, explorer로 감염된 이후의 시스템에는 kene132.dll이 붙는 것을 확인하였습니다. 그리고 system32폴더아래에 kene132.dll이 생성된것도 확인하였습니다.

 

*분석내용

- lab01-01.exe악성코드는 특정 인자값(같은 폴더내에 있는 dll)과 함께 실행됨(WARNING_THIS_WILL_DESTROY_YOUR_MACHINE)

- lab01-01.exe 실행되면서 lab01-01.dll을 이용해 system32폴더아래 kene132.dll을 생성함

- kene132.dll 생성 후에는 kenel32.dll이 인젝션되고 시스템이 오작동을 일으키는데 추후에 실행되는 프로그램에서 kene132.dll을 링크하는 현상 발생

- lab01-01.dll은 lab01-01.exe 실행 후에 변경되고 kene132.dll로 복제되기때문에 두 파일은 동일함. 

- lab01-01.dll(kene132.dll)dl IP 127.26.152.13을 참조하는 것으로 추측됨 

728x90
반응형