Win32:PcClient-ZE

Posted at 2010/03/21 16:28 // in Malware // by 엔신

clip_image001[4]

http://www.virustotal.com/ko/analisis/a593b6f89f8a5c62c8c2201d78353877df3c3905a952466b8814f04a8de35fd4-1268745275

--------------------------------------------------------------------------------------------------------------

1. 악성코드 전달

clip_image001

이메일의 스팸필터에 안걸리고 세나사진이 전달되었다. 다운로드 받았더니 '스키장 사진들.exe' 파일이 존재한다. 당연히 악성코드라는 느낌이 왔고, 검사하였더니 위와 같은 진단 결과가 나왔다.

2. Unpacking

일단 UPX로 packing되어 있어서 unpacking하였다. 사실 오랜만에 MUP 할려고 하다 보니 방법이 기억이 나지 않아서 좀 헤맸다. UPX MUP 방법 참조하시길.

3.코드 시작

00401780 55 PUSH EBP

00401781 8BEC MOV EBP,ESP

00401783 6A FF PUSH -1

00401785 68 00214000 PUSH 스키장_?00402100

0040178A 68 06194000 PUSH 스키장_?00401906 ; JMP to msvcrt._except_handler3

0040178F 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]

00401795 50 PUSH EAX

00401796 64:8925 00000000 MOV DWORD PTR FS:[0],ESP

이 악성코드 프로그램은 MFC로 만들어진 코드라서 실제로는 위 지점이 실제 OEP에서는 Exception Handler를 먼저 설치하고 진행이 되지만, 똑똑한 IDA는 이러한 MFC 진행 부분을 제외하고 아래와 같이 WinMain이 있는 실제 소스부터 보여준다.

clip_image002

실제 소스코드에서는 GetSystemDirectoryA 함수를 이용하여 시스템 디렉토리("C:\Windows\System32")를 구한 값에 "\fywd.dll" 문자열을 결합한다.

4. 악성코드 DLL 파일 저장

clip_image003

결합한 문자열의 DLL 파일을 생성하기 위해 FindResourceA, SizeofResource, LoadResource, GlobalAlloc, LockResource, GlobalFree 함수를 이용한다(CALL 00401580). 세부적으로는 0x65 ID를 갖는 DLL 리소스를 찾아서 리소스를 로드하고 GlobalAlloc 함수를 이용하여 메모리 상에 악성코드 데이터를 할당한다.

clip_image004

GlobalAlloc 함수를 이용하여 메모리에 할당한 악성코드 영역을 CreateFileAWriteFile 함수를 이용하여 파일로 저장한다(CALL 004014E0).

5. 프로세스 생성

그 후 CreateProcessA 함수를 이용하여 "\Program Files\Internet Explorer\iexplore.exe"를 hide 상태로 실행시킨다.(ShowWindow = FALSE)

clip_image005

실제로 익스플로러 프로세스가 실행 중이지만, 작업표시줄에는 익스플로러가 나타나지 않는다.

6. DLL Injection

clip_image006

VirtualAllocEx 함수로 생성한 프로세스에 메모리를 할당하고, WriteProcessMemory 함수를 써서 데이터를 쓴다. 어떤 데이터가 들어가는지 확인해보니 "C:\WINDOWS\system32\fywd.dll" 라는 문자열 29Byte만 들어가고 있다.

clip_image007

그 후 GetModuleHandleA 함수로 Kernel32의 LoadLibraryA 모듈을 핸들값을 리턴 받는다. 그리고 나선 GetProcAddress 함수로 LoadLibraryA 함수의 메모리 어드레스를 리턴받는다.

마지막으로 CreateRemoteThread 함수를 이용하여 생성한 ixplore.exe 프로세스에서 LoadLibraryA 함수를 쓰레드로 실행시킨다. 그 매개변수가 되는 DLL이 "C:\WINDOWS\system32\fywd.dll"의 데이터가 있는 메모리 영역이다(VirtualAllocEX으로 문자열 넣은 곳). (DLL Injection)

여기서 중요한 것은 DLL 파일을 동적으로 분석하는 것은 IDA와 같은 프로그램을 이용하여 정적 분석하면 되지만 동적 분석하기 위해서는 해당 스레드가 실행되는 순간에 break를 걸어서 멈춰야 한다.

참고사항

clip_image008

OllyDBG의 경우 Debugging Options -> Events 탭에 보면 Break on new thread 메뉴를 통하여 스레드 생성 시점에 브레이크를 걸 수 있다. 그러면 해당 쓰레드 시작점부터 동적 분석이 가능해진다. 단 이 이벤트를 항상 켜둘 경우 상당히 자주 브레이크 포인트를 걸리게 되므로 사용시에만 설정하고 다시 해제하는 것이 좋다.

하지만, 지금 같은 경우는 Process가 다르므로 Break on new module(DLL)이나 break on new thread에 이벤트를 설정하고 진행한다고 하여도 브레이크는 걸리지 않는다.

동적 분석하고 싶다면, hide로 실행중인 ixplore.exe 프로세스를 새로운 디버거 프로세스로 attach한 후 Break on new module 이벤트를 걸어 놓고 Run 상태로 만들어 놓으면 된다. 그러고 나서 다시 원래의 프로세스로 와서 CreateRemoteThread 함수를 실행하면 ixplore.exe가 Attach 되어 있는 디버거에서 Break가 걸릴 것이다. Break가 걸리면 DLL의 OEP로 찾아가서 브레이크를 걸고 진행하여도 되고 IDA에서 한번에 DllMain의 위치를 확인하여 브레이크를 걸고 진행하여도 된다.

DLL 파일의 동적 분석을 위해 다른 디버거를 통해 DLL의 시작점에서 break를 걸어 놓고 진행중이던 기존 "스키장 사진들.exe" 파일의 디버깅을 이어서 진행하겠다.

7. Registy

이번에는 레지스트리 등록과 관련된 함수를 호출하게 된다.(함수 호출 지점 004014AE) 레지스트리 부분은 악성코드의 시작과 관련된 작업을 하게 될 것이다.

clip_image009

레지스트리 부분은 악성코드가 가동될 수 있도록 만드는 내용을 삽입 할 것이다.먼저 "%SystemRoot%\System32\fywd.dll" 의 문자열을 특정 영역(EDI)에 복사해놓는다.

그리고 나서 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters Key를 Open하고 ServiceDLL Key를 삭제한다.(RegDeleteValueA) 그리고 ServiceDLL 이라는 Key를 다시 생성하여 "%SystemRoot%\System32\fywd.dll" 문자열을 넣는다.

clip_image010

삭제 전(w32time.dll)

clip_image011

삭제 후 추가된 Key(fywd.dll)

윈도우 시각 동기화 부분을 수정하여 악성코드가 실행되도록 변조한 것이다.

8. 악성코드 제거

마지막 단계로 악성코드를 제거하여 흔적을 지우는 단계이다.(004014B3에서 CALL 발생)

clip_image012

GetModulFileNameA 함수를 통해 현재 실행중인 악성코드 "C:\세나 사진\스키장 사진들.exe"의 전체 경로를 찾은 다음, GetShortPathNameA 함수를 통해 "C:\세나~1\스키장~4.exe"처럼 짧은 경로로 줄여준다.

그리고 GetEnvironmentVariableA 함수에 COMSPEC 환경변수를 넣어주어서 "C:\WINDOWS\system32\cmd.exe" 문자열을 얻어 온다. COMSPEC은 기본 명령프롬프트 주소를 리턴 받을 수 있다.

lstrcpyA 함수와 lstrcatA 함수를 이용하여 구해온 문자열을 합쳐 "C:\Windows\sytem32\cmd.exe /c del C:\세나~1\스키장~4.EXE"를 만든다.

GetCurrentProcess 함수를 이용하여 프로세스의 핸들값을 구하고 SetPriorityClass 함수를 이용하여 프로세스의 우선순위를 REALTIME_PRIORITY_CLASS로 변경한다. 그리고 GetCUrrentThread 로 현재 스레드의 핸들값을 구하고 SetThreadPriority 함수를 이용하여 우선순위를 THREAD_PRIORITY_TIME_CRITICAL로 변경한다.

clip_image013

그 후 CreateProcessA 함수의 매개변수로 미리 만들어 놓은 "C:\Windows\sytem32\cmd.exe /c del C:\세나~1\스키장~4.EXE" 문자열을 넣어 기존 악성코드를 지우는 프로세스를 가동시킨다.

그리고 또 다시 SetPriorityClass 함수를 이용하여 우선순위를 IDLE_PRIORITY_CLASS로 만들고 SetThreadPriority 함수를 이용하여 THREAD_PRIORITY_IDLE 상태로 만들고 난 다음 ResumeThread로 정지 상태의 스레드를 가동시킨다.

9.악성코드 실체인 DLL 분석

clip_image014

DllMain에서 보게 되면 CreateThread를 생성하게 되고 별다른 작업을 하지 않는다.

