본문 바로가기

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

기초 동적 분석, Lab03-02.dll

728x90

2020/05/21 - [study/Reversing] - 기초 동적 분석, Lab03-01.exe

 

기초 동적 분석, Lab03-01.exe

기초 동적 분석 도구를 이용하여 Lab03-1.exe 파일의 악성코드를 분석해보겠습니다. 실습 전에, 실습에 필요한 파일들을 옮겨놓고 스냅샷을 통해 초기상태를 저장해둡니다.!!! 꼭!!!!! Lab03-01.exe파일�

hxxyxxn-1238.tistory.com

이전 포스팅에 이어 Lab03-02.dll을 분석해보도록 하겠습니다.

스냅샷을 이용하여 초기 세팅으로 먼저 돌아가서 시작합니다.


동적 분석을 하기에 앞서, 정적 분석을 통해 알아보겠습니다. 

 

CFF exp를 이용해서 import dll을 보았습니다. dll 라이브러리들이 정직하게 보이는 것으로 보아 패킹은 되어있는 것 같지 않습니다. ws2_32.dll, wininet.dll에는 소켓,네트워크 관련 라이브러리이기 때문에 네트워크 관련 행위를 하는 것을 알 수 있었습니다.

ADVAPI32.dll에서는 레지스트리 관련된 함수들과 openSCmanager, createService.. 등의 함수등으로 서비스와 관련된 함수들임을 알 수 있습니다.

이전에 말했던 run 레지스트리와 같이 서비스로 등록되면 윈도우가 부팅되서 로그인될때 악성코드가 자동으로 실행될 수 있는 매개체중의 하나입니다. 백신같은 것들이 자기자신이 항상 윈도우가 부팅되더라도 실행이 되어야해서 서비스로 등록해서 사용합니다. 

이것을 악성코드가 악용하는 것입니다. 

 

이번에는 dll이 사용하는 인자값이 보이는 export디렉토리를 보겠습니다. (이전에는 export 부분이 없어서 보지않았지만)

servicemain: Lab03-02.dll이 서비스로 동작할 때, 실행되는 메인 함수가 이것입니다. 

Lab03-02.dll을 설치하기 위해 열어놓은 함수는 두가지로 관찰됩니다. :install과 installA

 

이 lab03-02.dll을 실행시키려면, system32 폴더 아래의 rundll32.exe가 함께 사용이 됩니다.

때문에 system32폴더 아래로 lab03-02.dll을 옮겨놓고 실행시켜볼 예정입니다.

 

실행전에!! strings, network 행위와 host기반의 행위도 볼 예정이니 스냅샷을 한번 떠줍니다. 

그리고 strings를 먼저 보도록 하겠습니다.

strings가 있는 폴더로 lab03-02.dll을 옮겨놓고 명령어를 통해 문자열을 보겠습니다.

위에서부터 보면, CFF exp에서 확인한 import/export함수들을 볼 수 있고, 도메인 주소도 하나 보입니다.

그리고 아래부분에 displayname, description을 봐서는 서비스를 등록할 때 서비스에 대한 설명으로 discription을 등록하는구나 하고 알 수 있습니다. 그 아래부분 문장들은 설명에 대한 내용을 기술해놓은 것 같은데, 그건 실제로 행위분석을 하면서 볼 수 있을 것 같습니다.

또한 레지스트리명도 나와있습니다. 에러처리에 대한 메시지도 확인가능합니다.

이제 직접 실행을 해서 비교해보겠습니다.

Regshot을 이용하여 비교하겠습니다. 1st shot> 명령어, 인자값 넣어 실행> 2nd shot> compare 

HKLM\system\controlset001\services\IPRIP\parameters\servicedll이 생성이 되었고, 키 값으로는 우리의 악성코드가 등록되었습니다.

HKLM\system\controlset001\services\IPRIP\ , 이 서비스가 있는 경로는 svchost.exe를 사용해서 dll파일이 로드됩니다.

또한 이 악성코드가 서비스로 동작하기위한 서비스의 이름은 "Intranet Network Awareness(INA+)"라고 있어보이는 것처럼, 분석가들이 의심하지못하게 정상적인 서비스처럼 위장이 되어있습니다,. 

 

1) 악성코드 자체가 어떻게 설치되었는가?

