SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
Extraindo Caracterı́sticas de Arquivos Binários Executáveis
Marcus Botacin1
1Universidade Federal do Paraná (UFPR)
mfbotacin@inf.ufpr.br
2021
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 1 / 16 UFPR
Por que Investigar Binários Executáveis?
Para detectar malware (classificação malware vs. goodware)
Para realizar análises forenses (o que tem dentro?).
Para se identificar versões (Windows 8 vs. Windows 10).
Para se criar uma filogenia (qual software veio antes de qual?).
E se você não tem o código-fonte?
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 2 / 16 UFPR
Certeza que isso funciona?
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 3 / 16 UFPR
Como Funcionam Binários Executáveis?
Definição
Binários executáveis precisam seguir uma estrutura pré-definida para que o
sistema operacional saiba como carregá-los.
Informações Importantes para o SO
Quantos bytes devem ser alocados para carregar um dado binário?
Qual a primeira instrução a ser executada?
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 4 / 16 UFPR
Binários Executáveis Dependem do SO
Iguais, mas diferentes!
Em geral, binários executáveis respondem as mesmas perguntas ao SO, mas seus
campos tem tamanhos diferentes e estão localizados em diferentes structs.
Formatos para cada SO
Linux: Executable and Linkable Format (ELF).
Windows: Portable Executable (PE).a
a
Busque Conhecimento: A Wikipedia sabe tudo sobre estes formatos!
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 5 / 16 UFPR
O formato PE
Estrutura Básica
Cabeçalhos: Respostas
básicas e apontadores para
dados.
Seções: Os dados em si.
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 6 / 16 UFPR
Como o OS interpreta um arquivo binário executável
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 7 / 16 UFPR
Como você deveria interpretar
1 typedef struct {
2 uint16_t e_magic;
3 uint16_t e_cblp;
4 uint16_t e_cp;
5 uint16_t e_crlc;
6 uint16_t e_cparhdr;
7 uint16_t e_minalloc;
8 uint16_t e_maxalloc;
9 uint16_t e_ss;
10 uint16_t e_sp;
11 uint16_t e_csum;
1 uint16_t e_ip;
2 uint16_t e_cs;
3 uint16_t e_lfarlc;
4 uint16_t e_ovno;
5 uint16_t e_res [4];
6 uint16_t e_oemid;
7 uint16_t e_oeminfo;
8 uint16_t e_res2 [10];
9 uint32_t e_lfanew;
10 } IMAGE_DOS_HEADER ;
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 8 / 16 UFPR
O que tem dentro das seções?
Uma generalização
.text: Instruções.
.data: Dados inicializados (constantes?).
.bss: Dados não-inicializados (variáveis?)
outras: Binários podem ter diferentes números e nomes de seções.
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 9 / 16 UFPR
O Que Podemos descobrir sabendo disso?
Se identifiquei o magic MZ num buffer: Injeção de código.
Se identifiquei um timestamp anterior a 1970: Valor forjado.
Se o checksum não bate: Binário adulterado.
Seções com permissões RWX: Código auto-modificável.
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 10 / 16 UFPR
Como Manipular Binários Executáveis?
ELF: pyelftools (https://github.com/eliben/pyelftools)
PE: pefile (https://github.com/erocarrera/pefile)
Multi: lief (https://lief.quarkslab.com/)
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 11 / 16 UFPR
Exemplos com pefile (1/2)
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 12 / 16 UFPR
Exemplos com pefile (2/2)
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 13 / 16 UFPR
Exemplos com pefile (2/2)
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 14 / 16 UFPR
Tarefa 1/2
Enumerar as seções executáveis de um binário PE.
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 15 / 16 UFPR
Tarefa 2/2
Comparar as seções de dois binários PE.
Extraindo Caracterı́sticas de Arquivos Binários Executáveis 16 / 16 UFPR

Mais conteúdo relacionado

Semelhante a Extraindo Caracterı́sticas de Arquivos Binários Executáveis

Monitoramento de malware em Windows NT 6.x - 64bits
Monitoramento de malware em Windows NT 6.x - 64bitsMonitoramento de malware em Windows NT 6.x - 64bits
Monitoramento de malware em Windows NT 6.x - 64bitsArthur Paixão
 
Metasploit-1_atualizacao.pdf
Metasploit-1_atualizacao.pdfMetasploit-1_atualizacao.pdf
Metasploit-1_atualizacao.pdffabio154906
 
Palestra - FACSENAC - De Hacker e louco, todo mundo tem um pouco
Palestra - FACSENAC - De Hacker e louco, todo mundo tem um poucoPalestra - FACSENAC - De Hacker e louco, todo mundo tem um pouco
Palestra - FACSENAC - De Hacker e louco, todo mundo tem um poucoAs Zone
 
Facsenac - De hacker e louco, todo mundo tem um pouco
Facsenac - De hacker e louco, todo mundo tem um poucoFacsenac - De hacker e louco, todo mundo tem um pouco
Facsenac - De hacker e louco, todo mundo tem um poucoThiago Dieb
 
Construindo um analisador de executáveis
Construindo um analisador de executáveisConstruindo um analisador de executáveis
Construindo um analisador de executáveisFernando Mercês
 
Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...
Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...
Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...Vale Security Conference
 
Engenharia Reversa no Linux
Engenharia Reversa no LinuxEngenharia Reversa no Linux
Engenharia Reversa no LinuxFernando Mercês
 
Engenharia reversa
Engenharia reversaEngenharia reversa
Engenharia reversaEMSNEWS
 
Introdução ao teste de intrusão em redes
Introdução ao teste de intrusão em redesIntrodução ao teste de intrusão em redes
Introdução ao teste de intrusão em redesAlisson Fuckner
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionaisvini_campos
 
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...Thiago Dieb
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
Um Ambiente Grafico para Desenvolvimento de Software de Controle para Robos M...
Um Ambiente Grafico para Desenvolvimento de Software de Controle para Robos M...Um Ambiente Grafico para Desenvolvimento de Software de Controle para Robos M...
Um Ambiente Grafico para Desenvolvimento de Software de Controle para Robos M...Humberto Marchezi
 
Testes de unidade e TDD SoLiSC 2011
Testes de unidade e TDD SoLiSC 2011Testes de unidade e TDD SoLiSC 2011
Testes de unidade e TDD SoLiSC 2011Luís Cobucci
 

Semelhante a Extraindo Caracterı́sticas de Arquivos Binários Executáveis (20)

Monitoramento de malware em Windows NT 6.x - 64bits
Monitoramento de malware em Windows NT 6.x - 64bitsMonitoramento de malware em Windows NT 6.x - 64bits
Monitoramento de malware em Windows NT 6.x - 64bits
 
Metasploit-1_atualizacao.pdf
Metasploit-1_atualizacao.pdfMetasploit-1_atualizacao.pdf
Metasploit-1_atualizacao.pdf
 
Engenharia reversa
Engenharia reversaEngenharia reversa
Engenharia reversa
 
Palestra - FACSENAC - De Hacker e louco, todo mundo tem um pouco
Palestra - FACSENAC - De Hacker e louco, todo mundo tem um poucoPalestra - FACSENAC - De Hacker e louco, todo mundo tem um pouco
Palestra - FACSENAC - De Hacker e louco, todo mundo tem um pouco
 
Facsenac - De hacker e louco, todo mundo tem um pouco
Facsenac - De hacker e louco, todo mundo tem um poucoFacsenac - De hacker e louco, todo mundo tem um pouco
Facsenac - De hacker e louco, todo mundo tem um pouco
 
Construindo um analisador de executáveis
Construindo um analisador de executáveisConstruindo um analisador de executáveis
Construindo um analisador de executáveis
 
Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...
Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...
Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...
 
Engenharia Reversa no Linux
Engenharia Reversa no LinuxEngenharia Reversa no Linux
Engenharia Reversa no Linux
 
Metasploit Framework: Software Livre para PoC de Vulnerabilidades
Metasploit Framework: Software Livre para PoC de VulnerabilidadesMetasploit Framework: Software Livre para PoC de Vulnerabilidades
Metasploit Framework: Software Livre para PoC de Vulnerabilidades
 
Engenharia reversa
Engenharia reversaEngenharia reversa
Engenharia reversa
 
Introdução ao teste de intrusão em redes
Introdução ao teste de intrusão em redesIntrodução ao teste de intrusão em redes
Introdução ao teste de intrusão em redes
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Kali linux
Kali linux Kali linux
Kali linux
 
Tutorial java swing
Tutorial java swingTutorial java swing
Tutorial java swing
 
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
 
Let's log!
Let's log!Let's log!
Let's log!
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Um Ambiente Grafico para Desenvolvimento de Software de Controle para Robos M...
Um Ambiente Grafico para Desenvolvimento de Software de Controle para Robos M...Um Ambiente Grafico para Desenvolvimento de Software de Controle para Robos M...
Um Ambiente Grafico para Desenvolvimento de Software de Controle para Robos M...
 
Testes de unidade e TDD SoLiSC 2011
Testes de unidade e TDD SoLiSC 2011Testes de unidade e TDD SoLiSC 2011
Testes de unidade e TDD SoLiSC 2011
 
Cygwin
CygwinCygwin
Cygwin
 

Mais de Marcus Botacin

Machine Learning by Examples - Marcus Botacin - TAMU 2024
Machine Learning by Examples - Marcus Botacin - TAMU 2024Machine Learning by Examples - Marcus Botacin - TAMU 2024
Machine Learning by Examples - Marcus Botacin - TAMU 2024Marcus Botacin
 
Near-memory & In-Memory Detection of Fileless Malware
Near-memory & In-Memory Detection of Fileless MalwareNear-memory & In-Memory Detection of Fileless Malware
Near-memory & In-Memory Detection of Fileless MalwareMarcus Botacin
 
GPThreats-3: Is Automated Malware Generation a Threat?
GPThreats-3: Is Automated Malware Generation a Threat?GPThreats-3: Is Automated Malware Generation a Threat?
GPThreats-3: Is Automated Malware Generation a Threat?Marcus Botacin
 
[HackInTheBOx] All You Always Wanted to Know About Antiviruses
[HackInTheBOx] All You Always Wanted to Know About Antiviruses[HackInTheBOx] All You Always Wanted to Know About Antiviruses
[HackInTheBOx] All You Always Wanted to Know About AntivirusesMarcus Botacin
 
[Usenix Enigma\ Why Is Our Security Research Failing? Five Practices to Change!
[Usenix Enigma\ Why Is Our Security Research Failing? Five Practices to Change![Usenix Enigma\ Why Is Our Security Research Failing? Five Practices to Change!
[Usenix Enigma\ Why Is Our Security Research Failing? Five Practices to Change!Marcus Botacin
 
Hardware-accelerated security monitoring
Hardware-accelerated security monitoringHardware-accelerated security monitoring
Hardware-accelerated security monitoringMarcus Botacin
 
How do we detect malware? A step-by-step guide
How do we detect malware? A step-by-step guideHow do we detect malware? A step-by-step guide
How do we detect malware? A step-by-step guideMarcus Botacin
 
Among Viruses, Trojans, and Backdoors:Fighting Malware in 2022
Among Viruses, Trojans, and Backdoors:Fighting Malware in 2022Among Viruses, Trojans, and Backdoors:Fighting Malware in 2022
Among Viruses, Trojans, and Backdoors:Fighting Malware in 2022Marcus Botacin
 
On the Malware Detection Problem: Challenges & Novel Approaches
On the Malware Detection Problem: Challenges & Novel ApproachesOn the Malware Detection Problem: Challenges & Novel Approaches
On the Malware Detection Problem: Challenges & Novel ApproachesMarcus Botacin
 
All You Need to Know to Win a Cybersecurity Adversarial Machine Learning Comp...
All You Need to Know to Win a Cybersecurity Adversarial Machine Learning Comp...All You Need to Know to Win a Cybersecurity Adversarial Machine Learning Comp...
All You Need to Know to Win a Cybersecurity Adversarial Machine Learning Comp...Marcus Botacin
 
Near-memory & In-Memory Detection of Fileless Malware
Near-memory & In-Memory Detection of Fileless MalwareNear-memory & In-Memory Detection of Fileless Malware
Near-memory & In-Memory Detection of Fileless MalwareMarcus Botacin
 
Does Your Threat Model Consider Country and Culture? A Case Study of Brazilia...
Does Your Threat Model Consider Country and Culture? A Case Study of Brazilia...Does Your Threat Model Consider Country and Culture? A Case Study of Brazilia...
Does Your Threat Model Consider Country and Culture? A Case Study of Brazilia...Marcus Botacin
 
Integridade, confidencialidade, disponibilidade, ransomware
Integridade, confidencialidade, disponibilidade, ransomwareIntegridade, confidencialidade, disponibilidade, ransomware
Integridade, confidencialidade, disponibilidade, ransomwareMarcus Botacin
 
An Empirical Study on the Blocking of HTTP and DNS Requests at Providers Leve...
An Empirical Study on the Blocking of HTTP and DNS Requests at Providers Leve...An Empirical Study on the Blocking of HTTP and DNS Requests at Providers Leve...
An Empirical Study on the Blocking of HTTP and DNS Requests at Providers Leve...Marcus Botacin
 
On the Security of Application Installers & Online Software Repositories
On the Security of Application Installers & Online Software RepositoriesOn the Security of Application Installers & Online Software Repositories
On the Security of Application Installers & Online Software RepositoriesMarcus Botacin
 
The Internet Banking [in]Security Spiral: Past, Present, and Future of Online...
The Internet Banking [in]Security Spiral: Past, Present, and Future of Online...The Internet Banking [in]Security Spiral: Past, Present, and Future of Online...
The Internet Banking [in]Security Spiral: Past, Present, and Future of Online...Marcus Botacin
 
Análise do Malware Ativo na Internet Brasileira: 4 anos depois. O que mudou?
Análise do Malware Ativo na Internet Brasileira: 4 anos depois. O que mudou?Análise do Malware Ativo na Internet Brasileira: 4 anos depois. O que mudou?
Análise do Malware Ativo na Internet Brasileira: 4 anos depois. O que mudou?Marcus Botacin
 
Towards Malware Decompilation and Reassembly
Towards Malware Decompilation and ReassemblyTowards Malware Decompilation and Reassembly
Towards Malware Decompilation and ReassemblyMarcus Botacin
 
Malware Variants Identification in Practice
Malware Variants Identification in PracticeMalware Variants Identification in Practice
Malware Variants Identification in PracticeMarcus Botacin
 

Mais de Marcus Botacin (20)

Machine Learning by Examples - Marcus Botacin - TAMU 2024
Machine Learning by Examples - Marcus Botacin - TAMU 2024Machine Learning by Examples - Marcus Botacin - TAMU 2024
Machine Learning by Examples - Marcus Botacin - TAMU 2024
 
Near-memory & In-Memory Detection of Fileless Malware
Near-memory & In-Memory Detection of Fileless MalwareNear-memory & In-Memory Detection of Fileless Malware
Near-memory & In-Memory Detection of Fileless Malware
 
GPThreats-3: Is Automated Malware Generation a Threat?
GPThreats-3: Is Automated Malware Generation a Threat?GPThreats-3: Is Automated Malware Generation a Threat?
GPThreats-3: Is Automated Malware Generation a Threat?
 
[HackInTheBOx] All You Always Wanted to Know About Antiviruses
[HackInTheBOx] All You Always Wanted to Know About Antiviruses[HackInTheBOx] All You Always Wanted to Know About Antiviruses
[HackInTheBOx] All You Always Wanted to Know About Antiviruses
 
[Usenix Enigma\ Why Is Our Security Research Failing? Five Practices to Change!
[Usenix Enigma\ Why Is Our Security Research Failing? Five Practices to Change![Usenix Enigma\ Why Is Our Security Research Failing? Five Practices to Change!
[Usenix Enigma\ Why Is Our Security Research Failing? Five Practices to Change!
 
Hardware-accelerated security monitoring
Hardware-accelerated security monitoringHardware-accelerated security monitoring
Hardware-accelerated security monitoring
 
How do we detect malware? A step-by-step guide
How do we detect malware? A step-by-step guideHow do we detect malware? A step-by-step guide
How do we detect malware? A step-by-step guide
 
Among Viruses, Trojans, and Backdoors:Fighting Malware in 2022
Among Viruses, Trojans, and Backdoors:Fighting Malware in 2022Among Viruses, Trojans, and Backdoors:Fighting Malware in 2022
Among Viruses, Trojans, and Backdoors:Fighting Malware in 2022
 
On the Malware Detection Problem: Challenges & Novel Approaches
On the Malware Detection Problem: Challenges & Novel ApproachesOn the Malware Detection Problem: Challenges & Novel Approaches
On the Malware Detection Problem: Challenges & Novel Approaches
 
All You Need to Know to Win a Cybersecurity Adversarial Machine Learning Comp...
All You Need to Know to Win a Cybersecurity Adversarial Machine Learning Comp...All You Need to Know to Win a Cybersecurity Adversarial Machine Learning Comp...
All You Need to Know to Win a Cybersecurity Adversarial Machine Learning Comp...
 
Near-memory & In-Memory Detection of Fileless Malware
Near-memory & In-Memory Detection of Fileless MalwareNear-memory & In-Memory Detection of Fileless Malware
Near-memory & In-Memory Detection of Fileless Malware
 
Does Your Threat Model Consider Country and Culture? A Case Study of Brazilia...
Does Your Threat Model Consider Country and Culture? A Case Study of Brazilia...Does Your Threat Model Consider Country and Culture? A Case Study of Brazilia...
Does Your Threat Model Consider Country and Culture? A Case Study of Brazilia...
 
Integridade, confidencialidade, disponibilidade, ransomware
Integridade, confidencialidade, disponibilidade, ransomwareIntegridade, confidencialidade, disponibilidade, ransomware
Integridade, confidencialidade, disponibilidade, ransomware
 
An Empirical Study on the Blocking of HTTP and DNS Requests at Providers Leve...
An Empirical Study on the Blocking of HTTP and DNS Requests at Providers Leve...An Empirical Study on the Blocking of HTTP and DNS Requests at Providers Leve...
An Empirical Study on the Blocking of HTTP and DNS Requests at Providers Leve...
 
On the Security of Application Installers & Online Software Repositories
On the Security of Application Installers & Online Software RepositoriesOn the Security of Application Installers & Online Software Repositories
On the Security of Application Installers & Online Software Repositories
 
UMLsec
UMLsecUMLsec
UMLsec
 
The Internet Banking [in]Security Spiral: Past, Present, and Future of Online...
The Internet Banking [in]Security Spiral: Past, Present, and Future of Online...The Internet Banking [in]Security Spiral: Past, Present, and Future of Online...
The Internet Banking [in]Security Spiral: Past, Present, and Future of Online...
 
Análise do Malware Ativo na Internet Brasileira: 4 anos depois. O que mudou?
Análise do Malware Ativo na Internet Brasileira: 4 anos depois. O que mudou?Análise do Malware Ativo na Internet Brasileira: 4 anos depois. O que mudou?
Análise do Malware Ativo na Internet Brasileira: 4 anos depois. O que mudou?
 
Towards Malware Decompilation and Reassembly
Towards Malware Decompilation and ReassemblyTowards Malware Decompilation and Reassembly
Towards Malware Decompilation and Reassembly
 
Malware Variants Identification in Practice
Malware Variants Identification in PracticeMalware Variants Identification in Practice
Malware Variants Identification in Practice
 

Extraindo Caracterı́sticas de Arquivos Binários Executáveis

  • 1. Extraindo Caracterı́sticas de Arquivos Binários Executáveis Marcus Botacin1 1Universidade Federal do Paraná (UFPR) mfbotacin@inf.ufpr.br 2021 Extraindo Caracterı́sticas de Arquivos Binários Executáveis 1 / 16 UFPR
  • 2. Por que Investigar Binários Executáveis? Para detectar malware (classificação malware vs. goodware) Para realizar análises forenses (o que tem dentro?). Para se identificar versões (Windows 8 vs. Windows 10). Para se criar uma filogenia (qual software veio antes de qual?). E se você não tem o código-fonte? Extraindo Caracterı́sticas de Arquivos Binários Executáveis 2 / 16 UFPR
  • 3. Certeza que isso funciona? Extraindo Caracterı́sticas de Arquivos Binários Executáveis 3 / 16 UFPR
  • 4. Como Funcionam Binários Executáveis? Definição Binários executáveis precisam seguir uma estrutura pré-definida para que o sistema operacional saiba como carregá-los. Informações Importantes para o SO Quantos bytes devem ser alocados para carregar um dado binário? Qual a primeira instrução a ser executada? Extraindo Caracterı́sticas de Arquivos Binários Executáveis 4 / 16 UFPR
  • 5. Binários Executáveis Dependem do SO Iguais, mas diferentes! Em geral, binários executáveis respondem as mesmas perguntas ao SO, mas seus campos tem tamanhos diferentes e estão localizados em diferentes structs. Formatos para cada SO Linux: Executable and Linkable Format (ELF). Windows: Portable Executable (PE).a a Busque Conhecimento: A Wikipedia sabe tudo sobre estes formatos! Extraindo Caracterı́sticas de Arquivos Binários Executáveis 5 / 16 UFPR
  • 6. O formato PE Estrutura Básica Cabeçalhos: Respostas básicas e apontadores para dados. Seções: Os dados em si. Extraindo Caracterı́sticas de Arquivos Binários Executáveis 6 / 16 UFPR
  • 7. Como o OS interpreta um arquivo binário executável Extraindo Caracterı́sticas de Arquivos Binários Executáveis 7 / 16 UFPR
  • 8. Como você deveria interpretar 1 typedef struct { 2 uint16_t e_magic; 3 uint16_t e_cblp; 4 uint16_t e_cp; 5 uint16_t e_crlc; 6 uint16_t e_cparhdr; 7 uint16_t e_minalloc; 8 uint16_t e_maxalloc; 9 uint16_t e_ss; 10 uint16_t e_sp; 11 uint16_t e_csum; 1 uint16_t e_ip; 2 uint16_t e_cs; 3 uint16_t e_lfarlc; 4 uint16_t e_ovno; 5 uint16_t e_res [4]; 6 uint16_t e_oemid; 7 uint16_t e_oeminfo; 8 uint16_t e_res2 [10]; 9 uint32_t e_lfanew; 10 } IMAGE_DOS_HEADER ; Extraindo Caracterı́sticas de Arquivos Binários Executáveis 8 / 16 UFPR
  • 9. O que tem dentro das seções? Uma generalização .text: Instruções. .data: Dados inicializados (constantes?). .bss: Dados não-inicializados (variáveis?) outras: Binários podem ter diferentes números e nomes de seções. Extraindo Caracterı́sticas de Arquivos Binários Executáveis 9 / 16 UFPR
  • 10. O Que Podemos descobrir sabendo disso? Se identifiquei o magic MZ num buffer: Injeção de código. Se identifiquei um timestamp anterior a 1970: Valor forjado. Se o checksum não bate: Binário adulterado. Seções com permissões RWX: Código auto-modificável. Extraindo Caracterı́sticas de Arquivos Binários Executáveis 10 / 16 UFPR
  • 11. Como Manipular Binários Executáveis? ELF: pyelftools (https://github.com/eliben/pyelftools) PE: pefile (https://github.com/erocarrera/pefile) Multi: lief (https://lief.quarkslab.com/) Extraindo Caracterı́sticas de Arquivos Binários Executáveis 11 / 16 UFPR
  • 12. Exemplos com pefile (1/2) Extraindo Caracterı́sticas de Arquivos Binários Executáveis 12 / 16 UFPR
  • 13. Exemplos com pefile (2/2) Extraindo Caracterı́sticas de Arquivos Binários Executáveis 13 / 16 UFPR
  • 14. Exemplos com pefile (2/2) Extraindo Caracterı́sticas de Arquivos Binários Executáveis 14 / 16 UFPR
  • 15. Tarefa 1/2 Enumerar as seções executáveis de um binário PE. Extraindo Caracterı́sticas de Arquivos Binários Executáveis 15 / 16 UFPR
  • 16. Tarefa 2/2 Comparar as seções de dois binários PE. Extraindo Caracterı́sticas de Arquivos Binários Executáveis 16 / 16 UFPR