clip_image015

쓰레드 안으로 들어 오게 되면 또 CreateThread가 있다. 쓰레드 안에 쓰레드로 실행되지만 쓰레드의 경우는 자식 부모관계가 없으므로 오로지 프로세스 아래 쓰레드 집합이 된다.

일단 보면 WSAStartup 함수를 호출한 다음 CreateThread -> WaitForSingleObject -> CloseHandle –> Sleep 으로 15,000 ms 마다 반복적으로 작업을 실행하게끔 하고 있다.

clip_image016

다시 쓰레드 안으로 들어가게 되면 "pass2" 문자열을 출력한다. 그리고 나서 CALL 100F730 함수를 호출하여 특정 도메인을 만들어 낸다.("dltkdgksskfk.3322.org") 하지만 현재에는 DNS 싱크홀 상태이므로 127.0.0.1 도메인을 결과값으로 받게 되어 있다.

그 후 socket을 생성하여 connect 시도 한다. connect 되지 않았다면, ExitThread 함수를 이용하여 스레드를 정지시킨다.

clip_image017

connect 되었다면, GetComputerNameA 함수를 이용하여 컴퓨터이름을 구하고 GetVersionExA 함수를 통해 시스템 Version 정보를 확인한다.

clip_image018

Version 정보를 통하여 각 시스템의 정해놓은 문자열을 복사한다.

clip_image019

현 상황에서는 정해진 문자열을 조합하여 "Win XP SP3 (Build 2600)" 라는 문자열을 만들었고, GlobalMemoryStatus 함수를 이용하여 시스템 메모리량을 체크하고 있다.(여기서는 256MB)

clip_image020

그렇게 파악한 시스템 정보 데이터를 가공하여 send 함수를 통해 열어 놓은 socket을 이용하여 데이터 전송을 시도한다. 전송에 실패한 경우 closesocket으로 socket을 닫아버린다.

clip_image021

강제로 성공하게 한 후 진행하여 보면 recv 함수를 통해 열린 socket을 통해 어떠한 데이터를 전달받게 된다.(실제 서버가 싱크홀로 연결 안되니 지금은 확인이 불가능하다)

역시나 정상적으로 recv 되지 않은 경우 closesocket 함수를 이용하여 소켓을 닫고 정상적으로 받은 경우 계속 진행하게 된다.

정상적인 경우 지금부터 상당히 여러 가지 분기를 만나게 된다.

1000FAFF . 0F84 95020000 JE fywd.1000FD9A

이 지점을 잘 기억해 두는 것이 좋다.

분기가 발생할 경우 CreateThread 함수를 호출하게 되는데, 이 지점은 위쪽에서 먼저 지나온 Socket 함수를 이용하여 소켓을 생성하고 Connect 함수를 이용하여 Connect를 시도하는 지점이다.

반대로 분기가 발생하지 않는 경우,

1000FB0D .^77 BF JA SHORT fywd.1000FACE

또 분기를 만나게 되는데, 여기서 분기가 발생하는 경우 다시 데이터를 받기 위해 recv 함수를 호출하는 지점으로 되돌아 가게 된다. 분기가 발생하지 않는 경우에는 또 매우 다양한 분기를 만나게 된다(1000FB17).

clip_image022

이 분기점에서는 16가지의 경우의 수가 존재하게 된다.(갑자기 짜증이 밀려온다.)

인내심을 갖고, 왼쪽부터 하나씩 확인해보겠다.

첫 번째.

clip_image023

보게 되면 SeShutdownPrivilege 특권을 이용하여 ExitWindowsEx 함수를 호출하고 있다. uFlags 매개변수로 0xC 값을 사용하고 있다. 0xC 값은 (EWX_POWEROFF | EWX_FORCE)를 의미하며 강제로 전원을 끄는 내용을 담고 있다.

두 번째.

clip_image024

두 번째의 경우 uFlags 매개변수로 0x6 값을 사용하고 있다. 이는 EWX_REBOOT | EWX_FORCE를 의미하며 이는 역시 강제 재부팅을 의미한다.

세 번째.

clip_image025

세 번째는 0x4 값을 사용한다. EWX_FORCE 값만 사용하여 강제로 프로세스를 종료시킨다.

네 번째.

이 경우에는 다시 recv 함수를 호출하는 지점으로 돌아가게 된다.

다섯 번째.

clip_image026

이 경우 URLDownloadToCacheFileA 함수를 이용하여 URL에 있는 파일을 캐시파일로 저장한다. 그리고 나서 GetUrlCacheEntryInfoA 함수를 이용하여 정상적으로 리턴 되는지 확인한다. 파일 다운로드를 하여 WinExec 함수를 이용하여 실행시키는 부분이다.

여섯 번째.

clip_image027

ShellExecuteA 함수를 이용하여 특정 URL open 하는 것으로 예상이 된다.(프로그램 실행도 가능하므로) 매개변수로 사용되는 부분은 소켓 통신이 되지 않아 확인이 불가하다.

일곱 번째.

clip_image028

keybd_event 함수를 이용하여 키보드 입력(dwFlags = 0(Key Down))을 발생(ECX)시키는데 그 전과 후에 있는 call 에서는 다음과 같이 Station과 관련된 함수들이 사용되고 있다.

clip_image029

Window Station에 대해서 아는 바가 없으므로 좀 더 공부해야겠다. 대충 판단 내린 것은 SYSTEM 권한으로 스테이션을 변경한 후, 키 입력을 발생시키고 다시 원래 사용자의 권한으로 스테이션을 변경해 놓는 내용으로 추측된다.

여덟 번째.

여덟 번째의 경우 그림을 삽입하지 않겠다 위처럼 keybd_event 함수를 이용하여 키보드 입력(dwFlags = 2(Key Up))을 발생(EDX)시킨다. 이 경우에도 스테이션 변경 작업이 동일하게 사용된다.

아홉 번째.

clip_image030

레지스트리의 w32time.dll이 등록된 키를 제거하고 새로운 키를 설정하는 부분이다. 이 부분은 원래 EXE 파일에도 들어 있는 내용과 동일하다.

열 번째.

clip_image031

이 경우 SetCursorPos 함수를 이용하여 마우스 커서 위치를 임의대로 변경한다.

열한 번째.

clip_image032

역시나 SetCursorPos 함수가 나왔으면 mouse_event 함수가 나올 것이다. 마우스 커서의 위치를 옮긴 다음 dwFlags = 0x2(MOUSEEVENTF_LEFTDOWN)를 발생시켜서 마우스 왼쪽 버튼이 클릭된 상태 이벤트를 발생시킨다.

열두 번째.

clip_image033

mouse_event 함수의 dwFlags = 0x4(MOUSEEVENTF_LEFTUP)를 발생시켜서 마우스 왼쪽 버튼의 클릭됐다가 Up 되는 상태를 발생시킨다.

열 번째, 열한 번째와 열두 번째가 결합되면 마우스의 커서 위치를 이동 후 클릭하게끔 만드는 것이다.

열세 번째.

clip_image034

열세 번째의 경우 더블 클릭을 의미한다.

열네 번째.

마우스 오른쪽 버튼 클릭(버튼이 눌린 상태)이다.

열다섯 번째.

마우스 오른쪽 버튼 클릭 Up이다.

열여섯 번째.

마우스 오른쪽 버튼 더블 클릭을 의미한다.

이 부분은 반복되는 부분이라 간략하게 기재하고 넘어간다.

10. 결론

시스템 종료

시스템 재부팅

프로세스 강제종료

프로그램 다운로드 후 실행

프로그램 실행 또는 웹 페이지 open

키보드 입력

마우스 입력

이 악성코드의 경우 이러한 제어 권한을 취득할 목적으로 만들어 진 것으로 보인다. 또한 시스템 OS Version과 Memory 정보를 수집한다. 현재 거의 모든 백신에서 진단하며 DNS 싱크홀 상태이므로 국내에서는 감염으로 인한 피해 상황은 발생하지 않을 것 같다.

정말 오랜만에 분석해본 악성코드로 생각보다 분석 자체는 수월하게 이뤄졌지만, 소요되는 시간이 오래 걸린 듯 하다.

자료백업용:암호걸려있음


이올린에 북마크하기
2010/03/21 16:28 2010/03/21 16:28

Conficker Worm 바이러스 감염시 조치 방안

Posted at 2009/10/08 00:18 // in Malware // by 엔신
얼마 전 회사 네트워크에 conficker 웜이 감염됐었다.
해결하기 위해 고생좀 했는데,
가장 난감했던 것은 보안패치와 바이러스를 잡은 이후에도
재감염이 되었던 것이다.
어느 사이트에도 윈도우즈 디폴트 공유 폴더를 통해 감염되므로
해당 공유폴더를 제거하라는 안내는 없었고, 내가 알고있던 conficker 대처 방안으로 해결이 되지 않아서 고생했었다.
바이러스 제거 작업 처리 순서를 기록해놨던 것인데,
최근 일이 바빠서 쓸 내용이 없어서 이런거라도 적어놓는다.

