1. 기본
  2. 사용법

.... 2.1 sc 명령어

.... 2.2 service.msc

  1. 구조

.... 3.1 동작 구조

.... 3.2 개발

........ 3.2.1 exe 형태

........ 3.2.2 dll 형태

  1. 악성코드 분석
  2. 기본

기본적으로 서비스는 실행 가능한 바이너리여야 할 것이고 sys, exe, dll이 그 대상이 될 것이다. 명령 프롬프트에서 다음과 같은 명령을 실행해서 나온 결과 중 "종류"를 확인해 보면 3가지를 확인할 수 있다.

sc qc [ 서비스 이름 ]

sys 바이너리 즉 디바이스 드라이버는 KERNEL_DRIVER(1), exe 실행 파일 바이너리는 WIN32_OWN_PROCESS(10), dll은 WIN32_SHARE_PROCESS(20)이다.

등록된 서비스는 명령 프롬프트에서 sc 명령어를 사용하거나 또는 service.msc 유틸리티, 그리고 레지스트리를 통해서 확인 가능하다. sys나 exe 같은 standard alone한 서비스는 다음의 레지스트리에서 확인 가능하다. ImagePath를 보면 exe 및 sys 파일의 경로를 확인할 수 있다.

[ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services ]

DLL 형태의 서비스 프로그램은 조금 다르다. 각 서비스가 위의 키에 존재하는 것은 맞지만 ImagePath에 실행 파일의 경로가 아니라 다음과 같은 형태를 볼 수 있다.

%SystemRoot%\system32\svchost.exe -k [서비스 그룹 이름]

이것은 부팅 시에 svchost.exe의 인자로 서비스 그룹의 이름을 넣고 실행함으로써 호출된다는 것이다. dll의 경로는 ImagePath가 아니라 ServiceDll에 위치한다. 참고로 지금까지 언급했던 서비스 그룹은 다음의 레지스트리에 저장되어 있다.

[ HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost ]