SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Ronaldo P. Lima
www.crimesciberneticos.com
agenda
 introdução
 identificação       do arquivo
  md5sum, hexdump, file, extract, strings
 dissecando         o formato ELF
  readelf, ldd, nm, strip
 analisando        o código executável
  objdump
 execução
 conclusões
introdução
   cenário – incidente de segurança
   descobrir:
       qual o tipo do arquivo?
       quais suas funcionalidades?
       quais efeitos no sistema e na rede?
       ambiente onde foi criado?
   análise estática
   distro utilizada: BackTrack Linux
identificação do arquivo
md5sum




assinatura do arquivo (file signature)
- sequência única de bytes localizada no
   início do arquivo
- não confiar na extensão
ELF: 7F 45 4C 46
EXE: 4D 5A
JPG: FF D8 FF E0 xx xx 4A 46 49 46 00
http://www.garykessler.net/library/file_sigs.html

hexdump -C
file



- Executable and Linking Format (ELF)
- bibliotecas dinâmicas (dependências)
- símbolos presentes
extract
strings -a
dissecando o formato ELF
 - como um executável é montado?

     Código-fonte          Compilador   Object File

  Alto-nível (humano)
p/ baixo-nível (máquina)
                           Executável     Linker

gcc (compiler e linker)
gcc –c (compiler)
ld (linker)                                 Libs
linking dinâmico X estático
dinâmico
- depende de bibliotecas compartilhadas
- requisitadas na execução (SO)
- binário menor e menos memória

estático
- todo o código para rodar o executável
   está dentro do binário
- binário maior e mais memória
ldd




símbolos
- criados na compilação (compiler e linker)
- nomes, endereços e data types de
  funções e variáveis
- informações para debug
- podem ser retirados (stripped)
nm
nm –D (símbolos das libs dinâmicas)




strip
estrutura do ELF
readelf –h (Elf32_ehdr)
readelf –S (sections headers)




Algumas sections interessantes >>>
.symtab:     tabela de símbolos
.dynsym:     símbolos de linking dinâmico
.comment:    controle de versão
.text:       instruções executáveis
.strtab:     strings associadas com a
             tabela de símbolos
readelf –p <section nr> (.comment)
Recapitulando...
- ELF Executável Linux 32 bits Intel 386
- Kernel 2.6.15
- Compilado com GCC 4.3.2 Ubuntu
- Usa somente o fork() da Libc

A função fork() cria um processo filho que difere
do processo pai apenas pelo seu PID. É duplicada
toda a estrutura de memória do processo pai.
fork() != clone()
analisando o código executável
objdump –M intel -d
execução

   running...   killed!
conclusões
- qual o tipo do arquivo?
R: ELF Executável Linux 32 bits x86
- quais suas funcionalidades?
R: Realiza um loop infinito da função fork() da libc.
- quais efeitos no sistema e na rede?
R: Sobrecarrega o sistema esgotando seus recursos
  impedindo-o de atender as demais requisições.
   Ataque DoS. Não afeta a rede diretamente.
- ambiente onde foi criado?
R: Ubuntu based Kernel 2.6.15 GCC 4.3.2
obrigado!


             Perguntas?

Contato:
Ronaldo P. Lima
crimesciberneticos@ymail.com
twitter.com/crimescibernet
www.crimesciberneticos.com

Mais conteúdo relacionado

Mais procurados

Reverse Engineering Course
Reverse Engineering CourseReverse Engineering Course
Reverse Engineering CourseMarcus Botacin
 
Processador CISC RISC SET de instruções
Processador CISC RISC SET de instruçõesProcessador CISC RISC SET de instruções
Processador CISC RISC SET de instruçõesCarlos Pereira
 
Laboratório de Programação I: Arquivos (texto) em disco
Laboratório de Programação I: Arquivos (texto) em discoLaboratório de Programação I: Arquivos (texto) em disco
Laboratório de Programação I: Arquivos (texto) em discoAlex Camargo
 
Arquivos de Inicialização do Linux
Arquivos de Inicialização do LinuxArquivos de Inicialização do Linux
Arquivos de Inicialização do LinuxIvani Nascimento
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcadotdc-globalcode
 
Android Core Aula 4 - Embarcando android em dispositivos físicos
Android Core Aula 4 - Embarcando android em dispositivos físicosAndroid Core Aula 4 - Embarcando android em dispositivos físicos
Android Core Aula 4 - Embarcando android em dispositivos físicosFelipe Silveira
 
