
Ispeziona visivamente e forza la decodifica delle corrispondenze YARA e regex trovate in dati binari e di testo con colori. Moltissimi colori.

Ispeziona visivamente tutte le corrispondenze regex (e i loro cugini più intriganti e misteriosi, le corrispondenze YARA) trovate in dati binari e/o testo. Scopri cosa succede quando forzi varie codifiche di caratteri su quei byte corrispondenti. A colori.
pipx install yaralyzer
# Scansiona con definizioni YARA da un file:
yaralyze --yara-rules /secret/vault/sigmunds_malware_rules.yara lacan_buys_the_dip.pdf
# Scansiona con un'espressione regolare arbitraria:
yaralyze --regex-pattern 'good and evil.*of\s+\w+byte' --regex-modifier wide the_crypto_archipelago.exe
# Scansiona con un pattern YARA esadecimale arbitrario:
yaralyze --hex-pattern 'd0 93 d0 a3 d0 [-] 9b d0 90 d0 93' one_day_in_the_life_of_ivan_cryptosovich.bin
'/.+/' e ottenere immediatamente una finestra su tutti i byte del file che si trovano tra barre oblique. Stessa storia per virgolette, BOM, ecc. Qualsiasi regex gestibile da YARA è supportata, quindi il cielo è il limite.chardet è una libreria sofisticata per indovinare le codifiche dei caratteri e viene sfruttata qui.chardet verrà anche sfruttato per vedere se i byte corrispondono al pattern di qualsiasi codifica conosciuta. Se chardet è abbastanza confidente (configurabile), verrà visualizzato un tentativo di decodifica dei byte usando quella codifica.La funzionalità di Yaralyzer è stata estratta da The Pdfalyzer quando è diventato evidente che visualizzare e decodificare pattern match nei binari avesse più utilità che solo in uno strumento di analisi PDF.
YARA, per chi non lo sapesse1, è presentato come uno strumento di analisi/alerting malware, ma in realtà è sia molto di più che molto di meno. Un modo per pensarci è che YARA è un motore di matching di espressioni regolari potenziato. Può localizzare corrispondenze regex in binari come qualsiasi motore regex, ma può anche fare cose molto più strane, come combinare regex in gruppi logici, confrontare regex con tutte le 256 versioni XORate di un binario, cercare codifiche base64 e altre codifiche del pattern, e altro ancora. Forse la cosa più importante è che YARA fornisce un formato testuale standard per condividere queste regex potenziate con il mondo. Tutte queste funzionalità sono particolarmente utili quando si analizza o si fa reverse engineering di malware, i cui autori tendono a investire molto tempo per rendere le cose difficili da trovare.
Ma... è anche tutto ciò che YARA fa. Tutto il resto è a carico dell'utente. YARA è solo un motore di match e se non sai cosa matchare (o nemmeno quale codifica di caratteri potresti essere in grado di matchare), ti porta solo fino a un certo punto. Mi sono trovato un po' frustrato cercando di usare YARA per osservare tutte le corrispondenze di alcuni pattern critici:
\".+\" e \'.+\')/.+/). Le barre oblique delimitano un'espressione regolare in molte implementazioni e stavo cercando di vedere se alcuni dei byte che matchavano questo pattern fossero effettivamente regex.YARA ti dice solo la posizione del byte e la stringa matchata, ma non può dirti se quei byte sono UTF-8, UTF-16, Latin-1, ecc. ecc. (o nessuno di questi). Volevo anche capire cosa stava succedendo nella regione dei byte matchati e non solo nei byte matchati. In altre parole, volevo esaminare i byte immediatamente prima e dopo qualsiasi cosa fosse stata matchata.
Ecco che arriva The Yaralyzer, che ti permette di scansionare rapidamente le regioni attorno ai match, mostrandoti anche come apparirebbero quelle regioni se fossero forzate in varie codifiche di caratteri.
The Yaralyzer non è uno strumento di reverse engineering di malware. Non può fare le cose che fa uno strumento come CyberChef e non ci prova. È più pensato per darti una rapida panoramica visiva delle regioni sospette nel binario in modo che tu possa concentrarti sulle aree che potresti voler ispezionare con uno strumento più serio.
Installalo con pipx o pip3. pipx è una soluzione leggermente migliore in quanto garantisce che qualsiasi pacchetto installato con esso sia isolato dal resto del tuo ambiente Python locale. Ovviamente, se non hai un vero ambiente Python locale, questo punto è irrilevante e puoi tranquillamente installare con pip/pip3.
pipx install yaralyzer
Esegui yaralyze -h per vedere le opzioni della riga di comando (screenshot sotto).

Per informazioni sull'esportazione di immagini SVG, HTML, ecc., vedi Output di esempio.
Se inserisci un file chiamato .yaralyzer nella tua home directory o nella directory di lavoro corrente, le variabili d'ambiente specificate in quel file .yaralyzer verranno aggiunte all'ambiente ogni volta che yaralyzer viene invocato. Ciò fornisce un meccanismo per configurare permanentemente varie opzioni della riga di comando in modo da evitare di doverle digitare ripetutamente. Vedi i commenti nel file di esempio .yaralyzer.example per maggiori informazioni.
Verrà caricato un solo file .yaralyzer e il .yaralyzer della directory di lavoro ha la precedenza su quello della home directory.
Yaralyzer è la classe principale. La documentazione generata automaticamente per le varie classi e metodi di Yaralyzer può essere trovata qui. Ha una varietà di costruttori alternativi che supportano:
.yara in una directorybytesSe desideri iterare sugli oggetti BytesMatch (come un oggetto re.Match per una corrispondenza YARA) e BytesDecoder (tiene traccia delle statistiche dei tentativi di decodifica) usati da The Yaralyzer, puoi farlo in questo modo:
from yaralyzer.yaralyzer import Yaralyzer
yaralyzer = Yaralyzer.for_rules_files(['/secret/rule.yara'], 'lacan_buys_the_dip.pdf')
for bytes_match, bytes_decoder in yaralyzer.match_iterator():
do_stuff()
Se ottieni un yara.Error con un codice di errore numerico, puoi controllare cosa potrebbe significare quel codice qui.
The Yaralyzer può esportare visualizzazioni in HTML, testo ANSI colorato e immagini vettoriali PNG e SVG utilizzando la funzionalità di esportazione file fornita da Rich, oltre a un formato JSON testuale semplice (alquanto limitato).
Se vuoi esportare immagini .png come quelle qui sotto direttamente da Yaralyzer, devi fare una di queste cose:
brew install --cask inkscape)img extra quando installi Yaralyzer, che installerà cairosvg: pipx install yaralyzer[img]. Dovrai anche installare manualmente l'eseguibile CairoSVG in modi diversi a seconda del tuo sistema operativo, vedi la documentazione di CairoSVG per i dettagli.Secondo la nostra esperienza, sia Inkscape che CairoSVG funzionano, anche se abbiamo visto alcuni problemi di rendering nell'output generato con CairoSVG sulle SVG renderizzate da Yaralyzer, quindi Inkscape è l'opzione consigliata.


chardet.detect() sulla probabilità che i tuoi byte siano in una data codifica/lingua:
I contributi sono più che benvenuti; consulta CONTRIBUTING.md per i dettagli sulla configurazione dell'ambiente, l'esecuzione della suite di test, ecc. C'è anche un elenco TODO lì sopra del lavoro che deve essere fatto.
Come lo ero fino a poco tempo fa. ↩