//////////////////////////////////////////////////////

[감염 확인 방법]
시작->실행->cmd
netstat -an
명령어를 쳤을 때
수백개~수천개의 139 포트 또는 445포트가 연결된 흔적이 있거나
SYN 패킷이 발생되고 있다면 감염으로 의심하고, 백신이나 전용 백신을 사용하여 검사.

[Conficker 전용 백신 다운로드]
http://aldn.altools.co.kr/alyac/anti-downadup(conficker).exe

[Server 서비스 중지]
시작->실행->services.msc
Server 서비스 중지 후 사용안함 적용

* Server 서비스는 139,445 포트를 사용하는 공유폴더 서비스와 관련이 있음

[윈도우 Default 공유폴더 해제]
시작->실행->cmd 후 아래 명령어 입력

2000 Server 와 2003 계열은
reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters /v AutoShareServer /t REG_DWORD /d 0x00 /f

2000 Professional / XP Professional 계열은
reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters /v AutoShareWks /t REG_DWORD /d 0x00 /f

* 윈도우에서는 ADMIN$, C$와 같은 hidden 속성의 시스템 관리목적의 공유 폴더가 존재함. 해당 공유폴더를 통해 추가적인 재감염이 이루어지므로, 해제하여야 하고, 재부팅해야 적용되므로 아래 바이러스 치료 후 재부팅.

[바이러스 치료]
다운로드 받은 전용 백신을 실행하여 바이러스 치료후 재부팅

[윈도우즈 업데이트]
재부팅이 완료되면 윈도우즈 업데이트 사이트에 접근 가능해짐.
윈도우즈 업데이트가 가능한 시스템이라면 업데이트를 하고
불가능한 시스템이라면 MS08-067 패치만이라도 다운로드 받아서 설치한다.

[OS별 다운로드]
http://www.microsoft.com/korea/technet/security/Bulletin/MS08-067.mspx

[백신 실시간 감시]
백신을 다운로드 받아 설치후 실시간 감시 상태 적용.
윈도우즈 서버 계열과 XP에서 다 설치되는 알약 추천.

이올린에 북마크하기
2009/10/08 00:18 2009/10/08 00:18

악성코드에 대하여 알면 위험으로부터 벗어날 수 있다

Posted at 2009/06/26 03:18 // in Malware // by 엔신
많은 사람들이 쉽게 악성코드(바이러스)에 쉽게 감염되기도 하고, 혹시나 감염이 되지 않았을까 걱정하기도 합니다. 이러한 피해와 두려움은 악성코드에 대한 무지로 인해 발생한다고 생각합니다. 그러므로 적을 알고 나를 알면 백전 백승이라고 하였듯이 악성코드에 대하여 알게 되면, 어떻게 하면 악성코드에 최대한 감염되지 않게 할 수 있고, 감염시 대처 방안을 간구할 수 있을 것이라고 생각합니다..그래서 혹시나, 제가 알고 있는 얕은 지식으로라도 도움이 될 수 있을지도 모른다는 생각에 한번 적어봅니다.

일단 악성코드에 대하여 설명해보겠습니다.

악성코드라는 말 그대로 악한 성질을 가지고 있는 코드(정확히는 악한 성질을 갖고 있는 프로그램이 되겠습니다.)입니다. 이러한 악성코드는 총체적인 단어로 사용이 되며, 세부적으로는 바이러스, 트로이목마, 웜바이러스, 애드웨어, 랜섬웨어 등이 존재합니다.


랜섬웨어란 몸값을 요구하는 프로그램입니다. 갑자기 이상한 소리하니 잘 이해가 안가시죠? 이 계열의 프로그램이 컴퓨터에 깔리게 되면 컴퓨터에 암호를 걸고 사용하지 못하게 한다거나, 특정 사이트나 메신져에 접속하지 못하게 하기도 합니다. 그렇게 한 후 대표적으로 팝업 사이트를 띄워 특정 사이트를 이용하거나 컴퓨터를 사용하고 싶으면, 어디로 돈을 보내라는 식의 요구를 합니다. 최근에는 가짜 백신으로 둔갑하여 허위로 컴퓨터에 바이러스가 감염이 되었으니 치료하고 싶다면 일정 금액을 결제하고 치료버튼을 누르라는 식으로 교묘해지고 있습니다. 그러나 실제로는 컴퓨터에 바이러스가 감염되지 않은 경우이겠지요. 그러므로 바이러스를 치료해준다거나, 애드웨어, 또는 악성코드를 제거해준다는 프로그램을 설치하고 사용하실 때에는 널리 사용되고 있는 제품을 사용하고, 또 다른 내용으로는 웹사이트를 서핑하다 액티브엑스 형식(은행 사이트에 들어가실때 프로그램 설치하라고 나오는 것 처럼)으로 프로그램을 설치하겠느냐고 나오는 것들에 대하여 내가 정말 필요한 프로그램인가 신중히 생각해보시고 결정하시길 바랍니다. 또는 정상적인 사이트인 경우에도 스폰서 제의를 통해 전혀 사이트 이용에 관련 없는 필요하지 않은 프로그램을 설치하라고 하는 경우도 있으니 대충 넘기셔서 설치하지 마시고 확인하고 설치하시기 바랍니다.


두 번째로 애드웨어가 있습니다. 애드웨어는 말 그대로 광고 프로그램입니다. 보통 때 처럼 컴퓨터를 사용하여 웹서핑을 하고 있는데 갑자기 광고 창이 뜨는 경우, 잘 웹서핑을 하고 있는 도중 갑자기 페이지가 바뀌면서 광고 페이지로 넘어가는 경우 애드웨어에 해당하는 프로그램이 설치되어 일정 시간 단위로 강제적으로 해당 사이트를 띄우거나 변경되도록 하는 경우라고 볼 수 있습니다.
이런 경우에 악성코드 제거 프로그램을 이용하여 고치는 경우가 다수입니다. 그래도 고쳐지지 않는 경우도 존재하는데, 이럴 때에는 제어판->프로그램추가/제거 메뉴로 가셔서 본인께서 사용하지 않는 프로그램이나 설치한 적이 없는 것 같은데 설치되어 있는 프로그램을 구분하셔서 제거하여 주시는 것이 좋습니다. 또한 액티브엑스로 설치가 된 경우에는 인터넷 익스플로러에서 제거를 해주셔야 합니다. 방법에 대하여서는 잘 모르실 듯 하여 프로그램을 이용할 수 있게 추천해드리겠습니다.

대표적으로 국가정보원에서 제작하여 배포하는 CleanAX라는 프로그램이 있습니다. 해당 프로그램은 일정 기간 사용하지 않은 액티브엑스를 삭제할 수 있습니다. 그러나 기간에 따른 자동 삭제 프로그램으로 세밀하지 못한 단점이 있기도 하지요 ^^ 다운로드는 http://www.ncsc.go.kr/Setup_CleanAX.exe 이나 포털 사이트에서 CleanAX를 검색하면 매우 많이 나옵니다.
두 번째로는 http://www.char.co.kr/ 사이트에서 받을 수 있는 불도저라는 프로그램을 추천합니다. 해당 프로그램은 액티브엑스 뿐만 아니라 설치된 프로그램과 BHO도 선택 삭제가 가능합니다. 액티브엑스에 대하여 뭘 삭제해야될지 모르시겠다면 액티브엑스 전체를 삭제하셔도 됩니다. 액티브엑스의 경우 삭제가 되어도 사용자가 다시 해당 사이트를 접속할 경우 설치가 되어 있지 않은 경우 설치하라고 뜨게 됩니다. 이때 설치하게 되면 예전처럼 정상적으로 이용이 가능해집니다. 그러므로 불필요한 액티브엑스는 제거되고 새롭게 정상적으로 이용되는 액티브엑스만 다시 설치가 되겠지요 ^^


세 번째로 트로이목마란, 정상적인 프로그램(트로이목마)안에 알게 모르게 악한 성질의 기능(트로이목마 안에 숨어있는 병사 정도?)을 감추고 있어서 사용자는 프로그램이 정상적인 기능을 하기 때문에 모를 수 있습니다. 하지만 내부적으로 사용자 모르게 어떠한 일처리를 수행하는 경우입니다. 예를 들면 내부적으로 사용자가 입력하는 비밀번호를 훔쳐서 특정 해커(크래커)의 이메일로 보낸다거나, 시작 프로그램이나 레지스트리에 컴퓨터가 시작될 때 어떠한 프로그램을 실행하도록 하는 것입니다.(트로이목마 뿐만 아니라 바이러스나 모든 악성코드들은 시작 프로그램이나 레지스트리 추가를 통하여 부팅시 프로그램이 자동으로 실행되어지도록 됩니다) 대체로 트로이 목마에는 백도어(Backdoor)라고 해서 해커(크래커)가 사용자의 컴퓨터에 접속할 수 있도록 사용자 모르게 뒷문을 열어두는 기능을 갖고 있어 해커로 하여금 사용자의 컴퓨터에 접속하여 마음껏 제어할 수 있게 하기도 합니다.

