
Analisi automatica di file SWF basata su alcune euristiche. Estensibile tramite plugin.
NOTA: Le seguenti istruzioni sono per Python3.
Se devi installare FLASHMINGO su Python2.7 puoi controllare il rilascio 1.0 nella scheda releases. I passaggi di installazione sono essenzialmente gli stessi.
Installa i pacchetti Python3 elencati in requirements.txt.
Puoi usare il seguente comando: pip3 install -r requirements.txt
Se vuoi utilizzare la funzionalità di decompilazione devi installare Jython. Gli utenti Ubuntu/Debian possono eseguire apt install jython
Clona il progetto o scarica il file zip.
FLASHMINGO è un framework di analisi per file SWF. Lo strumento classifica automaticamente i file Flash sospetti e guida il processo di analisi successivo, liberando risorse preziose nel tuo team. Puoi facilmente incorporare i moduli di analisi di FLASHMINGO nel tuo flusso di lavoro.
Ancora oggi gli investigatori forensi e gli analisti di malware devono affrontare file SWF sospetti. Se la storia si ripete, la minaccia alla sicurezza potrebbe persino diventare più grande oltre la fine del supporto di Flash nel 2020. I sistemi continueranno a supportare un formato di file legacy che non verrà più aggiornato con patch di sicurezza. L'automazione è il modo migliore per affrontare questo problema ed è qui che FLASHMINGO può aiutarti. FLASHMINGO è un framework di analisi per elaborare automaticamente file SWF che ti consente di contrassegnare campioni Flash sospetti e analizzarli con il minimo sforzo. Si integra in vari flussi di lavoro di analisi come applicazione standalone o come potente libreria. Gli utenti possono facilmente estendere le funzionalità dello strumento tramite plugin Python personalizzati.
FLASHMINGO è progettato con la semplicità in mente. Legge un file SWF e crea un oggetto (SWFObject) che ne rappresenta il contenuto e la struttura. Successivamente FLASHMINGO esegue una serie di plugin che agiscono su questo SWFObject e restituiscono i loro valori al programma principale.
Di seguito un diagramma di flusso ASCII obbligatorio:
+----------+
| |
+------------+----------->+ PLUGIN 1 +------------+
| | | | |
| | +----------+ |
| | |
| | +----------+ |
| | | | |
+---------+ | +----------->+ PLUGIN 2 +--------+ |
|SWF FILE +----------->+ FLASHMINGO | | | | |
+---------+ | | +----------+ | |
| | | |
| | | |
| | +-----v---v-+
| | | |
| | | |
+-----+------+------------------------->+ SWFOBJECT |
^ | |
| | |
| +-----+-----+
| |
| |
| |
+---------------------------------------+
Quando si utilizza FLASHMINGO come libreria nei propri progetti, ci si deve occupare solo di due tipi di oggetti:
SWFObject, che rappresentano i campioniFlashmingo. Questo agisce essenzialmente come un ponte che collega plugin e oggetti SWFObject.I plugin di FLASHMINGO sono memorizzati nelle proprie directory sotto... hai indovinato: plugins
Quando un oggetto Flashmingo viene istanziato, attraversa questa directory ed elabora tutti i manifest dei plugin. Se questo indica che il plugin è attivo, viene registrato per un uso successivo. A livello di codice, ciò significa che un piccolo dizionario plugin_info viene aggiunto alla lista plugins.
I plugin vengono richiamati tramite l'API run_plugin con due argomenti:
SWFObjectOpzionalmente, la maggior parte dei plugin ti permette di passare i tuoi dati utente. Questo dipende dal plugin (leggere la documentazione) e può essere spiegato più facilmente con un esempio.
Il plugin predefinito SuspiciousNames cercherà in tutti i pool costanti delle stringhe contenenti sottostringhe sospette (ad esempio: 'overflow', 'spray', 'shell', ecc.) Esiste già un elenco di sottostringhe comuni codificate nel plugin in modo che possa essere utilizzato così com'è. Tuttavia, puoi passare un elenco di sottostringhe definite da te, in questo caso tramite il parametro names.
Esempio di codice:
fm = Flashmingo()
print fm.run_plugin('DangerousAPIs', swf=swf)
print fm.run_plugin('SuspiciousNames', swf=swf, names=['spooky'])
FLASHMINGO viene fornito con alcuni plugin utili pronti all'uso:
Un plugin template è fornito per uno sviluppo facile. Estendere FLASHMINGO è piuttosto semplice. Segui questi semplici passaggi:
runSei pronto per partire :)
docs per la documentazione autogenerata$ pip install sphinxcontrib-napoleon
Dopo aver configurato Sphinx per costruire la tua documentazione, abilita napoleon nel file conf.py di Sphinx:
In conf.py, aggiungi napoleon alla lista delle estensioni
extensions = ['sphinxcontrib.napoleon']
Usa sphinx-apidoc per costruire la tua documentazione API:
$ sphinx-apidoc -f -o docs/source projectdir
Questo crea file .rst che Sphinx elaborerà
$ make html
Tutto qui! :)