A ocorrência de malware em sistemas é cada vez maior dada a variedade de programas maliciosos e ao maior volume de dados trafegando na Internet. A infecção é danosa para os usuários e organizações e, por isso, os sistemas devem buscar técnicas mais eficientes para a detecção destas ameaças. A abordagem deste trabalho foi estudar a identificação do malware pelo seu código assembly por meio da transformação destas instruções para um vetor numérico, por meio do algoritmo ASM2VEC.
88 views
2 Comments
Ten Cel Gustavo Barbi Vieira
on 09/22/2022 at 15:54
Gostaria de parabenizar os autores pelo excelente trabalho.
Tenho uma pergunta: pelo que foi comentado, uma intenção para aprimoramento do trabalho é identificar rotinas comuns entre os diversos códigos e suprimí-las da análise, de modo a possivelmente eliminar o viés que apareceu no presente trabalho.
Gostaria de saber qual a idéia inicial para fazer essa identificação e supressão, tendo em vista que possivelmente esses códigos foram escritos em linguagens de programação distintas e possivelmente com diferentes tipos de acoplamento com bibliotecas de terceiros. Por acaso a idéia seria comparar os códigos originais das rotinas ou a idéia seria gerar os códigos em linguagem Assembly e depois comparar?
rafaelror@ita.br
on 09/23/2022 at 20:21
Agradeço a pergunta, Coronel
Respondendo de maneira objetiva: a ideia é comparar as rotinas utilizando o próprio código assembly.
Explicando de maneira mais detalhada:
O dataset BIG2015 fornece os arquivos dos malware em código assembly (gerados pela Microsoft utilizando o IDA-PRO). Esses arquivos de malware em assembly possuem suas sub-rotinas muito bem definidas, de modo que, após a limpeza do dataset, foi possível produzir a seguinte estrutura para cada arquivo de malware: SUBROTINA 1: instrução 1 instrução 2 … instrução X SUBROTINA 2: instrução 1 instrução 2 … instrução P SUBROTINA 3: instrução 1 instrução 2 … instrução T … SUBROTINA N: instrução 1 instrução 2 … instrução O
A partir dessa estrutura, é possível utilizar o ASM2VEC para comparar cada sub-rotina de um arquivo com as sub-rotinas dos arquivos de outras classes (que estão nos outros repositórios) e, caso elas tenham uma similaridade maior do que um limite (ex: 80%), pressupõe-se que são funções comuns e ambas são retiradas de seus respectivos repositórios.
Como o ASM2VEC identifica similaridade semântica, ainda que as sub-rotinas tenham estruturas sintáticas diferentes, o algoritmo será capaz de identificar que elas possuem funções comuns.
Gostaria de parabenizar os autores pelo excelente trabalho.
Tenho uma pergunta: pelo que foi comentado, uma intenção para aprimoramento do trabalho é identificar rotinas comuns entre os diversos códigos e suprimí-las da análise, de modo a possivelmente eliminar o viés que apareceu no presente trabalho.
Gostaria de saber qual a idéia inicial para fazer essa identificação e supressão, tendo em vista que possivelmente esses códigos foram escritos em linguagens de programação distintas e possivelmente com diferentes tipos de acoplamento com bibliotecas de terceiros. Por acaso a idéia seria comparar os códigos originais das rotinas ou a idéia seria gerar os códigos em linguagem Assembly e depois comparar?
Agradeço a pergunta, Coronel
Respondendo de maneira objetiva: a ideia é comparar as rotinas utilizando o próprio código assembly.
Explicando de maneira mais detalhada:
O dataset BIG2015 fornece os arquivos dos malware em código assembly (gerados pela Microsoft utilizando o IDA-PRO). Esses arquivos de malware em assembly possuem suas sub-rotinas muito bem definidas, de modo que, após a limpeza do dataset, foi possível produzir a seguinte estrutura para cada arquivo de malware:
SUBROTINA 1:
instrução 1
instrução 2
…
instrução X
SUBROTINA 2:
instrução 1
instrução 2
…
instrução P
SUBROTINA 3:
instrução 1
instrução 2
…
instrução T
…
SUBROTINA N:
instrução 1
instrução 2
…
instrução O
A partir dessa estrutura, é possível utilizar o ASM2VEC para comparar cada sub-rotina de um arquivo com as sub-rotinas dos arquivos de outras classes (que estão nos outros repositórios) e, caso elas tenham uma similaridade maior do que um limite (ex: 80%), pressupõe-se que são funções comuns e ambas são retiradas de seus respectivos repositórios.
Como o ASM2VEC identifica similaridade semântica, ainda que as sub-rotinas tenham estruturas sintáticas diferentes, o algoritmo será capaz de identificar que elas possuem funções comuns.