Registry AutoRun
HKCU 및 HKLM에 있는 AutoRun 값들은 애플리케이션이 부팅 시 자동으로 시작될 수 있도록 허용합니다. 이는 주로 기본 제공 애플리케이션이나 써드파티 소프트웨어를 시작하는데 사용되는 것을 흔히 볼 수 있습니다. 사용자 로그인 시 특정 프로그램 및 행위를 자동으로 수행하도록 등록하는 레지스트리는 3가지가 있습니다.
HKCU\...\Run
머신에 사용자 로그인 시마다 유저 컨텍스트에서 자동 실행
탐지에 매우 취약 (AV/EDR 우선 감시 대상)
HKCU\...\RunOnce
머신에 사용자 로그인 시 유저 컨텍스트에서 1회 자동 실행 후 삭제
탐지에 매우 취약 (AV/EDR 우선 감시 대상)
HKCU\..\UserInitMprLogonScript
머신에 사용자 로그인 시마다 유저 컨텍스트에서 자동 실행
보안 솔루션 탐지 우선순위 낮음
Run과 RunOnce 레지스트리는 실행 로직은 동일하되, 자동으로 삭제 하는 것의 차이이지만 Environment의 경우 실행 시점이 Run보다 우선입니다. 일반적으로 Windows 로그인 이후 내부 동작 흐름은 다음과 같습니다.
winlogon.exe : 로그인 처리 담당(사용자 인증 등)
userinit.exe : 로그인 성공 후 실행되는 초기화 프로세스
explorer.exe : 사용자 쉘 시작(GUI 환경 동작)
Run 레지스트리 키에 등록된 동작은 3번이 처리되어 GUI 환경이 동작한 이후에 처리됩니다. GUI 환경이 동작한 이후에도 어느정도 딜레이가 존재하기 때문에 리버스쉘을 레지스트리 키에 등록한 다음 부팅 직후 Kali에서 포트를 열어두면 리버스쉘이 연결되는 것을 확인할 수 있습니다.
반면 UserInitMprLogonScript의 경우 사용자가 로그인을 성공한 직후 GUI 환경이 배포되기 이전 실행되기 때문에 AV/EDR 동작 이전에 실행될 가능성이 있기에 은닉성 측면에서 우위에 있습니다.
일반적으로 AutoRun이 페이로드를 System 권한으로 실행한다고 알려져 있지만 사실은 접속한 사용자의 권한으로 실행됩니다.
Last updated
Was this helpful?