대체적으로 프로그램을 불법으로 사용할 수 있게하는 프로그램 등록번호 생성기(키젠), 프로그램 등록 패치에 숨겨져서 배포되는 경우가 대다수 입니다. 이러한 기능을 주로 수행하기 때문에 대부분의 키젠을 백신에서는 트로이목마로 진단하기도 합니다. 그러므로 불법 프로그램 사용하는 것은 사용자 컴퓨터에 위험을 초례하는 길이겠지요 ^^


네 번째로 바이러스입니다. 일반적으로 많이 접하는 단어이지만 정확히 무엇인지는 잘 모르실 것입니다. 바이러스란 정상적인 파일의 일부를 변형시켜 악성 기능을 삽입하거나, 변형을 가하여 정상적으로 작동하지 못하고, 또한 그러한 악성행동을 다른 컴퓨터나 다른 파일에도 감염시키는 행위(자기복제)를 하여 다른 시스템에 바이러스를 전파하는 프로그램입니다.

설명이 조금 어렵지요? 쉽게 이야기하면, 정상적으로 작동하는 파일이 있는데, 그 파일에 변형을 가하여 사용자 모르게 나쁜 짓을 한다거나, 사용자가 프로그램을 실행시켜야 하는데 있어서 필요한 파일에 변형을 가하여 정상적으로 프로그램이 실행되지 못하게 하는 것입니다. 또한 다른 파일이나 컴퓨터에 똑같은 변형이나 악성기능을 삽입하는 전파기능을 갖고 있습니다.

그 대상이 되는 파일이 주로 윈도우와 관련된 파일인 경우가 많아서 바이러스에 걸릴 경우 컴퓨터에 오류가 많이 발생하게 되는 것입니다.

감염이 되는 주로 이용되는 방법은 인터넷에 정상적인 파일인 것처럼 위장하여 올려지고, 사용자는 그 것을 받아 실행하게 됩니다. 이럴 경우 감염이 이루어지게 되는 것이지요. 그러니 확인되지 않은 프로그램을 함부로 실행하면 안되겠지요? 최근에는 프로그램뿐만 아니라, 워드파일, 엑셀파일,PDF파일, 플래시동영상파일, scr(스크린세이버)파일을 실행시킬 때 감염되는 형태를 띄기도 합니다. 그러므로 MS오피스를 사용하시는 분들은 보안 업데이트를 반드시 최신으로 해주시기 바랍니다. 또한 PDF에 사용되는 아크로벳리더나 플래시플레이어도  마찬가지로 되도록 최신 버전을 사용하여 주시기 바랍니다. 하나 추가로 알려드리면, 무조건 최신이라고 안전한 것은 아닙니다. 하시만 그래도 최신을 사용할 경우 이전에 도사리던 위험은 제거됐을 확율이 높겠지요.(원래는 프로그램마다 보안패치라고 하여 새롭게 업데이트 되는 경우가 있습니다. 이럴 경우에는 반드시 업데이트를 해주셔야 하는 것이 좋습니다.)


다섯 번째로 웜 바이러스라는 것이 있습니다. 위 내용의 바이러스과 유사한 기능을 합니다. 파일을 변형하여 사용하지 못하게 하거나 악성 기능을 삽입하지요. 다만 감염 경로가 다릅니다. 파일을 통한 감염보다는 네트워크를 통해서 감염이 됩니다. 예를 들면 학교나 피시방 같은 경우에는 한 교실에 수십대의 컴퓨터가 존재합니다. 이러한 경우 하나의 네트워크를 구성하게 되는 것이지요. 이 경우 네트워크를 통하여 자신과 같은 네트워크에 다른 컴퓨터가 존재하는지 네트워크로 데이터를 보내고, 바이러스에 감염이 될 수 있는 취약한 시스템(운영체제)인지 확인합니다. 취약한 시스템인 경우에는 바이러스에 감염이 되겠지요. 그래서 보통 학교같은 곳에서는 한대의 컴퓨터에 웜 바이러스가 걸린 경우 해당 학교의 모든 컴퓨터가 바이러스에 걸리기 쉽상입니다. 또한 한대한대 치료하여도, 다른 감염된 컴퓨터가 치료한 컴퓨터에 또 네트워크로 바이러스 데이터를 보내게 됩니다. 그러면 한대 치료하고 다른 한대 고치면, 이전에 치료했던 컴퓨터가 또 감염이 되어 있지요. 그래서 고쳐도 고쳐도 바이러스에 걸리니까 사람들은 포맷을 하지 않는 이상 고칠수 없다 라고 말하기도 합니다. 이러한 경우에는 바이러스를 치료하고 난 이후, 반드시 윈도우즈 업데이트를 실행하셔서 업데이트를 하셔야 이후에 감염이 되지 않습니다.웜 바이러스의 경우 네트워크로 대량의 데이터를 보내는 경우가 많이 있기에 컴퓨터가 느려지거나, 인터넷이 느려지는 증상이 많이 발생합니다.

웜 바이러스는 윈도우즈의 취약점을 통해 네트워크로 데이터를 보내기 때문에 윈도우즈의 취약한 부분을 패치하지 않는 이상 지속적으로 바이러스에 감염이 될 수 밖에 없습니다. 그러니 반드시 윈도우즈 업데이트를 하는 습관을 갖기를 추천합니다. 그러나 혹시 내 컴퓨터는 정품이 아니라서 업데이트가 되지 않는다 라고 생각 되실 때에는 한국정보보호진흥원 인터넷침해사고대응지원센터에서 운영하는 보호나라라는 사이트가 있습니다. 그 곳에서는 PC자동보안 업데이트라는 프로그램을 제공합니다. 이는 한국정보보호진흥원에서 제공하는 서버를 통해 보안패치를 하기 때문에 윈도우즈업데이트의 정품 인증이 되어 있지 않더라도 보안 패치를 할 수 있습니다.

http://www.boho.or.kr/index.jsp에 접속하시면 PC자동보안 업데이트 프로그램을 받으실 수 있습니다.


최 근에는 USB 메모리의 사용 빈도가 많아짐에 따라 USB 메모리를 매개체로 감염이 되는 바이러스들이 활개를 치고 있습니다. 다들 USB 메모리 사용 하고 계시죠? USB 메모리 사용에 있어서 몇가지 주의와 설정을 해 놓는다면 안전을 보장할 수 있습니다.
USB 메모리는 자동실행 기능이 있습니다. 시디롬에 CD를 삽입하면 자동으로 설치 화면이 뜨는 경우를 보신적이 있으실 겁니다. 그러한 기능이 USB 메모리도 가능합니다. 이 기능을 악용하여 바이러스가 USB 메모리가 바이러스를 전파하게 됩니다.
한 컴퓨터에 이미 바이러스가 감염이 되었다고 가정하겠습니다. 그 컴퓨터의 바이러스는 USB 메모리가 컴퓨터에 꼽혀질 경우 장치를 인식하여 해당 USB 메모리에 악성 파일을 복사하여 옮겨 놓습니다. 이 경우만 가지고는 사용자가 악성 파일을 실행하기 전까지는 바이러스가 감염이 되었다고 보기 어렵습니다. 하지만 파일을 복사하면서 autorun.inf 파일을 USB 메모리 루트에 생성해 놓습니다. 해당 파일이 USB메모리가 컴퓨터에 꼽힐 때 자동으로 실행될 내용을 담고 있습니다. autorun.inf 파일에는 대체로 USB 메모리에 심어진 악성 파일을 실행하는 명령이 들어 있는 경우가 대다수입니다. 대체로 숨김 파일, 또는 시스템 파일로 위장하기 때문에 모두 보기 옵션을 허용해놓지 않은 경우 눈으로 보이지 않은 경우가 많습니다.

이렇게 autorun.inf와 악성파일이 생긴 USB 메모리를 바이러스가 감염이 되지 않은 다른 컴퓨터에 꼽을 경우 USB 자동 실행 기능을 통하여 해당 컴퓨터에도 바이러스를 실행하여 감염시키게 됩니다. 이런 경로로 감염이 되다 보니, 바이러스에 감염된 USB를 여러 컴퓨터에 꼽게 된다면, 해당 컴퓨터들은 모두 바이러스에 감염이 되고 말겠지요.

