Olá pessoal. Faltam menos de dez dias para o início do curso de
"Engenharia Reversa" . Nesse sentido, queremos compartilhar outra tradução interessante sobre o assunto. Vamos lá!

Breve revisão

A imagem das ameaças está mudando rapidamente - novos ataques cibernéticos estão constantemente aparecendo e os antigos estão se tornando mais sofisticados. Nessas circunstâncias, os profissionais de segurança enfrentam desafios cada vez mais complexos. Todos os dias eles precisam processar e analisar milhões de amostras de malware anteriormente desconhecido e completamente novo, desenvolver assinaturas antivírus eficazes para descrever famílias inteiras de programas maliciosos e garantir a escalabilidade das ferramentas à medida que o número de amostras para análise aumenta. Ao mesmo tempo, é necessário levar em conta os recursos limitados para ferramentas de automação de análise de malware. Para ajudar os profissionais de TI a lidar com esses diversos desafios, o Talos oferece uma nova plataforma de código aberto chamada BASS.
O BASS (lido como “baixo”) é uma estrutura para gerar automaticamente assinaturas de antivírus com base em amostras de clusters de códigos maliciosos formados anteriormente. Ele visa reduzir o consumo de recursos pelo núcleo do ClamAV, aumentando a proporção de assinaturas baseadas em modelo em relação às assinaturas de hash e simplificar o trabalho dos analistas no desenvolvimento de assinaturas baseadas em modelo. Com o suporte ao contêiner do Docker, a estrutura é bem dimensionada.
Vale a pena notar que até agora apenas a versão alfa do BASS está disponível e ainda há muito a ser finalizado. Este projeto tem código-fonte aberto e estamos trabalhando ativamente nele, por isso teremos o maior prazer em receber comentários da comunidade e recomendações para sua melhoria. O código fonte do BASS está disponível
aqui .
O projeto BASS foi anunciado em 2017 na conferência
REcon em Montreal, Canadá.
Relevância
Os especialistas da Talos recebem mais de 1,5 milhão de amostras exclusivas diariamente. Na maioria das vezes, eles se relacionam a ameaças conhecidas e são imediatamente eliminados por um scanner de malware (ClamAV). No entanto, após a verificação, existem muitos arquivos que ainda precisam de análises adicionais. Nós os executamos na sandbox e realizamos análises dinâmicas, o que nos permite separá-las em maliciosas e seguras. Processamos as amostras de malware selecionadas nesse estágio para criar assinaturas do ClamAV com base nelas, o que ajudará a filtrar ainda mais essas ameaças em um estágio anterior, durante a verificação.

Durante três meses, de fevereiro a abril de 2017, foram adicionadas 560.000 novas assinaturas ao banco de dados ClamAV, ou seja, um aumento de 9.500 assinaturas por dia. Uma parte significativa deles recebemos automaticamente na forma de assinaturas de hash. Essas assinaturas têm uma desvantagem significativa em comparação com as assinaturas de modelo ou bytecode (esses são outros dois tipos suportados pelo núcleo do ClamAV): uma assinatura de hash corresponde a apenas um arquivo. Além disso, um aumento no número de assinaturas de hash leva ao fato de que o banco de dados ClamAV ocupa mais memória. É por isso que preferimos assinaturas baseadas em padrões. Eles são muito mais simples e rápidos de gerenciar que o bytecode e, ao mesmo tempo, permitem que você descreva grupos inteiros de arquivos.
Baixo
A estrutura do BASS foi projetada para facilitar a criação de modelos baseados em assinatura do ClamAV. Ele os gera automaticamente, processando segmentos de código executável binário.

O BASS usa como base clusters de códigos maliciosos, mas não inclui os meios para criá-los. Devido a isso, a tecnologia permanece conveniente e flexível. Intencionalmente, tornamos a interface de entrada universal, para facilitar a adaptação a novas fontes de clusters. Agora usamos várias dessas fontes, incluindo clusters baseados em indicadores de comprometimento (IoC) de nossa caixa de proteção, hash estrutural (quando temos um arquivo executável maliciosamente intencional e estamos procurando por amostras adicionais com estrutura semelhante a ele) e malware recebido de campanhas de spam.
No primeiro estágio, instâncias maliciosas passam pelos descompactadores do kernel ClamAV. Ele pode descompactar arquivos de vários formatos e arquivos executáveis compactados (por exemplo, UPX) e também extrair objetos incorporados (como arquivos EXE nos documentos do Word). Os artefatos recebidos são cuidadosamente analisados, as informações estão sendo coletadas. Agora, para o próximo estágio, a filtragem, usamos seus tamanhos e a seqüência mágica do UNIX.
Em seguida, o cluster de código malicioso é filtrado. Se os arquivos não atenderem aos requisitos do BASS (embora a plataforma funcione apenas com arquivos executáveis do PE, mas não seja difícil adicionar suporte aos arquivos binários ELF e MACH-O), eles serão excluídos do cluster ou, se houver poucos objetos restantes, o cluster será completamente rejeitado.
O cluster filtrado prossegue para a fase de geração de assinatura. Primeiro, os arquivos binários são desmontados. Para fazer isso, usamos o IDA Pro, mas ele pode ser facilmente substituído por outro desmontador com recursos semelhantes, por exemplo, radare2.

