본문 바로가기

My Study/Malware&Vulnerabilities

네이트온 유포 바이러스 lookr.exe 분석

lookr.exe 바이러스는 폴더처럼 생겼지만 확장자를 보면 exe로 되어있다. 그리고 해당 파일이 bind가 되어있는데 압축을 풀게되면 jpg 파일과 wofacais.exe파일이 있다. jpg파일은 상큼하게 지워주면 된다. 
이제 wofacais.exe파일이 진짜 바이러스 인거 같은데 분석을 해보자. 패킹이 되어 있는데 어떠한 패커로 패킹되어있는지는 모르겠다. 나의 실력으로도 몇 분만에 언패킹에 성공한것으로 보아 강력한 패커는 아닌듯 싶다. 안에 안티디버깅 기법으로는 단순하게 예외처리를 사용한 방법이 사용되었다. 별거 아니니 넘어가자.
언패킹에 성공해서 올디로 처음 열어본 화면이다.

전형적인 C언어 계열로 만들어진 언어이다. 저 부분은 분석할 필요가 없으니 해당 파일의 main함수부터 분석을 시작하자.

main함수가 되겠다. 안으로 들어가보자.

이제 분석할 꺼리가 나온거 같다. LoadIconA함수 아래로 4개의 함수가 더 있는데 한번 분석을 해보자.

0x004010A0

자기 프로세스의 특권 권한을 SeDebugPrivilege로 높혀주고 있는 부분이다.

0x00401700

V3 Lite Service를 무력화 시키는 부분이다. SCM ( service control manager ) 에 연결을 시키고 SCM DB를 열고
V3 Lite Service를 연 후 해당 서비스를 삭제 시켜버리는 부분이다.
참고로 제 컴퓨터엔 V3 Lite가 안 깔려있어서 어떠한 서비스가 삭제되는지 제대로 분석하진 못했다.
그냥 V3 Lite를 무력화 시키는 루틴이라고 생각하면 된다.

0x004017D00
해당 루틴을 분석해 보면
OpenSCManger
OpenService
ControlService
DeleteService
CloseServiceHandle
함수들이 계속해서 쓰여지고 있다. 삭제시키는 Service를 보면 전부 V3 Lite 관련된 루틴이다.
여기 함수 부분도 계속해서 V3 Lite를 무력화 시키는 루틴이다.

0x00401670
이 부분 또한 특정 서비스를 삭제 시키는 루틴이다. 인자로 전달되는 문자열 값을 보면

avp라는 서비스를 삭제시키고 있습니다. avp는 카스퍼스키랩에서 무료 제공하는 수동 바이러스 검색/제거 도구입니다.
저 툴도 무력화 시키는거 같군요.

0x00401000

3개 함수로 보아 특정 프로세스를 찾는 함수 입니다. strcmp에서 비교되는 문자열의 값을 확인해 보면 V3LTray.exe입니다.
현재 프로세스 목록에서 V3LTray.exe를 찾고 있는 루틴입니다.

해당 함수를 잠시 빠져나온 부분입니다.

함수의 리턴값이 0이 아니면 즉, 발견이 되면 해당 프로세스를 TerminateProcess로 죽여버리고 있습니다.
일단 전 V3관련된 프로세스가 아무것도 없으므로 전부 패스입니다. 저 루틴을 4번정도 돌더군요. 확실하게 죽여버리겠다는 목적인가요?? ^^;

그 다음 루틴을 계속 보겠습니다. 그 이후로는 바이러스 제작자가 만든 함수는 잘 안나오는군요.
어짜피 함수로 쭉쭉 나와있으므로 스샷보다는 설명으로 넘어가겠습니다.

GetModuleFileName으로 현재 바이러스의 절대경로를 얻어옴
C:\WINDOWS\system\flashdbe.dll 파일을 생성
생성 옵션은 다음과 같다.

그 후로 WriteFile로 해당 dll의 내용을 채운다.
dll을 생성시키는 걸로봐서는 dll Injection을 할꺼같은 분위기다. 일단 저 dll도 분석의 대상이 되겠군요.
그 아래 쪽을 내려가다보면 사용자가 만든 함수가 하나 있습니다.

