SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
   Experiência em missão crítica de missão crítica

   Pioneira no ensino de Linux à distância

   Parceira de treinamento IBM

   Primeira com LPI no Brasil

   + de 30.000 alunos satisfeitos

   Reconhecimento internacional

   Inovação com Hackerteen e Boteconet


                            www.4linux.com.br         2 / 12
Análise de dumps
 de memória no
   GNU/Linux



    www.4linux.com.br   3 / 12
O que é um dump?

→ É uma imagem perfeita do conteúdo de uma
memória volátil. Ou seja, é uma cópia de todos os
bytes numa determinada região de memória.
Geralmente esta cópia é gravada num arquivo em
disco ou pen drive. Este arquivo, chamado de
dump, é um amontoado de bytes agregados e
sua interpretação requer análise.




                    www.4linux.com.br         4 / 12
Acesso à memória no Linux

/dev/mem ???

$ man man
    1 Executable programs or shell commands
    2 System calls (functions provided by the kernel)
    3 Library calls (functions within program libraries)
    4 Special files (usually found in /dev)
    5 File formats and conventions eg /etc/passwd
    6 Games
    7 Miscellaneous (including macro packages and conventions)
    8 System administration commands (usually only for root)
    9 Kernel routines [Non standard]

$ man 4 mem



                           www.4linux.com.br                     5 / 12
Acesso à memória no Linux

/dev/mem é um dispositivo que nos permite mapear qualquer endereço
físico, incluindo os da RAM e de memórias de periféricos. Um erro
comum é pensar que o /dev/mem só mapeia a RAM utilizada pelo
sistema operacional.

Um dump completo, que incluirá o que está em RAM, é possível com:

# dd if=/dev/mem of=/root/dump.bin

ou

# apt-get install memdump
# memdump -v > dump.bin




                            www.4linux.com.br                   6 / 12
Proteção de memória
# grep DEVMEM /boot/config-$(uname -r)
CONFIG_STRICT_DEVMEM=y

Dessa forma, tanto leitura quanto escrita são proibidas, no entanto,
conforme comentário no fonte init.c do kernel, o acesso ao primeiro
megabyte desta área é concecido, porque nele reside o código do BIOS e
dados utilizados pelo X:
/*
 * devmem_is_allowed() checks to see if /dev/mem access to a certain address
 * is valid. The argument is a physical page number.
 *
 *
 * On x86, access has to be given to the first megabyte of ram because that area
 * contains bios code and data regions used by X and dosemu and similar apps.
 * Access has to be given to non-kernel-ram areas as well, these contain the PCI
 * mmio resources as well as potential bios/acpi data regions.
 */

https://github.com/torvalds/linux/blob/master/arch/x86/mm/init.c#L303
                                        www.4linux.com.br                          7 / 12
Bypass da proteção
A proteção inutiliza o dd:

# dd if=/dev/mem of=dump.bin
dd: lendo "/dev/mem": Operação não permitida
2056+0 registros de entrada
2056+0 registros de saída
1052672 bytes (1,1 MB) copiados, 0,0462861 s, 22,7 MB/s

Mas podemos utilizar o módulo fmem (antigo fdump), que criará o
dispoistivo /dev/fmem – sem as limitações do /dev/mem:

$ wget -c http://hysteria.sk/~niekt0/foriana/foriana_current.tgz
$ tar xzf foriana_current.tgz
$ cd fmem_1.6-1/
$ make
$ sudo ./run.sh


                               www.4linux.com.br                   8 / 12
Análise do dump
# dd bs=1M count=8006 if=/dev/fmem of=dump.bin

O parâmetro count é obrigatório pode ser o total de RAM no sistema (de
fato, só será dumpado o que estiver mapeado pelo SO para uso). Você
pode checar com free -m.

$ strings -t x dump.bin > str.txt

$ sudo apt-get install foremost
$ mkdir recover
$ foremost -v -b 1024 -i dump.bin -o recover/

O foremost suporta vários tipos de arquivos, como jpg, bmp, gif, png,
exe, dll, documentos do Office, LibreOffice, zip, rar etc.




                                www.4linux.com.br                   9 / 12
