Técnicas para identificação de funções de bibliotecas em binários vinculados estaticamente
Autor(a) principal: | |
---|---|
Data de Publicação: | 2020 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Repositório Institucional da UFSCAR |
Texto Completo: | https://repositorio.ufscar.br/handle/ufscar/13375 |
Resumo: | Statically-linked libraries can cause the work of a reverse engineering analyst to get disproportionately hard compared to the work of the programmer who developed the software under study. This situation often arises not as an obfuscation tactic but as a measure to ease software distribution. For example, many malware programs designed for the Linux platform employ static linking to avoid compatibility problems when propagating to other systems. Many tools often used in reverse engineering practice, such as IDA Pro, Ghidra, Radare2, and Binary Ninja, have mechanisms that aim to recognize functions from these libraries, employing techniques that vary from byte sequence matching to the evaluation of control flow graph metrics. Works from the literature propose alternatives rarely adopted in practice, in part due to the lack of a comprehensive evaluation methodology. Besides, the techniques usually assume that the same version of the library used to compile a binary will be used to analyze it but neglect the issue of recognizing that version. There are also no studies about the impact of applying signatures with a different version than the one used to build the program. The present work studies these aspects on recognizing statically linked libraries by applying signatures generated from several distinct versions of the standard C language library and proposes a technique that allows fast recognition, up to 72% cases, of the version of the standard C library linked to Linux binary. This way, the work hopes to contribute to achieving better accuracy when recognizing statically linked library function. |
id |
SCAR_099e6704666bb925cc4cce423ac2cba4 |
---|---|
oai_identifier_str |
oai:repositorio.ufscar.br:ufscar/13375 |
network_acronym_str |
SCAR |
network_name_str |
Repositório Institucional da UFSCAR |
repository_id_str |
4322 |
spelling |
Aisawa, William Akihiro AlvesMatias, Paulohttp://lattes.cnpq.br/3792055796261017http://lattes.cnpq.br/38025449907716691ddac4d6-e909-4936-b960-209484fab44a2020-10-26T20:02:11Z2020-10-26T20:02:11Z2020-08-21AISAWA, William Akihiro Alves. Técnicas para identificação de funções de bibliotecas em binários vinculados estaticamente. 2020. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de São Carlos, São Carlos, 2020. Disponível em: https://repositorio.ufscar.br/handle/ufscar/13375.https://repositorio.ufscar.br/handle/ufscar/13375Statically-linked libraries can cause the work of a reverse engineering analyst to get disproportionately hard compared to the work of the programmer who developed the software under study. This situation often arises not as an obfuscation tactic but as a measure to ease software distribution. For example, many malware programs designed for the Linux platform employ static linking to avoid compatibility problems when propagating to other systems. Many tools often used in reverse engineering practice, such as IDA Pro, Ghidra, Radare2, and Binary Ninja, have mechanisms that aim to recognize functions from these libraries, employing techniques that vary from byte sequence matching to the evaluation of control flow graph metrics. Works from the literature propose alternatives rarely adopted in practice, in part due to the lack of a comprehensive evaluation methodology. Besides, the techniques usually assume that the same version of the library used to compile a binary will be used to analyze it but neglect the issue of recognizing that version. There are also no studies about the impact of applying signatures with a different version than the one used to build the program. The present work studies these aspects on recognizing statically linked libraries by applying signatures generated from several distinct versions of the standard C language library and proposes a technique that allows fast recognition, up to 72% cases, of the version of the standard C library linked to Linux binary. This way, the work hopes to contribute to achieving better accuracy when recognizing statically linked library function.A vinculação de bibliotecas estáticas pode tornar o trabalho de um analista de engenharia reversa desproporcional ao trabalho do desenvolvedor que criou o programa sob estudo, pois torna-se necessário examinar uma quantidade muito maior de código. Muitas vezes essa situação ocorre não como tática de ofuscação, mas sim como uma medida para distribuir o programa de forma mais simples. Como exemplo, uma grande proporção de códigos maliciosos (malware) para a plataforma Linux utiliza vinculação estática para evitar problemas de compatibilidade ao se propagar. Diversas ferramentas comumente utilizadas nos trabalhos de engenharia reversa, como IDA Pro, Ghidra, Radare2 e Binary Ninja possuem mecanismos para tentar reconhecer as funções dessas bibliotecas, com técnicas que variam desde o casamento de sequências de bytes até a avaliação de métricas em grafos de controle de fluxo. Trabalhos da literatura propõe alternativas que raramente são adotadas na prática, em parte devido à falta de uma metodologia compreensiva de avaliação. Além disso, as técnicas geralmente assumem que o binário será analisado com uma assinatura gerada a partir da mesma versão da biblioteca utilizada para compilá-lo, mas o problema de reconhecer essa versão é negligenciado. Também não existem estudos sobre o impacto da aplicação de assinaturas com versão divergente da versão utilizada na compilação original de um programa. Este trabalho estuda esses aspectos do reconhecimento de funções de bibliotecas vinculadas estaticamente por meio da aplicação de assinaturas geradas a partir de uma base com diversas versões da biblioteca padrão da linguagem C, além de propor uma técnica que permite reconhecer de forma rápida, em até 72% dos casos, a biblioteca padrão da linguagem C vinculada em binários para a plataforma Linux. Desta forma, o trabalho pretende contribuir para uma maior acurácia no reconhecimento de funções de bibliotecas vinculadas estaticamenteConselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq)CNPq: 134236/2019-0porUniversidade Federal de São CarlosCâmpus São CarlosPrograma de Pós-Graduação em Ciência da Computação - PPGCCUFSCarAttribution-NonCommercial-NoDerivs 3.0 Brazilhttp://creativecommons.org/licenses/by-nc-nd/3.0/br/info:eu-repo/semantics/openAccessEngenharia reversaGrafo de fluxo de controleAnálise estáticaVinculação estáticaReverse engineeringControl-flow graphStatic analysisStatic linkingCIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAOTécnicas para identificação de funções de bibliotecas em binários vinculados estaticamenteTechniques for identifying library functions in statically linked binariesinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesis60060020d76c6a-aaf2-462e-b3ff-4a8f4b6c83bfreponame:Repositório Institucional da UFSCARinstname:Universidade Federal de São Carlos (UFSCAR)instacron:UFSCARORIGINALTécnicas para identificação de funções de bibliotecas em binários vinculados estaticamente.pdfTécnicas para identificação de funções de bibliotecas em binários vinculados estaticamente.pdfapplication/pdf894851https://repositorio.ufscar.br/bitstream/ufscar/13375/6/T%c3%a9cnicas%20para%20identifica%c3%a7%c3%a3o%20de%20fun%c3%a7%c3%b5es%20de%20bibliotecas%20em%20bin%c3%a1rios%20vinculados%20estaticamente.pdf119e4177fd964661b31522a6208ea202MD56carta de autorização de publicação.pdfcarta de autorização de publicação.pdfcarta de autorização de publicaçãoapplication/pdf128673https://repositorio.ufscar.br/bitstream/ufscar/13375/4/carta%20de%20autoriza%c3%a7%c3%a3o%20de%20publica%c3%a7%c3%a3o.pdf762f5d7f25ccbf4b23652d370eefa05dMD54CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8811https://repositorio.ufscar.br/bitstream/ufscar/13375/7/license_rdfe39d27027a6cc9cb039ad269a5db8e34MD57TEXTTécnicas para identificação de funções de bibliotecas em binários vinculados estaticamente.pdf.txtTécnicas para identificação de funções de bibliotecas em binários vinculados estaticamente.pdf.txtExtracted texttext/plain97620https://repositorio.ufscar.br/bitstream/ufscar/13375/8/T%c3%a9cnicas%20para%20identifica%c3%a7%c3%a3o%20de%20fun%c3%a7%c3%b5es%20de%20bibliotecas%20em%20bin%c3%a1rios%20vinculados%20estaticamente.pdf.txt0016a5b9e3190ba55a979f65030b643bMD58carta de autorização de publicação.pdf.txtcarta de autorização de publicação.pdf.txtExtracted texttext/plain1502https://repositorio.ufscar.br/bitstream/ufscar/13375/10/carta%20de%20autoriza%c3%a7%c3%a3o%20de%20publica%c3%a7%c3%a3o.pdf.txtf4b982b97ad3be34f7db9ab3c461c3d8MD510THUMBNAILTécnicas para identificação de funções de bibliotecas em binários vinculados estaticamente.pdf.jpgTécnicas para identificação de funções de bibliotecas em binários vinculados estaticamente.pdf.jpgIM Thumbnailimage/jpeg7233https://repositorio.ufscar.br/bitstream/ufscar/13375/9/T%c3%a9cnicas%20para%20identifica%c3%a7%c3%a3o%20de%20fun%c3%a7%c3%b5es%20de%20bibliotecas%20em%20bin%c3%a1rios%20vinculados%20estaticamente.pdf.jpg1af57322da6a55bbea12e4607716eb95MD59carta de autorização de publicação.pdf.jpgcarta de autorização de publicação.pdf.jpgIM Thumbnailimage/jpeg13113https://repositorio.ufscar.br/bitstream/ufscar/13375/11/carta%20de%20autoriza%c3%a7%c3%a3o%20de%20publica%c3%a7%c3%a3o.pdf.jpg9b6636b3957e0d321ab689dbb87a9b71MD511ufscar/133752023-09-18 18:32:03.328oai:repositorio.ufscar.br:ufscar/13375Repositório InstitucionalPUBhttps://repositorio.ufscar.br/oai/requestopendoar:43222023-09-18T18:32:03Repositório Institucional da UFSCAR - Universidade Federal de São Carlos (UFSCAR)false |
dc.title.por.fl_str_mv |
Técnicas para identificação de funções de bibliotecas em binários vinculados estaticamente |
dc.title.alternative.eng.fl_str_mv |
Techniques for identifying library functions in statically linked binaries |
title |
Técnicas para identificação de funções de bibliotecas em binários vinculados estaticamente |
spellingShingle |
Técnicas para identificação de funções de bibliotecas em binários vinculados estaticamente Aisawa, William Akihiro Alves Engenharia reversa Grafo de fluxo de controle Análise estática Vinculação estática Reverse engineering Control-flow graph Static analysis Static linking CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO |
title_short |
Técnicas para identificação de funções de bibliotecas em binários vinculados estaticamente |
title_full |
Técnicas para identificação de funções de bibliotecas em binários vinculados estaticamente |
title_fullStr |
Técnicas para identificação de funções de bibliotecas em binários vinculados estaticamente |
title_full_unstemmed |
Técnicas para identificação de funções de bibliotecas em binários vinculados estaticamente |
title_sort |
Técnicas para identificação de funções de bibliotecas em binários vinculados estaticamente |
author |
Aisawa, William Akihiro Alves |
author_facet |
Aisawa, William Akihiro Alves |
author_role |
author |
dc.contributor.authorlattes.por.fl_str_mv |
http://lattes.cnpq.br/3802544990771669 |
dc.contributor.author.fl_str_mv |
Aisawa, William Akihiro Alves |
dc.contributor.advisor1.fl_str_mv |
Matias, Paulo |
dc.contributor.advisor1Lattes.fl_str_mv |
http://lattes.cnpq.br/3792055796261017 |
dc.contributor.authorID.fl_str_mv |
1ddac4d6-e909-4936-b960-209484fab44a |
contributor_str_mv |
Matias, Paulo |
dc.subject.por.fl_str_mv |
Engenharia reversa Grafo de fluxo de controle Análise estática Vinculação estática |
topic |
Engenharia reversa Grafo de fluxo de controle Análise estática Vinculação estática Reverse engineering Control-flow graph Static analysis Static linking CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO |
dc.subject.eng.fl_str_mv |
Reverse engineering Control-flow graph Static analysis Static linking |
dc.subject.cnpq.fl_str_mv |
CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO |
description |
Statically-linked libraries can cause the work of a reverse engineering analyst to get disproportionately hard compared to the work of the programmer who developed the software under study. This situation often arises not as an obfuscation tactic but as a measure to ease software distribution. For example, many malware programs designed for the Linux platform employ static linking to avoid compatibility problems when propagating to other systems. Many tools often used in reverse engineering practice, such as IDA Pro, Ghidra, Radare2, and Binary Ninja, have mechanisms that aim to recognize functions from these libraries, employing techniques that vary from byte sequence matching to the evaluation of control flow graph metrics. Works from the literature propose alternatives rarely adopted in practice, in part due to the lack of a comprehensive evaluation methodology. Besides, the techniques usually assume that the same version of the library used to compile a binary will be used to analyze it but neglect the issue of recognizing that version. There are also no studies about the impact of applying signatures with a different version than the one used to build the program. The present work studies these aspects on recognizing statically linked libraries by applying signatures generated from several distinct versions of the standard C language library and proposes a technique that allows fast recognition, up to 72% cases, of the version of the standard C library linked to Linux binary. This way, the work hopes to contribute to achieving better accuracy when recognizing statically linked library function. |
publishDate |
2020 |
dc.date.accessioned.fl_str_mv |
2020-10-26T20:02:11Z |
dc.date.available.fl_str_mv |
2020-10-26T20:02:11Z |
dc.date.issued.fl_str_mv |
2020-08-21 |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.citation.fl_str_mv |
AISAWA, William Akihiro Alves. Técnicas para identificação de funções de bibliotecas em binários vinculados estaticamente. 2020. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de São Carlos, São Carlos, 2020. Disponível em: https://repositorio.ufscar.br/handle/ufscar/13375. |
dc.identifier.uri.fl_str_mv |
https://repositorio.ufscar.br/handle/ufscar/13375 |
identifier_str_mv |
AISAWA, William Akihiro Alves. Técnicas para identificação de funções de bibliotecas em binários vinculados estaticamente. 2020. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de São Carlos, São Carlos, 2020. Disponível em: https://repositorio.ufscar.br/handle/ufscar/13375. |
url |
https://repositorio.ufscar.br/handle/ufscar/13375 |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.relation.confidence.fl_str_mv |
600 600 |
dc.relation.authority.fl_str_mv |
20d76c6a-aaf2-462e-b3ff-4a8f4b6c83bf |
dc.rights.driver.fl_str_mv |
Attribution-NonCommercial-NoDerivs 3.0 Brazil http://creativecommons.org/licenses/by-nc-nd/3.0/br/ info:eu-repo/semantics/openAccess |
rights_invalid_str_mv |
Attribution-NonCommercial-NoDerivs 3.0 Brazil http://creativecommons.org/licenses/by-nc-nd/3.0/br/ |
eu_rights_str_mv |
openAccess |
dc.publisher.none.fl_str_mv |
Universidade Federal de São Carlos Câmpus São Carlos |
dc.publisher.program.fl_str_mv |
Programa de Pós-Graduação em Ciência da Computação - PPGCC |
dc.publisher.initials.fl_str_mv |
UFSCar |
publisher.none.fl_str_mv |
Universidade Federal de São Carlos Câmpus São Carlos |
dc.source.none.fl_str_mv |
reponame:Repositório Institucional da UFSCAR instname:Universidade Federal de São Carlos (UFSCAR) instacron:UFSCAR |
instname_str |
Universidade Federal de São Carlos (UFSCAR) |
instacron_str |
UFSCAR |
institution |
UFSCAR |
reponame_str |
Repositório Institucional da UFSCAR |
collection |
Repositório Institucional da UFSCAR |
bitstream.url.fl_str_mv |
https://repositorio.ufscar.br/bitstream/ufscar/13375/6/T%c3%a9cnicas%20para%20identifica%c3%a7%c3%a3o%20de%20fun%c3%a7%c3%b5es%20de%20bibliotecas%20em%20bin%c3%a1rios%20vinculados%20estaticamente.pdf https://repositorio.ufscar.br/bitstream/ufscar/13375/4/carta%20de%20autoriza%c3%a7%c3%a3o%20de%20publica%c3%a7%c3%a3o.pdf https://repositorio.ufscar.br/bitstream/ufscar/13375/7/license_rdf https://repositorio.ufscar.br/bitstream/ufscar/13375/8/T%c3%a9cnicas%20para%20identifica%c3%a7%c3%a3o%20de%20fun%c3%a7%c3%b5es%20de%20bibliotecas%20em%20bin%c3%a1rios%20vinculados%20estaticamente.pdf.txt https://repositorio.ufscar.br/bitstream/ufscar/13375/10/carta%20de%20autoriza%c3%a7%c3%a3o%20de%20publica%c3%a7%c3%a3o.pdf.txt https://repositorio.ufscar.br/bitstream/ufscar/13375/9/T%c3%a9cnicas%20para%20identifica%c3%a7%c3%a3o%20de%20fun%c3%a7%c3%b5es%20de%20bibliotecas%20em%20bin%c3%a1rios%20vinculados%20estaticamente.pdf.jpg https://repositorio.ufscar.br/bitstream/ufscar/13375/11/carta%20de%20autoriza%c3%a7%c3%a3o%20de%20publica%c3%a7%c3%a3o.pdf.jpg |
bitstream.checksum.fl_str_mv |
119e4177fd964661b31522a6208ea202 762f5d7f25ccbf4b23652d370eefa05d e39d27027a6cc9cb039ad269a5db8e34 0016a5b9e3190ba55a979f65030b643b f4b982b97ad3be34f7db9ab3c461c3d8 1af57322da6a55bbea12e4607716eb95 9b6636b3957e0d321ab689dbb87a9b71 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositório Institucional da UFSCAR - Universidade Federal de São Carlos (UFSCAR) |
repository.mail.fl_str_mv |
|
_version_ |
1802136381695197184 |