webcast tutorial: análise de dumps de memória no gnu/linux

12

Upload: 4linuxbr

Post on 26-Jun-2015

496 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Webcast Tutorial: Análise de dumps de memória no GNU/Linux
Page 2: Webcast Tutorial: Análise de dumps de memória no GNU/Linux

2 / 12www.4linux.com.br

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

Page 3: Webcast Tutorial: Análise de dumps de memória no GNU/Linux

3 / 12www.4linux.com.br

Análise de dumps de memória no

GNU/Linux

Page 4: Webcast Tutorial: Análise de dumps de memória no GNU/Linux

4 / 12www.4linux.com.br

→ É 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.

O que é um dump?

Page 5: Webcast Tutorial: Análise de dumps de memória no GNU/Linux

5 / 12www.4linux.com.br

/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

Acesso à memória no Linux

Page 6: Webcast Tutorial: Análise de dumps de memória no GNU/Linux

6 / 12www.4linux.com.br

/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

Acesso à memória no Linux

Page 7: Webcast Tutorial: Análise de dumps de memória no GNU/Linux

7 / 12www.4linux.com.br

# 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

Proteção de memória

Page 8: Webcast Tutorial: Análise de dumps de memória no GNU/Linux

8 / 12www.4linux.com.br

A proteção inutiliza o dd:

# dd if=/dev/mem of=dump.bin dd: lendo "/dev/mem": Operação não permitida2056+0 registros de entrada2056+0 registros de saída1052672 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

Bypass da proteção

Page 9: Webcast Tutorial: Análise de dumps de memória no GNU/Linux

9 / 12www.4linux.com.br

# 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.

Análise do dump

Page 10: Webcast Tutorial: Análise de dumps de memória no GNU/Linux

10 / 12www.4linux.com.br

# 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.gif00968193.gif  00982418.gif  01001291.gif   00975759.gif  00985118.gif  01002993.gif00979265.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.png00979105.png  00990426.png  00998160.png  00980376.png  00990430.png  00998214.png00980378.png  00994364.png  00998228.png  00980389.png  00996290.png  00998256.png00980398.png  00997938.png  00998852.png  00982704.png  00997948.png  00999042.png

Recuperados com o Foremost

Page 11: Webcast Tutorial: Análise de dumps de memória no GNU/Linux

11 / 12www.4linux.com.br

Obrigado

Perguntas?

Page 12: Webcast Tutorial: Análise de dumps de memória no GNU/Linux

12 / 12www.4linux.com.br

Obrigado

Fernando Mercê[email protected]

www.4linux.com.brwww.hackerteen.comtwitter.com/4LinuxBR

Tel: 55-11-2125-4747