Recuperados com o Foremost
# ls ­R recover/
recover/:
audit.txt  bmp   dll  gif  htm  jpg  pdf  png

recover/bmp:
00005248.bmp

recover/dll:
00004622.dll

recover/gif:
00962274.gif  00979531.gif  01001291_1.gif 00968056.gif  00981979.gif  01001291_2.gif
00968193.gif  00982418.gif  01001291.gif   00975759.gif  00985118.gif  01002993.gif
00979265.gif  00998234.gif  01002994.gif

recover/htm:
00943193.htm  01039003.htm  01042419.htm

recover/jpg:
00982590.jpg  00987601.jpg  00990427.jpg

recover/pdf:
00941876.pdf

recover/png:
00970880.png  00990424.png  00997986.png  00979102.png  00990425.png  00998151.png
00979105.png  00990426.png  00998160.png  00980376.png  00990430.png  00998214.png
00980378.png  00994364.png  00998228.png  00980389.png  00996290.png  00998256.png
00980398.png  00997938.png  00998852.png  00982704.png  00997948.png  00999042.png
                                   www.4linux.com.br                            10 / 12
Obrigado




           Perguntas?



            www.4linux.com.br   11 / 12
Obrigado




             Fernando Mercês
      fernando.merces@4linux.com.br
            www.4linux.com.br
           www.hackerteen.com
           twitter.com/4LinuxBR

           Tel: 55-11-2125-4747


               www.4linux.com.br      12 / 12

Más contenido relacionado

La actualidad más candente

Redes - VoIP SIP
Redes - VoIP SIPRedes - VoIP SIP
Redes - VoIP SIPLuiz Arthur
 
Base de datos access
Base de datos accessBase de datos access
Base de datos accessDavidPosadas5
 
MySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELKMySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELKYoungHeon (Roy) Kim
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosFrederico Madeira
 
PostgreSQL Extensions: A deeper look
PostgreSQL Extensions:  A deeper lookPostgreSQL Extensions:  A deeper look
PostgreSQL Extensions: A deeper lookJignesh Shah
 
PostgreSQL Administration for System Administrators
PostgreSQL Administration for System AdministratorsPostgreSQL Administration for System Administrators
PostgreSQL Administration for System AdministratorsCommand Prompt., Inc
 
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019CLEYSSON LIMA
 
Domain Name System (DNS)
Domain Name System (DNS)Domain Name System (DNS)
Domain Name System (DNS)Thiago Sinésio
 
Redes de computadores 1 - Conceitos Gerais
Redes de computadores 1 - Conceitos GeraisRedes de computadores 1 - Conceitos Gerais
Redes de computadores 1 - Conceitos GeraisJosé Ronaldo Trajano
 
Vantagens e desvantagens em topologias de redes
Vantagens e desvantagens em topologias de redesVantagens e desvantagens em topologias de redes
Vantagens e desvantagens em topologias de redesMarco Martins
 
Kartódromo Indoor CWB
Kartódromo Indoor CWBKartódromo Indoor CWB
Kartódromo Indoor CWBMarco Coghi
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonRicardo Zalla
 

La actualidad más candente (20)

Calculo de endereço ip
Calculo de endereço ipCalculo de endereço ip
Calculo de endereço ip
 
Máscaras de sub
Máscaras de subMáscaras de sub
Máscaras de sub
 
Wireless Hacking - Ataques e Segurança de redes sem fio
Wireless Hacking - Ataques e Segurança de redes sem fioWireless Hacking - Ataques e Segurança de redes sem fio
Wireless Hacking - Ataques e Segurança de redes sem fio
 
Redes - VoIP SIP
Redes - VoIP SIPRedes - VoIP SIP
Redes - VoIP SIP
 
Base de datos access
Base de datos accessBase de datos access
Base de datos access
 
MySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELKMySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELK
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas Distribuidos
 
Servidor Proxy Squid
Servidor Proxy SquidServidor Proxy Squid
Servidor Proxy Squid
 
PostgreSQL Extensions: A deeper look
PostgreSQL Extensions:  A deeper lookPostgreSQL Extensions:  A deeper look
PostgreSQL Extensions: A deeper look
 
