
Implementação em Python da biblioteca CaRT para (des)inertar arquivos.
O formato de arquivo CaRT é usado para armazenar/transferir malware e seus metadados associados. Ele neutraliza o malware para que não possa ser executado e o criptografa para que o software antivírus não sinalize o arquivo CaRT como malware.
Agora que o STIX v2 usa JSON como codificação, você pode agrupar seu relatório STIX diretamente no formato CaRT.
Quando o CaRT codifica arquivos, ele adiciona metadados do arquivo *.cartmeta com o mesmo prefixo do seu arquivo.
Portanto, se você salvar seu relatório STIX em um arquivo .cartmeta, o arquivo CaRT resultante terá o
relatório STIX completo incorporado.
Exemplo:
$ ls
file.exe - File I want to encode
file.exe.cartmeta - Stix report of file.exe
$ cart file.exe
$ ls
file.exe - File I want to encode
file.exe.cartmeta - Stix report of file.exe
file.exe.cart - CaRT file containing both the file.exe and its STIX report
O CaRT tem um cabeçalho obrigatório que se parece com isto
4s h Q 16s Q
CART<VERSION><RESERVED><ARC4KEY><OPT_HEADER_LEN>
Em que VERSION é 1 e RESERVED é 0. Na maioria dos casos, a chave RC4 usada para descriptografar o arquivo é armazenada no cabeçalho obrigatório e é sempre a mesma coisa (os primeiros 8 dígitos de pi, duas vezes). No entanto, o CaRT oferece uma opção para substituir a chave, que então armazena bytes nulos no cabeçalho obrigatório. Você precisará então conhecer a chave para decodificar o arquivo...
O cabeçalho opcional do CaRT é um blob RC4 de OPT_HEADER_LEN bytes de um cabeçalho serializado em JSON
RC4(<JSON_SERIALIZED_OPTIONAL_HEADER>)
O bloco de dados do CaRT é um bloco zlib seguido de RC4
RC4(ZLIB(block encoded stream))
Assim como o cabeçalho opcional, o rodapé opcional do CaRT é um blob RC4 de OPT_FOOTER_LEN bytes de um rodapé serializado em JSON
RC4(<JSON_SERIALIZED_OPTIONAL_FOOTER>)
O CaRT termina seu arquivo com um rodapé obrigatório que permite ao formato ler o rodapé e retornar os hashes sem ler o arquivo inteiro
4s QQ Q
TRAC<RESERVED><OPT_FOOTER_LEN>
Ao instalar o pacote pip, você obtém acesso à biblioteca CaRT e também à CLI do CaRT.
A CLI do CaRT tem a seguinte prioridade para suas opções:
~/.cart/cart.cfgEstas são as opções disponíveis na CLI do CaRT:
usage: cart [options] file1 file2 ... fileN
The CaRT file format is used to store/transfer malware and its associated metadata.
It neuters the malware so it cannot be executed and encrypts it so anti-virus software
cannot flag the CaRT file as malware.
positional arguments:
file
options:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-d, --delete Delete original after operation succeeded
-f, --force Replace output file if it already exists
-i, --ignore Ignore RC4 key from conf file
-j JSONMETA, --jsonmeta JSONMETA
Provide header metadata as JSON blob
-k KEY, --key KEY Use private RC4 key (base64 encoded). Same key must be provided to unCaRT.
-m, --meta Keep metadata around when extracting CaRTs
-n FILENAME, --name FILENAME
Use this value as metadata filename
-o OUTFILE, --outfile OUTFILE
Set output file
-s, --showmeta Only show the file metadata
CaRT is smart enough to determine if a file needs to be CaRTed or unCaRTed.
To CaRT an unCaRTed file: cart file1
To unCaRT a CaRTed file: cart file1
It is the same command!
O arquivo de configuração do CaRT se parece com isto:
[global]
# rc4_key is a base64 representation of your key
rc4_key: AvUzYXNkZg==
# keep_meta is an equivalent to -m in the CLI
keep_meta: True
# force is an equivalent to -f in the CLI
force: True
# default_header is a key/value pair of data to be added to the CaRT in the optional header
[default_header]
poc: Your Name
poc_email: [email protected]
Também existem implementações do CaRT em Rust e Java. Confira abaixo:
O formato de arquivo CaRT é usado para armazenar/transferir malware e seus metadados associados. Ele neutraliza o malware para que não possa ser executado e o criptografa para que o software antivírus não sinalize o arquivo CaRT como malware.
Agora que a versão 2 do STIX usa JSON para codificação, você pode agrupar seus relatórios STIX diretamente
no formato CaRT. Quando o CaRT codifica arquivos, ele adiciona os metadados do arquivo *.cartmeta com o mesmo
prefixo usado pelo seu arquivo. Portanto, se você salvar seu relatório STIX em um arquivo
.cartmeta, o relatório completo será incorporado ao arquivo CaRT resultante.
Por exemplo:
$ ls
file.exe - Fichier à coder
file.exe.cartmeta - Rapport STIX du fichier file.exe
$ cart file.exe
$ ls
file.exe - Fichier à coder
file.exe.cartmeta - Rapport STIX du fichier file.exe
file.exe.cart - Fichier CaRT contenant à la fois le fichier file.exe et son rapport STIX