Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
stringsifter — Uno strumento di machine learning che classifica le stringhe in base alla loro rilevanza per l'analisi di malware. | Kitploit
Strumenti/GitHubGitHub/mandiant/stringsifter
Reverse EngineeringAnalisi MalwareAnalisi di BinariMachine Learning
GitHubmandiant/stringsifter

stringsifter

Uno strumento di machine learning che classifica le stringhe in base alla loro rilevanza per l'analisi di malware.

Vedi Repository
7611261 mese faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

StringSifter è uno strumento di machine learning che classifica automaticamente le stringhe in base alla loro rilevanza per l'analisi di malware.

Collegamenti rapidi

  • Articolo tecnico del blog - Learning to Rank Strings Output for Speedier Malware Analysis
  • Annuncio del blog - Open Sourcing StringSifter
  • Talk al DerbyCon - StringSifter: Learning to Rank Strings Output for Speedier Malware Analysis
  • Versioni di StringSifter su PyPi

Utilizzo

StringSifter richiede Python 3.9 o versioni successive. Esegui i seguenti comandi per ottenere il codice, eseguire i test unitari e utilizzare lo strumento:

Installazione

root@kitploit:~
pip install stringsifter

Per lo sviluppo, usa poetry:

root@kitploit:~
git clone https://github.com/mandiant/stringsifter.git
cd stringsifter
poetry install --with dev

Esecuzione dei test unitari

Per eseguire i test unitari dalla directory di installazione di StringSifter:

root@kitploit:~
poetry run tests -v

Esecuzione da riga di comando

Il comando pip install installa due script eseguibili, flarestrings e rank_strings, nell'ambiente Python. Quando sviluppi dal sorgente, usa pipenv run flarestrings e pipenv run rank_strings.

flarestrings riproduce le funzionalità di strings di GNU binutils, mentre rank_strings accetta input tramite pipe, ad esempio:

root@kitploit:~
flarestrings <my_sample> | rank_strings

rank_strings supporta numerosi argomenti da riga di comando. L'argomento posizionale input_strings specifica un file di stringhe da classificare. Gli argomenti opzionali sono:

Le stringhe classificate vengono scritte sullo standard output, a meno che non venga specificata l'opzione --batch, che fa sì che gli output classificati vengano scritti in file denominati <input_file>.ranked_strings.

flarestrings supporta l'opzione -n (o --min-len) per stampare sequenze di caratteri lunghe almeno min-len caratteri, invece del valore predefinito 4. Ad esempio:

root@kitploit:~
flarestrings -n 8 <my_sample> | rank_strings

stamperà e classificherà solo le stringhe di lunghezza pari o superiore a 8.

Esecuzione da un container Docker

  • Dopo aver clonato il repository, crea il container. Dalla directory principale del pacchetto:
root@kitploit:~
docker build -t stringsifter -f docker/Dockerfile .
  • Esegui il container con l'argomento flarestrings o rank_strings per usare il rispettivo comando. I comandi containerizzati possono essere usati nelle pipeline:
root@kitploit:~
cat <my_sample> | docker run -i stringsifter flarestrings | docker run -i stringsifter rank_strings
  • Oppure esegui il container senza argomenti per ottenere un prompt della shell, usando il flag -v per esporre una directory dell'host al container:
root@kitploit:~
docker run -v <my_malware>:/samples -it stringsifter

dove <my_malware> contiene i campioni da analizzare, ad esempio:

root@kitploit:~
docker run -v $HOME/malware/binaries:/samples -it stringsifter
  • Al prompt del container:
root@kitploit:~
flarestrings /samples/<my_sample> | rank_strings <options>

Tutti gli argomenti da riga di comando sono supportati negli script containerizzati.

Esecuzione su output FLOSS

