woonadz :)

[지속 기법] Winlogon/Image File Execution Options/접근성 프로그램 본문

IT/악성코드

[지속 기법] Winlogon/Image File Execution Options/접근성 프로그램

C_scorch 2024. 3. 6. 23:00
반응형

해당 포스팅은 악성코드 분석 시작하기 책을 바탕으로 작성하였습니다.


 

Winlogon 레지스트리 항목

[그림 1] Winlogon 프로세스 구조

  • 공격자는 Winlogon 프로세스에서 사용하는 레지스트리 항목을 수정해 지속성을 유지할 수 있습니다.
  • Winlogon은 사용자 계정의 logon과 logoff를 처리하는 역할을 합니다.
  • Winlogon 프로세스는 다음과 같이 동작합니다.
    1. 유저가 인증되면 Winlogon.exe 프로세스가 시작됩니다.
    2. Winlogon.exe는 userinit.exe를 실행합니다.
    3. 다음으로 logon 스크립트를 실행하고 네트워크 연결을 재설정합니다.
    4. 마지막으로 userinit.exe 기본 유저 셀인 explorer.exe를 실행합니다.

 

Winlogon Userinit

[그림 2] Winlogon 하위 Userinit 경로
[그림 3] Userinit 레지스트리 값

  • winlogon.exe는 사진과 같은 레지스트리 값으로 인해 userinit.exe를 실행합니다.
  • 따라서 HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon 레지스트리 값에는 Userinit 항목이 있으며, 이 항목은 userinit.exe의 경로를 저장합니다.
  • 이 경로는 사용자가 로그인할 때 Winlogon이 실행해야 하는 프로그램 또는 스크립트를 가리키며, 사용자가 로그인하면 userinit.exe가 실행되어 시작 프로그램을 실행합니다.
  • 공격자는 유저가 로그인했을 때 winlogon.exe 프로세스가 실행할 악성 실행 파일의 경로를 포함하는 다른 값으로 변경하거나 추가할 수 있습니다.
  •  

Winlogon Shell

[그림 4] Winlogon 하위 Shell 경로
[그림 5] Shell 레지스트리 값

  • 앞서 설명한 방법과 동일한 방법으로 userinit.exe는 HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\Shell 값을 참고하여 기본 유저 셀을 실행합니다.
  • 기본적으로 이 값은 explorer.exe로 설정되며, 공격자는 악의적인 실행 파일의 이름을 포함하는 다른 항목을 추가하거나, 변경할 수 있습니다.

 

이미지 파일 실행 옵션

[그림 6] lFEO 경로
[그림 7] IFEO 레지스트리 값

  • 이미지 파일 실행 옵션(IFEO)은 디버거에서 실행 파일을 직접 실행할 수 있습니다.
  • 이는 개발자가 실행 파일의 시작 코드에 있는 이슈를 조사할 수 있도록 소프트웨어를 디버깅할 수 있는 옵션을 제공합니다.
  • 개발자는 사진과 같은 레지스트리 키 아래에 실행 파일 이름으로 하위 키를 만들고 디버거 값을 디버거의 경로로 설정합니다.

 

이미지 파일 실행 옵션 실습하기

Key : "HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\\Windows NT\CurrentVersion\Image File Execution Options\<실행 파일 이름>"
Value : Debugger : REG_SZ : <디버거의 전체 경로>

[그림 8] notepad.exe의 IFEO 레지스트리 값 설정

  • 공격자는 이 레지스트리 키를 이용해 악의적인 프로그램을 실행할 수 있습니다.
  • 만약 공격자가 악의적인 프로그램(01.exe)를 notepad.exe의 디버거로 설정한다면 사진과 같이 설정될 것입니다.
  • 이러한 레지스트리 항목으로 인해 정상 notepad.exe가 실행될 때마다 악의적인 프로그램(01.exe)가 함께 실행됩니다.

 

접근성 프로그램

[그림 9] 고정 키
[그림 10] 접근성 프로그램

  • 윈도우 운영 체제는 화상 키보드, 내레이터, 돋보기 등과 같은 기능을 특별한 도움이 필요한 사람을 위해 설계하였습니다.
  • 이러한 접근성 프로그램들은 시스템에 로그인하지 않고도 다음과 같은 방법을 통해 실행할 수 있습니다.
    • Windows + U
    • C:\\Windows\\System32\\Utilman.exe
    • Shift 키를 다섯 번 눌러 C:\\Windows\\System32\\sethc.exe를 실행하는 고정키 활성화
  • 공격자는 이러한 접근성 프로그램(utilman.exe, sethc.exe)을 통해 악의적인 프로그램을 실행하도록 수정하거나 권한 상승된 cmd.exe를 사용할 수 있습니다.

 

AppInit_DLLs

[그림 11] Applinit_DLLs 경로
[그림 12] Applinit_DLLs의 레지스트리 값 설정

  • 윈도우의 Applinit_DLLs 기능은 모든 대화형 애플리케이션의 주소 공간에 유저 정의 DLL을 로드할 수 있는 방법을 제공합니다.
  • DLL이 프로세스의 주소 공간에 로드되면 해당 프로세스의 콘텍스트 내에서 실행될 수 있고, 잘 알려진 API를 가로채어 대체 기능을 수행할 수 있습니다.
  • 공격자는 AppInit_DLLs 값을 설정해 악의적인 DLL에 대한 지속성을 유지할 수 있습니다.
  • AppInit_DLLs 값을 설정하는 것 외에도 공격자는 LoadAppInit_DLLs 레지스트리 값을 1로 설정해 AppInit_DLLs 함수를 활성화 할 수도 있습니다.
  • 하지만 windows 8 이후로 보안 부트가 활성화되어 AppInit_DLLs 함수는 비활성화되었습니다.
반응형