
harmjoy의 Windows 기반 Seatbelt 열거 도구에서 영감을 받은 macOS 열거 도구입니다. 저자: Cedric Owens
SwiftBelt는 @harmjoy의 Windows 기반 Seatbelt 열거 도구에서 영감을 받은 macOS 열거 도구입니다. SwiftBelt는 명령줄 유틸리티를 사용하지 않고 대신 Swift 코드(Cocoa Framework, Foundation 라이브러리, OSAKit 라이브러리 등 활용)를 사용하여 시스템 열거를 수행합니다. 이는 공격 측면에서 macOS 호스트에 액세스한 후 열거를 수행하는 데 활용될 수 있습니다. 팝업을 발생시키는 기능(예: 키체인 열거)은 의도적으로 포함하지 않았습니다.
Ramos04님께서 다양한 Objective See 도구를 찾는 코드를, mattreduce님께서 zshell 기록 및 azure 자격 증명 코드를 기여해 주셔서 감사드립니다.

macOS 호스트에 Swift가 설치되어 있는지 확인하십시오.
터미널에서 SwiftBelt 디렉터리로 이동하여 "swift build"를 실행하여 바이너리를 생성하십시오. 바이너리는 SwiftBelt 폴더 내의 .build/debug 폴더에 SwiftBelt라는 이름으로 생성됩니다.
원하는 호스트로 복사하고 격리 속성을 제거한 후($ xattr -c SwiftBelt) 실행 가능하도록 설정하십시오($ chmod +x SwiftBelt).
실행하십시오.
SwiftBelt 옵션:
-CheckFDA --> 전체 디스크 액세스 권한 확인(Terminal에 TCC 권한이 부여되지 않은 경우에도 사용자에게 TCC 프롬프트를 생성하지 않음). Spotlight DB API 쿼리를 사용하여 TCC.db를 검색하여 수행합니다. 앱 컨텍스트에 이미 FDA가 부여되었는지 여부를 반환합니다.
-SecurityTools --> 일반적인 macOS 보안 도구(적어도 제가 알고 있는 것들)의 존재 여부 확인
-SystemInfo --> 현재 실행 컨텍스트, TCC 접근성 액세스, 기본 시스템 정보, 마지막 부팅 시간, 유휴 시간, 화면이 현재 잠겨 있는지 여부, 환경 변수 정보 확인
-LockCheck --> 화면이 현재 잠겨 있는지 여부 확인(별도 확인으로 추가했으며 SystemInfo에도 포함됨)
-SearchCreds --> ssh/aws/azure/gcloud 자격 증명 검색
-Clipboard --> 클립보드 내용 덤프
-RunningApps --> 실행 중인 모든 앱 목록 표시
-ListUsers --> 로컬 사용자 계정 목록 표시
-LaunchAgents --> 실행 에이전트, 실행 데몬 및 구성 프로필 파일 목록 표시
-BrowserHistory --> Safari, Firefox, Chrome 및 Quarantine 기록 가져오기 시도(참고: Chrome이나 Firefox가 실행 중이면 잠긴 데이터베이스에서 정보를 읽을 수 없음). 그러나 잠긴 DB를 다른 곳에 복사하여 읽을 수 있음.
-SlackExtract --> Slack이 있는지 확인하고, 있으면 쿠키, 다운로드, 작업 공간 정보 읽기(Cody Thomas의 연구 활용)
-ShellHistory --> 셸(Bash 또는 Zsh) 기록 내용 읽기
-Bookmarks --> Chrome 저장된 북마크 읽기
-ChromeUsernames --> ~/Library/Application Support/Google/Chrome/Default/Login Data에서 각 URL 및 사용자 이름 정보 읽기
-UniversalAccessAuth --> /Library/Preferences/com.apple.universalaccessAuthWarning.plist에서 사용자가 권한 부여 프롬프트를 받은 애플리케이션 목록과 함께 1(허용) 또는 2(거부) 표시를 읽음
-StickieNotes --> 시스템에 열려 있는 모든 Stickie Note 파일의 내용 읽기
-TextEditCheck --> 저장되지 않은 TextEdit 문서 확인 및 파일 내용 읽기 시도
-JupyterCheck --> ipython 기록 DB(Jupyter 노트북이 사용)의 존재 여부 확인 및 발견 시 내용 읽기(실행된 Python 명령 포함)
모든 옵션 실행:
./SwiftBelt
특정 옵션 지정:
./SwiftBelt [옵션1] [옵션2] [옵션3]...
예시:
./SwiftBelt -SystemInfo -Clipboard -SecurityTools ...
이 도구는 탐지하기 쉬운 명령줄 유틸리티를 사용하지 않지만, 시스템의 여러 파일을 읽습니다. 이는 Endpoint Security Framework를 활용하는 도구에 의해 탐지될 수 있습니다(특히 ESF 내 ES_EVENT_TYPE_NOTIFY_OPEN 이벤트에서 이러한 파일 읽기가 포착됨).