윈도우즈 비스타, 윈도우즈XP의 경우 이 자동실행 기능이 기본적으로 enable되어 있습니다. 이 기능을 disable시켜 놓으면 USB 메모리에 바이러스가 심어지더라도, 자동실행 기능을 disable시켜 놓은 운영체제(컴퓨터)에서는 USB를 꼽더라도 자동으로 바이러스를 실행시키지 않으므로 어떠한 바이러스가 감염된 USB를 꼽더라도 어느정도 안전을 보장할 수 있습니다.(어느정도 라는 표현은 이 역시도 우회가 가능하기 때문입니다. 그러나 저는 그 정도로 잘 만들어진 악성코드는 보지 못하였습니다.)
이러한 자동실행을 방지 하는 방법은 프로그램을 이용하는 방법과 윈도우 기본 정책을 바꾸는 방법 등이 존재합니다.

http://2proo.net /entry/USB-%EC%97%B0%EA%B2%B0%EC%8B%9C-%EC%9E%90%EB%8F%99%EC%8B%A4%ED%96 %89-%EC%A4%91%EC%A7%80%ED%95%98%EA%B8%B0에 나와 있는 국정원에서 배포하는 USB 자동 실행 차단 프로그램을 설치하여 자동실행을 막을 수 있으며, http://comlog.kr/79에 나온 것처럼 윈도우즈 기본 정책을 바꿔 USB의 실행을 막을 수 있습니다.


꼼꼼하게 읽으셨다면 악성코드가 무엇인지 알게 되었을 것이라 생각됩니다. 위에서 설명한 종류 말고도 더 다양한 종류의 악성코드들이 존재합니다. 대표적이고 유명한 것들을 설명한 것이니 제한적으로 생각하지 마시고, 또한 최근에는 위처럼 분류하기 어려울 정도로 복합적인 기능을 갖는 경우도 많이 존재합니다.

최 근 동향으로는 게임 비밀번호 스틸(훔치는) 바이러스가 많이 퍼지고 있습니다. 특정 게임을 타겟으로 만들어져서, 감염시 특정 게임 로그인을 하게 되면 아이디와 비밀번호가 이메일이나 다른 방법으로 해커(크래커)에게 전달이 되게 됩니다. 국내보단 중국쪽에서 국내 유저들을 타겟으로 많이 만들어지는 것 같습니다.
또 다른 것은 다운로더라는 것이 있습니다. 감염시 인터넷으로 특정 악성프로그램을 다운로드하여 실행시키게 됩니다. 다운로드한 프로그램은 성인광고창을 일정 시간단위로 띄우거나, DDoS(분산서비스공격) 공격에 좀비PC의 역할을 하는 프로그램이 대표적입니다. 이럴 경우 자기도 모르게 특정 서버를 공격하게 되므로, 인터넷이 느려질 수 있습니다.


추가적으로 백신에 대해서 설명해보겠습니다.

백 신 프로그램에 대표적으로 국산은 우리의 바이러스 체이서 ^^, 그리고 V3, 알약, 엔프로텍트, PC그린, 바이로봇 등이 존재합니다. 해외 제품으로는 노턴안티바이러스, Avast, 카스퍼스키, Avira, NOD32, 비트디펜더, 맥아피, AntiVir 등이 있습니다. 대체적으로 아직까지는 국산 제품보다 해외 제품이 바이러스를 더 많이 진단하는 편이라, 해외 백신을 추천하는 사람들이 많습니다. 저는 그러한 내용에 반대를 하는 입장입니다. 바이러스란 각 나라나 문화에 따라 유행하는 종류가 다릅니다. 국내에서는 최근에 네이트온 바이러스라고 하여 네이트온을 통해 전파되는 바이러스가 유행하기도 하였고, 2090 바이러스라는 것도 유행하였습니다. 그러한 바이러스가 국내에서 유행할 때 해외에서는 conficker 바이러스나 오바마와 관련된 내용이 들어가 있는 바이러스, 트위터 서비스를 통해 감염되는 바이러스 등이 널리 퍼졌었습니다.

이럴 경우 해외 백신의 경우 그 지역에 유행하는 바이러스에 대하여 집중적으로 치료를 할 수 있게 서비스 할 것이고, 국내에서는 국내 환경에 맞게끔 유행하는 바이러스를 치료할 수 있게 서비스 할 것입니다. 만약 해외백신을 사용한다면 이러한 내용에 있어서 국산에서 유행하는 바이러스 치료에 대한 서비스는 국내 백신보다 업데이트가 더딜수 밖에 없습니다. 해외라면 반대의 상황이 되겠지요.

이 렇듯 치료하는 부분이 차이가 발생할 수 있으므로 국내 환경에서는 국내 백신이 오히려 더 잘 맞을 것이라고 저는 개인적으로 판단합니다.(모든 분의 의견은 아니므로 개인적이라고 표현하겠습니다.) 그래서 주변에 컴퓨터에 대하여 잘 모시는 분들이 백신을 무엇을 써야 하느냐고 묻는다면 거리낌 없이 국내 백신을 추천합니다.

물론 사용자분께서 해외 사이트를 많이 접속하고, 국내보단 해외 환경이 중점이라면 그 지역에 대한 서비스가 빠르게 업데이트되는 백신을 사용하는 것이 좋습니다.

그 렇다고 백신만 설치해 놓는다고 컴퓨터가 항상 안전한 것은 아닙니다. 백신은 패턴 위주의 바이러스 검사를 주로 행합니다. 그러므로 새로운 바이러스가 나올 경우 새로운 바이러스에 대한 패턴을 확보하지 못하여 업데이트를 하지 못하였다면, 그 백신은 그 바이러스에 무방비 상태가 되어버립니다. 그래서 백신의 경우 업데이트가 중요한 것입니다. 새로운 바이러스가 나오면 빠르게 업데이트 되어야 그 바이러스에 대하여 대처할 수 있게 되기 때문이죠. 백신의 이러한 패턴 위주의 바이러스 검사는 패턴에 없는 바이러스를 진단하지 못한다는 태생적인 한계 갖고 있습니다. 그러므로 백신을 설치해 놓았다고 절대적으로 안심하지는 마시고, 항상 업데이트하여 최신의 상태를 유지하여야 합니다. 물론 패턴 위주의 바이러스 검사 외에도, 백신에 따라 휴리스틱 기능이 존재하기도 합니다. 휴리스틱 기능을 통해 패턴이 업데이트되지 않아도 바이러스를 잡을 수 있는 경우도 있지만, 오히려 오진을 하는 경우도 많은 편입니다. 그러므로 이부분에 대하여서는 더 자세히 언급하지 않겠습니다.


또한 방화벽 프로그램을 설치하면 무조건 안전하다는 잘못된 상식을 갖고 있는 경우도 있습니다. 방화벽이 바이러스를 막지는 못합니다. 방화벽은 네트워크 패킷이 들어오고 나가고에 대하여 규칙에 따라 승인하고 또는 거부합니다. 일반 사용자의 경우 방화벽을 설치하여도 규칙에 대하여 잘 모르기 때문에 무용지물이나 마찬가지라고 생각이 됩니다. 또한 윈도우즈 자체의 윈도우즈 방화벽의 효능을 무시하는 경우를 많이 보아 왔습니다. 하지만 윈도우즈 방화벽만으로도 충분히 개인 사용자 입장에서는 그 역할을 톡톡치 합니다. 그러므로 윈도우즈 방화벽 사용을 추천합니다.

윈도우즈 방화벽을 사용할 경우 특정 프로그램이 네트워크 패킷을 외부로 보내기 이전에 그 것을 허용할 것인지 말지 선택할 수 있는 팝업창을 띄웁니다. 이 경우 정상적인 프로그램의 경우도 모두 해당되기 때문에 번거로울 수 있지만, 정상적인 프로그램의 경우 한번 승인해 놓으면 그 이후에는 선택하여도 되지 않으므로 규칙이 생성된 경우에 해당하여 이후에는 지속적으로 허용이 되어집니다. 만일 악성코드 프로그램이 외부로 데이터를 보낼려고 할 경우에도 방화벽은 허용 여부를 사용자에게 묻게 됩니다. 이 때 사용자는 팝업창을 통해 사용자가 원하는 정상적인 프로그램이 아닐 경우 거부를 하여 악성코드가 외부와 접속하는 것을 막을 수 있습니다. 물론 이후에 제어판의 방화벽 설정에서 이전에 선택한 내용에 대하여 변경이 가능합니다.

이렇게 보듯 방화벽은 사용자의 선택에 따라 역할을 극명하게 다르게 나타냅니다. 사용자의 판단이 제일 중요하겠지요. ^^


이렇게 악성코드에 대하여 알아 보았습니다. 원래에는 제가 활동하는 모 카페에 적었던 글이지만, 제 블로그에도 적어 더 많은 분들에게 도움이 될 수 있었으면 합니다.
작성 당시의 생각보다 장문의 글이 되면서, 안그래도 없는 글 재주로 인하여 말이 매끄럽지 못한 점 양해 바랍니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/06/26 03:18 2009/06/26 03:18

Koobface.worm을 통해 사용자 보안 마인드 개선되었으면...

Posted at 2009/04/24 00:19 // in Malware // by 엔신
http://www.virustotal.com/ko/analisis/58267c7ee3cf50eb2ee37cd8e5b5cbdc

