Team Parma

[실전 악성코드와 멀웨어 분석] 실습 문제 3-2 본문

문제풀이/실전 악성코드와 멀웨어 분석

[실전 악성코드와 멀웨어 분석] 실습 문제 3-2

알 수 없는 사용자 2017. 10. 2. 09:18

  

[실전 악성코드와 멀웨어 분석] 책의 실습 문제3-2(Lab03-02.dll)를 분석한다. 분석 환경은 윈도우XP이다.

   

기초 정적 분석

   

   



그림 1 virustotal.com

   

바이러스 토탈로 Lab03-02.dll을 검사하면 50개의 백신이 악성코드로 판별했다 (그림1 참조).


그림 2 백도어로 추정

   

그리고 Lab03-02.dll은 백도어로 추정된다 (그림2 참조).

   

다음은 Strings.exe로 문자열을 검사한다.

   


그림 3 Strings.exe

   


그림 4 의심스러운 문자열

   

그림4는 Lab03-02.dll의 의심스러운 문자열이다. 1번은 명령 프롬프트를 사용할 것을 의미한다. 2번과 3번에서 "svchost.exe –k"가 dll 기반의 서비스를 관리한다. 해당 부분은 나중에 살펴볼 것이다. 4번에서 해당 페이지와 통신을 할 것으로 예상되니 와이어 샤크로 확인할 것이다.

   

다음은 dependency walker로 사용된 dll 함수를 확인한다.

   


그림 5

   

그림5에서 RegSetValueExA 같은 레지스트리 함수와 SetServiceStatus와 같은 서비스 함수를 포함한다. 그리고 InternetReadFile과 WSAStartup은 악성코드가 HTTP를 이용함을 암시한다. Lab03-02.dll 은 IAT 뿐만 아니라 EAT도 있다. EAT는 PEview로 확인할 수 있다.

   


그림 6 PEview

   

그림6에서 EAT의 ServiceMain 함수는 이 악성코드가 실행되기 위해 서비스로 설치돼야 함을 암시한다. 아마 Install 함수 또는 installA 함수가 서비스를 설치할 것이다.

   

   

기초 동적 분석

   

기초 동적 분석에서는 Procexp , Regshot, Wireshark를 사용하겠다. 기초 동적 분석을 할 때는 모든 분석 프로그램을 실행 후에 악성 코드를 실행해야 한다

   

분석할 Lab03-02.dll은 dll 파일이라서 더블 클릭으로 실행하지 못한다. 그래서 윈도우는 dll 파일을 실행하기 위해 rundll32.exe을 제공한다. 해당 파일의 경로는 "C:\WINDOWS\system32" 이다.

   


그림 7 rundll32.exe

 

그림7에서 Lab03-02.dll의 익스포트 함수인 InstallA을 실행했다. 다음은 분석 도구를 이용하여 기초 분석 동적을 진행하자.

 

레지스트리의 변경 여부를 확인하기 위해 Regshot을 이용한다.

   


그림 8 Regshot

 


그림 9 새로운 키 생성

   

 그림9에서 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services에 IPRIP 서비스가 생성됐다. 해당 서비스를 확인해보자.

   


그림 10 ImagePath

   


그림 11 ServiceDll

   

그림10에서 Imagepath 값은 %SystemRoot%System32\svchost.exe –k netsvcs 이다. 그림11에서 ServiceDll은 C:\work\Lab03-02.dll이다. 즉 감염이 되면 부팅 시 마다 IPRIP 서비스를 통해 "%SystemRoot%System32\svchost.exe –k netsvcs" 파일이 로딩되어 "C:\work\Lab03-02.dll" 가 실행된다.

   

 

   


이 악성코드는 IPRIP 서비스로 설치됐기 때문에 윈도우에서 다음과 같이 net 명령어를 사용해 실행할 수 있다.

   


그림 12 서비스 실행

   

 이제 IPRIP 서비스가 실행된다. Procexp 를 열어 확인해보자

   


그림 13 procexp

   

 그림13에서 svchost.exe가 IPRIP 서비스를 실행했다. 다음은 악성코드인 Lab03-02.dll을 찾아보자.

   


그림 14 Find -> Find Handle

 

그림14에서 Lab03-02.dll는 PID 1040인 svchost.exe에 의해 로드됐음을 알 수 있다.

 

다음은 Wireshark로 패킷을 살펴보자

 


그림 14 http.host contains "practicalmalwareanalysis" 필터링

 

그림14에서 발견한 practicalmalwareanlysis.com 문자열로 패킷 필터링을 했다 (그림14 참조). 해당 도메인의 아이피는 192.0.78.24 또는 192.0.78.25이다. 그리고 악성코드는 HTTP GET 요청을 하고 있다.

 


그림 15 ip.addr == 192.0.78.24 필터링

 

그림15에서 ip.addr == 192.0.78.24 필터링을 했다. 해당 악성코드는 암호화 보안 프로토콜인 TLS을 사용한다.

 

 

 

고급 정적 분석

 

고급 정적 분석은 아이다 프로(IDA Pro)를 이용한다.

 


그림 16 ServceMain

 

일반적으로 서비스의 중요한 코드는 서비스 메인에 포함된다. 그림2에서 익스포트 함수인 ServceMain를 분석하도록 하자.

 


그림 17 ServiceMain

    

그림3에서 sub_1004C38 는 SetServiceStatus 함수를 호출한다. 중요한 함수가 아니므로 sub_1000321A와 sub_10003286을 살펴보자.

 


그림 18 sub_1000321A

 

그림18에서 sub_1000321A는 컴퓨터의 호스트 네임을 Dest 전역 변수에 저장한다.

 


그림 19 sub_10003286

 

그림19에서 sub_10003286는 다양한 서브 함수를 호출한다. 우리는 sub_1000454E와 sub_10003415만 살펴본다.

 

 

그림 20 sub_1000454E

 

그림20에서 sub_1000454E는InternetOpen, IntertConnect, InternetReadFile 함수를 호출한다. 즉 practicalmalwareanalysis.com에 serve.html을 GET 요청 한다 (그림14 참조)

 

다음은 그림19에서 발견한 sub_10003415를 살펴본다.

 


그림 21 sub_1003415

 

그림21에서 sub_1003415는 szShortPath 변수에 exe 파일 이름을 저장하고 자식프로세스를 생성한다. 지금까지 분석한 것을 바탕으로 고급 동적 분석을 하자.

 

 

 

고급 동적 분석

 

Svchost.exe에 있는 dll 파일을 디버깅 하는 방법을 모르겠네요… 알게되면 업데이트 하겠습니다..

Comments