Top Banner
An Innovative Obfuscated Code Analysis Algorithm AppSec Latam 2011
18

An Innovative Obfuscated Code Analysis Algorithm

Oct 22, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: An Innovative Obfuscated Code Analysis Algorithm

An Innovative Obfuscated Code Analysis Algorithm

AppSec Latam 2011

Page 2: An Innovative Obfuscated Code Analysis Algorithm

Sobre mim..

•  Membro Trustwave SpiderLabs Research •  Um dos criadores do Suricata IDS/IPS •  Mantenedor Apache ModSecurity •  Membro IEEE (pesquisas publicadas – China, Inglaterra,

EUA, Brasil, Portugal)

Page 3: An Innovative Obfuscated Code Analysis Algorithm

Agenda

a.  Motivação b.  Objetivos c.  O que é um código ofuscado ? d.  Soluções atuais e.  Algorítmo f.  Resultados g.  Conclusões

Page 4: An Innovative Obfuscated Code Analysis Algorithm

Motivação

•  Ausência de um modelo capaz de classificar a intenção do código ofuscado em IDS, IPS, WAFs, dentre outros devices.

•  Provedores de conteúdo, Hosting… não são capazes de julgar a intenção de códigos ofuscados de seus clientes.

Page 5: An Innovative Obfuscated Code Analysis Algorithm

Copyright Trustwave 2010 Confidential

Objetivos

•  A solução deve atender aos requisitos:

•  Poder de classificação •  Adaptabilidade •  Generalização •  Performance

Page 6: An Innovative Obfuscated Code Analysis Algorithm

O Que é um código ofuscado ??

•  Um código ofuscado é aquele que passou por um processo de transformação de forma que sua leitura seja de dificil entendimento.

Clear  text  javascript   Obfuscated  javascript  

<script>  alert('teste')  </script>  

eval(func5on(p,a,c,k,e,d){e=func5on(c){return  c};if(!''.replace(/^/,String)){while(c-­‐-­‐){d[c]=k[c]||c}k=[func5on(e){return  d[e]}];e=func5on(){return'\\w+'};c=1};while(c-­‐-­‐){if(k[c]){p=p.replace(new  RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return  p}('<0>1(\'2\')</0>',3,3,'script|alert|teste'.split('|'),0,{}))  

Page 7: An Innovative Obfuscated Code Analysis Algorithm

Soluções atuais

•  Análise sintática dos códigos:

•  Geralmente baseadas em string search e pattern matching. •  Quase nenhum poder de adaptação e generalização. •  Boa performance.

•  Análise semântica dos códigos:

•  Geralmente necessita de emulação, execução, desofuscação do código.

•  Bom poder de adaptação e generalização. •  Baixa performance.

Page 8: An Innovative Obfuscated Code Analysis Algorithm

Algorítmo

•  Processo estocástico com estados discretos. •  Cadeias de Markov

•  Carecterísticas de algorítmos para aprendizagem de máquina. •  Base de treinamento e validação •  Supervisão e ajuste por correção de erro

Page 9: An Innovative Obfuscated Code Analysis Algorithm

Algorítmo

•  Definição dos estados •  Aqueles comumente encontrados em códigos ofuscados

Page 10: An Innovative Obfuscated Code Analysis Algorithm

Algorítmo

•  Para cada estado (S), a ligação L(S) entre eles obedecendo a função

•  Origina uma cadeia

•  Onde cada probabilidade de transição é dada:

Page 11: An Innovative Obfuscated Code Analysis Algorithm

Algorítmo

•  Duas cadeias são criadas da base de treinamento, destas duas matrizes quadradas são criadas (modelos) :

•  Dos modelos, temos duas definições: para códigos reconhecidamente benignos e para maliciosos, sendo :

Page 12: An Innovative Obfuscated Code Analysis Algorithm

Algorítmo

•  Em caso de erro de reconhecimento:

•  E um ajuste na cadeia será feito:

Page 13: An Innovative Obfuscated Code Analysis Algorithm

From the spider point of view…

Page 14: An Innovative Obfuscated Code Analysis Algorithm

Algoritmo – pré-treinamento

Modelo  -­‐    Maliciosos   Modelo  -­‐    Benignos  

S1   S2  D  

Page 15: An Innovative Obfuscated Code Analysis Algorithm

Algoritmo - pós-treinamento

Modelo  -­‐    Maliciosos   Modelo  -­‐    Benignos  

S1  

D  

S2  

Page 16: An Innovative Obfuscated Code Analysis Algorithm

Resultados

•  90% de classificação correta

•  90% de classificação correta

Page 17: An Innovative Obfuscated Code Analysis Algorithm

Conclusões

•  O protótipo apresentou uma capacidade aceitável de classificar e de generalizar.

•  Necessidade de aumento da base de treinamento e validação para deploy em ambiente real.

•  Treinamento e validação ~95%

Page 18: An Innovative Obfuscated Code Analysis Algorithm

Obrigado!