Redirecionamento, pipes e processos linux
Redirecionamento, pipes e processos   linuxRedirecionamento, pipes e processos   linux
Redirecionamento, pipes e processos linuxFábio dos Reis
 
Aula 6 emu8086
Aula 6   emu8086Aula 6   emu8086
Aula 6 emu8086LCCIMETRO
 
Unix - Sistemas Operacionais
Unix - Sistemas OperacionaisUnix - Sistemas Operacionais
Unix - Sistemas OperacionaisJunior Silva
 
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé LeiteComo Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé LeiteTchelinux
 
Aula 4 a linguagem assembly
Aula 4   a linguagem assemblyAula 4   a linguagem assembly
Aula 4 a linguagem assemblyLCCIMETRO
 

Mais procurados (20)

Reverse Engineering Course
Reverse Engineering CourseReverse Engineering Course
Reverse Engineering Course
 
Processador CISC RISC SET de instruções
Processador CISC RISC SET de instruçõesProcessador CISC RISC SET de instruções
Processador CISC RISC SET de instruções
 
Laboratório de Programação I: Arquivos (texto) em disco
Laboratório de Programação I: Arquivos (texto) em discoLaboratório de Programação I: Arquivos (texto) em disco
Laboratório de Programação I: Arquivos (texto) em disco
 
Linguagem assembly
Linguagem assemblyLinguagem assembly
Linguagem assembly
 
Arquivos de Inicialização do Linux
Arquivos de Inicialização do LinuxArquivos de Inicialização do Linux
Arquivos de Inicialização do Linux
 
Desenvolvimento de malware
Desenvolvimento de malwareDesenvolvimento de malware
Desenvolvimento de malware
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
Android Core Aula 4 - Embarcando android em dispositivos físicos
Android Core Aula 4 - Embarcando android em dispositivos físicosAndroid Core Aula 4 - Embarcando android em dispositivos físicos
Android Core Aula 4 - Embarcando android em dispositivos físicos
 
Introdução Linux
Introdução LinuxIntrodução Linux
Introdução Linux
 
Redirecionamento, pipes e processos linux
Redirecionamento, pipes e processos   linuxRedirecionamento, pipes e processos   linux
Redirecionamento, pipes e processos linux
 
Cap1 exercicios comandos linux
Cap1 exercicios comandos linuxCap1 exercicios comandos linux
Cap1 exercicios comandos linux
 
Resumo x86
Resumo x86Resumo x86
Resumo x86
 
Aula 6 emu8086
Aula 6   emu8086Aula 6   emu8086
Aula 6 emu8086
 
Unix - Sistemas Operacionais
Unix - Sistemas OperacionaisUnix - Sistemas Operacionais
Unix - Sistemas Operacionais
 
Ac16 conjunto de instruções v2
Ac16   conjunto de instruções v2Ac16   conjunto de instruções v2
Ac16 conjunto de instruções v2
 
Estrutura de diretorios
Estrutura de diretoriosEstrutura de diretorios
Estrutura de diretorios
 
Aprendendo linux
Aprendendo linuxAprendendo linux
Aprendendo linux
 
Python, CPython, Pythonico, Cython
Python, CPython, Pythonico, CythonPython, CPython, Pythonico, Cython
Python, CPython, Pythonico, Cython
 
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé LeiteComo Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
 
Aula 4 a linguagem assembly
Aula 4   a linguagem assemblyAula 4   a linguagem assembly
Aula 4 a linguagem assembly
 

Semelhante a Análise de Arquivo ELF Usando Ferramentas Linux Forense

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
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1Leo Amorim
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Leo Amorim
 
Sistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasSistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasLuiz Arthur
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2Daniel
 
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafDesenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafTchelinux
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxeliezer
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxeliezer
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxguest7a481e8
 
Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básicoAdriano Melo
 