0x004012C0

파일 포인터를 처음으로 옮기고 아까와 다른 값을 WriteFile하고 있습니다.
뭐 결국 dll을 완성시키는거가 되겠죠. dll은 UPX로 패킹이되어있네요..

해당 함수를 빠져나오고..~!
SetFileAttributes로 해당 파일을 시스템 히든 상태로 만드네요.

그 아래 또 하나 제작자 함수
0x004015D0
또 안랩 V3Lite를 지지고 볶고 하는군요. AhnLab V3Lite Tray Process를 시작프로그램에서 지워버리고 있습니다.

빠져나와서 계속 봐보죠..나와서 보니 여기서부턴 파일을 계속 만드는군요. 어떠한 파일을 만드는지보겠습니다.

C:\WINDOWS\system\Lcomres.dat 생성, 내용 담겨있음 - 4KB
C:\WINDOWS\system\Lin.log 생성, 바이러스(wofacais.exe)를 그대로 복사
C:\WINDOWS\system\axeWen.exe 생성, 바이러스(wofacais.exe)를 그대로 복사

3개의 파일을 만들고 있고
마지막으로 생성시킨 axeWen.exe파일은 시작프로그램에 등록합니다.
"SoftWare\Microsoft\Windows\CurrentVersion\Run" 에 등록을 시킵니다.

떳떳한 우리 바이러스~

그 아래를 보면 제작자 함수가 있습니다.
0x00401120

이번에는 바탕화면 프로세스를 찾고 있습니다. 이거 전형적인 바이러스 패턴이군요.
아마 explorer.exe는 무조건 실행 중이므로 걸리게 되겠죠.

그 아래는 또 한번 특권 권한을 SeDebugPrivilege권한으로 높혀주고 있습니다.

제작자 함수
0x00401210
바로 이 함수가 아까 만들었던 dll을 인젝션 시키는 루틴입니다.
스샷보다는 설명으로 넘어가겠습니다.
전형적인 dll injection코드입니다.
OpenProcess로 바탕화면의 핸들 값을 얻어옵니다.
VirtualAllocEx함수로 바탕화면 프로세스에 메모리 공간을 할당 받습니다.
해당 메모리 공간에는 아까 생성시켰던 dll의 절대 경로를 넣어줍니다. (  C:\WINDOWS\system\flashdbe.dll )
GetProcAddress로 LoadLibrary함수의 주소를 얻어오고
마지막 결정타로 CreateRemoteThread함수를 호출합니다.
전형적인 dll Injection코드입니다.

함수를 실행시킨 후 explorer.exe에 붙어있는 dll들을 봐보겠습니다. ( Process Explorer 사용 )

역시나 flashdbe.dll이 붙었고 UPX로 패킹이 되어 있어서 보라색으로 나옵니다.
저 dll은 뒤에서 분석을 해보도록 하겠습니다.

함수를 빠져나오고 나면 또 한번의 제작자 함수가 나옵니다.
0x004013F0
1. GetTempPath로 "C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\"경로 얻어옴
   ( XP기준 C:\Documents and Settings\Administrator\Local Settings\Temp 와 같음 )
2. GetModuleFileName으로 다시한번 바이러스 절대 경로 얻어옴 ( wofacais.exe )
3. C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\dele037b8.bat 파일 생성시킴 
   ( 파일명의 숫자들은 랜덤 - GetTickCount로 수를 얻어오므로 )

dele037b8.bat 파일에 들어있는 내용
:Repeat 
 del "C:\Documents and Settings\Administrator\바탕 화면\wofacais.exe" 
 if exist "C:\Documents and Settings\Administrator\바탕 화면\wofacais.exe" goto Repeat 
 del "C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\dele037b8.bat" 
너무 간단하니 잠깐 설명을 해보면 해당 명령어가 계속 반복되면서 하드에 wofacais.exe가 존재하면 계속 삭제를 해버리겠다는 말입니다. 난 할일하고 사라져버리겠다..라는 말로 해석될 수 있겠군요.

