LOTS: ferramenta gratuita de extração e análise de strings

The Lord Of The Strings é uma ferramenta de código aberto, desenvolvida pela ESET América Latina, para extrair as strings relevantes de uma amostra maliciosa, detectando e removendo automaticamente as strings desnecessárias.

The Lord Of The Strings é uma ferramenta de código aberto, desenvolvida pela ESET América Latina, para extrair as strings relevantes de uma amostra maliciosa, detectando e removendo automaticamente as strings desnecessárias.

The Lord Of The Strings (LOTS) é uma ferramenta gratuita e de código aberto para Linux, desenvolvida pela ESET América Latina, que visa facilitar a análise de strings extraídas de uma amostra maliciosa ao eliminar automaticamente as strings irrelevantes, agilizando os tempos e permitindo que o analista concentre toda a sua atenção nas strings que são realmente importantes. A ferramenta está disponível para download no GitHub.

Para que serve a análise de strings?

Os analistas de malware normalmente realizam dois tipos de análise em amostras:

  • Análise estática: aquelas que são realizadas na amostra sem a necessidade de executá-la. Por exemplo: desmontar o código de um executável, analisar os recursos que contém, quais bibliotecas usa, etc.
  • Análise dinâmica: Aquelas que envolvem a execução da amostra maliciosa. Por exemplo: analisar o tráfego de rede, monitorar chamadas de sistema, monitorar arquivos modificados, usar um debugger, etc.

Uma das análises estáticas mais básicas normalmente realizadas em malware compilado é a análise de strings. Essa análise consiste em extrair, sem executar a amostra, todas as strings do arquivo para posteriormente serem revisadas uma a uma pelo analista.

O tipo de informação que pode ser obtida por meio desse método varia de acordo com a amostra, o tipo de malware em questão e as proteções contra análise existentes. No entanto, geralmente é muito útil e pode servir como uma primeira aproximação a partir da qual definir as próximas etapas da análise.

Aqui estão algumas das diversas informações interessantes que podem ser encontradas ao analisar as strings:

Bibliotecas usadasNomes de arquivos gravados no sistema
Funções API do sistema operacional usadasComandos executados no sistema
Alvos visados pela ameaçaEndereços de registro modificados
Endereços IP aos quais se conectaMensagens exibidas para o usuário
Sites aos quais se conectaTecnologias utilizadas
Endereços de bitcoin aos quais transferir resgatesProteção contra análise
Caminhos nos quais os arquivos são copiados ou gravadosDados do compilador

Quais ferramentas para análise de strings estão disponíveis atualmente?

Existem muitas ferramentas para obter strings, sendo as mais famosas: SysInternals Strings para Windows e Strings para Linux. O processo realizado por essas ferramentas consiste em percorrer o arquivo binário e extrair todas as sequências de bytes que se assemelham a uma string; ou seja, aqueles que terminam em 0x00 no caso de strings ASCII ou 0x0000 no caso de strings Unicode.

Exemplo de string contida em um arquivo, no qual sua representação hexadecimal termina em 0x00.

Como era de se esperar, esse tipo de ferramenta possui um grande número de falsos positivos, pois qualquer sequência de bytes com estrutura semelhante a uma string será considerada uma string válida. Além disso, o número de strings extraídas geralmente aumenta proporcionalmente ao tamanho do arquivo, portanto, centenas de milhares de falsos positivos podem ser obtidos de uma amostra de apenas alguns megabytes.

Output de execução do SysInternals Strings em uma amostra maliciosa, na qual podemos observar strings relevantes para análise e strings irrelevantes (lixo).

Qual a diferença com o LOTS?

As strings de falsos positivos ou strings irrelevantes são perfeitamente identificáveis ​​para o analista. Porém, como precisa ser analisada individualmente, a quantidade passa a representar uma complicação e um atraso no processo de análise. É aí que entra o LOTS, cujo objetivo é descartar automaticamente as strings irrelevantes para que o analista possa se enfocar apenas nas strings reais e úteis.

Considerando a variabilidade das strings que podem ser encontradas em uma amostra de malware, contendo em muitos casos nomes, abreviações, números, símbolos, palavras inventadas, comprimento e características variáveis, etc., optou-se por usar um algoritmo de inteligência artificial tendo em conta que podem ser facilmente extraídos de cada string. Dessa forma, pretende-se que o algoritmo utilize um critério semelhante ao utilizado por um analista para poder discernir se uma string é real ou um falso positivo.

Os testes realizados em vários sets de dados revelaram uma precisão de classificação de aproximadamente 97%, o que a torna uma ferramenta rápida, precisa e prática para facilitar o processo de análise.

Veja uma comparação entre o resultado da ferramenta de strings para Linux e o resultado do LOTS para a mesma amostra maliciosa:

Com o LOTS:

 

Com a ferramenta strings para Linux:

 

É possível perceber claramente que o resultado obtido com o uso do LOTS é muito menor que o de strings para Linux, o que se deve justamente à eliminação das strings irrelevantes.

Esperamos que essa ferramenta seja útil para toda a comunidade de analistas de malware, permitindo reduzir os esforços empregados nessas tarefas, agilizar os tempos de análise e automatizar processos.

Cadastre-se para receber por e-mail todas as atualizações sobre novos artigos que publicamos em nossa seção referente à Crise na Ucrânia.

Newsletter

Discussão