macOS MDM
Last updated
Last updated
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
macOS MDM에 대해 알아보려면 다음을 확인하세요:
모바일 장치 관리 (MDM)은 스마트폰, 노트북 및 태블릿과 같은 다양한 최종 사용자 장치를 감독하는 데 사용됩니다. 특히 Apple의 플랫폼(iOS, macOS, tvOS)에 대해, 이는 일련의 전문 기능, API 및 관행을 포함합니다. MDM의 작동은 상용 또는 오픈 소스의 호환 MDM 서버에 의존하며, MDM 프로토콜을 지원해야 합니다. 주요 사항은 다음과 같습니다:
장치에 대한 중앙 집중식 제어.
MDM 프로토콜을 준수하는 MDM 서버에 의존.
MDM 서버가 원격 데이터 삭제 또는 구성 설치와 같은 다양한 명령을 장치에 전송할 수 있는 기능.
Apple이 제공하는 장치 등록 프로그램 (DEP)은 iOS, macOS 및 tvOS 장치에 대한 제로 터치 구성을 용이하게 하여 모바일 장치 관리(MDM)의 통합을 간소화합니다. DEP는 등록 프로세스를 자동화하여 장치가 최소한의 사용자 또는 관리 개입으로 즉시 작동할 수 있도록 합니다. 필수 측면은 다음과 같습니다:
장치가 초기 활성화 시 미리 정의된 MDM 서버에 자율적으로 등록할 수 있도록 합니다.
주로 새 장치에 유용하지만 재구성 중인 장치에도 적용 가능합니다.
간단한 설정을 용이하게 하여 장치를 신속하게 조직에서 사용할 수 있도록 합니다.
DEP가 제공하는 등록의 용이성은 유익하지만 보안 위험을 초래할 수 있습니다. MDM 등록에 대한 보호 조치가 적절하게 시행되지 않으면 공격자가 이 간소화된 프로세스를 악용하여 자신의 장치를 조직의 MDM 서버에 등록하고 기업 장치로 가장할 수 있습니다.
보안 경고: 간소화된 DEP 등록은 적절한 보호 장치가 없을 경우 조직의 MDM 서버에 무단 장치 등록을 허용할 수 있습니다.
TLS 및 HTTPS가 널리 퍼지기 전에 만들어진 비교적 오래된 프로토콜입니다.
클라이언트가 인증서를 부여받기 위해 인증서 서명 요청 (CSR)을 보내는 표준화된 방법을 제공합니다. 클라이언트는 서버에 서명된 인증서를 요청합니다.
Apple의 공식적인 시스템 구성 설정/강제 적용 방법입니다.
여러 페이로드를 포함할 수 있는 파일 형식입니다.
속성 목록(XML 형식)을 기반으로 합니다.
“출처를 검증하고, 무결성을 보장하며, 내용을 보호하기 위해 서명 및 암호화될 수 있습니다.” 기본 사항 — 페이지 70, iOS 보안 가이드, 2018년 1월.
APNs (Apple 서버) + RESTful API (MDM 벤더 서버)의 조합
통신은 장치와 장치 관리 제품과 관련된 서버 간에 발생합니다.
명령은 plist 인코딩된 사전으로 MDM에서 장치로 전달됩니다.
모든 것이 HTTPS를 통해 이루어집니다. MDM 서버는 (대개) 핀 고정됩니다.
Apple은 MDM 벤더에게 인증을 위한 APNs 인증서를 부여합니다.
3개의 API: 1개는 리셀러용, 1개는 MDM 벤더용, 1개는 장치 식별용(문서화되지 않음):
소위 DEP "클라우드 서비스" API. 이는 MDM 서버가 특정 장치와 DEP 프로파일을 연결하는 데 사용됩니다.
Apple 공인 리셀러가 사용하는 DEP API로 장치를 등록하고, 등록 상태를 확인하며, 거래 상태를 확인합니다.
문서화되지 않은 비공식 DEP API. 이는 Apple 장치가 자신의 DEP 프로파일을 요청하는 데 사용됩니다. macOS에서는 cloudconfigurationd
바이너리가 이 API를 통해 통신하는 책임이 있습니다.
더 현대적이고 JSON 기반입니다(대신 plist).
Apple은 MDM 벤더에게 OAuth 토큰을 부여합니다.
DEP "클라우드 서비스" API
RESTful
Apple에서 MDM 서버로 장치 기록 동기화
MDM 서버에서 Apple로 “DEP 프로파일” 동기화(나중에 장치에 전달됨)
DEP “프로파일”에는 다음이 포함됩니다:
MDM 벤더 서버 URL
서버 URL에 대한 추가 신뢰할 수 있는 인증서(선택적 핀 고정)
추가 설정(예: 설정 도우미에서 건너뛸 화면)
2010년 이후 제조된 Apple 장치는 일반적으로 12자리 알파벳 숫자 일련 번호를 가지며, 첫 세 자리는 제조 위치를 나타내고, 다음 **두 자리는 제조의 연도와 주를 나타내며, 다음 **세 자리는 고유 식별자를 제공하고, **마지막 네 자리는 모델 번호를 나타냅니다.
장치 기록 생성 (리셀러, Apple): 새 장치에 대한 기록이 생성됩니다.
장치 기록 할당 (고객): 장치가 MDM 서버에 할당됩니다.
장치 기록 동기화 (MDM 벤더): MDM이 장치 기록을 동기화하고 DEP 프로파일을 Apple에 푸시합니다.
DEP 체크인 (장치): 장치가 자신의 DEP 프로파일을 받습니다.
프로파일 검색 (장치)
프로파일 설치 (장치) a. MDM, SCEP 및 루트 CA 페이로드 포함
MDM 명령 발행 (장치)
파일 /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbd
는 등록 프로세스의 **고급 "단계"**로 간주될 수 있는 기능을 내보냅니다.
이 프로세스의 일부는 사용자가 Mac을 처음 부팅할 때 (또는 완전 초기화 후) 발생합니다.
또는 sudo profiles show -type enrollment
을 실행할 때
장치가 DEP 활성화되었는지 여부 결정
활성화 기록은 **DEP “프로파일”**의 내부 이름입니다.
장치가 인터넷에 연결되면 시작됩니다.
**CPFetchActivationRecord
**에 의해 구동됩니다.
**cloudconfigurationd
**에 의해 XPC를 통해 구현됩니다. "설정 도우미" (장치가 처음 부팅될 때) 또는 profiles
명령이 이 데몬에 연락하여 활성화 기록을 검색합니다.
LaunchDaemon (항상 root로 실행됨)
활성화 기록을 가져오는 과정은 **MCTeslaConfigurationFetcher
**에 의해 수행됩니다. 이 과정은 Absinthe라는 암호화를 사용합니다.
인증서 검색
인증서에서 상태 초기화 (NACInit
)
다양한 장치 특정 데이터 사용 (즉, IOKit
를 통한 일련 번호)
세션 키 검색
세션 설정 (NACKeyEstablishment
)
요청하기
POST https://iprofiles.apple.com/macProfile로 데이터 { "action": "RequestProfileConfiguration", "sn": "" }
전송
JSON 페이로드는 Absinthe로 암호화됩니다 (NACSign
)
모든 요청은 HTTPs를 통해 이루어지며, 내장 루트 인증서가 사용됩니다.
응답은 다음과 같은 중요한 데이터가 포함된 JSON 사전입니다:
url: 활성화 프로파일을 위한 MDM 벤더 호스트의 URL
anchor-certs: 신뢰할 수 있는 앵커로 사용되는 DER 인증서 배열
DEP 프로파일에 제공된 url로 요청이 전송됩니다.
제공된 경우 앵커 인증서가 신뢰 평가에 사용됩니다.
알림: DEP 프로파일의 anchor_certs 속성
요청은 장치 식별이 포함된 간단한 .plist입니다.
예: UDID, OS 버전.
CMS 서명, DER 인코딩
**장치 식별 인증서(APNS에서)**를 사용하여 서명됩니다.
인증서 체인에는 만료된 Apple iPhone Device CA가 포함됩니다.
검색된 후, 프로파일이 시스템에 저장됩니다.
이 단계는 자동으로 시작됩니다( 설정 도우미에 있을 경우).
**CPInstallActivationProfile
**에 의해 구동됩니다.
XPC를 통해 mdmclient에 의해 구현됩니다.
컨텍스트에 따라 LaunchDaemon (root로) 또는 LaunchAgent (사용자로)로 실행됩니다.
구성 프로파일은 설치할 여러 페이로드를 가집니다.
프레임워크는 프로파일 설치를 위한 플러그인 기반 아키텍처를 가지고 있습니다.
각 페이로드 유형은 플러그인과 연결되어 있습니다.
XPC(프레임워크 내) 또는 클래식 Cocoa(ManagedClient.app 내)일 수 있습니다.
예:
인증서 페이로드는 CertificateService.xpc를 사용합니다.
일반적으로 MDM 벤더가 제공하는 활성화 프로파일은 다음 페이로드를 포함합니다:
com.apple.mdm
: 장치를 MDM에 등록하기 위해
com.apple.security.scep
: 장치에 클라이언트 인증서를 안전하게 제공하기 위해.
com.apple.security.pem
: 장치의 시스템 키체인에 신뢰할 수 있는 CA 인증서를 설치하기 위해.
MDM 페이로드 설치는 문서에서 MDM 체크인에 해당합니다.
페이로드는 주요 속성을 포함합니다:
MDM 체크인 URL (CheckInURL
)
MDM 명령 폴링 URL (ServerURL
) + 이를 트리거하기 위한 APNs 주제
MDM 페이로드를 설치하기 위해 요청이 **CheckInURL
**로 전송됩니다.
**mdmclient
**에서 구현됩니다.
MDM 페이로드는 다른 페이로드에 의존할 수 있습니다.
특정 인증서에 요청을 핀 고정할 수 있습니다:
속성: CheckInURLPinningCertificateUUIDs
속성: ServerURLPinningCertificateUUIDs
PEM 페이로드를 통해 전달됩니다.
장치에 신원 인증서를 부여할 수 있습니다:
속성: IdentityCertificateUUID
SCEP 페이로드를 통해 전달됩니다.
MDM 체크인이 완료된 후, 벤더는 APNs를 사용하여 푸시 알림을 발행할 수 있습니다.
수신 시, **mdmclient
**에 의해 처리됩니다.
MDM 명령을 폴링하기 위해 요청이 ServerURL로 전송됩니다.
이전에 설치된 MDM 페이로드를 사용합니다:
요청 핀 고정을 위한 ServerURLPinningCertificateUUIDs
TLS 클라이언트 인증서를 위한 IdentityCertificateUUID
앞서 언급했듯이, 장치를 조직에 등록하려면 해당 조직에 속하는 일련 번호만 필요합니다. 장치가 등록되면 여러 조직이 새 장치에 민감한 데이터를 설치합니다: 인증서, 애플리케이션, WiFi 비밀번호, VPN 구성 등등. 따라서 등록 프로세스가 올바르게 보호되지 않으면 공격자에게 위험한 진입점이 될 수 있습니다:
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)