
FileInsight-plugins é um grande conjunto de plugins para o editor hexadecimal McAfee FileInsight.
Ele adiciona muitas capacidades, como descriptografia, descompressão, pesquisa de strings de texto com XOR, varredura com regra YARA, emulação de código, desmontagem e mais!
É útil para vários tipos de tarefas de decodificação em análise de malware (por exemplo, extrair executáveis de malware e documentos de isca de arquivos de documento maliciosos).
Para aqueles que procuram o instalador do FileInishgt, ele está disponível em https://downloadcenter.trellix.com/products/mcafee-avert/fileinsight.msi.
Capturas de tela
Diálogo do plugin "AES decrypt"

Resultado da varredura do plugin "YARA scan"

Estrutura de dados do arquivo executável ELF analisado pelo plugin "Parse file structure"

Rastreamento de emulação do shellcode ARM64 Linux emulado pelo plugin "Emulate code"

Saída da desmontagem do shellcode x86 Linux desmontado pelo plugin "Disassemble"

Representação bitmap do arquivo executável Windows visualizado pelo plugin "Bitmap view"

Histograma de bytes do arquivo Excel mostrado pelo plugin "Byte histogram"

Gráfico de entropia do arquivo executável Windows mostrado pelo plugin "Entropy graph"

Apresentações
Black Hat USA 2021 Arsenal
CODE BLUE 2019 Bluebox
Casos de uso
Como instalar
Por favor, execute o seguinte comando. A versão mais recente do FileInsight-plugins e os pré-requisitos, incluindo FileInsight e Python 3.12.x (x64), serão instalados.
powershell -exec bypass -command "IEX((New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/nmantani/FileInsight-plugins/master/install.ps1'))"
Se você usa um servidor proxy (por exemplo, endereço IP: 10.0.0.1, porta: 8080), execute os seguintes comandos.
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
Existem alguns módulos Python que requerem instalação manual. Siga as instruções de instalação exibidas pelos plugins.
Como usar
Por favor, clique em "Operations" na aba "Plugins" e selecione um plugin.
Você também pode usar plugins pelo menu de clique com o botão direito.

Alguns plugins mostram um diálogo adicional para configurações do plugin no momento do uso.

