실습 7-1

실습 환경 : Vmware (Widnows 7 32 bit)

사용한 툴 : IDA Free 5.0

[01] 이 프로그램은 어떤 방식으로 컴퓨터가 재시작할 때마다 실행(지속 메커니즘)을 보장하는가?

image

프로그램의 main 함수를 살펴보면 StartServiceCtrlDispatcher 함수가 보이는데 이 함수를 사용하여 서비스 실행 환경을 등록하고 서브루틴 sub_401040을 실행한다.

sub_401040을 분석해보면

image

처음에 OpenMutex 함수를 사용하여 Mutex를 오픈 하는데 HGL345라는 뮤텍스가 존재할 경우 오픈한 뮤텍스의 핸들을 반환하기때문에 점프하지 않고 프로세스를 종료한다.

HGL345라는 뮤텍스가 존재하지 않으면 loc_401064로 점프하는데 이를 살펴보면

lab7-1 3

CreateMutex 함수를 사용하여 HGL345라는 뮤텍스를 생성한 뒤 OpenSCManager 함수를 사용하여 SCManager 핸들을 얻는다.

그리고 GetCurrentProcess 함수를 사용하여 현재 실행중인 프로세스의 핸들을 얻는다.

lab7-1 4

아래로 내려와 분석을 진행해보면 GetModuleFileName 함수를 사용하여 현재 실행중인 파일의 경로를 가져오고

lab7-1 5

CreateService 함수를 사용하여 Malservice라는 서비스를 생성하고 StartType 옵션을 0x2로 설정하여 시스템 시작시 서비스 제어 관리자에 의해 자동으로 실행되게 설정하였다.

lab7-1 6

분석을 진행해보면 위와 같이 SYSTEMTIME구조체를 불러와 시간을 명시하는데 초, 분, 시간, 일 등을 모두 0으로 설정한 뒤에 년도에 0x834(2100)이라는 연도 값이 설정된다. 그리고 SystemTimeToFileTime 함수를 볼 수 있는데 이 함수는 시스템의 시간을 가져와 파일 시간 형식으로 변환해준다.

lab7-1 7

CreateWaitTableTimer 함수를 사용하여 대기 타이머를 생성하고 SerWaitTableTimer 함수를 사용하여 생성된 대기 타이머를 셋트 시키는데 이 함수의 파라미터인 IpDueTime의 값은 위에서 SystemTimeToFileTime 함수에 의해 반환되는 FileTime이다.

lab7-1 8

그 후 WaitForSingleObject 함수를 이용하여 대기 타이머에 세트된 시간 즉 2100년 01월 01일 까지 오브젝트가 시그널 상태가 될 때까지 대기하게 한다.

lab7-1 9

계속해서 분석을 진행해 보면 위에서 esi에 0x14(20)을 넣고 반복 하는 것을 확인할 수 있고 CreateThread 함수를 사용하여 스레드를 생성하고 있는데 파라미터를 살펴보면 스레스의 시작 주소로 사용되는 함수인 StartAddress 함수를 확인할 수 있는데 이를 분석해보면

lab7-1 10

인터넷 연결을 초기화하는 InternetOpen 함수를 호출한 뒤에

lab7-1 11

InternetOpenUrl 함수를 사용하여 http://www.malwareanalysisbook.com 홈 페이지를 여는데 점프문 때문에 무한이 동작할 것이다.

즉 정리 해보면 이 악성코드는 뮤텍스를 사용하여 한번에 하나의 사본이 실행되게 하여 시스템이 재시작할 때 동작을 보장하는 서비스를 생성하고 20번 반복하여 스레드를 생성한 한뒤에 2100년 01월 01월 까지 대기하고 2100년 01월 01일이 되면 20개의 스레드가 www.malwarenalaysisbook.com 홈 페이지를 무한으로 오픈한다.

정해신 기간에 대상 홈 페이지를 무한정 오픈 하는 것을 보아 DDOS 공격을 수행함을 알 수 있다.

[01]번은 어떤 방식으로 컴퓨터가 재시작할 때마다 실행을 보장하는지를 물어봤으므로

답은 Malservice라는 서비스를 생성하여 컴퓨터가 시작할 때마다 실행하게 한다.

[02] 이 프로그램은 왜 뮤텍스를 이용하고 있는가?

위에서 살펴본대로 한번에 하나의 사본이 실행되게 뮤텍스를 이용한다.

[03] 이 프로그램을 탐지할 때 호스트 기반으로 좋은 시그니처는 무엇인가?

Malservice 서비스와 HGL345 뮤텍스 이름을 찾을 수 있다.

[04] 이 악성코드를 탐지할 때 네트워크 기반으로 좋은 시그니처는 무엇인가?

악성코드는 InternetExplorer 8.0 User-Agnet를 사용하여 http://www.malwareanalysisbook.com 과 통신한다.

[05] 이 프로그램의 목적은 무엇인가?

2100년 01월 01일 까지 대기한 뒤에 2100년 01월 01일이 되면 동시에 http://www.malwareanalysisbook.com 홈 페이지에 20개의 스레드가 동시에 무한정 요청을 보내는 DDOS 공격을 수행한다.

[06] 이 프로그램은 언제 실행을 종료하는가?

이 프로그램은 종료되지 않고 2100년이 되면 20개의 스레드를 생성하여 무한 루프로 동작을 한다.