Facebook을 통해 전파되는 악성코드를 Koobface라고 하며 그 종류가 많은 것으로 알고 있으나 본인은 Facebook을 이용하지 않아서 다를 수도 있다.

koobface에 대하여 찾아본 바로는 플래시 동영상인 척 하며 코덱 설치를 빌미로 파일을 다운로드 하게끔 유도하는 안내 메시지를 나타내어 사용자를 속이는 사회공학적인 기법(쉬운 말로 사기?, 액티브엑스 설치할 때 무조건 예스 누르도록 하는 마인드?)을 사용하였다고 한다.

마침 분석해본 파일은 15분 단위로(Sleep함수) 특정 페이지에 접속을 시도하였다.

사용자 삽입 이미지

해당 창이 윈도우 화면을 가득 매꾸며 시작표시줄도 보이지 않는다. 해당 도메인은 본인이 사용하는 SK브로드밴드 DNS에서는 차단 되어 연결이 되지 않았다. 이 악성코드 외에도 2가지 악성코드를 같이 다운로드 하게끔 유도하는데 각각 다른 역할을 가진 악성코드가 총 3개라는 것을 의미한다.(이는 본인이 본 Koobface의 경우에 해당한 것이고 변종이나 다른 종류의 경우엔 다를 수 있음)

악성코드의 역할이야 나쁜거 뻔할 뻔자고, 그것보다는 사용자의 마인드 측면에서 생각해보았다.

요즘 같은 시대에 개인 컴퓨터 보안은 백신과 방화벽을 전적으로 신뢰할 수 없다.
위와 같이 사회공학적 기법을 이용하는 경우 사용자는 정당하게 다운로드나 실행을 승인할 것이고 방화벽은 사용자가 승인했으므로 허용될 것이고, 백신은 사용자가 허용하여 다운로드하게 되고 실행된 신종 악성코드나 바이러스의 경우 패턴 정보가 업데이트되지 않았다면 이를 진단하지 못한다.(휴리스틱 기능 제외)

결국에는 사용자 스스로의 판단을 중요시 여기게 된다. 그러나 사용자 입장에서는 본인 스스로 "위험한 사이트는 접속하지 않으므로 안전하다." 라고 판단을 내려버리는 결과가 생길 수 있다. 많은 사용자들이 특정 백신을 절대적으로 신뢰하고, 특정 방화벽까지 사용하므로 나의 시스템은 안전하다. 라는 결론을 도출하는 경우를 많이 봐왔다.

하지만 위와 같이 페이스북(SNS)과 같은 서비스(우리나라의 싸이월드?)를 이용한 악성코드의 경우 지인으로부터의 쪽지가 오고, 지인이므로 안심하고 알려준 위험한 사이트에 접속을 시도하게 될 수 있음을 의미한다.

이는 보안의 정점에 있는 사용자가 보안에 있어서 최대의 허점이 될 수 있다는 것이다.

그러므로 당부하고자 하고 싶은 말은 자신의 생각을 절대적으로 신뢰하지 말라는 것이다. 자신의 행동을 무조건 옳다고 생각하여 신뢰하는 것과, 자신의 행동이 옳은지 다시 한번 생각해보는 것 중 어떤 것이 효과적인지 생각해 보면 무엇이 효과적인지 알 수 있을 것이다.

이올린에 북마크하기
2009/04/24 00:19 2009/04/24 00:19

Zero Wine Malware Analysis Tool

Posted at 2009/04/05 17:57 // in Malware // by 엔신

악성코드를 분석하기 위해 무작정 Debugger를 사용하여 리버싱하는 행동은 오히려 분석을 비효율적으로 만들어 상당한 시간을 소요하게 할 수 있다. 또한 간단하게 어떠한 악의적인 행동을 하는지 분석하고자 할 때 효율적이지 못하다.

최근에는 자동화 툴을 이용하여 어느 정도 행동 패턴을 파악할 수 있는 툴이 존재하며 예를 들면 SysAnalyzer 같은 툴이 존재한다. 본인도 SysAnalyzer를 사용하여 간단하게 행동 패턴을 분석하고 난 다음 상세한 분석을 시도하는 편이다.

해외 사이트를 웹서핑하다가 Zerowine이라는 툴을 알게 되었고, 한번쯤 사용해봐야겠다고 마음먹고 있었는데, 생각보다 새로운 것을 접하는 행동은 번거로움이 따르는 일이라 지금에 이르러서야 사용해 볼 수 있었다.

관련 정보를 찾아 본 결과 Debian 기반의 자동 악성코드 분석 툴이라는 정보를 확인했고, QEMU나 VMware를 사용하여 이용할 수 있다는 것을 알 수 있었다.

QEMU가 무엇인지 확인하여 보았더니 VMware와 같은 가상 머신 소프트웨어라고 한다. 그러나 GUI 인터페이스를 지원하지 않고 성능이 VMware보다 우수하지 못하여 최근에는 많이 외면(?)받는다고 한다.

처음에는 QEMU로 Zerowine을 에뮬레이트할려고 했는데 QEMU를 윈도우용으로 받아서 해서 그런지 몇 가지 오류가 발생해서 그냥 VMware로 사용해보았다.

qemu-img.exe convert c:\zerowine_vm\zerowine.img -O vmdk c:\zerowine_vm\zerowine.vmdk


위와 같은 QEMU의 컨버트 기능으로 zerowine.img 파일을 zerowine.vmdk으로 컨버팅 시켰다.

Vmware용 이미지로 만들었으므로 VMware에서 새로운 가상 머신을 추가하여야 한다. 데비안 기반이므로 Linux를 선택하고 커널 버전 정보를 2.6.x kernel로 선택한다.

이것저것 설정하면서 메모리는 256정도로 설정하고 네트워크는 NAT로 설정한다. 그러나 악성코드 분석 시에는 NAT로 할지 Host Only로 할지 상당히 잘 선택하여야 한다. 본인은 NAT로 설정하였지만 NAT로 설정하여 동일 네트워크에 악성코드를 감염 전파시키는 경우가 발생할 수 있으므로 선택에 신중을 기하길 바란다.

디스크와 관련된 부분에서는 새로운 가상 디스크를 만들 필요가 없다. Zerowine를 VMware 이미지로 만들어 놓은 것이 있으므로 기존에 만들어놓은 것을 사용하면 된다.

계속 Next를 하다 보면 최종에서 VMware 버전에 따라 컨버팅할 것인지 그냥 쓸 것인지 선택하는 메뉴가 나올 수 있지만 그냥 사용하여도 무관하므로 그냥 사용하는 것을 선택하면 된다.

새로운 가상머신 추가가 완료되면 자동으로 리눅스 부팅이 되며 정상적으로 부팅 되면 로그인하여야 하는데 로그인 계정은 root이며 비밀번호는 zerowine을 입력하면 로그인 할 수 있다.

악성코드를 분석을 하고자 하는 사람이라면 리눅스를 사용해 본 사람일 것으로 판단이 된다.

Ifconfig 명령을 사용하여 이더넷 어댑터(랜카드)가 잡혔는지 확인한다. 정상적으로 잡히고 ping과 같은 명령을 사용하여 외부와 연결 테스트를 확인하여 정상적이라면 NAT 설정을 통하여 자동으로 인터넷을 잡은 것이다.

본인의 경우는 VMware의 DHCP 기능을 꺼놓고 사용하기 때문에 ifconfig 명령을 사용하였더니 lo 라는 loopback 장치만 확인이 가능하였다.

eth0에 ip를 설정하였으나 장비가 없다고 한다. 바로 eth1에 설정하였으니 정상적으로 설정이 되었다. route 명령어를 사용하여 외부와의 통신을 허용할지 말지는 위에서 언급하였듯이 본인에게 달려있는데 필자는 통신을 허용하기로 하였다.

route add default gw 192.168.8.2


이제 네트워크 설정이 완료되었다.

Zerowine의 경우 Web을 통하여 악성코드를 업로드하고 결과를 확인이 가능하다. 8000번 포트를 사용하여 웹으로 접근이 가능하게 만들어져 있다. 그러므로 웹브라우저를 이용하여 http://192.168.8.100:8000/에 접속하였더니 아래와 같은 페이지가 뜬다.

파일을 업로드 할 수 있고 Analyze memory 옵션도 제공하고 있다.

위와 같은 검색 결과를 보여주며 Analyze Memory 옵션을 선택하게 되면 위와 같이 메모리 상에 올라간 데이터를 dump할 수도 있다.

Report 메뉴를 누르면 위와 같이 정보가 나오게 되고 다시 Report 메뉴를 누르면 해당 정보가 사라지게 된다.

Strings 메뉴를 선택하였을 때의 모습이다.

File Header 메뉴를 선택했을 때의 모습이다. PE 구조를 기반으로 정보가 나오게 되고 Import 되는 함수를 확인할 수 있다.

