오늘은 Apple에서 제공하는 Endpoint Security Extension에 대해 작성하려한다.

Endpoint Security란?

  • Apple이 제공하는 C API 기반 프레임워크로, macOS의 핵심 시스템 이벤트(파일 액세스, 프로세스 실행, 권한 변경 등)를 감시하고 차단할 수 있는 기능들을 포함하고 있다.

Monitoring System Events with Endpoint Security

  • Apple에서 공식적으로 Endpoint Security 사용 방법에 대한 Sample Code를 만들어 두었다.
  1. 다운로드 링크: https://developer.apple.com/documentation/endpointsecurity/monitoring-system-events-with-endpoint-security?language=objc

  2. 관련 영상: https://developer.apple.com/videos/play/wwdc2020/10159/

1. Sample Code 실행 절차

위에 있는 다운로드 링크를 눌러보면 실행 절차가 나와있지만 핵심 내용은 아래와 같다.

  1. 애플 개발자 계정 생성 및 Endpoint Security 사용을 위한 애플 승인 요청하기

    • Endpoint Security Extension을 사용하기 위해서는 애플에게 내가 어떤 이유로 해당 기능을 사용하려 하고 내가 어떤 사람/기관 인지 내용을 작성하여 승인을 받아야 한다.

      • developer.apple.com/contact/request/system-extension 페이지로 이동한다.
        https://developer.apple.com/system-extensions/

      • Apple 요구사항에 대한 내용을 기재한다.

      • 내용을 제출하면 요청 ID와 함께 제출이 완료된다.

      • 며칠 기다리다 보면 애플에게 Endpoint Security에 대한 응답을 받을 수 있다!

      • 메일 확인 후 Certificates, Identifiers & Profiles를 확인해보면 기존에 보이지 않던 Endpoont Security가 보이게 된다!

2. Sample Code 수정 후 빌드하기

  • 이제 애플에 승인도 완료 되었으니 Endpoint Security Sample Code를 열어본다. 기본적인 사이닝 정보를 입력해주고 App Bundle과 관련된 코드 한줄을 수정해준 뒤 빌드한다.
  • TeamID를 확인한 뒤 Extension을 등록하는 Request 쪽 코드를 수정해준다.

  • 이후 빌드된 App을 반드시 root/Applications/ 경로로 이동시킨 뒤 앱을 실행시킨다.
    • Extension이 정상 설치되기 위해선 앱이 root/Applications에 존재하여야 한다.

3. 앱 실행하기

  • 앱을 실행하면 아래와 같은 심플한 UI를 확인 할 수 있다.

  • "Install Extension" 버튼을 클릭하면 시스템에 Extension이 설치된다.

    • 이때 설치가 실패한다면 UI에 에러코드가 출력되니 에러코드를 보고 수정을 진행하면 된다.

    • /Library/SystemExtensions 경로에서 Extension이 설치되었는지 확인이 가능하다.

4. 기능 확인하기

  • Extension이 정상적으로 동작하게 되면 더이상 "텍스트 편집기"앱을 실행할 수 없게 된다.

  • 그 외에도 EICAR File을 열 수 없어지며, /usr/local/bin/ 하위 파일에 대한 수정 권한도 없어진 것을 확인 할 수 있다.

5. 활용 하기

  • Auth 이벤트를 활용하면 다양한 보안기능 개발이 가능하다.
  1. macOS Airdrop 경우 파일 송수신시 하기 경로에 파일을 tmp 파일을 생성하게 된다. 이 특징과 ES_EVENT_TYPE_AUTH_CREATE 이벤트를 활용하면 Airdrop을 제어할 수 있다.
/private/var/folders/<random>/<random>/T/com.apple.sharingd
  1. 사용자가 또는 악성프로그램이 내 어플리케이션을 강제종료하는 것은 ES_EVENT_TYPE_AUTH_SIGNAL를 이용하여 제어가 가능하다.
  • 일단 사용할 이벤트를 구독 및 handle 코드를 추가해준다.

  • 받은 이벤트 구조체 정보를 활용하여 내가 원하는 B/L을 추가해준다

마치며...

  • 위 예제를 제외하고도 Apple Endpoint Security Extension을 사용하게 되면 파일에 대한 모든 제어권한과 어플리케이션 실행, USE Block등 IOKit Device에 대한 제어또한 가능해진다.
    강력한 기능인 만큼 사용시 데이터 손상을 주의하고 확실한 예외처리가 필요하다.

이벤트 종류는 아래 링크에서 확인이 가능하다!.
https://developer.apple.com/documentation/endpointsecurity/event-types?language=objc

profile
macOS Native Application Developer

0개의 댓글