Santa는 macOS용 바이너리 및 파일 액세스 인증 시스템입니다. 실행을 모니터링하는 시스템 확장, 로컬 데이터베이스의 내용을 기반으로 실행 결정을 내리는 데몬, 차단 결정 시 사용자에게 알리는 GUI 에이전트, 시스템을 관리하는 명령줄 유틸리티로 구성됩니다. 데이터베이스를 서버와 동기화합니다.
장난스럽거나 좋은 바이너리를 추적하기 때문에 산타라는 이름이 붙었습니다.
Santa 문서는 Docs 디렉터리에 저장되며 https://santa.dev에 게시됩니다.
문서에는 배포 옵션, Santa의 일부 작동 방식에 대한 세부 정보 및 Santa 자체 개발 지침이 포함되어 있습니다.
질문이 있거나 시작하는 데 도움이 필요한 경우 santa-dev 그룹이 가장 좋습니다.
버그가 있다고 생각되면 언제든지 문제를 보고해 주세요. 최대한 빨리 답변해 드리겠습니다.
취약점을 발견했다고 생각되면 공개 보고에 대한 보안 정책을 읽어보세요.
다중 모드: 기본 모니터 모드에서는 차단된 것으로 표시된 바이너리를 제외한 모든 바이너리가 이벤트 데이터베이스에 기록되고 기록되는 동안 실행이 허용됩니다. LOCKDOWN 모드에서는 나열된 바이너리만 실행할 수 있습니다.
이벤트 로깅: 시스템 확장이 로드되면 모든 바이너리 실행이 기록됩니다. 어느 모드에서든 알 수 없거나 거부된 모든 바이너리는 나중에 집계할 수 있도록 데이터베이스에 저장됩니다.
재정의 수준이 있는 인증서 기반 규칙: 바이너리의 해시(또는 '지문')에 의존하는 대신 서명 인증서를 통해 실행 파일을 허용/차단할 수 있습니다. 따라서 버전 업데이트 전반에 걸쳐 해당 인증서로 서명된 특정 게시자의 모든 바이너리를 허용/차단할 수 있습니다. 바이너리는 서명이 올바르게 검증된 경우에만 해당 인증서에 의해 허용될 수 있지만 바이너리의 지문에 대한 규칙은 인증서에 대한 결정을 재정의합니다. 즉, 해당 인증서로 서명된 바이너리를 차단하면서 해당 인증서를 허용 목록에 추가하거나 그 반대로 할 수 있습니다.
경로 기반 규칙(NSRegularExpression/ICU를 통해): 이를 통해 관리형 클라이언트(동일한 구현 메커니즘을 사용하는 구성 프로필의 전신), mcxalr 바이너리를 통한 애플리케이션 실행 제한에 있는 것과 유사한 기능을 사용할 수 있습니다. 이 구현은 정규식을 통해 구성할 수 있고 LaunchServices에 의존하지 않는다는 추가 이점을 제공합니다. 위키에 자세히 설명되어 있듯이 규칙을 평가할 때 이는 가장 낮은 우선순위를 갖습니다.
비상 안전 인증서 규칙: launchd(즉, pid 1)에 서명하는 데 사용되는 인증서와 macOS에서 사용되는 모든 구성 요소를 차단하는 거부 규칙을 설정할 수 없습니다. 따라서 모든 OS 업데이트(경우에 따라 전체 새 버전)의 바이너리가 자동으로 허용됩니다. 이는 일반 앱에 대해 정기적으로 변경되는 다양한 인증서를 사용하는 Apple App Store의 바이너리에는 영향을 미치지 않습니다. 마찬가지로 산타 자체는 차단할 수 없으며, 산타는 다른 Google 앱과는 별개의 별도 인증서를 사용합니다.
Userland 구성 요소는 서로 유효성을 검사합니다. 각 Userland 구성 요소(데몬, GUI 에이전트 및 명령줄 유틸리티)는 XPC를 사용하여 서로 통신하고 통신이 허용되기 전에 해당 서명 인증서가 동일한지 확인합니다.
캐싱: 허용된 바이너리는 캐시되므로 요청에 필요한 처리는 바이너리가 아직 캐시되지 않은 경우에만 수행됩니다.
단일 시스템이나 프로세스는 모든 공격을 차단하거나 100% 보안을 제공할 수 없습니다. 산타는 사용자를 자신으로부터 보호하려는 의도로 작성되었습니다. 사람들은 종종 맬웨어를 다운로드하고 이를 신뢰하여 맬웨어 자격 증명을 제공하거나 알 수 없는 소프트웨어가 시스템에 대한 더 많은 데이터를 유출하도록 허용합니다. 중앙에서 관리되는 구성 요소인 Santa는 대규모 시스템 간에 악성 코드가 확산되는 것을 막는 데 도움을 줄 수 있습니다. 독립적으로 산타는 컴퓨터에서 실행 중인 내용을 분석하는 데 도움을 줄 수 있습니다.
산타는 심층 방어 전략의 일부이므로 적합하다고 판단되는 다른 방법으로 호스트를 계속 보호해야 합니다.
Santa는 실행(execve 및 변형)만 차단하며 dlopen으로 로드된 동적 라이브러리, 교체된 디스크의 라이브러리 또는 DYLD_INSERT_LIBRARIES
사용하여 로드된 라이브러리에 대해서는 보호하지 않습니다.
스크립트: Santa는 현재 바이너리가 아닌 모든 실행을 무시하도록 작성되었습니다. 이는 관리 비용과 이점을 비교 검토한 결과 가치가 없다는 결론을 얻었기 때문입니다. 또한 많은 애플리케이션이 임시로 생성된 스크립트를 사용하는데, 이는 허용 목록에 추가할 수 없으며 그렇게 하지 않으면 문제가 발생할 수 있습니다. 이 내용이 다른 사람들에게 도움이 된다면 기꺼이 다시 검토해 보겠습니다(또는 최소한 옵션으로 만들겠습니다).
santactl
명령줄 클라이언트에는 관리 서버와 동기화하기 위한 플래그가 포함되어 있습니다. 이 플래그는 머신에서 발생한 이벤트를 업로드하고 새 규칙을 다운로드합니다. 동기화할 수 있는 여러 오픈 소스 서버가 있습니다.
또는 santactl
(동기화 서버 없이) 로컬로 규칙을 구성할 수 있습니다.
산타와 같은 도구는 실제로 스크린샷을 찍는 데 적합하지 않으므로 대신 여기에 비디오가 있습니다.
이 프로젝트에 대한 패치는 매우 환영받습니다. CONTRIBUTING 문서를 참조하세요.
이것은 공식 Google 제품이 아닙니다 .