Adapting Call-string Approach for x86 Obfuscated Binaries - Boccardo, Davidson R.; Lakhotia, Arun; Manacero Jr, Aleardo; Venable, Michael (Anais do Simpósio Brasileiro de Cibersegurança (SBSeg); 2009: Anais do IX Simpósio Brasileiro de Segurança da Informação e de Sistemas ComputacionaisDO - 10.5753/sbseg.2009.20629, 2009)
A técnica 'call-string', técnica clássica para análise interprocedural, não pode ser aplicada a binários que não seguem padrões de uso da pilha utilizados por compiladores de linguagens de alto nível. Exemplos são programas que ofuscam chamadas de procedimento usando uma combinação de instruções 'push' e 'ret', que é uma técnica extremamente utilizada para esconder código malicioso. Neste artigo, uma técnica equivalente à 'call-string' é demonstrada, em que um grafo abstrato da pilha pode ser utilizado para identificar estas ofuscações. Um grafo abstrato da pilha contem nós representando instruções que realizam inserção na pilha. Uma aresta neste grafo representa a próxima instrução que realiza a inserção na pilha abstrata ao longo de um caminho do fluxo de controle. Para um programa que manipula a pilha utilizando somente instruções 'call' e 'ret', seu grafo abstrato da pilha é equivalente ao seu grafo de chamadas. Desde que o grafo abstrato da pilha representa operações na pilha por qualquer instrução, o mesmo torna-se um substituto apropriado para o grafo de chamadas para análise interprocedural de binários ofuscados.