
FileInsight-plugins: cassetta degli attrezzi di decodifica dell'editor esadecimale McAfee FileInsight per l'analisi malware
FileInsight-plugins è un vasto insieme di plugin per l'editor esadecimale McAfee FileInsight. Aggiunge molte funzionalità come decifratura, decompressione, ricerca di stringhe di testo XORate, scansione con una regola YARA, emulazione di codice, disassemblaggio e altro ancora! È utile per vari tipi di attività di decodifica nell'analisi malware (ad esempio estrarre eseguibili malware e documenti esca da file di documenti dannosi).
Per chi cerca l'installer di FileInishgt, è disponibile su https://downloadcenter.trellix.com/products/mcafee-avert/fileinsight.msi.
Screenshots
Dialogo del plugin "AES decrypt"

Risultato della scansione del plugin "YARA scan"

Struttura dati del file eseguibile ELF analizzato dal plugin "Parse file structure"

Traccia di emulazione di shellcode ARM64 Linux emulato dal plugin "Emulate code"

Output di disassemblaggio di shellcode x86 Linux disassemblato dal plugin "Disassemble"

Rappresentazione bitmap del file eseguibile Windows visualizzato dal plugin "Bitmap view"

Istogramma dei byte del file Excel mostrato dal plugin "Byte histogram"

Grafico di entropia del file eseguibile Windows mostrato dal plugin "Entropy graph"

Presentazioni
Black Hat USA 2021 Arsenal
CODE BLUE 2019 Bluebox
Casi d'uso
Come installare
Eseguire il seguente comando. Verranno installate l'ultima versione rilasciata di FileInsight-plugins e i prerequisiti, inclusi FileInsight e Python 3.12.x (x64).
powershell -exec bypass -command "IEX((New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/nmantani/FileInsight-plugins/master/install.ps1'))"
Se si utilizza un server proxy (ad esempio, indirizzo IP: 10.0.0.1, porta: 8080), eseguire i seguenti comandi.
curl -x http://10.0.0.1:8080 -Lo install.ps1 https://raw.githubusercontent.com/nmantani/FileInsight-plugins/master/install.ps1
powershell -exec bypass .\install.ps1
Ci sono alcuni moduli Python che richiedono installazione manuale. Seguire le istruzioni di installazione visualizzate dai plugin.
Come usare
Fare clic su "Operations" nella scheda "Plugins" quindi selezionare un plugin.
È anche possibile utilizzare i plugin dal menu contestuale.

Alcuni plugin mostrano una finestra di dialogo aggiuntiva per le impostazioni al momento dell'uso.

Come aggiornare
Se si desidera aggiornare FileInsight-plugins all'ultima versione rilasciata, fare clic su "Check for update" nel menu dei plugin. Lo script PowerShell di installazione (https://raw.githubusercontent.com/nmantani/FileInsight-plugins/master/install.ps1) verrà eseguito se è disponibile una nuova versione. I file esistenti verranno sovrascritti.

È anche possibile aggiornare con il seguente comando ("Check for update" esegue questo comando).
powershell -exec bypass -command "& ([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/nmantani/FileInsight-plugins/master/install.ps1'))) -update"
Se si utilizza un server proxy (ad esempio, indirizzo IP: 10.0.0.1, porta: 8080), eseguire i seguenti comandi.
curl -x http://10.0.0.1:8080 -Lo install.ps1 https://raw.githubusercontent.com/nmantani/FileInsight-plugins/master/install.ps1
powershell -exec bypass .\install.ps1 -update
Se si desidera aggiornare FileInsight-plugins all'ultima snapshot, aggiungere l'opzione "-snapshot".
powershell -exec bypass -command "& ([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/nmantani/FileInsight-plugins/master/install.ps1'))) -update -snapshot"
Personalizzazione
Per i plugin "Send to (CLI)" e "Send to (GUI)", è possibile aprire file con i propri programmi preferiti. Fare clic su "Customize menu" nel menu dei plugin.

Verrà aperto "plugins\Operations\Misc\send_to_cli.json" (per il plugin "Send to (CLI)") o "plugins\Operations\Misc\send_to.json" (per il plugin "Send to (GUI)") con il proprio editor di testo predefinito. Modificare e salvare.

La personalizzazione verrà riflessa nelle voci di menu.