(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhs(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhsAnderson Lago
 
Semana da computacao - Linux Day
Semana da computacao - Linux DaySemana da computacao - Linux Day
Semana da computacao - Linux DayFábio Albuquerque
 
Aspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoAspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoMauro Tapajós
 
Linux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxLinux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxFrederico Madeira
 
Ferramentas GPL para segurança de redes - Vanderlei Pollon
Ferramentas GPL para segurança de redes - Vanderlei PollonFerramentas GPL para segurança de redes - Vanderlei Pollon
Ferramentas GPL para segurança de redes - Vanderlei PollonTchelinux
 
Entendendo a linkedição em C++
Entendendo a linkedição em C++Entendendo a linkedição em C++
Entendendo a linkedição em C++Rodrigo Strauss
 

Semelhante a Análise de Arquivo ELF Usando Ferramentas Linux Forense (20)

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 ...
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1
 
Sistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasSistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando Programas
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2
 
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafDesenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
IntroduçãO Ao Linux
IntroduçãO Ao LinuxIntroduçãO Ao Linux
IntroduçãO Ao Linux
 
Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básico
 
(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhs(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhs
 
Semana da computacao - Linux Day
Semana da computacao - Linux DaySemana da computacao - Linux Day
Semana da computacao - Linux Day
 
Aspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoAspectos do kernel Linux e Instalação
Aspectos do kernel Linux e Instalação
 
Linux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxLinux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao Linux
 
Minicurso Linux
Minicurso Linux Minicurso Linux
Minicurso Linux
 
Lab so-abertos-unidade8
Lab so-abertos-unidade8Lab so-abertos-unidade8
Lab so-abertos-unidade8
 
Ferramentas GPL para segurança de redes - Vanderlei Pollon
Ferramentas GPL para segurança de redes - Vanderlei PollonFerramentas GPL para segurança de redes - Vanderlei Pollon
Ferramentas GPL para segurança de redes - Vanderlei Pollon
 
Entendendo a linkedição em C++
Entendendo a linkedição em C++Entendendo a linkedição em C++
Entendendo a linkedição em C++
 

Análise de Arquivo ELF Usando Ferramentas Linux Forense

  • 2. agenda  introdução  identificação do arquivo md5sum, hexdump, file, extract, strings  dissecando o formato ELF readelf, ldd, nm, strip  analisando o código executável objdump  execução  conclusões
  • 3. introdução  cenário – incidente de segurança  descobrir:  qual o tipo do arquivo?  quais suas funcionalidades?  quais efeitos no sistema e na rede?  ambiente onde foi criado?  análise estática  distro utilizada: BackTrack Linux
  • 4. identificação do arquivo md5sum assinatura do arquivo (file signature) - sequência única de bytes localizada no início do arquivo - não confiar na extensão
  • 5. ELF: 7F 45 4C 46 EXE: 4D 5A JPG: FF D8 FF E0 xx xx 4A 46 49 46 00 http://www.garykessler.net/library/file_sigs.html hexdump -C
  • 6. file - Executable and Linking Format (ELF) - bibliotecas dinâmicas (dependências) - símbolos presentes extract
  • 8. dissecando o formato ELF - como um executável é montado? Código-fonte Compilador Object File Alto-nível (humano) p/ baixo-nível (máquina) Executável Linker gcc (compiler e linker) gcc –c (compiler) ld (linker) Libs
  • 9. linking dinâmico X estático dinâmico - depende de bibliotecas compartilhadas - requisitadas na execução (SO) - binário menor e menos memória estático - todo o código para rodar o executável está dentro do binário - binário maior e mais memória
  • 10. ldd símbolos - criados na compilação (compiler e linker) - nomes, endereços e data types de funções e variáveis - informações para debug - podem ser retirados (stripped)
  • 11. nm
  • 12. nm –D (símbolos das libs dinâmicas) strip
  • 15. readelf –S (sections headers) Algumas sections interessantes >>>
  • 16. .symtab: tabela de símbolos .dynsym: símbolos de linking dinâmico .comment: controle de versão .text: instruções executáveis .strtab: strings associadas com a tabela de símbolos readelf –p <section nr> (.comment)
  • 17. Recapitulando... - ELF Executável Linux 32 bits Intel 386 - Kernel 2.6.15 - Compilado com GCC 4.3.2 Ubuntu - Usa somente o fork() da Libc A função fork() cria um processo filho que difere do processo pai apenas pelo seu PID. É duplicada toda a estrutura de memória do processo pai. fork() != clone()
  • 18. analisando o código executável objdump –M intel -d
  • 19. execução running... killed!
  • 20. conclusões - qual o tipo do arquivo? R: ELF Executável Linux 32 bits x86 - quais suas funcionalidades? R: Realiza um loop infinito da função fork() da libc. - quais efeitos no sistema e na rede? R: Sobrecarrega o sistema esgotando seus recursos impedindo-o de atender as demais requisições. Ataque DoS. Não afeta a rede diretamente. - ambiente onde foi criado? R: Ubuntu based Kernel 2.6.15 GCC 4.3.2
  • 21. obrigado! Perguntas? Contato: Ronaldo P. Lima crimesciberneticos@ymail.com twitter.com/crimescibernet www.crimesciberneticos.com