
Script PowerShell che aiuta gli Incident Responder a scoprire potenziali meccanismi di persistenza degli avversari.
Trawler è uno script PowerShell progettato per aiutare gli Incident Responder a scoprire potenziali indicatori di compromissione su host Windows, focalizzato principalmente su meccanismi di persistenza tra cui Attività pianificate, Servizi, Modifiche al Registro di sistema, Elementi di avvio, Modifiche ai binari e altro ancora.
Attualmente, trawler è in grado di rilevare la maggior parte delle tecniche di persistenza specificamente indicate da MITRE e Atomic Red Team, con rilevamenti aggiunti regolarmente.
Basta scaricare ed eseguire trawler.ps1 da un prompt PowerShell/cmd amministrativo: tutti i rilevamenti verranno visualizzati nella console e scritti in un CSV ('detections.csv') nella directory di lavoro corrente. Il CSV generato conterrà Nome Rilevamento, Fonte, Rischio, Metadati e la relativa tecnica MITRE.
Oppure usa questo one-liner da un terminale PowerShell amministrativo:
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/joeavanzato/Trawler/main/trawler.ps1'))
Alcuni rilevamenti hanno liste di autorizzazione integrate per aiutare a rimuovere il rumore dalle configurazioni Windows predefinite (10/2016/2019/2022) - attività pianificate, servizi, ecc. previsti. Naturalmente, è sempre possibile che gli aggressori li dirottino direttamente e si mascherino con grande dettaglio come un processo predefinito del sistema operativo - fare attenzione a utilizzare più forme di analisi e rilevamento quando si ha a che fare con avversari esperti.
Se hai esempi o idee per rilevamenti aggiuntivi, sentiti libero di inviare una Issue o una PR con i dettagli tecnici/riferimenti pertinenti - la base di codice è un po' disordinata al momento e verrà ripulita nel tempo.
Inoltre, se identifichi falsi positivi evidenti, fammelo sapere aprendo un'issue o una PR su GitHub! I colpevoli più probabili per questo saranno COM, servizi o attività non standard.
-scanoptions : Tab-through for possible detections and select a sub-set using comma-delimited terms (eg. .\trawler.ps1 -scanoptions Services,Processes) or skip to do all detections
-quiet : Suppress Detection output to console
-snapshot : Path to a previous trawler JSON output to use as an allow-list.
-outpath : Define a custom file-path for saving detection output to (defaults to "$PSScriptRoot\detections.csv")
-drivetarget : Define the variable for a mounted target drive (eg. .\trawler.ps1 -targetdrive "D:") - (defaults to local system)
-daysago : Define how many 'days back' we want to take into consideration for time-based detections (defaults to 45)
-hashmode : Define which hashing algorithm we want to use for supported detections - supports sha1, md5 or sha256 (defaults to sha1)
-evtx : Enable creation of Event Log Source and Writing of Detections to Application event log under Source=trawler with EID=9001 (default is disabled)
PersistenceSniper è uno strumento fantastico - l'ho usato pesantemente in passato - ma ci sono alcuni punti chiave che differenziano queste utility
Nel complesso, questi strumenti sono estremamente simili ma affrontano il problema da angolazioni leggermente diverse - PersistenceSniper fornisce tutte le informazioni all'analista per la revisione, mentre Trawler cerca di limitare ciò che viene restituito ai soli risultati che probabilmente sono potenziali meccanismi di persistenza avversari. Di conseguenza, c'è la possibilità di falsi negativi con trawler se un avversario imita completamente un elemento presente nella lista di autorizzazione.
Ad esempio - PersistenceSniper restituirà tutti i servizi Windows 'non sicuri' mentre trawler restituirà solo quelli che corrispondono a una regola di rilevamento specifica, ecc.
Trawler supporta il caricamento di una lista di autorizzazione da un 'snapshot' - per farlo sono necessari due passaggi.
Ecco fatto - tutti i rilevamenti pertinenti attingeranno quindi dal file snapshot come lista di autorizzazione per ridurre il rumore e identificare eventuali modifiche all'immagine di base che potrebbero essere avvenute.
(L'allow-listing è implementata per la maggior parte dei controlli ma non per tutti - ancora in fase di implementazione attiva)
Spesso durante un'indagine, gli analisti possono finire per montare una nuova unità che rappresenta un dispositivo Windows clonato - Trawler ora supporta parzialmente la scansione di queste unità montate attraverso l'uso del parametro '-drivetarget'.
In fase di esecuzione, Trawler reindirizzerà le variabili temporanee a livello di script per l'uso nel controllo degli artefatti basati su file e tenterà anche di caricare i relativi hive del registro (HKLM\SOFTWARE, HKLM\SYSTEM, NTUSER.DAT, USRCLASS.DAT) sotto HKLM/HKU e preceduti da 'ANALYSIS_'. Trawler tenterà anche di scaricare questi hive caricati temporaneamente al completamento dello script.