
Uno strumento di enumerazione per macOS ispirato allo strumento di enumerazione Seatbelt basato su Windows di harmjoy. Autore: Cedric Owens
SwiftBelt è un enumeratore per macOS ispirato allo strumento di enumerazione Seatbelt basato su Windows di @harmjoy. SwiftBelt non utilizza utility da riga di comando, ma usa codice Swift (sfruttando il Cocoa Framework, le librerie Foundation, le librerie OSAKit, ecc.) per eseguire l'enumerazione del sistema. Può essere sfruttato dal lato offensivo per effettuare enumerazione una volta ottenuto l'accesso a un host macOS. Volutamente non ho incluso funzioni che causano pop-up (es: enumerazione del portachiavi).
Grazie a Ramos04 per aver contribuito con codice per la ricerca di vari strumenti di Objective See e a mattreduce per aver contribuito con codice per la cronologia di zshell e le credenziali di Azure.

Assicurati che swift sia installato sul tuo host macOS
Da un terminale, esegui cd nella directory di SwiftBelt e lancia: "swift build" per generare il binario. Il binario verrà creato nella cartella .build/debug all'interno della cartella SwiftBelt e si chiamerà SwiftBelt
Copia nell'host desiderato e cancella l'attributo di quarantena ($ xattr -c SwiftBelt) e imposta come eseguibile ($ chmod +x SwiftBelt)
Esegui
Opzioni di SwiftBelt:
-CheckFDA --> Controlla l'accesso completo al disco (senza generare un prompt TCC per l'utente, anche se a Terminal non sono state concesse autorizzazioni TCC). Lo fa cercando TCC.db tramite query API Spotlight. Restituisce se FDA è già stato concesso al contesto della tua app o meno.
-SecurityTools --> Controlla la presenza di comuni strumenti di sicurezza macOS (almeno quelli che conosco)
-SystemInfo --> Controlla il contesto di esecuzione corrente, l'accesso TCC Accessibility, informazioni di base sul sistema, ora dell'ultimo avvio, tempo di inattività, informazioni se lo schermo è attualmente bloccato o meno e variabili d'ambiente
-LockCheck --> Controlla se lo schermo è attualmente bloccato o meno (ho aggiunto questo controllo separatamente, oltre a includerlo in SystemInfo)
-SearchCreds --> Cerca credenziali ssh/aws/azure/gcloud
-Clipboard --> Scarica il contenuto degli appunti
-RunningApps --> Elenca tutte le app in esecuzione
-ListUsers --> Elenca gli account utente locali
-LaunchAgents --> Elenca i launch agent, i launch daemon e i file dei profili di configurazione
-BrowserHistory --> Tenta di estrarre la cronologia di Safari, Firefox, Chrome e Quarantine (nota: se Chrome o Firefox è in esecuzione attiva, lo strumento non sarà in grado di leggere il database bloccato per estrarre informazioni. Tuttavia, il db bloccato può essere copiato altrove e letto da lì).
-SlackExtract --> Controlla se Slack è presente e, in caso affermativo, legge le informazioni su cookie, download e workspace (si basa sulla ricerca di Cody Thomas)
-ShellHistory --> Legge il contenuto della cronologia della shell (Bash o Zsh)
-Bookmarks --> Legge i segnalibri salvati di Chrome
-ChromeUsernames --> Legge da ~/Library/Application Support/Google/Chrome/Default/Login Data, che memorizza gli URL insieme ai nomi utente per ciascuno
-UniversalAccessAuth --> Legge da /Library/Preferences/com.apple.universalaccessAuthWarning.plist per mostrare un elenco di applicazioni per cui l'utente ha ricevuto richieste di autorizzazione, insieme a 1 (per accettare) o 2 (per rifiutare)
-StickieNotes --> Legge il contenuto di eventuali file di note adesive aperti sul sistema
-TextEditCheck --> Controlla la presenza di documenti TextEdit non salvati e tenta di leggere il contenuto dei file
-JupyterCheck --> Controlla la presenza del database della cronologia di ipython (che Jupyter notebook utilizza) e, se trovato, legge il contenuto (che include i comandi Python eseguiti)
Per eseguire tutte le opzioni:
./SwiftBelt
Per specificare determinate opzioni:
./SwiftBelt [opzione1] [opzione2] [opzione3]...
Esempio:
./SwiftBelt -SystemInfo -Clipboard -SecurityTools ...
Sebbene questo strumento non utilizzi utility da riga di comando (facili da rilevare), legge diversi file dal sistema che possono essere rilevati da qualsiasi strumento che sfrutti l'Endpoint Security Framework (in particolare, queste letture di file vengono catturate dagli eventi ES_EVENT_TYPE_NOTIFY_OPEN all'interno di ESF).