
FileInsight-plugins : boîte à outils de décodage de l'éditeur hexadécimal McAfee FileInsight pour l'analyse de logiciels malveillants
FileInsight-plugins est un vaste ensemble de plugins pour l'éditeur hexadécimal McAfee FileInsight. Il ajoute de nombreuses fonctionnalités telles que le déchiffrement, la décompression, la recherche de chaînes de texte XORées, l'analyse avec une règle YARA, l'émulation de code, le désassemblage, et bien plus encore ! Il est utile pour diverses tâches de décodage dans l'analyse de logiciels malveillants (par exemple, extraire des exécutables malveillants et des documents leurres de fichiers de documents malveillants).
Pour ceux qui cherchent l'installateur FileInishgt, il est disponible à https://downloadcenter.trellix.com/products/mcafee-avert/fileinsight.msi.
Captures d'écran
Dialogue du plugin "AES decrypt"

Résultat d'analyse du plugin "YARA scan"

Structure de données du fichier exécutable ELF analysée par le plugin "Parse file structure"

Trace d'émulation du shellcode ARM64 Linux émulé par le plugin "Emulate code"

Sortie de désassemblage du shellcode x86 Linux désassemblé par le plugin "Disassemble"

Représentation bitmap du fichier exécutable Windows visualisée par le plugin "Bitmap view"

Histogramme d'octets du fichier Excel affiché par le plugin "Byte histogram"

Graphique d'entropie du fichier exécutable Windows affiché par le plugin "Entropy graph"

Présentations
Black Hat USA 2021 Arsenal
CODE BLUE 2019 Bluebox
Cas d'utilisation
Veuillez exécuter la commande suivante. La dernière version de FileInsight-plugins et les prérequis, y compris FileInsight et Python 3.12.x (x64), seront installés.
powershell -exec bypass -command "IEX((New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/nmantani/FileInsight-plugins/master/install.ps1'))"
Si vous utilisez un serveur proxy (par exemple, adresse IP : 10.0.0.1, port : 8080), veuillez exécuter les commandes suivantes.
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
Quelques modules Python nécessitent une installation manuelle. Veuillez suivre les instructions d'installation affichées par les plugins.
Veuillez cliquer sur "Operations" dans l'onglet "Plugins", puis sélectionnez un plugin.
Vous pouvez également utiliser les plugins depuis le menu contextuel (clic droit).

Certains plugins affichent une boîte de dialogue supplémentaire pour les paramètres du plugin au moment de l'utilisation.

Si vous souhaitez mettre à jour FileInsight-plugins vers la dernière version publiée,
veuillez cliquer sur "Check for update" dans le menu des plugins. Le script
PowerShell d'installation (https://raw.githubusercontent.com/nmantani/FileInsight-plugins/master/install.ps1)
sera exécuté si une nouvelle version est disponible.
Les fichiers existants seront remplacés.

Vous pouvez également mettre à jour avec la commande suivante ("Check for update"
exécute cette commande).
powershell -exec bypass -command "& ([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/nmantani/FileInsight-plugins/master/install.ps1'))) -update"
Si vous utilisez un serveur proxy (par exemple, adresse IP : 10.0.0.1, port : 8080), veuillez exécuter les commandes suivantes.
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
Si vous souhaitez mettre à jour FileInsight-plugins vers la dernière version instantanée (snapshot),
veuillez ajouter l'option "-snapshot".
powershell -exec bypass -command "& ([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/nmantani/FileInsight-plugins/master/install.ps1'))) -update -snapshot"
Personnalisation
Pour les plugins "Send to (CLI)" et "Send to (GUI)", vous pouvez ouvrir des fichiers avec vos programmes préférés.
Veuillez cliquer sur "Customize menu" dans le menu des plugins.

"plugins\Operations\Misc\send_to_cli.json" (pour le plugin "Send to (CLI)") ou "plugins\Operations\Misc\send_to.json" (pour le plugin "Send to (GUI)") sera ouvert avec votre éditeur de texte par défaut.
Veuillez le modifier et l'enregistrer.

Votre personnalisation sera reflétée dans les éléments de menu.

