
macOS용 바이너리 및 파일 액세스 권한 부여 시스템입니다.
Santa는 macOS용 바이너리 및 파일 접근 인가 시스템입니다. 실행 및 파일 접근을 모니터링하고 로컬 데이터베이스의 내용을 기반으로 결정을 내리는 시스템 확장, 차단 결정 시 사용자에게 알리는 GUI 에이전트, 원격 서버와 구성을 동기화하는 백그라운드 서비스, 그리고 시스템을 관리하는 명령줄 유틸리티로 구성됩니다.
바이너리가 '착한지 나쁜지(naughty or nice)'를 추적하기 때문에 Santa라는 이름이 붙었습니다.
Santa 문서는 Docs 디렉터리에 저장되며 https://northpole.dev에서 게시됩니다.
문서에는 배포 옵션, Santa의 각 부분이 작동하는 방식에 대한 세부 정보 및 Santa 자체를 개발하기 위한 지침이 포함되어 있습니다.
질문이 있거나 시작하는 데 도움이 필요하면 macadmins Slack의 #santa 채널에서 시작하기 좋습니다.
버그가 있다고 생각되면 이슈를 등록해 주시기 바랍니다. 가능한 한 빨리 응답하겠습니다.
취약점을 발견했다고 생각되면 공개 신고를 위해 보안 정책을 읽어 주시기 바랍니다.
다중 모드: 기본 MONITOR 모드에서는 차단으로 표시된 바이너리를 제외한 모든 바이너리가 실행될 수 있으며, 실행은 기록되고 이벤트 데이터베이스에 저장됩니다. LOCKDOWN 모드에서는 나열된 바이너리만 실행할 수 있습니다.
이벤트 로깅: 시스템 확장이 로드되면 모든 바이너리 실행이 기록됩니다. 두 모드 모두에서 알 수 없거나 거부된 바이너리는 나중에 집계할 수 있도록 데이터베이스에 저장됩니다.
코드 서명 기반 규칙(재정의 수준 포함): 바이너리의 해시(또는 '지문')에 의존하는 대신 코드 서명(CDHash, Certificate, TeamID 또는 SigningID 규칙)을 통해 실행 파일을 허용/차단할 수 있습니다. 따라서 특정 게시자가 서명한 모든 바이너리 또는 서명된 바이너리의 모든 버전을 허용/차단할 수 있습니다. 규칙은 가장 구체적인 항목부터 적용되므로 특정 게시자의 모든 바이너리를 허용하면서 특정 서명 ID나 바이너리 하나를 차단하거나(또는 그 반대로) 할 수 있습니다.
경로 기반 규칙(NSRegularExpression/ICU 사용): 이는 Managed Client(구성 프로필의 전신으로, 동일한 구현 메커니즘을 사용함)에서 mcxalr 바이너리를 통해 제공되던 애플리케이션 실행 제한(Application Launch Restrictions)과 유사한 기능을 제공합니다. 이 구현은 정규식을 통해 구성할 수 있고 LaunchServices에 의존하지 않는다는 추가 이점이 있습니다. 위키에 자세히 설명된 대로 규칙을 평가할 때 이 규칙은 가장 낮은 우선순위를 갖습니다.
안전장치 인증서 규칙: launchd(일명 pid 1)와 그로 인해 macOS에서 사용되는 모든 구성 요소를 서명하는 데 사용되는 인증서를 차단하는 거부 규칙을 추가할 수 없습니다. 따라서 모든 OS 업데이트(경우에 따라 완전히 새로운 버전)의 바이너리는 자동으로 허용됩니다. 이는 일반 앱의 경우 정기적으로 변경되는 다양한 인증서를 사용하는 Apple App Store의 바이너리에는 영향을 미치지 않습니다. 마찬가지로 Santa 자체도 차단할 수 없습니다.
사용자 영역 구성 요소 간 상호 검증: 사용자 영역 구성 요소(데몬, GUI 에이전트 및 명령줄 유틸리티)는 각각 XPC를 사용하여 서로 통신하며, 통신이 수락되기 전에 서명 인증서가 동일한지 확인합니다.
캐싱: 허용된 바이너리는 캐시되므로 요청에 필요한 처리는 바이너리가 아직 캐시되지 않은 경우에만 수행됩니다.
어떤 단일 시스템이나 프로세스도 모든 공격을 막거나 100% 보안을 제공할 수는 없습니다. Santa는 사용자가 스스로를 보호하도록 돕는 의도로 작성되었습니다. 사람들은 종종 멀웨어를 다운로드하고 이를 신뢰하여 멀웨어에 자격 증명을 제공하거나, 알 수 없는 소프트웨어가 시스템에 대한 더 많은 데이터를 유출하도록 허용합니다. 중앙에서 관리되는 구성 요소로서 Santa는 대규모 기기 환경에서 멀웨어의 확산을 막는 데 도움이 될 수 있습니다. 독립적으로는 Santa가 컴퓨터에서 실행 중인 항목을 분석하는 데 도움을 줄 수 있습니다.
Santa는 심층 방어(defense-in-depth) 전략의 일부이며, 적절하다고 생각되는 다른 모든 방법으로 호스트를 계속 보호해야 합니다.
Santa는 실행(execve 및 그 변형)만 차단하며, dlopen으로 로드된 동적 라이브러리, 디스크에서 교체된 라이브러리 또는 DYLD_INSERT_LIBRARIES를 사용하여 로드된 라이브러리에 대해서는 보호하지 않습니다. SIP가 활성화되어 있는 한 macOS의 다른 부분이 일반적으로 이러한 경로를 보호합니다.
스크립트: Santa는 현재 바이너리가 아닌 모든 실행을 무시하도록 작성되어 있습니다. 이는 관리 비용과 이점을 비교해 본 결과 그만한 가치가 없다고 판단했기 때문입니다. 또한 많은 애플리케이션이 임시 생성 스크립트를 사용하는데, 이를 허용 목록에 포함하는 것은 사실상 불가능하며 그렇게 하지 않으면 문제가 발생할 수 있습니다. 다른 사람들에게 유용할 것 같다면 이 문제를 다시 검토(또는 최소한 옵션으로 만들기)할 의향이 있습니다.
Santa는 관리 서버와 설정 및 정책을 동기화할 수 있어 매우 빠른 구성 변경이 가능합니다.
사용 가능한 상용 및 오픈소스 서버는 다음과 같습니다.
또는 StaticRules 구성 키나 santactl rule 명령을 사용하여 규칙을 로컬에서 구성할 수 있습니다.
Santa와 같은 도구는 스크린샷에 잘 어울리지 않으므로 대신 비디오를 준비했습니다.
이 프로젝트에 대한 패치는 언제나 환영합니다. CONTRIBUTING 문서를 참조해 주시기 바랍니다.
North Pole Security 및 North Pole Security Santa는 Google과 제휴 관계가 아닙니다.