Após a desmontagem, é necessário identificar um código comum nas amostras para gerar assinaturas em sua base. Esta etapa é importante por dois motivos. Primeiro, o algoritmo de geração de assinaturas requer recursos computacionais significativos e funciona melhor com segmentos de código curto. Em segundo lugar, é preferível obter assinaturas de amostras de código semelhantes, não apenas sintaticamente, mas também semanticamente. Para comparar o código, usamos o utilitário BinDiff. Novamente, também é fácil substituir, e no futuro poderemos integrar outros utilitários na estrutura para comparação.
Se o cluster for pequeno, o BinDiff compara cada executável com todos os outros. Caso contrário, o escopo da comparação será reduzido, caso contrário, o processo poderá ser muito longo. Com base nos resultados obtidos, é construído um gráfico em que os vértices denotam as funções e as arestas indicam sua similaridade. Para encontrar uma boa função geral, basta encontrar um subgráfico conectado com um alto índice de similaridade geral.

O subgrafo ƒ1, ƒ2, ƒ4, ƒ6 com altos indicadores de similaridade de vértices (veja a figura acima) é um excelente candidato para o papel de uma função comum.
Assim que vários desses candidatos são recrutados, os comparamos com a lista branca para evitar a criação de assinaturas com base nas funções comuns das bibliotecas associadas estaticamente à amostra. Para fazer isso, as funções são enviadas para a instância
Kam1n0 , cujo banco de dados anteriormente preenchemos com funções de amostras obviamente puras. Se um clone de qualquer função for detectado, o procedimento de seleção de subgráficos é repetido para selecionar o mais adequado dos demais. Se a verificação não revelar nada, o conjunto de funções é passado para o próximo estágio.
Então a geração da assinatura começa diretamente. As assinaturas ClamAV baseadas em modelo são projetadas para detectar subsequências em dados binários. Portanto, aplicamos a todas as funções extraídas o algoritmo de busca para a maior subsequência comum (LCS, Longest Common Subsequence).
Do ponto de vista computacional, esse algoritmo é bastante caro, mesmo para duas amostras e é visivelmente mais difícil para várias, por isso usamos sua variedade heurística, descrita por
Christian Blichmann . O resultado pode ser algo como isto:

Por fim, você deve testá-lo antes de publicar a assinatura. Verificamos automaticamente a assinatura usando nosso conjunto de testes quanto a falsos positivos. Para maior confiabilidade, usamos o Sigalyzer, um novo recurso do plug-in
CASC IDA Pro ClamAV para gerar e analisar assinaturas (ele será atualizado posteriormente). O Sigalyzer marca seções do binário que correspondem à assinatura do ClamAV que funcionou para ele. Assim, é formada uma representação visual visual da assinatura.
Arquitetura
O BASS é implementado como um cluster de contêineres do Docker. A estrutura é escrita em Python e interage com todas as ferramentas necessárias por meio de serviços da web. A arquitetura foi criada por analogia com o projeto
VxClass , que também gerou assinaturas do ClamAV usando o IDA Pro e o BinDiff, mas depois seria fechado e, ao contrário do BASS, não acessível ao público em geral.

Limitações
O BASS trabalha exclusivamente com executáveis binários, pois a assinatura é gerada a partir do código de amostra. Além disso, ele analisa apenas os executáveis x86 e x86_64. O suporte para outras arquiteturas pode aparecer no futuro.
Até agora, o BASS não lida bem com vírus de arquivo, que incorporam trechos de código pequenos e muito diferentes em objetos infectados e com backdoors, consistindo principalmente em código binário inofensivo (geralmente roubado), complementado por funções maliciosas. Estamos enfrentando essas deficiências trabalhando para otimizar a fase de agrupamento.
E, mais uma vez, queremos lembrá-lo de que o BASS está no estágio de teste alfa e até agora nem tudo está funcionando bem. Mas esperamos que possamos beneficiar a comunidade desenvolvendo essa estrutura como um projeto de código aberto, e teremos prazer em receber quaisquer idéias e críticas.
App
A diferença entre a maior substring comum e a maior subsequência comumA ilustração a seguir mostra a diferença entre a maior substring comum e a maior subsequência comum. A maior subsequência comum é indicada em nossa publicação pelo acrônimo em inglês LCS.

Só isso. E já em 20 de junho será possível conhecer detalhadamente o programa do curso em
casa aberta , que será realizada no modo de webinar.