Token ring
Token ringToken ring
Token ring
 
PostgreSQL Administration for System Administrators
PostgreSQL Administration for System AdministratorsPostgreSQL Administration for System Administrators
PostgreSQL Administration for System Administrators
 
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
 
Sistema de interconexion interna
Sistema de interconexion internaSistema de interconexion interna
Sistema de interconexion interna
 
Ficha de trabalho_12
Ficha de trabalho_12Ficha de trabalho_12
Ficha de trabalho_12
 
Domain Name System (DNS)
Domain Name System (DNS)Domain Name System (DNS)
Domain Name System (DNS)
 
Trabalho de redes
Trabalho de redesTrabalho de redes
Trabalho de redes
 
Redes de computadores 1 - Conceitos Gerais
Redes de computadores 1 - Conceitos GeraisRedes de computadores 1 - Conceitos Gerais
Redes de computadores 1 - Conceitos Gerais
 
Vantagens e desvantagens em topologias de redes
Vantagens e desvantagens em topologias de redesVantagens e desvantagens em topologias de redes
Vantagens e desvantagens em topologias de redes
 
Kartódromo Indoor CWB
Kartódromo Indoor CWBKartódromo Indoor CWB
Kartódromo Indoor CWB
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem Python
 

Similar a Análise de dumps de memória no GNU/Linux

Empacotamento Debian Básico
Empacotamento Debian BásicoEmpacotamento Debian Básico
Empacotamento Debian BásicoMarcelo Lira
 
Procedimentos de Backup
Procedimentos de BackupProcedimentos de Backup
Procedimentos de Backupelliando dias
 
Realizar o gerenciamento básico de arquivos 4Linux
Realizar o gerenciamento básico de arquivos 4LinuxRealizar o gerenciamento básico de arquivos 4Linux
Realizar o gerenciamento básico de arquivos 4LinuxSoftD Abreu
 
Funcionamento kernel
Funcionamento kernelFuncionamento kernel
Funcionamento kernelSENAC RIO
 
DESMISTIFICANDO A FSTAB - Ricardo José Maraschini
DESMISTIFICANDO A FSTAB - Ricardo José Maraschini DESMISTIFICANDO A FSTAB - Ricardo José Maraschini
DESMISTIFICANDO A FSTAB - Ricardo José Maraschini Tchelinux
 
Debian 6: Instalação e Hardening
Debian 6: Instalação e HardeningDebian 6: Instalação e Hardening
Debian 6: Instalação e HardeningBruna Griebeler
 
Linux comandos gerais e servidores de rede
Linux   comandos gerais e servidores de redeLinux   comandos gerais e servidores de rede
Linux comandos gerais e servidores de redefernandao777
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2Daniel
 
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Marlon Willrich
 
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
 
Linux comandosgeraiseservidoresderede-120930000057-phpapp01
Linux comandosgeraiseservidoresderede-120930000057-phpapp01Linux comandosgeraiseservidoresderede-120930000057-phpapp01
Linux comandosgeraiseservidoresderede-120930000057-phpapp01Elizabete Bahia
 
Tutorial do shell script para Clonar HDs WIN7 usando Linux
Tutorial do shell script para Clonar HDs WIN7 usando LinuxTutorial do shell script para Clonar HDs WIN7 usando Linux
Tutorial do shell script para Clonar HDs WIN7 usando LinuxLuiz Francisco Bozo
 
Tutorial do ris serviços de instalação remota
Tutorial do ris   serviços de instalação remotaTutorial do ris   serviços de instalação remota
Tutorial do ris serviços de instalação remotafernandao777
 
Sor filesystem-particionamento
Sor filesystem-particionamentoSor filesystem-particionamento
Sor filesystem-particionamentoCarlos Melo
 
DKMS ­ Dynamic Kernel Module Support
DKMS ­ Dynamic Kernel Module SupportDKMS ­ Dynamic Kernel Module Support
DKMS ­ Dynamic Kernel Module SupportRômulo Jales
 

Similar a Análise de dumps de memória no GNU/Linux (20)

