# Windows Services 란? - Windows Services는 시스템 부팅 시 자동으로 실행되거나, 수동으로 실행될 수 있는 백그라운드 프로세스. - 일반적인 GUI 프로그램과 다르게 사용자 로그온 없이도 동작할 수 있으며, 주로 시스템 핵심 기능 또는 백그라운드 작업을 담당한다. - 서비스는 **Service Control Manager (SCM)** 라는 Windows 컴포넌트에 의해 관리된다. # Service Control Manager (SCM) - `services.exe`로 실행되는 SCM은: - 서비스 `시작/중지` - 상태 `모니터링` - 설정 `변경/저장` - 실행 파일, 실행 계정 정보 등을 `참조` ```bash sc qc apphostsvc ``` ```bash [SC] QueryServiceConfig SUCCESS SERVICE_NAME: apphostsvc TYPE : 20 WIN32_SHARE_PROCESS START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : C:\Windows\system32\svchost.exe -k apphost LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : Application Host Helper Service DEPENDENCIES : SERVICE_START_NAME : LocalSystem ``` | 항목 | 설명 | | -------------------- | ------------------------------------------------------------- | | `SERVICE_NAME` | 서비스의 내부 이름 (예: apphostsvc) | | `TYPE: 20` | `WIN32_SHARE_PROCESS`: 다른 서비스들과 프로세스를 공유 (svchost.exe와 같은 경우) | | `START_TYPE: 2` | `AUTO_START`: 시스템 부팅 시 자동 시작 | | `ERROR_CONTROL: 1` | 실패 시 처리 수준 (`NORMAL`: 오류 발생 시 경고만) | | `BINARY_PATH_NAME` | 실행 파일 경로 + 인자 → `svchost.exe`를 사용해서 그룹(`-k apphost`)으로 실행 | | `SERVICE_START_NAME` | 서비스를 실행하는 계정 → `LocalSystem`은 **가장 높은 권한** | # DACL (Discretionary Access Control List) - 각 서비스는 DACL을 가진다. - 누가 서비스를 시작, 중지, 설정 변경할 수 있는지를 정의함. - 공격자가 일반 사용자로서 서비스 DACL을 열람하거나 쓰기 권한이 있을 경우: - 서비스 실행 파일을 교체하거나 설정을 바꿔 권한 상승 가능. - GUI 도구인 **Process Hacker**로 확인 가능: - 서비스 속성 -> 보안 탭에서 DACL 확인 및 수정 가능 (관리자 권한 필요) ![[Pasted image 20250621104638.png]] # 서비스가 저장되는 레지스트리 경로 ```bash HKLM\SYSTEM\CurrentControlSet\Services\<서비스 이름>\ ``` ![[Pasted image 20250621104550.png]] | 값 | 설명 | | ------------ | ------------------------------------ | | `ImagePath` | 실제 실행 경로 (`BINARY_PATH_NAME`과 동일) | | `ObjectName` | 서비스 실행 계정 (`SERVICE_START_NAME`과 동일) | | `Security` | DACL 정보 (이진 데이터로 저장됨) |