악성코드 프로세스 분석 사례

프로세스 분석을 통해 악성코드를 식별한 사례를 살펴 보자.

백도어 통신이 확인되었고, 통신 연결에 사용된 백도어 프로그램을 찾기 위해 프로세스 점검을 수행 하였다.

악성코드에 감염된 프로세스를 찾기 위해 프로세스 점검을 진행 하였다. 프로세스 중 시스템 부팅 시간과 차이가 발생하는 프로세스를 확인했다. 프로세스 이름은 ‘svchost’ 이고 프로세스 번호는 836번으로 확인됐다.

C:\WINDOWS\System32\svchost.exe [836]
C:\WINDOWS\System32\svchost.exe -k netsvcs

윈도우에서 svchost 프로세스는 시스템 프로세스다. 윈도우의 여러 서비스를 관리하는 프로세스다. 대부분 윈도우 부팅 시 프로세스가가 올라오기 때문에 부팅 시간과 차이가 나지 않는다. 하지만 중간에 실행된 경우 시간 차이가 발생한다.

프로세스 점검을 통해 의심스러운 프로세스를 확인 하였다. 프로세스 번호가 836번인 프로세스가 악성코드에 감염된 것으로 의심 되었고, 이를 확인하게 상세한 분석작업을 진행 했다.

836 프로세스에서 사용중인 파일을 점검 했다. 다음은 836번 프로세스에서 사용하던 파일 목록 이다.

svchost.exe pid: 836 NT AUTHORITY\SYSTEM
18: File (RW-) C:\WINDOWS\system32
1C4: Section \RPC Control\DSEC344
224: File (RW-) C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_5.82.3790.3959_x-ww_78FCF8D0
23C: File (RW-) C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.3790.3959_x-ww_D8713E55
244: File (RW-) C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.3790.3959_x-ww_D8713E55
250: File (RW-) C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.3790.3959_x-ww_D8713E55
280: File (RW-) C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.3790.3959_x-ww_D8713E55
2F0: File (R–) C:\WINDOWS\Registration\R00000000000a.clb
360: File (R–) C:\WINDOWS\Tasks\SchedLgU.Txt
3A0: File (R–) C:\WINDOWS\system32\kbd101a.dll
3A8: File (R–) C:\WINDOWS\system32\kbd103.dll
418: File (RWD) C:\WINDOWS\Tasks
464: Section \BaseNamedObjects\mmGlobalPnpInfo
56C: File (RWD) C:\WINDOWS\PCHealth\HelpCtr\BATCH
5D0: File (RW-) C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.3790.3959_x-ww_D8713E55
830: File (RW-) C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.3790.3959_x-ww_D8713E55
874: File (RWD) E:\$Extend\$ObjId
87C: Section \BaseNamedObjects\SENS Information Cache
8C8: File (—) E:
928: File (RWD) C:\WINDOWS\system32\wbem\mof
988: File (R–) C:\WINDOWS\system32\tcpipt.dll
A6C: File (R–) E:\System Volume Information\tracking.log
AF4: File (R–) C:\WINDOWS\system32\wbem\Repository\FS\MAPPING1.MAP
AF8: File (R–) C:\WINDOWS\system32\wbem\Repository\FS\MAPPING2.MAP
AFC: File (R–) C:\WINDOWS\system32\wbem\Repository\FS\MAPPING.VER
B00: File (R–) C:\WINDOWS\system32\wbem\Repository\FS\OBJECTS.DATA
B04: File (R–) C:\WINDOWS\system32\wbem\Repository\FS\INDEX.BTR
B20: Section \BaseNamedObjects\Wmi Provider Sub System Counters
C6C: Section \BaseNamedObjects\Debug.Memory.344

동적 링크 라이브러리(DLL) 파일 중 의심스러운 파일이 확인 되었다. 파일명은 ‘tcpipt.dll’ 이다.

svchost.exe pid: 836 NT AUTHORITY\SYSTEM
18: File (RW-) C:\WINDOWS\system32
…..중략…..
988: File (R–) C:\WINDOWS\system32\tcpipt.dll
C6C: Section \BaseNamedObjects\Debug.Memory.344