Elenco dei plugin (155 plugin)
Operazioni di base
- Copy to new file
Copia la regione selezionata (l'intero file se non selezionato) in un nuovo file
- Switch file tabs
Cambia le schede dei file con una casella di elenco
- Bookmark
Aggiunge un segnalibro alla regione selezionata con commento e colore specificati
- Cut binary to clipboard
Taglia i dati binari della regione selezionata negli appunti come testo esadecimale
- Copy binary to clipboard
Copia i dati binari della regione selezionata negli appunti come testo esadecimale
- Paste binary from clipboard
Incolla i dati binari (convertiti da testo esadecimale) dagli appunti
- Delete before
Elimina tutta la regione prima della posizione corrente del cursore
- Delete after
Elimina tutta la regione dopo la posizione corrente del cursore
- Fill
Riempie la regione selezionata con un pattern esadecimale specificato
- Invert
Inverte i bit della regione selezionata
- Reverse order
Inverte l'ordine della regione selezionata
- Change endianness
Cambia l'ordinamento dei byte della regione selezionata
- Swap nibbles
Scambia ogni coppia di nibble della regione selezionata
- Swap two bytes
Scambia ogni coppia di byte della regione selezionata
- To upper case
Converte il testo in maiuscolo nella regione selezionata
- To lower case
Converte il testo in minuscolo nella regione selezionata
- Swap case
Inverte il caso del testo nella regione selezionata
Operazioni di compressione
Comprimi
- aPLib
Comprime la regione selezionata con la libreria di compressione aPLib
- Brotli
Comprime la regione selezionata con l'algoritmo Brotli
- Bzip2
Comprime la regione selezionata con l'algoritmo bzip2
- Gzip
Comprime la regione selezionata con il formato gzip
- LZ4
Comprime la regione selezionata con l'algoritmo LZ4
- LZF
Comprime la regione selezionata con l'algoritmo LZF
- LZFSE
Comprime la regione selezionata con l'algoritmo LZFSE
- lzip
Comprime la regione selezionata con il formato lzip
- LZJB
Comprime la regione selezionata con l'algoritmo LZJB
- LZMA
Comprime la regione selezionata con l'algoritmo LZMA
- LZNT1
Comprime la regione selezionata con l'algoritmo LZNT1
- LZO
Comprime la regione selezionata con l'algoritmo LZO
- LZRW1/KH
Comprime la regione selezionata con l'algoritmo LZRW1/KH
- PPMd
Comprime la regione selezionata con l'algoritmo PPMd
- QuickLZ
Comprime la regione selezionata con la libreria di compressione QuickLZ
- Raw deflate
Comprime la regione selezionata con l'algoritmo Deflate senza header e checksum (equivalente a gzdeflate() in PHP)
- Snappy
Comprime la regione selezionata con la libreria di compressione Snappy
- XZ
Comprime la regione selezionata con il formato XZ
- zlib (deflate)
Comprime la regione selezionata con zlib (algoritmo Deflate)
- Zstandard
Comprime la regione selezionata con l'algoritmo Zstandard
Decomprimi
- aPLib
Decomprime la regione selezionata con la libreria di compressione aPLib
- Brotli
Decomprime la regione selezionata con l'algoritmo Brotli
- Bzip2
Decomprime la regione selezionata con l'algoritmo bzip2
- Gzip
Decomprime la regione compressa con gzip selezionata
- LZ4
Decomprime la regione selezionata con l'algoritmo LZ4
- LZF
Decomprime la regione selezionata con l'algoritmo LZF
- LZFSE
Decomprime la regione selezionata con l'algoritmo LZFSE
- lzip
Decomprime la regione compressa con lzip selezionata
- LZJB
Decomprime la regione selezionata con l'algoritmo LZJB
- LZMA
Decomprime la regione selezionata con l'algoritmo LZMA
- LZNT1
Decomprime la regione selezionata con l'algoritmo LZNT1
- LZO
Decomprime la regione selezionata con l'algoritmo LZO
- LZRW1/KH
Decomprime la regione selezionata con l'algoritmo LZRW1/KH
- PPMd
Decomprime la regione selezionata con l'algoritmo PPMd
- QuickLZ
Decomprime la regione selezionata con la libreria di compressione QuickLZ
- Raw inflate
Decomprime la regione compressa con Deflate che non ha header e checksum (equivalente a gzinflate() in PHP)
- Snappy
Decomprime la regione selezionata con la libreria di compressione Snappy
- XZ
Decomprime la regione compressa con XZ selezionata
- zlib (inflate)
Decomprime la regione selezionata con zlib (algoritmo Deflate)
- Zstandard
Decomprime la regione selezionata con l'algoritmo Zstandard
Operazioni crittografiche
Decifra
- AES
Decifra la regione selezionata con AES
- Blowfish
Decifra la regione selezionata con Blowfish
- CAST-128
Decifra la regione selezionata con CAST-128
- Camellia
Decifra la regione selezionata con Camellia
- ChaCha20
Decifra la regione selezionata con ChaCha20
- DES
Decifra la regione selezionata con DES
- RC2
Decifra la regione selezionata con RC2
- RC4
Decifra la regione selezionata con RC4
- RC5
Decifra la regione selezionata con RC5
- RC6
Decifra la regione selezionata con RC6
- Salsa20
Decifra la regione selezionata con Salsa20
- TEA
Decifra la regione selezionata con TEA (Tiny Encryption Algorithm)
- Triple DES
Decifra la regione selezionata con Triple DES
- XTEA
Decifra la regione selezionata con XTEA (eXtended Tiny Encryption Algorithm)
- XXTEA
Decifra la regione selezionata con XXTEA (Corrected Block Tiny Encryption Algorithm)
Cifra
- AES
Cifra la regione selezionata con AES
- Blowfish
Cifra la regione selezionata con Blowfish
- CAST-128
Cifra la regione selezionata con CAST-128
- Camellia
Cifra la regione selezionata con Camellia
- ChaCha20
Cifra la regione selezionata con ChaCha20
- DES
Cifra la regione selezionata con DES
- RC2
Cifra la regione selezionata con RC2
- RC4
Cifra la regione selezionata con RC4
- RC5
Cifra la regione selezionata con RC5
- RC6
Cifra la regione selezionata con RC6
- Salsa20
Cifra la regione selezionata con Salsa20
- TEA
Cifra la regione selezionata con TEA (Tiny Encryption Algorithm)
- Triple DES
Cifra la regione selezionata con Triple DES
- XTEA
Cifra la regione selezionata con XTEA (eXtended Tiny Encryption Algorithm)
- XXTEA
Decifra la regione selezionata con XXTEA (Corrected Block Tiny Encryption Algorithm)
Operazioni di codifica
Decodifica
- Hex text to binary data
Converte il testo esadecimale della regione selezionata in dati binari
- Decimal text to binary data
Converte il testo decimale della regione selezionata in dati binari
- Octal text to binary data
Converte il testo ottale della regione selezionata in dati binari
- Binary text to binary data
Converte il testo binario della regione selezionata in dati binari
- Custom base16 decode
Decodifica la regione selezionata con tabella base16 personalizzata
- Custom base32 decode
Decodifica la regione selezionata con tabella base32 personalizzata
- Custom base58 decode
Decodifica la regione selezionata con tabella base58 personalizzata
- Custom base62 decode
Decodifica la regione selezionata con tabella base62 personalizzata
- Custom base64 decode
Decodifica la regione selezionata con tabella base64 personalizzata
- Custom base85 decode
Decodifica la regione selezionata con tabella base85 personalizzata
- Custom base91 decode
Decodifica la regione selezionata con tabella base91 personalizzata
- Custom base92 decode
Decodifica la regione selezionata con tabella base92 personalizzata
- gob decode
Decodifica la regione selezionata come dati serializzati in gob (formato di serializzazione per golang) in notazione Python
- MessagePack decode
Decodifica la regione selezionata come dati serializzati in MessagePack in JSON
- Protobuf decode
Decodifica la regione selezionata come dati serializzati in Protocol Buffers in JSON senza file .proto
- From quoted printable
Decodifica la regione selezionata come testo quoted-printable
- Unicode unescape
Rimuove l'escape delle sequenze di escape Unicode nella regione selezionata
- URL decode
Decodifica la regione selezionata come testo percent-encoded utilizzato negli URL
Codifica
- Binary data to hex text
Converte i dati binari della regione selezionata in testo esadecimale
- Binary data to decimal text
Converte i dati binari della regione selezionata in testo decimale
- Binary data to octal text
Converte i dati binari della regione selezionata in testo ottale
- Binary data to binary text
Converte i dati binari della regione selezionata in testo binario
- Custom base16 encode
Codifica la regione selezionata con tabella base16 personalizzata
- Custom base32 encode
Codifica la regione selezionata con tabella base32 personalizzata
- Custom base58 encode
Codifica la regione selezionata con tabella base58 personalizzata
- Custom base62 encode
Codifica la regione selezionata con tabella base62 personalizzata
- Custom base64 encode
Codifica la regione selezionata con tabella base64 personalizzata
- Custom base85 encode
Codifica la regione selezionata con tabella base85 personalizzata
- Custom base91 encode
Codifica la regione selezionata con tabella base91 personalizzata
- Custom base92 encode
Codifica la regione selezionata con tabella base92 personalizzata
- MessagePack encode
Codifica il JSON della regione selezionata in dati serializzati MessagePack
- ROT13
Ruota i caratteri alfabetici nella regione selezionata della quantità specificata (default: 13)
- To quoted printable
Codifica la regione selezionata in testo quoted-printable
- Unicode escape
Aggiunge escape ai caratteri Unicode nella regione selezionata
- URL encode
Codifica la regione selezionata in testo percent-encoded utilizzato negli URL
Operazioni varie
- Emulate code
Emula la regione selezionata come eseguibile o shellcode (l'intero file se non selezionato)
- File comparison
Confronta il contenuto di due file
- Hash values
Calcola i valori CRC32, MD5, SHA1, SHA256, ssdeep, TLSH, imphash, impfuzzy, exphash, Rich PE header hash, authentihash, icon MD5, icon dhash, gimphash e telfhash della regione selezionata (l'intero file se non selezionato)
- Send to (CLI)
Invia la regione selezionata (l'intero file se non selezionato) a un altro programma CLI e riceve l'output
- Send to (GUI)
Invia la regione selezionata (l'intero file se non selezionato) a un altro programma GUI
Operazioni di parsing
- Binwalk scan
Scansiona la regione selezionata (l'intero file se non selezionato) per trovare file incorporati
- Disassemble
Disassembla la regione selezionata (l'intero file se non selezionato)
- Extract VBA macro
Estrae la macro VBA di Microsoft Office dalla regione selezionata (l'intero file se non selezionato)
- File type
Identifica il tipo di file della regione selezionata (l'intero file se non selezionato)
- Find PE file
Trova il file PE nella regione selezionata (l'intero file se non selezionato) in base alle informazioni dell'header PE
- Parse file structure
Analizza la struttura del file della regione selezionata (l'intero file se non selezionato) con Kaitai Struct
Formati file supportati: Gzip, RAR, ZIP, ELF, Mach-O, PE, tabella delle partizioni MBR, BMP, GIF, JPEG, PNG, collegamento Windows
- Show metadata
Mostra i metadati della regione selezionata (l'intero file se non selezionato) con ExifTool
- Strings
Estrae stringhe di testo dalla regione selezionata (l'intero file se non selezionato)
- String type
Identifica il tipo di stringhe come chiavi API e indirizzi di portafogli criptovalute nella regione selezionata (l'intero file se non selezionato) con lemmeknow
Operazioni di ricerca
- Regex extraction
Cerca con espressione regolare nella regione selezionata (l'intero file se non selezionato) ed estrae le regioni corrispondenti come un'unica regione concatenata
- Regex search
Cerca con espressione regolare nella regione selezionata (l'intero file se non selezionato) e aggiunge segnalibri alle regioni corrispondenti
- Replace
Cerca con espressione regolare nella regione selezionata (l'intero file se non selezionato) e sostituisce le regioni corrispondenti con i dati specificati
- XOR hex search
Cerca dati XORati / ruotati di bit nella regione selezionata (l'intero file se non selezionato)
- XOR text search
Cerca stringhe XORate / ruotate di bit nella regione selezionata (l'intero file se non selezionato)
- YARA scan
Scansiona la regione selezionata (l'intero file se non selezionato) con YARA.
Operazioni di visualizzazione
- Bitmap view
Visualizza l'intero file come rappresentazione bitmap
- Byte histogram
Mostra l'istogramma dei byte della regione selezionata (l'intero file se non selezionato)
- Entropy graph
Mostra il grafico di entropia della regione selezionata (l'intero file se non selezionato)
Operazioni XOR
- Simple XOR
Applica XOR alla regione selezionata con la chiave XOR specificata
- Decremental XOR
Applica XOR alla regione selezionata decrementando la chiave XOR
- Incremental XOR
Applica XOR alla regione selezionata incrementando la chiave XOR
- Null-preserving XOR
Applica XOR alla regione selezionata saltando i byte nulli e la chiave XOR stessa
- XOR with another file
Applica XOR alla regione selezionata con il contenuto di un altro file come chiave XOR
- XOR with next byte
Applica XOR alla regione selezionata utilizzando il byte successivo come chiave XOR
- XOR with next byte (reverse)
Operazione inversa del plugin "XOR with next byte"
- Guess multibyte XOR keys
Indovina le chiavi XOR multibyte dalla regione selezionata (l'intero file se non selezionato) in base alle chiavi rivelate che sono XORate con 0x00
- Visual encrypt
Codifica la regione selezionata con l'algoritmo di cifratura visiva utilizzato dal trojan Zeus
- Visual decrypt
Decodifica la regione selezionata con l'algoritmo di decifratura visiva utilizzato dal trojan Zeus
Autore
Nobutaka Mantani (X: @nmantani)
Licenza
La licenza BSD 2-Clause (http://opensource.org/licenses/bsd-license.php)