Mylabs

[긴급] 사이버테러 (7.7 DDOS) - MBR 파괴, 파일파괴 (2) 본문

Malware

[긴급] 사이버테러 (7.7 DDOS) - MBR 파괴, 파일파괴 (2)

[Edge] 2009. 7. 10. 13:55
2009/07/10 - [Malware] - [긴급] 사이버테러 (7.7 DDOS) - MBR 파괴, 파일파괴 (1)
2009/07/10 - [Malware] - [긴급] 사이버테러 (7.7 DDOS) - MBR 파괴, 파일파괴 (2)
2009/07/10 - [Malware] - [긴급] 사이버테러 (7.7 DDOS) - MBR 파괴, 파일파괴 (3)


#1
- wmcfg.exe

<주요 행동 코드>
1. 리소스 파일 Drop
2. Dropfile mstimer.dll 서비스 등록



4개의 리소스를 드랍하게 됩니다.
상위 2개는 레지스트리쪽 값으로 추정되며, 중요한 것은 하위 2개의 리소스 파일들입니다.
2개의 파일은 각각
mstimer.dll
wversion.exe

으로 구성되어 있습니다. wversion.exe는 flash.gif로 드랍했던 파일이며, 동일한 바이너리 입니다.

앞으로 주목해야 하는 것은 이 두 파일입니다. 두 파일이 악성행위의 동작코드를 담고 있는 파일이기 때문입니다.

1. 리소스 파일 Drop
2. Dropfile mstimer.dll 서비스 등록

다음과 같은 루틴을 통하여, 악성코드는 mstimer.dll 을 "mstimer" 서비스로 등록하게 됩니다.

그럼 mstimer.dll 을 살펴보도록 하겠습니다.

mstimer.dll 안에 있는 스트링들은 암호화 되어있으며, 암호화 방식은 문자치환 방식으로 조그마한 루틴을 통해 Decypt 됩니다.
다음의 루틴을 통해, mstimer 서비스에 접근하며, 서비스 상태를 셋팅함과 동시에 쓰레드를 동작시킵니다.


동작되는 메인 쓰레드는 다음과 같은 코드를 가집니다.


메인쓰레드에서 주목해야 하는 루틴은 Read_Win_ini(); 루틴입니다.

해당 루틴을 살펴보도록 하죠.


1부에서(?...) 보았던 flash.gif가 Win.ini에 써놓았던 [MSSOFT] 세션의 LastName 키값을 Read하는 루틴이 보입니다. GetProfileString() 함수가 바로 그 역할을 하게 됩니다.

그 바로밑의 if 분기문을 살펴보면 상단에서 얻어온 현재 시스템의 시간값과 Win.ini에 적혀있는 시간값 ("40004") 를 비교하는 구문이 보입니다. 즉, 현재 시간값이 40004값보다 크면
wversion_exe_Run() 함수를 호출하게 되는 것입니다.
40004의 값은 2009-07-10 00:00:00 을 의미하므로, 공격시작은 10일 부터 시작되는 것입니다.

[wversion_exe_Run()]


사용하고자 하는 API함수(CreateProcess)의 Address를 얻어오고 wversion.exe를 실행하게 되는 핵심적인 루틴입니다. "2009-07-10" 이후의 시스템시간을 가지는 숙주시스템은 wversion.exe가 실행되게 되는것 입니다.

그렇다면, 시스템을 파괴하는 코드를 가진 wversion.exe를 살펴보도록 하죠.
3부에서 이어집니다.^^