Como atualizar
Se você deseja atualizar o FileInsight-plugins para a versão mais recente,
clique em "Check for update" no menu de plugins. O script de instalação
PowerShell (https://raw.githubusercontent.com/nmantani/FileInsight-plugins/master/install.ps1)
será executado se uma nova versão estiver disponível.
Os arquivos existentes serão sobrescritos.

Você também pode atualizar com o seguinte comando ("Check for update"
executa este comando).
powershell -exec bypass -command "& ([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/nmantani/FileInsight-plugins/master/install.ps1'))) -update"
Se você usa um servidor proxy (por exemplo, endereço IP: 10.0.0.1, porta: 8080), execute os seguintes comandos.
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 você deseja atualizar o FileInsight-plugins para o snapshot mais recente,
adicione a opção "-snapshot".
powershell -exec bypass -command "& ([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/nmantani/FileInsight-plugins/master/install.ps1'))) -update -snapshot"
Personalização
Para os plugins "Send to (CLI)" e "Send to (GUI)", você pode abrir arquivos com seus programas favoritos.
Clique em "Customize menu" no menu de plugins.

"plugins\Operations\Misc\send_to_cli.json" (para o plugin "Send to (CLI)") ou "plugins\Operations\Misc\send_to.json" (para o plugin "Send to (GUI)") será aberto com seu editor de texto padrão.
Por favor, edite e salve.

Sua personalização será refletida nos itens do menu.

Lista de plugins (155 plugins)
Operações básicas
- Copy to new file
Copiar a região selecionada (o arquivo inteiro se não selecionado) para um novo arquivo
- Switch file tabs
Alternar abas de arquivo com uma caixa de listagem
- Bookmark
Adicionar marcador na região selecionada com comentário e cor especificados
- Cut binary to clipboard
Recortar dados binários da região selecionada para a área de transferência como texto codificado em hexadecimal
- Copy binary to clipboard
Copiar dados binários da região selecionada para a área de transferência como texto codificado em hexadecimal
- Paste binary from clipboard
Colar dados binários (convertidos de texto codificado em hexadecimal) da área de transferência
- Delete before
Excluir toda a região antes da posição atual do cursor
- Delete after
Excluir toda a região após a posição atual do cursor
- Fill
Preencher a região selecionada com o padrão hexadecimal especificado
- Invert
Inverter bits da região selecionada
- Reverse order
Inverter a ordem da região selecionada
- Change endianness
Alterar a endianness da região selecionada
- Swap nibbles
Trocar cada par de nibbles da região selecionada
- Swap two bytes
Trocar cada par de bytes da região selecionada
- To upper case
Converter texto para maiúsculas na região selecionada
- To lower case
Converter texto para minúsculas na região selecionada
- Swap case
Inverter maiúsculas/minúsculas na região selecionada
Operações de compressão
Comprimir
- aPLib
Comprimir a região selecionada com a biblioteca de compressão aPLib
- Brotli
Comprimir a região selecionada com o algoritmo Brotli
- Bzip2
Comprimir a região selecionada com o algoritmo bzip2
- Gzip
Comprimir a região selecionada com o formato gzip
- LZ4
Comprimir a região selecionada com o algoritmo LZ4
- LZF
Comprimir a região selecionada com o algoritmo LZF
- LZFSE
Comprimir a região selecionada com o algoritmo LZFSE
- lzip
Comprimir a região selecionada com o formato lzip
- LZJB
Comprimir a região selecionada com o algoritmo LZJB
- LZMA
Comprimir a região selecionada com o algoritmo LZMA
- LZNT1
Comprimir a região selecionada com o algoritmo LZNT1
- LZO
Comprimir a região selecionada com o algoritmo LZO
- LZRW1/KH
Comprimir a região selecionada com o algoritmo LZRW1/KH
- PPMd
Comprimir a região selecionada com o algoritmo PPMd
- QuickLZ
Comprimir a região selecionada com a biblioteca de compressão QuickLZ
- Raw deflate
Comprimir a região selecionada com o algoritmo Deflate sem cabeçalho e soma de verificação (equivalente a gzdeflate() na linguagem PHP)
- Snappy
Comprimir a região selecionada com a biblioteca de compressão Snappy
- XZ
Comprimir a região selecionada com o formato XZ
- zlib (deflate)
Comprimir a região selecionada com zlib (algoritmo Deflate)
- Zstandard
Comprimir a região selecionada com o algoritmo Zstandard
Descomprimir
- aPLib
Descomprimir a região selecionada com a biblioteca de compressão aPLib
- Brotli
Descomprimir a região selecionada com o algoritmo Brotli
- Bzip2
Descomprimir a região selecionada com o algoritmo bzip2
- Gzip
Descomprimir a região selecionada comprimida com gzip
- LZ4
Descomprimir a região selecionada com o algoritmo LZ4
- LZF
Descomprimir a região selecionada com o algoritmo LZF
- LZFSE
Descomprimir a região selecionada com o algoritmo LZFSE
- lzip
Descomprimir a região selecionada comprimida com lzip
- LZJB
Descomprimir a região selecionada com o algoritmo LZJB
- LZMA
Descomprimir a região selecionada com o algoritmo LZMA
- LZNT1
Descomprimir a região selecionada com o algoritmo LZNT1
- LZO
Descomprimir a região selecionada com o algoritmo LZO
- LZRW1/KH
Descomprimir a região selecionada com o algoritmo LZRW1/KH
- PPMd
Descomprimir a região selecionada com o algoritmo PPMd
- QuickLZ
Descomprimir a região selecionada com a biblioteca de compressão QuickLZ
- Raw inflate
Descomprimir a região selecionada comprimida com Deflate que não possui cabeçalho e soma de verificação (equivalente a gzinflate() na linguagem PHP)
- Snappy
Descomprimir a região selecionada com a biblioteca de compressão Snappy
- XZ
Descomprimir a região selecionada comprimida com XZ
- zlib (inflate)
Descomprimir a região selecionada com zlib (algoritmo Deflate)
- Zstandard
Descomprimir a região selecionada com o algoritmo Zstandard
Operações criptográficas
Descriptografar
- AES
Descriptografar a região selecionada com AES
- Blowfish
Descriptografar a região selecionada com Blowfish
- CAST-128
Descriptografar a região selecionada com CAST-128
- Camellia
Descriptografar a região selecionada com Camellia
- ChaCha20
Descriptografar a região selecionada com ChaCha20
- DES
Descriptografar a região selecionada com DES
- RC2
Descriptografar a região selecionada com RC2
- RC4
Descriptografar a região selecionada com RC4
- RC5
Descriptografar a região selecionada com RC5
- RC6
Descriptografar a região selecionada com RC6
- Salsa20
Descriptografar a região selecionada com Salsa20
- TEA
Descriptografar a região selecionada com TEA (Tiny Encryption Algorithm)
- Triple DES
Descriptografar a região selecionada com Triple DES
- XTEA
Descriptografar a região selecionada com XTEA (eXtended Tiny Encryption Algorithm)
- XXTEA
Descriptografar a região selecionada com XXTEA (Corrected Block Tiny Encryption Algorithm)
Criptografar
- AES
Criptografar a região selecionada com AES
- Blowfish
Criptografar a região selecionada com Blowfish
- CAST-128
Criptografar a região selecionada com CAST-128
- Camellia
Criptografar a região selecionada com Camellia
- ChaCha20
Criptografar a região selecionada com ChaCha20
- DES
Criptografar a região selecionada com DES
- RC2
Criptografar a região selecionada com RC2
- RC4
Criptografar a região selecionada com RC4
- RC5
Criptografar a região selecionada com RC5
- RC6
Criptografar a região selecionada com RC6
- Salsa20
Criptografar a região selecionada com Salsa20
- TEA
Criptografar a região selecionada com TEA (Tiny Encryption Algorithm)
- Triple DES
Criptografar a região selecionada com Triple DES
- XTEA
Criptografar a região selecionada com XTEA (eXtended Tiny Encryption Algorithm)
- XXTEA
Descriptografar a região selecionada com XXTEA (Corrected Block Tiny Encryption Algorithm)
Operações de codificação
Decodificar
- Hex text to binary data
Converter texto hexadecimal da região selecionada em binário
- Decimal text to binary data
Converter texto decimal da região selecionada em dados binários
- Octal text to binary data
Converter texto octal da região selecionada em dados binários
- Binary text to binary data
Converter texto binário da região selecionada em dados binários
- Custom base16 decode
Decodificar a região selecionada com tabela base16 personalizada
- Custom base32 decode
Decodificar a região selecionada com tabela base32 personalizada
- Custom base58 decode
Decodificar a região selecionada com tabela base58 personalizada
- Custom base62 decode
Decodificar a região selecionada com tabela base62 personalizada
- Custom base64 decode
Decodificar a região selecionada com tabela base64 personalizada
- Custom base85 decode
Decodificar a região selecionada com tabela base85 personalizada
- Custom base91 decode
Decodificar a região selecionada com tabela base91 personalizada
- Custom base92 decode
Decodificar a região selecionada com tabela base92 personalizada
- gob decode
Decodificar a região selecionada como dados serializados em gob (formato de serialização para golang) para notação Python
- MessagePack decode
Decodificar a região selecionada como dados serializados em MessagePack para JSON
- Protobuf decode
Decodificar a região selecionada como dados serializados em Protocol Buffers para JSON sem arquivos .proto
- From quoted printable
Decodificar a região selecionada como texto quoted printable
- Unicode unescape
Desescapar sequência de escape Unicode da região selecionada
- URL decode
Decodificar a região selecionada como texto codificado por porcentagem usado por URL
Codificar
- Binary data to hex text
Converter binário da região selecionada em texto hexadecimal
- Binary data to decimal text
Converter binário da região selecionada em texto decimal
- Binary data to octal text
Converter binário da região selecionada em texto octal
- Binary data to binary text
Converter binário da região selecionada em texto binário
- Custom base16 encode
Codificar a região selecionada com tabela base16 personalizada
- Custom base32 encode
Codificar a região selecionada com tabela base32 personalizada
- Custom base58 encode
Codificar a região selecionada com tabela base58 personalizada
- Custom base62 encode
Codificar a região selecionada com tabela base62 personalizada
- Custom base64 encode
Codificar a região selecionada com tabela base64 personalizada
- Custom base85 encode
Codificar a região selecionada com tabela base85 personalizada
- Custom base91 encode
Codificar a região selecionada com tabela base91 personalizada
- Custom base92 encode
Codificar a região selecionada com tabela base92 personalizada
- MessagePack encode
Codificar JSON da região selecionada em dados serializados em MessagePack
- ROT13
Rotacionar caracteres alfabéticos na região selecionada pela quantidade especificada (padrão: 13)
- To quoted printable
Codificar a região selecionada em texto quoted printable
- Unicode escape
Escapar caracteres Unicode da região selecionada
- URL encode
Codificar a região selecionada em texto codificado por porcentagem usado por URL
Operações diversas
- Emulate code
Emular a região selecionada como um executável ou shellcode (o arquivo inteiro se não selecionado)
- File comparison
Comparar conteúdos de dois arquivos
- Hash values
Calcular valores CRC32, MD5, SHA1, SHA256, ssdeep, TLSH, imphash, impfuzzy, exphash, Rich PE header hash, authentihash, icon MD5, icon dhash, gimphash e telfhash da região selecionada (o arquivo inteiro se não selecionado)
- Send to (CLI)
Enviar a região selecionada (o arquivo inteiro se não selecionado) para outro programa CLI e obter a saída
- Send to (GUI)
Enviar a região selecionada (o arquivo inteiro se não selecionado) para outro programa GUI
Operações de análise
- Binwalk scan
Escanear a região selecionada (o arquivo inteiro se não selecionado) para encontrar arquivos embutidos
- Disassemble
Desmontar a região selecionada (o arquivo inteiro se não selecionado)
- Extract VBA macro
Extrair macro VBA do Microsoft Office da região selecionada (o arquivo inteiro se não selecionado)
- File type
Identificar o tipo de arquivo da região selecionada (o arquivo inteiro se não selecionado)
- Find PE file
Encontrar arquivo PE na região selecionada (o arquivo inteiro se não selecionado) com base nas informações do cabeçalho PE
- Parse file structure
Analisar a estrutura do arquivo da região selecionada (o arquivo inteiro se não selecionado) com Kaitai Struct
Formatos de arquivo suportados: Gzip, RAR, ZIP, ELF, Mach-O, PE, tabela de partição MBR, BMP, GIF, JPEG, PNG, atalho do Windows
- Show metadata
Mostrar metadados da região selecionada (o arquivo inteiro se não selecionado) com ExifTool
- Strings
Extrair strings de texto da região selecionada (o arquivo inteiro se não selecionado)
- String type
Identificar o tipo de strings, como chaves de API e endereços de carteira de criptomoedas na região selecionada (o arquivo inteiro se não selecionado) com lemmeknow
Operações de busca
- Regex extraction
Pesquisar com expressão regular na região selecionada (o arquivo inteiro se não selecionado) e extrair regiões correspondentes como uma única região concatenada
- Regex search
Pesquisar com expressão regular na região selecionada (o arquivo inteiro se não selecionado) e marcar as regiões correspondentes
- Replace
Pesquisar com expressão regular na região selecionada (o arquivo inteiro se não selecionado) e substituir regiões correspondentes pelos dados especificados
- XOR hex search
Pesquisar dados com XOR / rotação de bits na região selecionada (o arquivo inteiro se não selecionado)
- XOR text search
Pesquisar string com XOR / rotação de bits na região selecionada (o arquivo inteiro se não selecionado)
- YARA scan
Escanear a região selecionada (o arquivo inteiro se não selecionado) com YARA.
Operações de visualização
- Bitmap view
Visualizar o arquivo inteiro como uma representação bitmap
- Byte histogram
Mostrar histograma de bytes da região selecionada (o arquivo inteiro se não selecionado)
- Entropy graph
Mostrar gráfico de entropia da região selecionada\n(o arquivo inteiro se não selecionado)
Operações XOR
- Simple XOR
Aplicar XOR na região selecionada com a chave XOR especificada
- Decremental XOR
Aplicar XOR na região selecionada enquanto decrementa a chave XOR
- Incremental XOR
Aplicar XOR na região selecionada enquanto incrementa a chave XOR
- Null-preserving XOR
Aplicar XOR na região selecionada enquanto pula bytes nulos e a própria chave XOR
- XOR with another file
Aplicar XOR na região selecionada com o conteúdo de outro arquivo como chave XOR
- XOR with next byte
Aplicar XOR na região selecionada usando o próximo byte como chave XOR
- XOR with next byte (reverse)
Operação reversa do plugin "XOR with next byte"
- Guess multibyte XOR keys
Adivinhar chaves XOR multibyte da região selecionada (o arquivo inteiro se não selecionado) com base em chaves reveladas que foram XORed com 0x00
- Visual encrypt
Codificar a região selecionada com algoritmo visual encrypt usado pelo trojan Zeus
- Visual decrypt
Decodificar a região selecionada com algoritmo visual decrypt usado pelo trojan Zeus
Autor
Nobutaka Mantani (X: @nmantani)
Licença
The BSD 2-Clause License (http://opensource.org/licenses/bsd-license.php)