Empacotamento Debian Básico
Empacotamento Debian BásicoEmpacotamento Debian Básico
Empacotamento Debian Básico
 
Procedimentos de Backup
Procedimentos de BackupProcedimentos de Backup
Procedimentos de Backup
 
Realizar o gerenciamento básico de arquivos 4Linux
Realizar o gerenciamento básico de arquivos 4LinuxRealizar o gerenciamento básico de arquivos 4Linux
Realizar o gerenciamento básico de arquivos 4Linux
 
Linux Ubuntu
Linux   UbuntuLinux   Ubuntu
Linux Ubuntu
 
IntroduçãO Ao Linux
IntroduçãO Ao LinuxIntroduçãO Ao Linux
IntroduçãO Ao Linux
 
Funcionamento kernel
Funcionamento kernelFuncionamento kernel
Funcionamento kernel
 
DESMISTIFICANDO A FSTAB - Ricardo José Maraschini
DESMISTIFICANDO A FSTAB - Ricardo José Maraschini DESMISTIFICANDO A FSTAB - Ricardo José Maraschini
DESMISTIFICANDO A FSTAB - Ricardo José Maraschini
 
Debian 6: Instalação e Hardening
Debian 6: Instalação e HardeningDebian 6: Instalação e Hardening
Debian 6: Instalação e Hardening
 
Linux comandos gerais e servidores de rede
Linux   comandos gerais e servidores de redeLinux   comandos gerais e servidores de rede
Linux comandos gerais e servidores de rede
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2
 
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
 
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
 
Linux comandosgeraiseservidoresderede-120930000057-phpapp01
Linux comandosgeraiseservidoresderede-120930000057-phpapp01Linux comandosgeraiseservidoresderede-120930000057-phpapp01
Linux comandosgeraiseservidoresderede-120930000057-phpapp01
 
Tutorial do shell script para Clonar HDs WIN7 usando Linux
Tutorial do shell script para Clonar HDs WIN7 usando LinuxTutorial do shell script para Clonar HDs WIN7 usando Linux
Tutorial do shell script para Clonar HDs WIN7 usando Linux
 
Tutorial do ris serviços de instalação remota
Tutorial do ris   serviços de instalação remotaTutorial do ris   serviços de instalação remota
Tutorial do ris serviços de instalação remota
 
Linux instalação
Linux instalaçãoLinux instalação
Linux instalação
 
Sor filesystem-particionamento
Sor filesystem-particionamentoSor filesystem-particionamento
Sor filesystem-particionamento
 
Tutorial: Instalação de Ubuntu em uma Gumstix Overo
Tutorial: Instalação de Ubuntu em uma Gumstix OveroTutorial: Instalação de Ubuntu em uma Gumstix Overo
Tutorial: Instalação de Ubuntu em uma Gumstix Overo
 
DKMS ­ Dynamic Kernel Module Support
DKMS ­ Dynamic Kernel Module SupportDKMS ­ Dynamic Kernel Module Support
DKMS ­ Dynamic Kernel Module Support
 

Más de Diego Santos

Práticas DevOps com Zend Server
Práticas DevOps com Zend ServerPráticas DevOps com Zend Server
Práticas DevOps com Zend ServerDiego Santos
 
HTML5 – O que tem de novo?
HTML5 – O que tem de novo?HTML5 – O que tem de novo?
HTML5 – O que tem de novo?Diego Santos
 
Criando Mapas de rede para monitoramento com Zabbix
Criando Mapas de rede para monitoramento com ZabbixCriando Mapas de rede para monitoramento com Zabbix
Criando Mapas de rede para monitoramento com ZabbixDiego Santos
 
Como lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQLComo lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQLDiego Santos
 
OpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlayOpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlayDiego Santos
 
KDC Spoofing com Kerberos MIT
KDC Spoofing com Kerberos MITKDC Spoofing com Kerberos MIT
KDC Spoofing com Kerberos MITDiego Santos
 
Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...
Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...
Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...Diego Santos
 
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando... IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...Diego Santos
 