Liste des plugins (155 plugins)
Opérations de base
- Copier dans un nouveau fichier
Copier la région sélectionnée (le fichier entier si rien n'est sélectionné) dans un nouveau fichier
- Changer d'onglet de fichier
Changer d'onglet de fichier avec une liste
- Signet
Ajouter un signet à la région sélectionnée avec un commentaire et une couleur spécifiés
- Couper le binaire dans le presse-papiers
Couper les données binaires de la région sélectionnée dans le presse-papiers sous forme de texte hexadécimal
- Copier le binaire dans le presse-papiers
Copier les données binaires de la région sélectionnée dans le presse-papiers sous forme de texte hexadécimal
- Coller le binaire depuis le presse-papiers
Coller les données binaires (converties à partir de texte hexadécimal) depuis le presse-papiers
- Supprimer avant
Supprimer toute la région avant la position actuelle du curseur
- Supprimer après
Supprimer toute la région après la position actuelle du curseur
- Remplir
Remplir la région sélectionnée avec un motif hexadécimal spécifié
- Inverser
Inverser les bits de la région sélectionnée
- Ordre inverse
Inverser l'ordre de la région sélectionnée
- Changer l'endianness
Changer l'endianness de la région sélectionnée
- Échanger les nibbles
Échanger chaque paire de nibbles de la région sélectionnée
- Échanger deux octets
Échanger chaque paire d'octets de la région sélectionnée
- Mettre en majuscules
Convertir le texte de la région sélectionnée en majuscules
- Mettre en minuscules
Convertir le texte de la région sélectionnée en minuscules
- Inverser la casse
Inverser la casse de la région sélectionnée
Opérations de compression
Compresser
- aPLib
Compresser la région sélectionnée avec la bibliothèque de compression aPLib
- Brotli
Compresser la région sélectionnée avec l'algorithme Brotli
- Bzip2
Compresser la région sélectionnée avec l'algorithme bzip2
- Gzip
Compresser la région sélectionnée au format gzip
- LZ4
Compresser la région sélectionnée avec l'algorithme LZ4
- LZF
Compresser la région sélectionnée avec l'algorithme LZF
- LZFSE
Compresser la région sélectionnée avec l'algorithme LZFSE
- lzip
Compresser la région sélectionnée au format lzip
- LZJB
Compresser la région sélectionnée avec l'algorithme LZJB
- LZMA
Compresser la région sélectionnée avec l'algorithme LZMA
- LZNT1
Compresser la région sélectionnée avec l'algorithme LZNT1
- LZO
Compresser la région sélectionnée avec l'algorithme LZO
- LZRW1/KH
Compresser la région sélectionnée avec l'algorithme LZRW1/KH
- PPMd
Compresser la région sélectionnée avec l'algorithme PPMd
- QuickLZ
Compresser la région sélectionnée avec la bibliothèque de compression QuickLZ
- Raw deflate
Compresser la région sélectionnée avec l'algorithme Deflate sans en-tête ni somme de contrôle (équivalent à gzdeflate() en PHP)
- Snappy
Compresser la région sélectionnée avec la bibliothèque de compression Snappy
- XZ
Compresser la région sélectionnée au format XZ
- zlib (deflate)
Compresser la région sélectionnée avec zlib (algorithme Deflate)
- Zstandard
Compresser la région sélectionnée avec l'algorithme Zstandard
Décompresser
- aPLib
Décompresser la région sélectionnée avec la bibliothèque de compression aPLib
- Brotli
Décompresser la région sélectionnée avec l'algorithme Brotli
- Bzip2
Décompresser la région sélectionnée avec l'algorithme bzip2
- Gzip
Décompresser la région compressée au format gzip
- LZ4
Décompresser la région sélectionnée avec l'algorithme LZ4
- LZF
Décompresser la région sélectionnée avec l'algorithme LZF
- LZFSE
Décompresser la région sélectionnée avec l'algorithme LZFSE
- lzip
Décompresser la région compressée au format lzip
- LZJB
Décompresser la région sélectionnée avec l'algorithme LZJB
- LZMA
Décompresser la région sélectionnée avec l'algorithme LZMA
- LZNT1
Décompresser la région sélectionnée avec l'algorithme LZNT1
- LZO
Décompresser la région sélectionnée avec l'algorithme LZO
- LZRW1/KH
Décompresser la région sélectionnée avec l'algorithme LZRW1/KH
- PPMd
Décompresser la région sélectionnée avec l'algorithme PPMd
- QuickLZ
Décompresser la région sélectionnée avec la bibliothèque de compression QuickLZ
- Raw inflate
Décompresser la région compressée avec Deflate sans en-tête ni somme de contrôle (équivalent à gzinflate() en PHP)
- Snappy
Décompresser la région sélectionnée avec la bibliothèque de compression Snappy
- XZ
Décompresser la région compressée au format XZ
- zlib (inflate)
Décompresser la région sélectionnée avec zlib (algorithme Deflate)
- Zstandard
Décompresser la région sélectionnée avec l'algorithme Zstandard
Opérations de chiffrement
Déchiffrer
- AES
Déchiffrer la région sélectionnée avec AES
- Blowfish
Déchiffrer la région sélectionnée avec Blowfish
- CAST-128
Déchiffrer la région sélectionnée avec CAST-128
- Camellia
Déchiffrer la région sélectionnée avec Camellia
- ChaCha20
Déchiffrer la région sélectionnée avec ChaCha20
- DES
Déchiffrer la région sélectionnée avec DES
- RC2
Déchiffrer la région sélectionnée avec RC2
- RC4
Déchiffrer la région sélectionnée avec RC4
- RC5
Déchiffrer la région sélectionnée avec RC5
- RC6
Déchiffrer la région sélectionnée avec RC6
- Salsa20
Déchiffrer la région sélectionnée avec Salsa20
- TEA
Déchiffrer la région sélectionnée avec TEA (Tiny Encryption Algorithm)
- Triple DES
Déchiffrer la région sélectionnée avec Triple DES
- XTEA
Déchiffrer la région sélectionnée avec XTEA (eXtended Tiny Encryption Algorithm)
- XXTEA
Déchiffrer la région sélectionnée avec XXTEA (Corrected Block Tiny Encryption Algorithm)
Chiffrer
- AES
Chiffrer la région sélectionnée avec AES
- Blowfish
Chiffrer la région sélectionnée avec Blowfish
- CAST-128
Chiffrer la région sélectionnée avec CAST-128
- Camellia
Chiffrer la région sélectionnée avec Camellia
- ChaCha20
Chiffrer la région sélectionnée avec ChaCha20
- DES
Chiffrer la région sélectionnée avec DES
- RC2
Chiffrer la région sélectionnée avec RC2
- RC4
Chiffrer la région sélectionnée avec RC4
- RC5
Chiffrer la région sélectionnée avec RC5
- RC6
Chiffrer la région sélectionnée avec RC6
- Salsa20
Chiffrer la région sélectionnée avec Salsa20
- TEA
Chiffrer la région sélectionnée avec TEA (Tiny Encryption Algorithm)
- Triple DES
Chiffrer la région sélectionnée avec Triple DES
- XTEA
Chiffrer la région sélectionnée avec XTEA (eXtended Tiny Encryption Algorithm)
- XXTEA
Déchiffrer la région sélectionnée avec XXTEA (Corrected Block Tiny Encryption Algorithm)
Opérations d'encodage
Décoder
- Texte hexadécimal vers données binaires
Convertir le texte hexadécimal de la région sélectionnée en binaire
- Texte décimal vers données binaires
Convertir le texte décimal de la région sélectionnée en données binaires
- Texte octal vers données binaires
Convertir le texte octal de la région sélectionnée en données binaires
- Texte binaire vers données binaires
Convertir le texte binaire de la région sélectionnée en données binaires
- Décodage base16 personnalisé
Décoder la région sélectionnée avec une table base16 personnalisée
- Décodage base32 personnalisé
Décoder la région sélectionnée avec une table base32 personnalisée
- Décodage base58 personnalisé
Décoder la région sélectionnée avec une table base58 personnalisée
- Décodage base62 personnalisé
Décoder la région sélectionnée avec une table base62 personnalisée
- Décodage base64 personnalisé
Décoder la région sélectionnée avec une table base64 personnalisée
- Décodage base85 personnalisé
Décoder la région sélectionnée avec une table base85 personnalisée
- Décodage base91 personnalisé
Décoder la région sélectionnée avec une table base91 personnalisée
- Décodage base92 personnalisé
Décoder la région sélectionnée avec une table base92 personnalisée
- décodage gob
Décoder la région sélectionnée comme des données sérialisées gob (format de sérialisation pour golang) en notation Python
- Décodage MessagePack
Décoder la région sélectionnée comme des données sérialisées MessagePack en JSON
- Décodage Protobuf
Décoder la région sélectionnée comme des données sérialisées Protocol Buffers en JSON sans fichiers .proto
- Depuis quoted printable
Décoder la région sélectionnée comme du texte quoted printable
- Unicode unescape
Déséchapper la séquence d'échappement Unicode de la région sélectionnée
- Décodage URL
Décoder la région sélectionnée comme du texte encodé en pourcentage utilisé par les URL
Encoder
- Données binaires vers texte hexadécimal
Convertir le binaire de la région sélectionnée en texte hexadécimal
- Données binaires vers texte décimal
Convertir le binaire de la région sélectionnée en texte décimal
- Données binaires vers texte octal
Convertir le binaire de la région sélectionnée en texte octal
- Données binaires vers texte binaire
Convertir le binaire de la région sélectionnée en texte binaire
- Encodage base16 personnalisé
Encoder la région sélectionnée avec une table base16 personnalisée
- Encodage base32 personnalisé
Encoder la région sélectionnée avec une table base32 personnalisée
- Encodage base58 personnalisé
Encoder la région sélectionnée avec une table base58 personnalisée
- Encodage base62 personnalisé
Encoder la région sélectionnée avec une table base62 personnalisée
- Encodage base64 personnalisé
Encoder la région sélectionnée avec une table base64 personnalisée
- Encodage base85 personnalisé
Encoder la région sélectionnée avec une table base85 personnalisée
- Encodage base91 personnalisé
Encoder la région sélectionnée avec une table base91 personnalisée
- Encodage base92 personnalisé
Encoder la région sélectionnée avec une table base92 personnalisée
- Encodage MessagePack
Encoder le JSON de la région sélectionnée en données sérialisées MessagePack
- ROT13
Faire pivoter les caractères alphabétiques de la région sélectionnée d'un montant spécifié (par défaut : 13)
- Vers quoted printable
Encoder la région sélectionnée en texte quoted printable
- Échappement Unicode
Échapper les caractères Unicode de la région sélectionnée
- Encodage URL
Encoder la région sélectionnée en texte encodé en pourcentage utilisé par les URL
Opérations diverses
- Émuler du code
Émuler la région sélectionnée comme un exécutable ou un shellcode (le fichier entier si rien n'est sélectionné)
- Comparaison de fichiers
Comparer le contenu de deux fichiers
- Valeurs de hachage
Calculer les valeurs CRC32, MD5, SHA1, SHA256, ssdeep, TLSH, imphash, impfuzzy, exphash, hash d'en-tête Rich PE, authentihash, MD5 d'icône, dhash d'icône, gimphash, et telfhash de la région sélectionnée (le fichier entier si rien n'est sélectionné)
- Envoyer vers (CLI)
Envoyer la région sélectionnée (le fichier entier si rien n'est sélectionné) vers un autre programme CLI et récupérer la sortie
- Envoyer vers (GUI)
Envoyer la région sélectionnée (le fichier entier si rien n'est sélectionné) vers un autre programme GUI
Opérations d'analyse
- Analyse Binwalk
Analyser la région sélectionnée (le fichier entier si rien n'est sélectionné) pour trouver des fichiers intégrés
- Désassembler
Désassembler la région sélectionnée (le fichier entier si rien n'est sélectionné)
- Extraire la macro VBA
Extraire la macro VBA Microsoft Office de la région sélectionnée (le fichier entier si rien n'est sélectionné)
- Type de fichier
Identifier le type de fichier de la région sélectionnée (le fichier entier si rien n'est sélectionné)
- Trouver un fichier PE
Trouver un fichier PE dans la région sélectionnée (le fichier entier si rien n'est sélectionné) en fonction des informations de l'en-tête PE
- Analyser la structure du fichier
Analyser la structure du fichier de la région sélectionnée (le fichier entier si rien n'est sélectionné) avec Kaitai Struct
Formats de fichiers pris en charge : Gzip, RAR, ZIP, ELF, Mach-O, PE, table de partition MBR, BMP, GIF, JPEG, PNG, raccourci Windows
- Afficher les métadonnées
Afficher les métadonnées de la région sélectionnée (le fichier entier si rien n'est sélectionné) avec ExifTool
- Chaînes
Extraire les chaînes de texte de la région sélectionnée (le fichier entier si rien n'est sélectionné)
- Type de chaîne
Identifier le type de chaînes telles que les clés API et les adresses de portefeuilles de crypto-monnaies dans la région sélectionnée (le fichier entier si rien n'est sélectionné) avec lemmeknow
Opérations de recherche
- Extraction par expression régulière
Rechercher avec une expression régulière dans la région sélectionnée (le fichier entier si rien n'est sélectionné) et extraire les régions correspondantes sous forme d'une seule région concaténée
- Recherche par expression régulière
Rechercher avec une expression régulière dans la région sélectionnée (le fichier entier si rien n'est sélectionné) et ajouter un signet aux régions correspondantes
- Remplacer
Rechercher avec une expression régulière dans la région sélectionnée (le fichier entier si rien n'est sélectionné) et remplacer les régions correspondantes par des données spécifiées
- Recherche XOR hexadécimale
Rechercher des données XORées/décalées par rotation de bits dans la région sélectionnée (le fichier entier si rien n'est sélectionné)
- Recherche XOR textuelle
Rechercher une chaîne XORée/décalée par rotation de bits dans la région sélectionnée (le fichier entier si rien n'est sélectionné)
- Analyse YARA
Analyser la région sélectionnée (le fichier entier si rien n'est sélectionné) avec YARA.
Opérations de visualisation
- Vue bitmap
Visualiser le fichier entier sous forme de représentation bitmap
- Histogramme d'octets
Afficher l'histogramme d'octets de la région sélectionnée (le fichier entier si rien n'est sélectionné)
- Graphique d'entropie
Afficher le graphique d'entropie de la région sélectionnée
(le fichier entier si rien n'est sélectionné)
Opérations XOR
- XOR simple
Effectuer un XOR sur la région sélectionnée avec une clé XOR spécifiée
- XOR décrémental
Effectuer un XOR sur la région sélectionnée en décrémentant la clé XOR
- XOR incrémental
Effectuer un XOR sur la région sélectionnée en incrémentant la clé XOR
- XOR avec préservation des zéros
Effectuer un XOR sur la région sélectionnée en sautant les octets nuls et la clé XOR elle-même
- XOR avec un autre fichier
Effectuer un XOR sur la région sélectionnée avec le contenu d'un autre fichier comme clé XOR
- XOR avec l'octet suivant
Effectuer un XOR sur la région sélectionnée en utilisant l'octet suivant comme clé XOR
- XOR avec l'octet suivant (inverse)
Opération inverse du plugin "XOR avec l'octet suivant"
- Deviner les clés XOR multioctets
Deviner les clés XOR multioctets à partir de la région sélectionnée (le fichier entier si rien n'est sélectionné) en se basant sur les clés révélées qui sont XORées avec 0x00
- Chiffrement visuel
Encoder la région sélectionnée avec l'algorithme de chiffrement visuel utilisé par le cheval de Troie Zeus
- Déchiffrement visuel
Décoder la région sélectionnée avec l'algorithme de déchiffrement visuel utilisé par le cheval de Troie Zeus
Auteur
Nobutaka Mantani (X : @nmantani)
Licence
Licence BSD 2-Clause (http://opensource.org/licenses/bsd-license.php)