그 아래 코드로는 GetEnvironmentVariable함수를 호출하면서 ComSpec라는 환경변수 값을 반환합니다.
이건 왜하는건지??

아무튼 그 아래쪽은 아까 생성했던 bat파일을 실행시키는 루틴입니다. ShellExecuteEx함수를 사용합니다.
절대경로 다 빼고 파일명으로만 써보겠습니다.
cmd /c dele037b8.bat 
가 됩니다. 
/c 옵션을 준것은 cmd창이 잠깐 떴다가 해당 명령어를 실행 후 다시 cmd창을 종료하라는 명령어 입니다.

그 명령어를 실행 후 ExitProcess로 wofacais.exe 파일이 마무리가 됩니다.

이번에 분석해볼 내용은 explorer.exe에 붙어있는 flashdbe.dll을 분석해 보도록 하겠습니다.
( 이 바이러스가 벌써 막혔는지 지금은 작동을 못하고 있더군요. 그래서 짧게 분석했습니다. )
해당파일을 보니 2중 패킹이 되어 있더군요. 첫번째가 UPX 두번째는 뭔진 모르겠지만 패킹되어 있습니다.

분석만 빨리 끝내고 싶은 마음에 dll파일을 언패킹해서 실행시키는 방법에 대해서는 나중에 블로깅을 하겠습니다.

일단 파일 내부를 보니 올디에서 제대로 분석이 안되어 있어서 Analyze This를 했더니 올디가 죽어버리더군요.
이건 또 무슨 안티디버깅 기법인가 싶네요. 일단 Analyze This를 안해도 분석이 가능하니 넘어가겠습니다.

함수 위주로 분석을 해보면 Netbios라는 함수도 사용되고 있습니다.
해당 함수는 이더넷 카드의 MAC 주소 정보를 알아내기 위해 사용되는 함수입니다.
하지만 분석을 보니 제대로 MAC 주소를 얻어오질 못하고 바로 dll이 종료가 되버리는군요.

동적 분석이 더이상은 불가능합니다.

빨간색 네모친 부분이 MAC주소를 얻어오는 부분인데 해당 부분에서 죽어버립니다.

그래서 그냥 옆에 있는 문자열들로 대충 추측을 하면서 분석을 하겠습니다. 일단 옆쪽에 여러 사이트들이 있군요.
들어가보니 전부 죽어있는 사이트들입니다. 막혔나보군요.

그 아래쪽에 스레드를 생성시키고 있는데 스레드 내부로 들어가서 분석을 해보니
무언가 또 파일을 복사시키고 파일 특성을 바꿔주고 하고있지만 동적분석이 불가능하여 무엇을 하는건지 모르겠습니다.

결론은 사이트들도 죽어있고 MAC주소도 못얻어오고 쓰레기 바이러스군요.
최근에 유포된 바이러스인데 벌써 죽었나 보군요.
내부 함수로 보니 Internet관련 함수들도 있는걸로 보아 해당 사이트들에 접속해서 어떠한 파일을 얻어오고 
또 그것으로 활개치고 다니는 그런 패턴이랄까요??
아니면 안에 VirtualProtect, GetProcAddress 등등 이런 함수들이 많이 쓰인걸로 보아 explorer.exe의 특정 함수를 후킹하고 있을 가능성도 충분합니다. 

지금은 죽었으니 안심입니다.??

만약 실행 시키신 분들이라면 바이러스가 크게 동작은 안해서 큰 걱정은 없는데 일단은 컴퓨터에서 지워주어야 하니까
깨끗하게 지우는 방법을 설명드리겠습니다.

파일 삭제 할 것
C:\WINDOWS\system\Lcomres.dat
C:\WINDOWS\system\Lin.log
C:\WINDOWS\system\axeWen.exe
C:\WINDOWS\system\flashdbe.dll

레지스트리 삭제할 것
SoftWare\Microsoft\Windows\CurrentVersion\Run에 등록된 아래 빨간색 네모친 값 삭제