Signature 메뉴를 선택했을 때이다. 테스트에 사용된 악성코드의 경우 시그너쳐 정보로 "___b0th____" 라는 뮤텍스를 생성한 정보에 대하여 확인이 가능하다.

python 기반으로 제작된 것으로 보이며 가상 머신이므로 시스템에 감염될 염려가 없으므로 안전하다는 점을 장점으로 볼 수 있지만 언제나 그렇듯 자동화 툴 만으로는 부족한 부분을 경험하게 되므로 전적으로 신뢰하지 말고 참조하는 용도로 사용하면 적당한 툴로 보인다.

Zerowine :
http://sourceforge.net/projects/zerowine

QEMU :
http://www.nongnu.org/qemu/

참고사이트:
http://zenfosec.blogspot.com/2009/01/automated-malware-analysis-with.html
http://space.zdnet.com.cn/html/72/313972-2779965.html

이올린에 북마크하기
2009/04/05 17:57 2009/04/05 17:57

악성코드 정의

Posted at 2009/03/14 00:29 // in Malware // by 엔신
바이러스(VIRUS) 정의
바이러스(Virus)란 정상 파일의 일부를 변형시켜 여기에 자기 자신 또는 자신의 변형을 복사하여 유해한 작동을 하는 악성프로그램이다. 바이러스에 감염되면 파일 변형, 시스템 오류, 작동 불능 등을 일으킬 수 있다. 바이러스는 자기복제를 통해 파일을 감염시키는 특징이 있다. 주로 이메일, 파일다운로드, 액티브X 컨트롤을 통해서 감염 된다.

웜(WORM) 정의
웜(Worm)이란, 네트워크 상에 연결되어 있는 특정한 컴퓨터에서 다른 컴퓨터로 스스로 알아서 확산 되도록 특별하게 설계된 프로그램이다. 바이러스와 달리 파일을 감염시키는 것이 아니라 실행코드 자체로 번식하여 주로 PC 상에서 실행되는 것이 대부분이다. 이메일, 보안취약점, 공유폴더에 의해 감염된다.

트로이(Trojan) 정의
트로이목마(Trojan Horse)는 외견상으로는 정상적인 프로그램이나 실질적으로는 해커가 숨겨놓은 기능을 수행하는 프로그램을 말한다. 정상적인 프로그램과 번들되어 함께 침투하는 경우가 많다. 은닉된 기능은 가벼운 장난부터 하드디스크 포맷, 백도어 오픈, 정보유출(비밀번호,쿠키 등), 쉘 획득 등 다양하다. 자체 전파 감염 기능은 없다.

악성 애드웨어(ADWARE) 정의(스파이웨어도 이쪽에 포함)
강제적인 광고를 사용자 PC에 띄워서 사용자의 불편과 프라이버시 침해를 야기하는 프로그램. 주로 인터넷사이트 홍보 목적으로 배포하며 쇼핑, 포르노, 도박 사이트의 광고페이지를 노출하고 강제 연결시킨다. 정당한 동의를 얻지 아니하거나, 제거가 매우 곤란한 경우, 또는, 사용자의 인터넷 생활을 방해하는 정도가 심각한 경우 등에는 악성 애드웨어로서 제거 대상이 된다.

하이재커(HIJACK) 정의
강제로 특정 사이트로 연결하거나 특정 검색엔진을 사용하게 하는 악성코드
또는 특정 사이트를 거쳐서 정보를 유출한 후 사용자가 원하는 사이트로 이동하기도 함.

//////////////////////////////////////////////////////////////////////
악성코드는 위와 같은 악의적인 목적을 가진 프로그램을 모두 지칭하는 말임.

최근 추세로는 시스템의 파괴가 목적이 아니라 Adware처럼 광고를 띄우거나 시스템을 감염시켜 DDoS 공격의 좀비로 이용된다. 감염자는 별다른 증상이 없으므로 감염된지 모르고 있지만, 실제로는 일정 시간 단위로 Command & Control Server에 접속하여 명령을 하달 받는다. C&C Server에서 특정 사이트를 공격하는 명령이 내려지면 수 많은 감염된 좀비 시스템은 조금씩 특정 사이트로 데이터를 보내거나 접속을 시도하지만, 수백, 수천대의 컴퓨터가 특정 사이트에 동시에 접속하게 되면 해당 사이트는 마비가 되는 DDoS공격이 주류를 이루고 있다.
요약하자면 DDoS 공격와 Adware의 추세로 보아 시스템파괴가 아닌 돈이 되는 목적으로 흐름이 옮겨가고 있다.(이미 옮겨온듯)

http://kin.naver.com/detail/detail.php?d1id=1&dir_id=106&eid=mIkqZ5P9YB7EcPBFmZjYrP+b+YlCdAn0&qb=7JWF7ISx7L2U65OcIOuwlOydtOufrOyKpCDtirjroZzsnbQg7Juc&enc=utf8&pid=fkLyWloi5T0sstOvdGZsss--273784&sid=SbNxeT5fs0kAAFug7e8

이올린에 북마크하기
2009/03/14 00:29 2009/03/14 00:29

[Trojan] Tigger/Syzor.A

Posted at 2009/03/13 13:47 // in Malware // by 엔신
해외 사이트를 통해 참고한 바 주요 기능으로는 아래와 같다.
-    Windows Defender, Windows Firewall, Outpost, Avira, Kaspersky, AVG, and CA사 제품의 사용을 disables한다
-    안전모드 상태에서 루트킷을 설치하고, kernel debugger를 disables한다.
-    Keylog와 system 정보, 스크린샷, Com hook를 통한 brower envet를 훔치고, 비밀번호와 웹 쿠키, 인증서를 훔치게 된다.
-    Promiscuous 모드로 FTP와 POP3 비밀번호를 스니핑하게 된다.

그러나 실제로 Windows Firewall은 disable되지는 않았다. 백신과 관련된 함수 부분에서는 Windows Firewall과 관련된 부분을 찾지 못하였다.(잘못된 분석으로 판단됨. 혹은 내가 못 찾은건지도)

추가적으로 아래 프로세스가 실행중이라면 종료시켜 버린다.
# Firefox.exe
# IEXPLORE.EXE
# SHELLPRO.EXE
# STOCKS.EXE
# WAOL.EXE

트로이목마답게 자체 전파기능을 가지고 있지는 않다.
C:\Documents and Settings\Administrator\Local Settings\Temp
C:\WINDOWS\system32\drivers
temp 경로에는 6KB의 7~8자리의 랜덤한 숫자 파일명으로된 exe파일을 생성하고
drivers 경로에는 78KB의 11자리의 랜덤한 문자 파일명으로된 sys파일을 생성하게 된다.

한글 윈도우에서는 services.exe 파일 오류가 발생하며 운영체제가 정상적으로 작동하지 않게 된다.
좀 더 확인이 필요하겠지만 영문윈도우에서는 services.exe 오류가 나타나지 않았다는 사람이 있으므로
영문 윈도우나 비스타를 대상으로한(Windows Defender 검사로 추측) 악성코드인듯 싶기도 하다.

사용자 삽입 이미지

해외 사이트에서도 밝히고 있듯이 굉장히 정교하게 만들어졌다고 한다.
내가 봐도 정교한듯.....난 잘 모르지만
세세하게 temp 경로에 생성된 exe파일의 경우 Mircosoft Coporation과 버전에 대한 파일정보가 들어가 있었다. 하나 특이사항은 언어가 러시아어로 되어 있다는 점....
2008 11월에 처음 발견되었다고 한다. 국내보다는 해외쪽에서 유명세를 떨치고 있는듯...
현재 분석 해보는 중이나 실력이 미비하여 완료할 수 있을지 모르겠다.
V3-Lite에서는 두번째 샘플 채취한것에서 언패킹하고 나온 UPX를 다시 언패킹해서 나온 오리지날 파일은 진단하지 못하였다.(알약은 진단)
검사 결과항목에서 보면 V3와 nProtect가 진단을 하지 못한 걸로 나와 있고,
DrWeb은 모든 파일을 다 진단하지 못한다고 나와 있었다.
아무래도 바이러스 체이서가 DrWeb 엔진이므로 Tigger 자체를 진단하지 못하는 것으로 판단이 된다.


가장 먼저 수집한 샘플 파일 malware.exe의 검사 결과
http://www.virustotal.com/ko/analisis/9793aa8627174c2f45355888904d2b09

해당 파일을 unpacking하였더니 나온 UPX로 된 파일을 다시 unpacking하여 나온 오리지날 파일 검사 결과
http://www.virustotal.com/ko/analisis/59cee3e592a54b8d674293f0cb7a1207

악성코드 감염시 생기는 랜덤숫자 7~8자리 .exe파일 검사 결과
http://www.virustotal.com/ko/analisis/741c9a62ecfd03e0a51f015472b78882

악성코드 감염시 생기는 랜덤파일명.sys 파일 검사 결과
http://www.virustotal.com/ko/analisis/9eb011afa6cb3f6758752abb40358f5a