Tenha mais tempo e gerencie seus processos com a Bonita
Tenha mais tempo e gerencie seus processos com a BonitaTenha mais tempo e gerencie seus processos com a Bonita
Tenha mais tempo e gerencie seus processos com a BonitaDiego Santos
 
Socialize os sites da sua empresa com eXo Platform
Socialize os sites da sua empresa com eXo PlatformSocialize os sites da sua empresa com eXo Platform
Socialize os sites da sua empresa com eXo PlatformDiego Santos
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em CDiego Santos
 
Análise estática de malware com o pev
Análise estática de malware com o pevAnálise estática de malware com o pev
Análise estática de malware com o pevDiego Santos
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosDiego Santos
 
Formando Desenvolvedores Efetivos
Formando Desenvolvedores EfetivosFormando Desenvolvedores Efetivos
Formando Desenvolvedores EfetivosDiego Santos
 
As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!Diego Santos
 
Análise de malware com software livre
Análise de malware com software livreAnálise de malware com software livre
Análise de malware com software livreDiego Santos
 

Más de Diego Santos (17)

Práticas DevOps com Zend Server
Práticas DevOps com Zend ServerPráticas DevOps com Zend Server
Práticas DevOps com Zend Server
 
HTML5 – O que tem de novo?
HTML5 – O que tem de novo?HTML5 – O que tem de novo?
HTML5 – O que tem de novo?
 
Criando Mapas de rede para monitoramento com Zabbix
Criando Mapas de rede para monitoramento com ZabbixCriando Mapas de rede para monitoramento com Zabbix
Criando Mapas de rede para monitoramento com Zabbix
 
Como lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQLComo lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQL
 
Cloud é Linux
Cloud é LinuxCloud é Linux
Cloud é Linux
 
OpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlayOpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlay
 
KDC Spoofing com Kerberos MIT
KDC Spoofing com Kerberos MITKDC Spoofing com Kerberos MIT
KDC Spoofing com Kerberos MIT
 
Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...
Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...
Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...
 
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando... IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 
Tenha mais tempo e gerencie seus processos com a Bonita
Tenha mais tempo e gerencie seus processos com a BonitaTenha mais tempo e gerencie seus processos com a Bonita
Tenha mais tempo e gerencie seus processos com a Bonita
 
Socialize os sites da sua empresa com eXo Platform
Socialize os sites da sua empresa com eXo PlatformSocialize os sites da sua empresa com eXo Platform
Socialize os sites da sua empresa com eXo Platform
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em C
 
Análise estática de malware com o pev
Análise estática de malware com o pevAnálise estática de malware com o pev
Análise estática de malware com o pev
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
 
Formando Desenvolvedores Efetivos
Formando Desenvolvedores EfetivosFormando Desenvolvedores Efetivos
Formando Desenvolvedores Efetivos
 
As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!
 
Análise de malware com software livre
Análise de malware com software livreAnálise de malware com software livre
Análise de malware com software livre
 

