Técnicas para identificação de funções de bibliotecas em binários vinculados estaticamente

Detalhes bibliográficos
Autor(a) principal: Aisawa, William Akihiro Alves
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