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
3 / 12www.4linux.com.br
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?
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
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
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
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
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
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
11 / 12www.4linux.com.br
Obrigado
Perguntas?
12 / 12www.4linux.com.br
Obrigado
Fernando Mercê[email protected]
www.4linux.com.brwww.hackerteen.comtwitter.com/4LinuxBR
Tel: 55-11-2125-4747