- rundll32.dll을 사용하고 installA라는 인자값을 주어 설치가 된다. 라고 위의 분석을 통해 알아내었습니다.

 

2) 설치 후 악성코드를 어떻게 실행할 수 있는가?

앞에서 설치를 하고 서비스로 등록이 되었는데, 이 악성코드가 실행 중인지는 어떻게 알아낼 수 있을까요? 

프로세서로 동작하고있는지를 봐야하니까 process explorer를 통해 보겠습니다.

Lab03-02.dll을 검색해도 나오지 않습니다. 아마 rundll32.exe가 Lab03-02.dll을 실행시키긴 했지만 해당 악성코드는 본인의 할 일을 마치고 바로 끝나버린 것 같습니다. 그렇다면 어떻게 실행시킬 수 있을까요?

 

1. 재부팅: system32아래에 있으니 재부팅시에 다시 동작을 할 것입니다.

이 방법은 실행시의 행위를 관찰할 수 없으니 다른 방법을 시도해보겠습니다.

2. cmd에 명령어 내리기 

 

cmd > net start IPRIP 를 입력 후 실행합니다. 서비스 이름은 위 Regshot에서 확인하였습니다.

3. IceSword

IceSword프로그램을 통해도 가능합니다. 이렇게 서비스 명이 뜨고 우클릭 후 실행/정지 시킬 수 있습니다.

 

실행 후 다시 proexp에 검색해보니 svchost.exe에 붙어 실행중인 것으로 확인이 가능합니다. 

 

3) 악성코드가 동작할 때 어떤 프로세스를 발견할 수 있는가?

위에서 확인한 바와 같이 svchost.exe파일에 로드되어 동작하는 것으로 확인할 수 있었습니다.

4) 정보를 수집하는 procmon을 사용하기위해 어떤 필터를 설정했는가?

이 문제의 의미: dll파일이 로드되어 실행되는 exe파일의 행위를 관찰하기위한 방법입니다. 

dll파일은 exe파일이 호출해야만 동작하는 파일입니다. 때문에 lab03-02.dll은 svchost.exe의 process id는 1084였습니다. (위에서 확인)

이 프로세스 아이디값으로 로드하는 것입니다.

필터를 설정하고 결과를 보았습니다. 별다른 결과값이 없는 이유는 dll자체가 서비스를 등록하고 금방 종료되는 악성코드이기 때문에 이 문제를 행하는 것에 큰 의미는 없습니다. 하지만 기능적인 측면에서 공부하기 위해 이렇게 진행해보았습니다.

 

5) 악성코드임을 의미하는 호스트기반 표시자는 무엇인가?

앞의 Regshot을 통해 보았습니다. 

시작>실행>regedit 에서 해당 레지스트리 폴더로 이동해서 보기도 가능합니다. 

 

6) 악성코드에서 유용한 네트워크 기반 시그니처가 존재하는가?

이미 악성코드를 한번 실행해서 관찰하기 어려우므로 악성코드 실행전의 스냅샷으로 돌아가서 진행합니다.

cmd> cd c:\windows\system32

> rundll32.exe Lab03-02.dll installA 

악성코드를 실행시키고, 네트워크 행위분석을 위해 wireshark를 실행시킵니다.

필요한 부분이 기본 설정에는 보이지 않기 때문에, info부분에 우클릭 후 colum preference를 클릭합니다.

설정을 추가해줍니다. 그 이후에 cmd에 > net start IPRIP 를 입력하면 패킷들이 나타납니다.

만약 패킷들이 너무 많아서 바로 보이지 않는다면 string 검색을 통해 practical ~~ 을 찾으시면 됩니다.

도메인주소로 쿼리를 보내고, 192.0.78.25 라는 ip를 받아 그 주소로 어떤 데이터를 보내고 있습니다. 

이 데이터를 확인해보겠습니다.

데이터를 보내는 tcp 패킷을 우클릭하고 follow tcp stream 을 클릭합니다.

GET으로 serve.html을 가져왔지만 이 파일이 없어져서 moved permanently , 301 에러 메시지가 뜬 것을 확인하였습니다. 

네트워크 기반 시그니처는 www.practiclalmalwareanalysis.com\serve.html 이었습니다. 

이 serve.html을 받기위해 보낸 데이터는 user-agent로 pc계정명과 운영체제 버전정보가 가는 것을 확인하였습니다.

728x90
반응형