StringSifter può essere applicato a elenchi arbitrari di stringhe, risultando utile per i professionisti che desiderano trarre informazioni da fonti alternative di raccolta intelligence, come dump di memoria live, esecuzioni in sandbox o binari che contengono stringhe offuscate. Ad esempio, FireEye Labs Obfuscated Strings Solver (FLOSS) estrae stringhe stampabili proprio come Strings, ma rivela inoltre stringhe offuscate che sono state codificate, impacchettate o costruite manualmente sullo stack. Può essere usato come sostituto diretto di Strings, il che significa che StringSifter può essere invocato analogamente sull'output di FLOSS usando il seguente comando:

root@kitploit:~
$PY2_VENV/bin/floss –q <options> <my_sample> | rank_strings <options>

Note:

  1. L'argomento –q sopprime le intestazioni e la formattazione per mostrare solo le stringhe estratte. Per saperne di più sulle opzioni aggiuntive di FLOSS, consulta la sua documentazione sull'uso.
  2. FLOSS richiede Python 2, mentre StringSifter richiede Python 3. Nel comando di esempio, almeno uno tra floss e rank_strings deve includere un percorso relativo che fa riferimento a un ambiente virtuale Python.
  3. FLOSS può essere scaricato come eseguibile autonomo. In questo caso non è necessario specificare un ambiente Python poiché l'eseguibile non dipende da un interprete Python.

Note sull'esecuzione di strings

Questa distribuzione include il programma flarestrings per garantire un output prevedibile su tutte le piattaforme. Se scegli di usare il comando strings installato sul sistema, tieni presente che le sue opzioni non sono coerenti tra versioni e piattaforme:

Linux

La maggior parte delle distribuzioni Linux include il programma strings di GNU Binutils. Per estrarre sia le stringhe "wide" che quelle "narrow", il programma deve essere eseguito due volte, reindirizzando l'output su un file:

root@kitploit:~
strings <my_sample>       > strs.txt   # narrow strings
strings -el <my_sample>  >> strs.txt   # wide strings.  note the ">>"

MacOS

Alcune versioni di BSD strings incluse in MacOS non supportano le stringhe "wide". Nota anche che l'opzione -a per scansionare l'intero file potrebbe essere disabilitata nella configurazione predefinita. Senza -a, le stringhe informative potrebbero andare perse. Consigliamo di installare GNU Binutils tramite Homebrew o MacPorts per ottenere una versione di strings che supporti i caratteri "wide". Fare attenzione a invocare la versione corretta di strings.

Windows

strings non è installato per impostazione predefinita su Windows. Consigliamo di installare Windows Sysinternals, Cygwin o Malcode Analyst Pack per ottenere un strings funzionante.

Discussione

Questa versione di StringSifter è stata addestrata usando output di Strings provenienti da binari malware campionati associati al primo dataset EMBER. Le etichette ordinali sono state generate tramite procedure di weak supervision, e l'apprendimento supervisionato è eseguito da Gradient Boosted Decision Trees con una funzione obiettivo learning-to-rank. Per ulteriori dettagli tecnici, vedi Collegamenti rapidi. Tieni presente che attualmente non sono disponibili né dati etichettati né codice di addestramento, anche se potremmo riconsiderare questo approccio nelle versioni future.

Segnalazione dei problemi

Utilizziamo GitHub Issues per segnalare bug e richieste di funzionalità.

Riconoscimenti

  • Grazie ai team FireEye Data Science (FDS) e FireEye Labs Reverse Engineering (FLARE) per la revisione e il feedback.
  • StringSifter è stato progettato e sviluppato da Philip Tully (FDS), Matthew Haigh (FLARE), Jay Gibble (FLARE) e Michael Sikorski (FLARE).
  • Il logo di StringSifter è stato progettato da Josh Langner (FLARE).
  • flarestrings deriva dall'ottimo strumento FLOSS.
Scarica lo strumento
Opzione
Significato
--scores (-s)Includi i punteggi di classificazione nell'output
--limit (-l)Limita l'output alle prime limit stringhe classificate
--min-score (-m)Limita l'output alle stringhe con punteggio >= min-score
--batch (-b)Specifica una cartella di output di strings per l'elaborazione in batch