Análise de dumps de memória no GNU/Linux

  • 1.
  • 2. Experiência em missão crítica de missão crítica  Pioneira no ensino de Linux à distância  Parceira de treinamento IBM  Primeira com LPI no Brasil  + de 30.000 alunos satisfeitos  Reconhecimento internacional  Inovação com Hackerteen e Boteconet www.4linux.com.br 2 / 12
  • 3. Análise de dumps de memória no GNU/Linux www.4linux.com.br 3 / 12
  • 4. O que é um dump? → É uma imagem perfeita do conteúdo de uma memória volátil. Ou seja, é uma cópia de todos os bytes numa determinada região de memória. Geralmente esta cópia é gravada num arquivo em disco ou pen drive. Este arquivo, chamado de dump, é um amontoado de bytes agregados e sua interpretação requer análise. www.4linux.com.br 4 / 12
  • 5. Acesso à memória no Linux /dev/mem ??? $ man man 1 Executable programs or shell commands 2 System calls (functions provided by the kernel) 3 Library calls (functions within program libraries) 4 Special files (usually found in /dev) 5 File formats and conventions eg /etc/passwd 6 Games 7 Miscellaneous (including macro packages and conventions) 8 System administration commands (usually only for root) 9 Kernel routines [Non standard] $ man 4 mem www.4linux.com.br 5 / 12
  • 6. Acesso à memória no Linux /dev/mem é um dispositivo que nos permite mapear qualquer endereço físico, incluindo os da RAM e de memórias de periféricos. Um erro comum é pensar que o /dev/mem só mapeia a RAM utilizada pelo sistema operacional. Um dump completo, que incluirá o que está em RAM, é possível com: # dd if=/dev/mem of=/root/dump.bin ou # apt-get install memdump # memdump -v > dump.bin www.4linux.com.br 6 / 12
  • 7. Proteção de memória # grep DEVMEM /boot/config-$(uname -r) CONFIG_STRICT_DEVMEM=y Dessa forma, tanto leitura quanto escrita são proibidas, no entanto, conforme comentário no fonte init.c do kernel, o acesso ao primeiro megabyte desta área é concecido, porque nele reside o código do BIOS e dados utilizados pelo X: /* * devmem_is_allowed() checks to see if /dev/mem access to a certain address * is valid. The argument is a physical page number. * * * On x86, access has to be given to the first megabyte of ram because that area * contains bios code and data regions used by X and dosemu and similar apps. * Access has to be given to non-kernel-ram areas as well, these contain the PCI * mmio resources as well as potential bios/acpi data regions. */ https://github.com/torvalds/linux/blob/master/arch/x86/mm/init.c#L303 www.4linux.com.br 7 / 12
  • 8. Bypass da proteção A proteção inutiliza o dd: # dd if=/dev/mem of=dump.bin dd: lendo "/dev/mem": Operação não permitida 2056+0 registros de entrada 2056+0 registros de saída 1052672 bytes (1,1 MB) copiados, 0,0462861 s, 22,7 MB/s Mas podemos utilizar o módulo fmem (antigo fdump), que criará o dispoistivo /dev/fmem – sem as limitações do /dev/mem: $ wget -c http://hysteria.sk/~niekt0/foriana/foriana_current.tgz $ tar xzf foriana_current.tgz $ cd fmem_1.6-1/ $ make $ sudo ./run.sh www.4linux.com.br 8 / 12
  • 9. Análise do dump # dd bs=1M count=8006 if=/dev/fmem of=dump.bin O parâmetro count é obrigatório pode ser o total de RAM no sistema (de fato, só será dumpado o que estiver mapeado pelo SO para uso). Você pode checar com free -m. $ strings -t x dump.bin > str.txt $ sudo apt-get install foremost $ mkdir recover $ foremost -v -b 1024 -i dump.bin -o recover/ O foremost suporta vários tipos de arquivos, como jpg, bmp, gif, png, exe, dll, documentos do Office, LibreOffice, zip, rar etc. www.4linux.com.br 9 / 12
  • 10. Recuperados com o Foremost # ls ­R recover/ recover/: audit.txt  bmp dll  gif  htm  jpg  pdf  png recover/bmp: 00005248.bmp recover/dll: 00004622.dll recover/gif: 00962274.gif  00979531.gif  01001291_1.gif 00968056.gif  00981979.gif  01001291_2.gif 00968193.gif  00982418.gif  01001291.gif   00975759.gif  00985118.gif  01002993.gif 00979265.gif  00998234.gif  01002994.gif recover/htm: 00943193.htm  01039003.htm  01042419.htm recover/jpg: 00982590.jpg  00987601.jpg  00990427.jpg recover/pdf: 00941876.pdf recover/png: 00970880.png  00990424.png  00997986.png  00979102.png  00990425.png  00998151.png 00979105.png  00990426.png  00998160.png  00980376.png  00990430.png  00998214.png 00980378.png  00994364.png  00998228.png  00980389.png  00996290.png  00998256.png 00980398.png  00997938.png  00998852.png  00982704.png  00997948.png  00999042.png www.4linux.com.br 10 / 12
  • 11. Obrigado Perguntas? www.4linux.com.br 11 / 12
  • 12. Obrigado Fernando Mercês fernando.merces@4linux.com.br www.4linux.com.br www.hackerteen.com twitter.com/4LinuxBR Tel: 55-11-2125-4747 www.4linux.com.br 12 / 12