‘system32’ 폴더에는 ‘tcpipt.dll’ 파일이 존재 하지 않는다. DLL 파일에 대해 좀더 확인하기 위해 추가 분석을 수행 하였다.

어떤 목적으로 프로세스에 로드되었는지 확인해야 한다. 그러기 위해서는 해당 코드가 어떤 기능을 하는지 확인해야 하는데 이는 코드상의 API 사용내역을 통해 대략적으로 확인할 수 있다. PEiD 프로그램을 이용해 API를 확인 할 수 있다.

그림 PEiD 실행

사용중인 API는 사용자 계정을 컨트롤 하거나 FTP통신에 필요한 API, 레지스트리 수정에 필요한 API 등이 확인 되었다.

API 이름용도
NetUserDel사용자 삭제
SHFileOperationA파일 시스템 오브젝트 복사 파일 시스템 오브젝트 이동 파일 시스템 오브젝트 이름변경 파일 시스템 오브젝트 삭제
SHDeleteKeyA레지스트리 값 삭제
FtpOpenFileAFTP를 통해 파일 open
표 API 용도

사용된 API를 통해 기능을 유추해 보면 사용자 컨트롤이 가능하고, 레지스트리와 파일에 대한 제어 그리고 FTP 통신으로 데이터 전송이 가능하다.

여기까지만 봐도 전형적인 백도어 프로그램들이 제공하는 기능이다. 백도어 파일이 확실시 되고 좀더 정확한 시그니처를 찾기 위해 문자열을 확인 해보자.

많은 수의 악성코드가 파일명만 바꿔 사용하기 때문에 파일에서 악성코드를 확인할 수 있는 특징을 찾아낼 경우 해당 파일의 기능에 대해 좀더 정확히 파악할 수 있다. 주로 확인되는 정보는 프로그램 정보, 제작자 정보, 공격대상, C&C 서버 IP 등을 확인 할 수 있다.

문자열 추출은 ‘Bin Text’ 라는 프로그램을 이용해 확인할 수 있다. 문자열 추출 과정은 악성코드에 하드코딩 형태로 입력된 값을 확인한다.

tcpipt.dll 파일에 포함된 문자열 검색에서 ZXSHELL 구문이 확인 되었다. ZXSHELL은 중국에서 제작된 백도어 프로그램으로 C&C및 원격터미널 등 다양한 기능을 제공하는 툴이다.

그림 문자열 검색

분석 결과 공격자는 ZXSHELL 파일을 시스템에 실행 시켰다. 감염된 프로세스를 이용해 중국 IP를 사용하는 공격자와 통신을 연결 하고 감염 시스템 정보를 전송 하였다. 다음은 백도어 파일이 전송한 피해 시스템의 운영체제 정보다. 윈도우 버전 정보와 시스템 IP 정보, CPU 및 메모리 용량 정보를 전송했다.

0000 52 54 00 12 35 02 08 00 27 7c d0 b5 08 00 45 00 RT..5…’|….E.
0010 00 78 b5 ba 40 00 80 06 bb 98 0a 00 02 0f 3d bf .x..@………=.
0020 3f 5f 05 20 1e 61 51 b6 95 cf 2b 8d 6a 22 50 18 ?_. .aQ…+.j”P.
0030 fa d0 48 0e 00 00 77 69 6e 78 70 2d 76 62 6f 78 ..H…winxp-vbox
0040 40 4e 4f 4e 45 2d 57 69 6e 58 50 40 31 30 2e 30 @NONE-WinXP@10.0
0050 2e 32 2e 31 35 20 4f 53 3a 20 57 69 6e 58 50 20 .2.15 OS: WinXP
0060 50 72 6f 20 53 50 32 2e 30 28 32 36 30 30 29 20 Pro SP2.0(2600)
0070 43 50 55 3a 31 38 32 38 20 4d 48 7a 2c 52 41 4d CPU:1828 MHz,RAM
0080 3a 35 31 31 4d 42 :511MB

공격자가 시스템 리소스 정보까지 수집하는 이유는 대규모 서비스 거부 공격(DDoS)을 수행할 때 시스템 사양이 높은 좀비 PC를 활용하기 위해서다.