macOS Dirty NIB

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법:

기술에 대한 자세한 내용은 원본 게시물을 확인하세요: https://blog.xpnsec.com/dirtynib/**. 여기에는 요약이 있습니다:

NIB 파일은 Apple의 개발 생태계의 일부로, 애플리케이션에서 UI 요소와 그들의 상호작용을 정의하기 위해 사용됩니다. 이들은 창과 버튼과 같은 직렬화된 객체를 포함하며, 런타임에 로드됩니다. Apple은 이제 더 포괄적인 UI 흐름 시각화를 위해 스토리보드를 권장하고 있지만, 여전히 NIB 파일이 사용되고 있습니다.

NIB 파일과 관련된 보안 문제

NIB 파일은 보안 위험이 될 수 있습니다. 이들은 임의의 명령을 실행할 수 있으며, 앱 내의 NIB 파일을 변경해도 Gatekeeper가 앱을 실행하는 것을 방해하지 않으므로 중대한 위협이 될 수 있습니다.

Dirty NIB 삽입 과정

NIB 파일 생성 및 설정

  1. 초기 설정:

  • XCode를 사용하여 새로운 NIB 파일을 생성합니다.

  • 인터페이스에 Object를 추가하고, 클래스를 NSAppleScript로 설정합니다.

  • User Defined Runtime Attributes를 통해 초기 source 속성을 구성합니다.

  1. 코드 실행 가젯:

  • 설정은 필요할 때 AppleScript를 실행할 수 있도록 합니다.

  • Apple Script 객체를 활성화하는 버튼을 통합합니다. 특히 executeAndReturnError: 선택기를 트리거합니다.

  1. 테스트:

  • 테스트 목적으로 간단한 Apple Script:

set theDialogText to "PWND"
display dialog theDialogText
  • XCode 디버거에서 실행하고 버튼을 클릭하여 테스트합니다.

애플리케이션 대상 설정 (예: Pages)

  1. 준비:

  • 대상 앱 (예: Pages)을 별도의 디렉토리 (예: /tmp/)에 복사합니다.

  • Gatekeeper 문제를 우회하고 캐시하기 위해 앱을 시작합니다.

  1. NIB 파일 덮어쓰기:

  • 기존의 NIB 파일 (예: About Panel NIB)을 조작된 DirtyNIB 파일로 대체합니다.

  1. 실행:

  • 앱과 상호작용하여 실행을 트리거합니다 (예: About 메뉴 항목 선택).

개념 증명: 사용자 데이터 접근

  • AppleScript를 수정하여 사용자 동의 없이 사진과 같은 사용자 데이터에 접근하고 추출합니다.

코드 샘플: 악성 .xib 파일

실행 제약 조건 해결

  • 실행 제약 조건은 예기치 않은 위치 (예: /tmp)에서 앱 실행을 방지합니다.

  • 실행 제약 조건에 보호되지 않은 앱을 식별하고 NIB 파일 삽입을 위해 대상으로 지정할 수 있습니다.

추가적인 macOS 보호 기능

macOS Sonoma 이후로 앱 번들 내에서의 수정이 제한됩니다. 그러나 이전 방법은 다음과 같습니다:

  1. 앱을 다른 위치 (예: /tmp/)로 복사합니다.

  2. 초기 보호를 우회하기 위해 앱 번들 내의 디렉토리 이름을 변경합니다.

  3. Gatekeeper에 등록하기 위해 앱을 실행한 후, 앱 번들을 수정합니다 (예: MainMenu.nib을 Dirty.nib로 대체).

  4. 디렉토리 이름을 다시 변경하고 주입된 NIB 파일을 실행하기 위해 앱을 다시 실행합니다.

참고: 최근 macOS 업데이트에서는 Gatekeeper 캐싱 이후 앱 번들 내의 파일 수정을 방지하여 이 취약점을 완화시켰습니다.

Last updated