추가.
HKLM\SOFTWARE\Microsoft\Cryptography\RNG\Seed
Type: REG_BINARY, Length: 80, Data: 69 E7 B5 B6 94 CF 1A 4E 6F 3A 19 B3 81 DD 5C 83
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\tdss
Type: REG_SZ, Length: 92, Data: C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\3288828.exej
HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
Type: REG_MULTI_SZ, Length: 92, Data: \??\C:\WINDOWS\system32\drivers\ws2ifsl.sys,
HKLM\System\CurrentControlSet\Services\fhbsfczjhop.sys\ImagePath
Type: REG_EXPAND_SZ, Length: 96, Data: \??\C:\WINDOWS\system32\drivers\fhbsfczjhop.sys
HKLM\System\CurrentControlSet\Services\fhbsfczjhop.sys\Type
Type: REG_DWORD, Length: 4, Data: 2
HKLM\System\CurrentControlSet\Services\fhbsfczjhop.sys\Start
Type: REG_DWORD, Length: 4, Data: 2
HKLM\System\CurrentControlSet\Services\fhbsfczjhop.sys\ErrorControl
Type: REG_DWORD, Length: 4, Data: 0
HKLM\System\CurrentControlSet\Control\SafeBoot\Minimal\fhbsfczjhop.sys\ImagePath
Type: REG_EXPAND_SZ, Length: 96, Data: \??\C:\WINDOWS\system32\drivers\fhbsfczjhop.sys
HKLM\System\CurrentControlSet\Control\SafeBoot\Minimal\fhbsfczjhop.sys\Type
Type: REG_DWORD, Length: 4, Data: 2
HKLM\System\CurrentControlSet\Control\SafeBoot\Minimal\fhbsfczjhop.sys\Start
Type: REG_DWORD, Length: 4, Data: 2
HKLM\System\CurrentControlSet\Control\SafeBoot\Minimal\fhbsfczjhop.sys\ErrorControl
Type: REG_DWORD, Length: 4, Data: 0
HKLM\System\CurrentControlSet\Control\SafeBoot\Network\fhbsfczjhop.sys\ImagePath
Type: REG_EXPAND_SZ, Length: 96, Data: \??\C:\WINDOWS\system32\drivers\fhbsfczjhop.sys
HKLM\System\CurrentControlSet\Control\SafeBoot\Network\fhbsfczjhop.sys\Type
Type: REG_DWORD, Length: 4, Data: 2
HKLM\System\CurrentControlSet\Control\SafeBoot\Network\fhbsfczjhop.sys\Start
Type: REG_DWORD, Length: 4, Data: 2
HKLM\System\CurrentControlSet\Control\SafeBoot\Network\fhbsfczjhop.sys\ErrorControl
Type: REG_DWORD, Length: 4, Data: 0
HKLM\System\CurrentControlSet\Services\fhbsfczjhop.sys\ImagePath
Type: REG_EXPAND_SZ, Length: 96, Data: \??\C:\WINDOWS\system32\drivers\fhbsfczjhop.sys
HKLM\System\CurrentControlSet\Services\fhbsfczjhop.sys\Type
Type: REG_DWORD, Length: 4, Data: 2
HKLM\System\CurrentControlSet\Services\fhbsfczjhop.sys\Start
Type: REG_DWORD, Length: 4, Data: 2
HKLM\System\CurrentControlSet\Services\fhbsfczjhop.sys\ErrorControl
Type: REG_DWORD, Length: 4, Data: 0
HKLM\System\CurrentControlSet\Control\SafeBoot\Minimal\fhbsfczjhop.sys\ImagePath
Type: REG_EXPAND_SZ, Length: 96, Data: \??\C:\WINDOWS\system32\drivers\fhbsfczjhop.sys
HKLM\System\CurrentControlSet\Control\SafeBoot\Minimal\fhbsfczjhop.sys\Type
Type: REG_DWORD, Length: 4, Data: 2
HKLM\System\CurrentControlSet\Control\SafeBoot\Minimal\fhbsfczjhop.sys\Start
Type: REG_DWORD, Length: 4, Data: 2
HKLM\System\CurrentControlSet\Control\SafeBoot\Minimal\fhbsfczjhop.sys\ErrorControl
Type: REG_DWORD, Length: 4, Data: 0
HKLM\System\CurrentControlSet\Control\SafeBoot\Network\fhbsfczjhop.sys\ImagePath
Type: REG_EXPAND_SZ, Length: 96, Data: \??\C:\WINDOWS\system32\drivers\fhbsfczjhop.sys
HKLM\System\CurrentControlSet\Control\SafeBoot\Network\fhbsfczjhop.sys\Type
Type: REG_DWORD, Length: 4, Data: 2
HKLM\System\CurrentControlSet\Control\SafeBoot\Network\fhbsfczjhop.sys\Start
Type: REG_DWORD, Length: 4, Data: 2
HKLM\System\CurrentControlSet\Control\SafeBoot\Network\fhbsfczjhop.sys\ErrorControl
Type: REG_DWORD, Length: 4, Data: 0
HKLM\SYSTEM\ControlSet002\Services\fhbsfczjhop.sys\ImagePath
Type: REG_EXPAND_SZ, Length: 96, Data: \??\C:\WINDOWS\system32\drivers\fhbsfczjhop.sys
HKLM\SYSTEM\ControlSet002\Services\fhbsfczjhop.sys\Type
Type: REG_DWORD, Length: 4, Data: 2
HKLM\SYSTEM\ControlSet002\Services\fhbsfczjhop.sys\Start
Type: REG_DWORD, Length: 4, Data: 2
HKLM\SYSTEM\ControlSet002\Services\fhbsfczjhop.sys\ErrorControl
Type: REG_DWORD, Length: 4, Data: 0
HKLM\SYSTEM\ControlSet002\Control\SafeBoot\Minimal\fhbsfczjhop.sys\ImagePath
Type: REG_EXPAND_SZ, Length: 96, Data: \??\C:\WINDOWS\system32\drivers\fhbsfczjhop.sys
HKLM\SYSTEM\ControlSet002\Control\SafeBoot\Minimal\fhbsfczjhop.sys\Type
Type: REG_DWORD, Length: 4, Data: 2
HKLM\SYSTEM\ControlSet002\Control\SafeBoot\Minimal\fhbsfczjhop.sys\Start
Type: REG_DWORD, Length: 4, Data: 2
HKLM\SYSTEM\ControlSet002\Control\SafeBoot\Minimal\fhbsfczjhop.sys\ErrorControl
Type: REG_DWORD, Length: 4, Data: 0
HKLM\SYSTEM\ControlSet002\Control\SafeBoot\Network\fhbsfczjhop.sys\ImagePath
Type: REG_EXPAND_SZ, Length: 96, Data: \??\C:\WINDOWS\system32\drivers\fhbsfczjhop.sys
HKLM\SYSTEM\ControlSet002\Control\SafeBoot\Network\fhbsfczjhop.sys\Type
Type: REG_DWORD, Length: 4, Data: 2
HKLM\SYSTEM\ControlSet002\Control\SafeBoot\Network\fhbsfczjhop.sys\Start
Type: REG_DWORD, Length: 4, Data: 2
HKLM\SYSTEM\ControlSet002\Control\SafeBoot\Network\fhbsfczjhop.sys\ErrorControl
Type: REG_DWORD, Length: 4, Data: 0
HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
Type: REG_MULTI_SZ, Length: 188, Data: \??\C:\WINDOWS\system32\drivers\ws2ifsl.sys, , \??\C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\3294765,

요약을 하게 되면,
레지에 tdss를 등록하여 3288828.exe가 실행되도록 하고
fhbsfczjhop.sys 파일을 서비스에 등록하여서 안전모드(최소모드,네트워크모드)로 부팅하여도 작동되게끔 만든다.
또한 현재 사용중인 C:\WINDOWS\system32\drivers\ws2ifsl.sys 파일을 재부팅시에
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\3294765 이 파일로 변경한다.
PendingFileRenameOperations 값은 보통 파일 이름을 바꾸거나 삭제하는 것으로 알고 있는데
여기서는 3294765 파일이 생성이 되고 위와 같이 나오는 것으로 보아 파일 자체를 교체하는 것으로 예상이 됨.
3294765 파일은 UPX를 언패킹한 파일 그 자체임...

사용된 파일명은 랜덤한 값이므로 그때그때 다름


이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/03/13 13:47 2009/03/13 13:47

BlackEnergy_DDoS_Bot_분석

Posted at 2009/02/25 01:31 // in Malware // by 엔신
처음으로 분석한 악성코드입니다.
미비한 실력으로 잘못 분석된 부분이 있을 수 있습니다.
잘못된 부분은 알려주시고, 필요한 분이 계실지 모르지만 도움 되셨으면 합니다.

이올린에 북마크하기
2009/02/25 01:31 2009/02/25 01:31