Context-Sensitive Analysis of x86 Obfuscated Executables
Autor(a) principal: | |
---|---|
Data de Publicação: | 2009 |
Tipo de documento: | Tese |
Idioma: | por |
Título da fonte: | Repositório Institucional do INMETRO |
Texto Completo: | http://hdl.handle.net/10926/1069 |
Resumo: | Ofuscação de código tem por finalidade dificultar a detecção de propriedades intrínsecas de um algoritmo através de alterações em sua sintaxe, entretanto preservando sua semântica. Desenvolvedores de software usam ofuscação de código para defender seus programas contra ataques de propriedade intelectual e para aumentar a segurança do código. Por outro lado, programadores maliciosos geralmente ofuscam seus códigos para esconder comportamento malicioso e para evitar detecção pelos anti-vírus. Nesta tese, é introduzido um método para realizar an alise com sensitividade ao contexto em binários com ofuscamento de chamada e retorno de procedimento. Para obter semântica equivalente, estes binários utilizam operações diretamente na pilha ao invés de instruções convencionais de chamada e retorno de procedimento. No estado da arte atual, a definição de sensitividade ao contexto está associada com operações de chamada e retorno de procedimento, assim, análises interprocedurais clássicas não são confiáveis para analisar binários cujas operações não podem ser determinadas. Uma nova definição de sensitividade ao contexto é introduzida, baseada no estado da pilha em qualquer instrução. Enquanto mudanças em contextos á chamada de procedimento são intrinsicamente relacionadas com transferência de controle, assim, podendo ser obtidas em termos de caminhos em um grafo de controle de fluxo interprocedural, o mesmo não é aplicável para mudanças em contextos à pilha. Um framework baseado em interpretação abstrata é desenvolvido para avaliar contexto baseado no estado da pilha e para derivar métodos baseado em contextos à chamada de procedimento para uso com contextos baseado no estado da pilha. O método proposto não requer o uso explícito de instruções de chamada e retorno de procedimento, porém depende do conhecimento de como o ponteiro da pilha é representado e manipulado. O método apresentado é utilizado para criar uma versão com sensitividade ao contexto de um algoritmo para detecção de ofuscamento de chamadas de Venable et al.. Resultados experimentais mostram que a versão com sensitividade ao contexto do algoritmo gera resultados mais precisos, como também, é computacionalmente mais eficiente do que a versão sem sensitividade ao contexto. ____________________________________________________________________________________. |
id |
INMT_c944ccfc5bf4c9dd4537e45682ac1eda |
---|---|
oai_identifier_str |
oai:xrepo01s.inmetro.gov.br:10926/1069 |
network_acronym_str |
INMT |
network_name_str |
Repositório Institucional do INMETRO |
repository_id_str |
|
spelling |
info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisContext-Sensitive Analysis of x86 Obfuscated ExecutablesManacero Júnior, AleardoBoccardo, Davidson Rodrigo20092011-05-24T13:08:41Z2011-05-24T13:08:41ZOfuscação de código tem por finalidade dificultar a detecção de propriedades intrínsecas de um algoritmo através de alterações em sua sintaxe, entretanto preservando sua semântica. Desenvolvedores de software usam ofuscação de código para defender seus programas contra ataques de propriedade intelectual e para aumentar a segurança do código. Por outro lado, programadores maliciosos geralmente ofuscam seus códigos para esconder comportamento malicioso e para evitar detecção pelos anti-vírus. Nesta tese, é introduzido um método para realizar an alise com sensitividade ao contexto em binários com ofuscamento de chamada e retorno de procedimento. Para obter semântica equivalente, estes binários utilizam operações diretamente na pilha ao invés de instruções convencionais de chamada e retorno de procedimento. No estado da arte atual, a definição de sensitividade ao contexto está associada com operações de chamada e retorno de procedimento, assim, análises interprocedurais clássicas não são confiáveis para analisar binários cujas operações não podem ser determinadas. Uma nova definição de sensitividade ao contexto é introduzida, baseada no estado da pilha em qualquer instrução. Enquanto mudanças em contextos á chamada de procedimento são intrinsicamente relacionadas com transferência de controle, assim, podendo ser obtidas em termos de caminhos em um grafo de controle de fluxo interprocedural, o mesmo não é aplicável para mudanças em contextos à pilha. Um framework baseado em interpretação abstrata é desenvolvido para avaliar contexto baseado no estado da pilha e para derivar métodos baseado em contextos à chamada de procedimento para uso com contextos baseado no estado da pilha. O método proposto não requer o uso explícito de instruções de chamada e retorno de procedimento, porém depende do conhecimento de como o ponteiro da pilha é representado e manipulado. O método apresentado é utilizado para criar uma versão com sensitividade ao contexto de um algoritmo para detecção de ofuscamento de chamadas de Venable et al.. Resultados experimentais mostram que a versão com sensitividade ao contexto do algoritmo gera resultados mais precisos, como também, é computacionalmente mais eficiente do que a versão sem sensitividade ao contexto. ____________________________________________________________________________________.ABSTRACT: A code obfuscation intends to confuse a program in order to make it more dificult to understand while preserving its functionality. Programs may be obfuscated to protect intellectual property and to increase security of code. Programs may also be obfuscated to hide malicious behavior and to evade detection by anti-virus scanners. We introduce a method for context-sensitive analysis of binaries that may have obfuscated procedure call and return operations. These binaries may use direct stack operators instead of the native call and ret instructions to achieve equivalent behavior. Since definition of context-sensitivity and algorithms for context-sensitive analysis has thus far been based on the specific semantics associated to procedure call and return operations, classic interprocedural analyses cannot be used reliably for analyzing programs in which these operations cannot be discerned. A new notion of context-sensitivity is introduced that is based on the state of the stack at any instruction. While changes in calling-context are associated with transfer of control, and hence can be reasoned in terms of paths in an interprocedural control ow graph (ICFG), the same is not true for changes in stackcontext. An abstract interpretation based framework is developed to reason about stackcontext and to derive analogues of call-strings based methods for the context-sensitive analysis using stack-context. This analysis requires the knowledge of how the stack, rather the stack pointer, is represented and on the knowledge of operators that manipulate the stack pointer. The method presented is used to create a context-sensitive version of Venable et al.'s algorithm for detecting obfuscated calls. Experimental results show that the contextsensitive version of the algorithm generates more precise results and is also computationally more eficient than its context-insensitive counterpart.104 f. :il., tab.Submitted by Ester Silva (ebsilva@inmetro.gov.br) on 2011-05-11T18:38:51Z No. of bitstreams: 2 2009_davidson.pdf: 1581522 bytes, checksum: 87986a2e7f9797bfd6e13151811a38ae (MD5) 2009_davidson.pdf: 1581522 bytes, checksum: 87986a2e7f9797bfd6e13151811a38ae (MD5)Rejected by Catarina Soares(cfsoares@inmetro.gov.br), reason: on 2011-05-11T18:58:51Z (GMT)Submitted by Ester Silva (ebsilva@inmetro.gov.br) on 2011-05-13T12:47:51Z No. of bitstreams: 2 2009_davidson.pdf: 1581522 bytes, checksum: 87986a2e7f9797bfd6e13151811a38ae (MD5) 2009_davidson.pdf: 1581522 bytes, checksum: 87986a2e7f9797bfd6e13151811a38ae (MD5)Approved for entry into archive by Catarina Soares(cfsoares@inmetro.gov.br) on 2011-05-24T13:08:41Z (GMT) No. of bitstreams: 2 2009_davidson.pdf: 1581522 bytes, checksum: 87986a2e7f9797bfd6e13151811a38ae (MD5) 2009_davidson.pdf: 1581522 bytes, checksum: 87986a2e7f9797bfd6e13151811a38ae (MD5)Made available in DSpace on 2011-05-24T13:08:41Z (GMT). No. of bitstreams: 2 2009_davidson.pdf: 1581522 bytes, checksum: 87986a2e7f9797bfd6e13151811a38ae (MD5) 2009_davidson.pdf: 1581522 bytes, checksum: 87986a2e7f9797bfd6e13151811a38ae (MD5) Previous issue date: 2009porhttp://hdl.handle.net/10926/1069DMD_hdl_10926/1069BOCCARDO, Davidson Rodrigo. Context-Sensitive Analysis of x86 Obfuscated Executables. 2009, Tese (Doutorado em Engenharia Elétrica)-Universidade Estadual Paulista, Ilha Solteira, 2009.info:eu-repo/semantics/openAccessreponame:Repositório Institucional do INMETROinstname:Instituto Nacional de Metrologia, Qualidade e Tecnologia (INMETRO)instacron:INMETROBoccardo_2009.pdfhttp://xrepo01s.inmetro.gov.br/bitstream/10926/1069/2/Boccardo_2009.pdfapplication/pdf1581522http://xrepo01s.inmetro.gov.br/bitstream/10926/1069/2/Boccardo_2009.pdf87986a2e7f9797bfd6e13151811a38aeMD510926_1069_22009_davidson.pdf.txthttp://xrepo01s.inmetro.gov.br/bitstream/10926/1069/25/2009_davidson.pdf.txttext/plain191586http://xrepo01s.inmetro.gov.br/bitstream/10926/1069/25/2009_davidson.pdf.txt6fcc6621d0cd443cde26c897d464a25fMD510926_1069_25Boccardo_2009.pdf.txthttp://xrepo01s.inmetro.gov.br/bitstream/10926/1069/26/Boccardo_2009.pdf.txttext/plain191586http://xrepo01s.inmetro.gov.br/bitstream/10926/1069/26/Boccardo_2009.pdf.txt6fcc6621d0cd443cde26c897d464a25fMD510926_1069_262024-06-10T15:24:34Zoai:xrepo01s.inmetro.gov.br:10926/1069Repositório de Publicaçõeshttp://repositorios.inmetro.gov.br/oai/requestopendoar:2012-10-08T16:20:20Repositório Institucional do INMETRO - Instituto Nacional de Metrologia, Qualidade e Tecnologia (INMETRO)false |
dc.title.none.fl_str_mv |
Context-Sensitive Analysis of x86 Obfuscated Executables |
title |
Context-Sensitive Analysis of x86 Obfuscated Executables |
spellingShingle |
Context-Sensitive Analysis of x86 Obfuscated Executables Boccardo, Davidson Rodrigo |
title_short |
Context-Sensitive Analysis of x86 Obfuscated Executables |
title_full |
Context-Sensitive Analysis of x86 Obfuscated Executables |
title_fullStr |
Context-Sensitive Analysis of x86 Obfuscated Executables |
title_full_unstemmed |
Context-Sensitive Analysis of x86 Obfuscated Executables |
title_sort |
Context-Sensitive Analysis of x86 Obfuscated Executables |
author |
Boccardo, Davidson Rodrigo |
author_facet |
Boccardo, Davidson Rodrigo |
author_role |
author |
dc.contributor.advisor1.fl_str_mv |
Manacero Júnior, Aleardo |
dc.contributor.author.fl_str_mv |
Boccardo, Davidson Rodrigo |
contributor_str_mv |
Manacero Júnior, Aleardo |
description |
Ofuscação de código tem por finalidade dificultar a detecção de propriedades intrínsecas de um algoritmo através de alterações em sua sintaxe, entretanto preservando sua semântica. Desenvolvedores de software usam ofuscação de código para defender seus programas contra ataques de propriedade intelectual e para aumentar a segurança do código. Por outro lado, programadores maliciosos geralmente ofuscam seus códigos para esconder comportamento malicioso e para evitar detecção pelos anti-vírus. Nesta tese, é introduzido um método para realizar an alise com sensitividade ao contexto em binários com ofuscamento de chamada e retorno de procedimento. Para obter semântica equivalente, estes binários utilizam operações diretamente na pilha ao invés de instruções convencionais de chamada e retorno de procedimento. No estado da arte atual, a definição de sensitividade ao contexto está associada com operações de chamada e retorno de procedimento, assim, análises interprocedurais clássicas não são confiáveis para analisar binários cujas operações não podem ser determinadas. Uma nova definição de sensitividade ao contexto é introduzida, baseada no estado da pilha em qualquer instrução. Enquanto mudanças em contextos á chamada de procedimento são intrinsicamente relacionadas com transferência de controle, assim, podendo ser obtidas em termos de caminhos em um grafo de controle de fluxo interprocedural, o mesmo não é aplicável para mudanças em contextos à pilha. Um framework baseado em interpretação abstrata é desenvolvido para avaliar contexto baseado no estado da pilha e para derivar métodos baseado em contextos à chamada de procedimento para uso com contextos baseado no estado da pilha. O método proposto não requer o uso explícito de instruções de chamada e retorno de procedimento, porém depende do conhecimento de como o ponteiro da pilha é representado e manipulado. O método apresentado é utilizado para criar uma versão com sensitividade ao contexto de um algoritmo para detecção de ofuscamento de chamadas de Venable et al.. Resultados experimentais mostram que a versão com sensitividade ao contexto do algoritmo gera resultados mais precisos, como também, é computacionalmente mais eficiente do que a versão sem sensitividade ao contexto. ____________________________________________________________________________________. |
publishDate |
2009 |
dc.date.issued.fl_str_mv |
2009 |
dc.date.available.fl_str_mv |
2011-05-24T13:08:41Z |
dc.date.accessioned.fl_str_mv |
2011-05-24T13:08:41Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/doctoralThesis |
format |
doctoralThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://hdl.handle.net/10926/1069 DMD_hdl_10926/1069 |
dc.identifier.citation.fl_str_mv |
BOCCARDO, Davidson Rodrigo. Context-Sensitive Analysis of x86 Obfuscated Executables. 2009, Tese (Doutorado em Engenharia Elétrica)-Universidade Estadual Paulista, Ilha Solteira, 2009. |
url |
http://hdl.handle.net/10926/1069 |
identifier_str_mv |
DMD_hdl_10926/1069 BOCCARDO, Davidson Rodrigo. Context-Sensitive Analysis of x86 Obfuscated Executables. 2009, Tese (Doutorado em Engenharia Elétrica)-Universidade Estadual Paulista, Ilha Solteira, 2009. |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.bitstream.fl_str_mv |
application/pdf text/plain text/plain |
dc.source.none.fl_str_mv |
reponame:Repositório Institucional do INMETRO instname:Instituto Nacional de Metrologia, Qualidade e Tecnologia (INMETRO) instacron:INMETRO |
instname_str |
Instituto Nacional de Metrologia, Qualidade e Tecnologia (INMETRO) |
instacron_str |
INMETRO |
institution |
INMETRO |
reponame_str |
Repositório Institucional do INMETRO |
collection |
Repositório Institucional do INMETRO |
repository.name.fl_str_mv |
Repositório Institucional do INMETRO - Instituto Nacional de Metrologia, Qualidade e Tecnologia (INMETRO) |
repository.mail.fl_str_mv |
|
_version_ |
1801499965520871424 |