Introdução
Este documento descreve como criar Detecções Personalizadas - Avançadas usando o sigtool.exe ClamAV no Windows.
Sobre as detecções personalizadas avançadas
As Detecções personalizadas avançadas são como assinaturas de antivírus tradicionais, mas são escritas pelo usuário. Para detectar malware e outras ameaças baseadas em arquivos, o ClamAV conta com assinaturas para diferenciar arquivos limpos e mal-intencionados/indesejados. As assinaturas do ClamAV são baseadas principalmente em texto e estão em conformidade com um dos formatos de assinatura específicos do ClamAV associados a um determinado método de detecção. Essas assinaturas podem inspecionar vários aspectos de um arquivo e têm diferentes formatos de assinatura. Alguns dos formatos de assinatura disponíveis são:
· Assinaturas MD5
· Assinaturas baseadas em seção MD5 e PE
· Assinaturas baseadas no corpo do arquivo
· Formato de assinatura estendida (deslocamentos, curingas, expressões regulares)
· Assinaturas lógicas
· Assinaturas de ícones
O projeto ClamAV distribui uma coleção de assinaturas na forma de arquivos CVD (ClamAV Virus Database). O formato de arquivo CVD fornece um contêiner assinado digitalmente que encapsula as assinaturas e garante que elas não possam ser modificadas por terceiros mal-intencionados. Esse conjunto de assinaturas é mantido ativamente pelo Cisco Talos e pode ser baixado usando o aplicativo freshclam que acompanha o ClamAV
Por que ClamAV
Usamos o ACD para corresponder detecções complexas/atributos de arquivo que não podem ser detectados usando Hashes SHA256 como os dos exemplos abaixo:
Formato de Conteúdo de Assinatura Baseado no Corpo
O ClamAV armazena todas as assinaturas baseadas em corpo (baseadas em conteúdo) em um formato hexadecimal, com exceção do suporte à regra ClamAV YARA. Por assinatura hexadecimal, queremos dizer um fragmento do corpo do malware convertido em uma sequência hexadecimal que pode ser estendida usando vários curingas.
As assinaturas lógicas permitem combinar várias assinaturas em formato estendido usando operadores lógicos. Eles podem fornecer uma correspondência de padrões mais detalhada e flexível.
- Formato de assinatura estendida
O formato de assinatura estendida é o tipo mais básico de ClamAV de assinatura baseada no corpo desde a substituição do formato original do banco de dados .db.
As assinaturas estendidas permitem a especificação de informações adicionais além do conteúdo hexadecimal, como um "tipo de destino" de arquivo, deslocamento de vírus ou nível de funcionalidade do mecanismo (FLEVEL), tornando a detecção mais confiável
Assinaturas de phishing
O ClamAV pode detectar links HTML que parecem suspeitos quando o texto de exibição é um URL que é um domínio diferente do URL real. Infelizmente, é muito comum uma empresa contratar serviços da Web e usar texto de exibição de link HTML para fazer com que pareça ser um link para o site da empresa. Como essa prática é comum, o ClamAV faz verificações de phishing apenas para sites específicos que são popularmente alvo de campanhas de phishing
Assinaturas de código de bytes
As assinaturas de código de bytes são o meio pelo qual uma correspondência mais complexa pode ser realizada escrevendo um código C para analisar o conteúdo de amostra em vários estágios na extração do arquivo.
Assinaturas baseadas em metadados de contêiner
O ClamAV 0.96 permite a criação de assinaturas genéricas que correspondem a arquivos armazenados em diferentes tipos de contêiner que atendem a condições específicas. O formato da assinatura é:
VirusName:ContainerType:ContainerSize:FileNameREGEX:
FileSizeInContainer:FileSizeReal:IsEncrypted:FilePos:
Res1:Res2[:MinFL[:MaxFL]]
onde os campos correspondentes são:
VirusName: Nome do vírus a ser exibido quando a assinatura for correspondente.
ContainerType: O tipo de arquivo que contém o arquivo de destino. Por exemplo:
CL_TYPE_ZIP,
CL_TYPE_RAR
CL_TYPE_ARJ
CL_TYPE_MSCAB,
CL_TYPE_7Z
CL_TYPE_MAIL
CL_TYPE_POSIX_TAR
CL_TYPE_OLD_TAR
CL_TYPE_CPIO_OLD,
CL_TYPE_CPIO_ODC,
CL_TYPE_CPIO_NEWC
CL_TYPE_CPIO_CRC
etc.
Este documento está focado em assinaturas de hash.
Observação: a maneira mais fácil de criar assinaturas para ClamAV é usar checksums filehash, no entanto, esse método só pode ser usado contra malware estático.
Cuidado: observe que as informações neste documento estão sujeitas a alterações com as versões mais recentes do ClamAV. Sempre correlacione e verifique com o guia oficial para ClamAV.
Mais informações sobre os formatos de assinatura podem ser encontradas em: ClamAV Website
Essas assinaturas são compiladas em um arquivo que é baixado para o endpoint. Para criar detecções personalizadas avançadas, vá para Controle de epidemia > Avançado. Clique em Criar conjunto de assinaturas para criar um novo conjunto de Detecções avançadas personalizadas, dê um nome a ele e clique em Criar.
Depois de criar o conjunto Detecção personalizada avançada, clique em Editar e você poderá ver o link Adicionar assinatura. Digite o nome da sua assinatura e clique em Criar.
Depois que todas as suas assinaturas estiverem listadas, selecione Construir um banco de dados a partir do conjunto de assinaturas. Se você adicionar acidentalmente uma assinatura indesejada, poderá excluí-la clicando em Remover.
Aviso: sempre que adicionar ou remover uma assinatura, você DEVERÁ clicar em Criar um Banco de Dados a partir do Conjunto de Assinaturas
Observação: quando você cria uma detecção personalizada avançada para um arquivo, ele fica sujeito ao cache por uma hora. Se um arquivo for adicionado a um conjunto de detecções personalizadas avançadas, o tempo de cache deverá expirar antes que a detecção entre em vigor. Por exemplo, se você adicionar uma detecção personalizada avançada para um arquivo desconhecido 5 minutos após ele ter sido armazenado em cache, a detecção não terá efeito por mais 55 minutos.
Aviso: as Detecções personalizadas avançadas funcionam somente em arquivos de disposição desconhecida.
Como criar detecções personalizadas - Avançado com sigtool.exe
Etapa 1: Primeiro precisamos obter o sigtool navegando para o site ClamAV downloads
No meu caso, eu download o pacote ZIP clamav-1.1.0.win.x64.zip
Etapa 2: Descompacte o arquivo no local de preferência. No meu caso, usei C:/ClamAV
Observe pastas e arquivos destacados.
clamscan.exe - é uma ferramenta de linha de comando usada para verificar arquivos e/ou diretórios em busca de vírus. Ao contrário do clamdscan, o clamscan não requer uma ocorrência de clamd em execução para funcionar. Em vez disso, o clamscan cria um novo mecanismo e o carrega no banco de dados de vírus cada vez que é executado. Ele fará a varredura dos arquivos e/ou diretórios especificados na linha de comando, criará um relatório de varredura e sairá.
sigtool.exe - Ferramenta que cria e formata a assinatura e grava no arquivo *.hdb. A extensão hdb refere- se às Assinaturas com base em Hash. sigtool obtém a libclamav e oferece atalhos para as tarefas que o clamscan faz por detrás dos bastidores. Isso pode ser realmente útil ao escrever uma assinatura ou tentar obter informações sobre uma assinatura que pode estar causando FPs ou problemas de desempenho.
VirusVault - esta é a minha própria pasta que foi criada para descartar arquivos para os quais eu desejava criar uma assinatura personalizada.
VirusRV.hdb - Este arquivo contém assinaturas formatadas. Eu chamei este arquivo de VirusRV, mas você pode usar qualquer nome significativo.
Etapa 3a: Inicie a linha CMD e navegue até o local onde você descompactou anteriormente seu ClamAV.
Etapa 3b Executar esta linha.
C:\ClamAV>sigtool —md5 location-of-the-custom-file > name-of-the-output-file.hdb
Você pode alterar o nome (por padrão, sigtool usa o nome do arquivo) e colocá-lo dentro de um arquivo *.hdb. Um único arquivo de banco de dados pode incluir qualquer número de assinaturas. Para obtê-los carregados automaticamente cada vez que o clamscan/clamd for iniciado, basta copiar os arquivos do banco de dados no diretório local do banco de dados de vírus (por exemplo, /usr/local/share/clamav).
C:\ClamAV>sigtool --md5 C:\ClamAV\VirusVault\TestVirusRV.exe > VirusRV.hdb
Isso cria a assinatura, nesse caso, para o arquivo chamado TestVirusRV.exe e grava a assinatura no arquivo chamado VirusRV.hdb
Observação: se você quiser criar assinatura com base no valor SHA, o arquivo correspondente será salvo como *.hsb
C:\ClamAV>sigtool --md5 C:\ClamAV\VirusVault\TestVirusRV.exe > VirusRVsha256.hsb
Cuidado: As assinaturas baseadas em hash não devem ser usadas para arquivos de texto, HTML e quaisquer outros dados que sejam pré-processados internamente antes da correspondência de padrões. Se você realmente deseja usar uma assinatura de hash em tal caso, execute o clamscan com o — debug e o — leave- temps e crie uma assinatura para um arquivo pré- processado deixado em /tmp. Lembre-se de que uma assinatura de hash deixará de corresponder assim que um único byte mudar no arquivo de destino. Mais informações podem ser encontradas aqui
Esses sinalizadores sigtool podem ser especialmente úteis para a gravação de assinatura:
—md5 / —sha1 / —sha256: Gere o hash MD5/SHA1/SHA256 e calcule o tamanho do arquivo, gerando ambas como uma assinatura .hdb/.hsb formatada corretamente
Nomes de assinatura
As assinaturas ClamAV devem usar somente caracteres alfanuméricos, traço (-), ponto (.), sublinhados (_) para delimitar palavras. Nunca use espaço, apóstrofo, dois-pontos, ponto-e-vírgula ou aspas.
Os nomes de assinatura ClamAV encontrados nos bancos de dados de assinaturas oficiais geralmente usam este formato:
{platform}.{category}.{name}-{signature id}-{revision}
As convenções de nomenclatura nos bancos de dados de terceiros variam. Você pode encontrar diretrizes do Cisco-Talos para nomear assinaturas para o banco de dados oficial aqui.
Dica: se você quiser criar várias assinaturas em arquivos localizados no diretório criado anteriormente no meu caso, eu chamei meu VirusVault, poderá executar o comando usando o curinga. Neste caso eu corri o meu como:
C:\ClamAV>sigtool —md5 C:\ClamAV\VirusVault\wildcard\ > VirusRV.hdb
C:\ClamAV>sigtool --md5 C:\ClamAV\VirusVault\*\ > VirusRV.hdb
Que criou a assinatura em cada arquivo localizado no diretório VirusVault
Etapa 4: verifique a assinatura executando este comando.
C:\ClamAV>clamscan -d VirusRV.hdb C:\ClamAV\VirusVault\TestVirusRV.exe
Para verificar todas as assinaturas, você pode usar novamente a máscara curinga.
C:\ClamAV>clamscan -d VirusRV.hdb C:\ClamAV\VirusVault\*\
Etapa 5: abra o arquivo *.hdb recém-criado, copie a assinatura criada e navegue até o console do seu endpoint seguro em Controle de epidemia > Avançado clique em Editar e você poderá ver o link Adicionar assinatura.
Etapa 6: Certifique-se de clicar em Construir um banco de dados a partir do conjunto de assinaturas e, em seguida, aplicar as novas detecções personalizadas à sua política.
Etapa 7: sincronize sua política no endpoint e teste sua nova assinatura com a verificação manual. Você pode ver resultados como os listados abaixo.
Varredura manual
Detecções no console de endpoint seguro
Evento expandido
Requisitos para salvar a assinatura no console do Secure Endpoint
Se você tiver apenas o hash MD5 e não souber o tamanho do arquivo, ainda poderá criar um conjunto de assinaturas, mas deverá usar estas regras:
R: MD5 não pode conter somente letras maiúsculas
Hash MD5 correto:
5b852928a129d63dc5c895bd62cf2ab7
Hash MD5 incorreto:
5B852928A129D63DC5C895BD62CF2AB7
Erro no Console do Secure Endpoint com TODAS as letras maiúsculas
B: Você deve usar letras maiúsculas para nomear e pode ser seu próprio nome.
Nome correto:
Dm-launcher.msi
Nome incorreto:
dm-launcher.msi
C: Você pode usar curinga para o tamanho, mas deve usar :73 para o FLEVEL mínimo
Curinga correto:
5b852928a129d63dc5c895bd62cf2ab7:*:dm-launcher.msi:73
Curinga incorreto:
5b852928a129d63dc5c895bd62cf2ab7:*:dm-launcher.msi
Erro no Console de Ponto de Extremidade Seguro para todas as letras minúsculas e nenhum FLEVEL especificado
Nota: Assinaturas de hash com tamanho desconhecido - ClamAV 0.98 também adicionou suporte para assinaturas de hash onde o tamanho não é conhecido, mas o hash é. O uso de assinaturas com tamanhos específicos é muito mais eficiente em termos de desempenho; portanto, tenha cuidado ao usar esse recurso. Nesses casos, o caractere ’*’ pode ser usado no campo de tamanho. Para garantir a compatibilidade com versões anteriores do ClamAV, essas assinaturas devem ter um nível funcional mínimo de 73 ou superior. As assinaturas que usam o tamanho curinga sem este conjunto de níveis são rejeitadas como malformadas.