Practical Malware Analysis 7-1
실습 7-1
실습 환경 : Vmware (Widnows 7 32 bit)
사용한 툴 : IDA Free 5.0
[01] 이 프로그램은 어떤 방식으로 컴퓨터가 재시작할 때마다 실행(지속 메커니즘)을 보장하는가?

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

처음에 OpenMutex 함수를 사용하여 Mutex를 오픈 하는데 HGL345라는 뮤텍스가 존재할 경우 오픈한 뮤텍스의 핸들을 반환하기때문에 점프하지 않고 프로세스를 종료한다.
HGL345라는 뮤텍스가 존재하지 않으면 loc_401064로 점프하는데 이를 살펴보면
CreateMutex 함수를 사용하여 HGL345라는 뮤텍스를 생성한 뒤 OpenSCManager 함수를 사용하여 SCManager 핸들을 얻는다.
그리고 GetCurrentProcess 함수를 사용하여 현재 실행중인 프로세스의 핸들을 얻는다.
아래로 내려와 분석을 진행해보면 GetModuleFileName 함수를 사용하여 현재 실행중인 파일의 경로를 가져오고
CreateService 함수를 사용하여 Malservice라는 서비스를 생성하고 StartType 옵션을 0x2로 설정하여 시스템 시작시 서비스 제어 관리자에 의해 자동으로 실행되게 설정하였다.
분석을 진행해보면 위와 같이 SYSTEMTIME구조체를 불러와 시간을 명시하는데 초, 분, 시간, 일 등을 모두 0으로 설정한 뒤에 년도에 0x834(2100)이라는 연도 값이 설정된다. 그리고 SystemTimeToFileTime 함수를 볼 수 있는데 이 함수는 시스템의 시간을 가져와 파일 시간 형식으로 변환해준다.
CreateWaitTableTimer 함수를 사용하여 대기 타이머를 생성하고 SerWaitTableTimer 함수를 사용하여 생성된 대기 타이머를 셋트 시키는데 이 함수의 파라미터인 IpDueTime의 값은 위에서 SystemTimeToFileTime 함수에 의해 반환되는 FileTime이다.
그 후 WaitForSingleObject 함수를 이용하여 대기 타이머에 세트된 시간 즉 2100년 01월 01일 까지 오브젝트가 시그널 상태가 될 때까지 대기하게 한다.
계속해서 분석을 진행해 보면 위에서 esi에 0x14(20)을 넣고 반복 하는 것을 확인할 수 있고 CreateThread 함수를 사용하여 스레드를 생성하고 있는데 파라미터를 살펴보면 스레스의 시작 주소로 사용되는 함수인 StartAddress 함수를 확인할 수 있는데 이를 분석해보면
인터넷 연결을 초기화하는 InternetOpen 함수를 호출한 뒤에
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개의 스레드를 생성하여 무한 루프로 동작을 한다.