Análise de Malware em Dump de Memória com Volatility
Análise de Memória em Windows
1. Forense em Windows
Aquisição e Análise de Memória
Sandro Süffert - http://suffert.com
CTO, Techbiz Forense Digital
Versão: 4
Criação: 03/02/2009 – Última atualização: 04/06/2010
2. Tema A: Material de Referência
Livros:
I - Windows Forensic Analysis v2, Harlan Carvey
Capítulos 3 – Windows Memory Analysis e Capítulo 4 – Registry Analysis
II - Malware Forensics – Investigating and Analyzing Malicious Code, James Aquilina, - Eoghan Casey, Cameron Malin
Capítulos 3 – Memory Forensics: Analyzing Physical and Process Memory Dumps e 9 – Analysis of a Suspect Program
III – Computer Evidence Collection & Preservation, Christopher L.T. Brown
Capítulos 6 – Volatile Data e 11 – Collecting Volatile Data
IV - EnCE – The Official Encase Certified Examiner Study Guide, 2 nd Edition, Steve Bunting
Capítulos 3 – First Response e 9 – Windows Operating System Artifacts
V - Undocumented Windows, capítulo 4, Sven B. Schreiber
VI - Windows Internals (4a edição) capítulo 7, Mark Russinovich e David Salomon.
3. Tema A: Material de Referência
Papers:
Computer Forensics: Results of Live Response Inquiry vs. Memory Image Analysis
CERT: http://www.cert.org/archive/pdf/08tn017.pdf (Cal Waits, Joseph Ayo Akinyele, Richard Nolan, Larry
Rogers)
Collecting Evidence from a Running Computer - SEARCH:
http://www.search.org/files/pdf/CollectEvidenceRunComputer.pdf (Todd Shipley and Henry Reeve)
"A Methodology for the Law Enforcement Collection of Digital Evidence from a Running Computer”
Lest We Remember: Cold Boot Attacks on Encryption Keys: http://citp.princeton.edu/pub/coldboot.pdf
Eletronic Crime Investigation - NIJ: http://www.ncjrs.gov/pdffiles1/nij/187736.pdf
Electronic Evidence – Guide for First Responders – http://www.forwardedge2.usss.gov/pdf/bestPractices.pdf
4. Tema A: Material de Referência
Papers DFRWS - Digital Forensic Research Conference:
Windows Operating System Agnostic Memory Analysis. James Okolica and Gilbert
Peterson. http://dfrws.org/2010/proceedings/2010-306.pdf
Extracting Windows Command Line Details from Physical Memory. Richard Stevens and Eoghan
Casey. http://dfrws.org/2010/proceedings/2010-307.pdf
A Novel Time-Memory Trade-Off Method for Password Recovery. Vrizlynn L. L. Thing and Hwei-Ming
Ying. http://dfrws.org/2009/proceedings/p114-thing.pdf
Extraction of Forensically Sensitive Information from Windows Physical Memory. Seyed Mahmood Hejazi,
Chamseddine Talhi and Mourad Debbabi. http://dfrws.org/2009/proceedings/p121-hedjazi.pdf
The Persistence of Memory: Forensic Identification and Extraction of Cryptographic Keys. Carsten Maartmann-Moe,
Andre Arnes and Steffen E. Thorkildsen. http://dfrws.org/2009/proceedings/p132-moe.pdf
Forensic Analysis of the Windows Registry in Memory. Brendan Dolan-Gavitt.
http://www.dfrws.org/2008/proceedings/p26-dolan-gavitt.pdf
5. Tema A: Material de Referência
Papers DFRWS - Digital Forensic Research Conference:
Recovering Deleted Data From the Windows Registry. Timothy Morgan.
http://www.dfrws.org/2008/proceedings/p33-morgan.pdf
Forensic Memory Analysis: Files mapped in memory. Ruud van Baar.
http://www.dfrws.org/2008/proceedings/p52-vanBaar.pdf
The impact of Microsoft Windows pool allocation strategies on memory forensics. Andreas Schuster.
http://www.dfrws.org/2008/proceedings/p58-schuster_pres.pdf
BodySnatcher: Towards Reliable Volatile Memory Acquisition by Software. Bradley Schatz.
http://www.dfrws.org/2007/proceedings/p126-schatz.pdf
The VAD Tree: A Process-Eye View of Physical Memory. Brendan F Dolan-Gavitt.
http://www.dfrws.org/2007/proceedings/p62-dolan-gavitt.pdf
Searching for processes and threads in Microsoft Windows memory dumps. Andreas Schuster.
http://www.dfrws.org/2006/proceedings/2-Schuster.pdf
6. Tema A: Ferramentas
1) VMWare Workstation, Server ou Player: http://www.vmware.com
1.1) VM SIFT Workstation 2.0: https://computer-forensics2.sans.org/community/siftkit/ - DVD
1.2) VM BackTrack 4 R1: http://www.backtrack-linux.org/download.php?fname=bt4r1vm
1.3) VM de Laboratório: “ACMEXP01” - DVD
2.01 - MoonSols Community Edition -http://www.moonsols.com/component/jdownloads/view.download/3/2 - DVD
2.02 - FastDump - https://www.hbgary.com/community/free-tools/#fastdump - DVD
2.03 - FTKImager - http://www.accessdata.com/downloads.html#FTKImager - DVD
2.04 - Memoryze - http://www.mandiant.com/products/free_software/memoryze/ - DVD
2.05 - Volatility - https://www.volatilesystems.com/default/volatility - DVD - SIFT
2.06 - Fget - https://www.hbgary.com/community/free-tools/#fget
2.07 - Microsoft Windows Debugger - http://www.microsoft.com/whdc/devtools/debugging/default.mspx
2.08 - LiveKD - http://technet.microsoft.com/en-us/sysinternals/bb897415.aspx - DVD
2.09 - pdgmail/pdymail - http://jeffbryner.com/code/ - DVD – SIFT
2.10 - PTK - http://ptk.dflabs.com/- DVD - SIFT
2.10 - Ferramentas Sysinternals - http://technet.microsoft.com/en-us/sysinternals/default.aspx
2.11 - Ferramentas NirSoft - http://www.nirsoft.net/
2.12 - Ferramentas NTSecurity - http://ntsecurity.nu/toolbox/
3) Ferramentas Comerciais:
3.1 – AccessData FTK 3.1
3.2 – Encase FIM/Enterprise 6.17
3.3 – HBGary Responder Pro
7. Análise de Memória vs Live Response
• Computer Forensics: Results of Live Response
Inquiry vs. Memory Image Analysis - CERT
Cal Waits, Joseph Ayo Akinyele, Richard Nolan, Larry Rogers
http://www.cert.org/archive/pdf/08tn017.pdf (2008)
“Despite the drawbacks associated with volatile memory analysis, it is the authors’
opinion that volatile memory analysis will be integral to the digital investigation
process going forward. (…) , the best approach is a hybrid based on situational
awareness and a triage mentality. (..) Full memory analysis (and the requisite
memory acquisition) should be used to augment and supplement traditional
digital forensic examination when greater understanding of the running state of
the machine is critical to resolving the case.”
9. Live Response
• Execução de Ferramentas de levantamento de
dados com o S.O. em execução
– netstat/tasklist/arp ..
– Sysinternals
– NirSoft
– FoundStone
– Microsoft Cofee
– Helix
10. MS Cofee Decaf
Computer Online Forensic Evidence Extractor
arp.exe ‐a Contaminate MAC Addresses:
netdom.exe query DC
at.exe Spoof MAC addresses of network adapters
netstat.exe ‐ao
autorunsc.exe netstat.exe ‐no
getmac.exe Kill Processes:
openfiles.exe /query/v
handle.exe ‐a Quick shutdown of running processes
psfile.exe
hostname.exe pslist.exe
ipconfig.exe /all Shutdown Computer:
pslist.exe ‐t
msinfo32.exe /report On the fly machine power down
psloggedon.exe
nbtstat.exe ‐n psservice.exe
nbtstat.exe ‐A 127.0.0.1 Disable network adapters
pstat.exe
nbtstat.exe ‐S psuptime.exe
nbtstat.exe ‐c Disable USB ports
quser.exe
net.exe share route.exe print
net.exe use Disable Floppy drive
sc.exe query
net.exe file sc.exe queryex
net.exe user Disable CD-ROM
sclist.exe
net.exe accounts showgrps.exe
net.exe view Disable Serial/Printer Ports
srvcheck 127.0.0.1
net.exe start tasklist.exe /svc
net.exe Session Erase Data: Quick file/folder removal (Basic Windows delete)
whoami.exe
net.exe localgroup administrators
/domain Clear Event Viewer: Remove logs from the Event Viewer
net.exe localgroup
net.exe localgroup administrators Remove Torrent Clients: Removes Azureus and BitTorrent clients
net.exe group
Clear Cache: Remove cookies, cache, and history
11. Live Response - Limitações
http://decafme.org/decaf-software.html
12. Lab 0: Teste do ambiente
– Logar na máquina virtual “XPDUMMY”
• Usuário: Administrator
• Senha: Password
– Configurar rede:“host-only / private network”
– Levante as informações de processos em execução
e portas de comunicação abertas
• fport/netstat –ano
• Pslist/tasklist
13. Lab 0
– Logar na máquina virtual “SIFT 2.0”
• Usuário: sansforensics
• Senha: forensics
– Configurar rede:“host-only / private network”
– A partir da máquina virtual SIFT 2.0 ou da
máquina host:
• Conectar na porta 666 (via nc ou telnet) da máquina
“XPDUMMY” (mantenha a conexão)
• ex: telnet 192.168.31.133 666
14. Lab 0
– Da máquina XPDUMMY, levante novamente as
informações de processos em execução e portas
de comunicação abertas com ferramentas “live
response”:
• fport/netstat –ano
• Pslist/tasklist
– Comentários?
15. Forense de Memória
– Muitos Dados, alguma estruturação
– Estrutura pouco documentada e não
compreendida para sistemas operacionais
Windows
– Objetivo é obter contexto para artefatos e
evidências encontradas em dumps de memória
16. Forense de Memória
– Coleta/Aquisição
• Memória em execução
• Arquivo de paginação
• Arquivo de hibernação
– Contextualização
• Encontrar offsets das estruturas necessárias
• Extrair estruturas de Memória
• Isolamento de processos
– Análise
• Análise da interação entre estruturas
• Recuperação de indícios
18. Memória
• RAM: leitura em
0.00000001 seg (elétrico)
• HD: leitura em 0.01 seg
(mecânico)
diagrama: wikipedia
19. 1. Registros, memória periférica, cache (10-9 seg)
2. Memória Kernel e Física (10-8 seg)
volatilidade
3. Estado de rede (conexões) (10-3 seg)
4. Processos em execução (1 seg)
5. Discos Rígidos (anos)
6. Floppy, Fitas de Backup, CD-ROM (anos)
7. Material impresso (dezenas de anos)
20. Memória Física
– Circuitos eletrônicos contidos em chips de RAM
(random memory access), usados para armazenar
temporariamente informação em tempo de
execução
– Contém o estado atual do computador – visão do
hardware
21. Memória Virtual
– Visão do sistema operacional
– Memória Virtual = espaço máximo
que um processo pode ocupar
– Espaço em disco endereçável
disponível ao sistema operacional
– Endereços virtuais são mapeados
mapeados em endereços físicos
22. Página de Memória
• Página = bloco de tamanho fixo da memória principal
que é contíguo tanto no endereçamento físico, quanto
no endereçamento virtual
• Menor quantidade de dados para:
– Alocação de memória
– Transferência entre memória física e swap (pagefile)
• Tamanhos de Páginas de Memória
– x86: 4Kb (2Mb se PAE é usado)
– IA64: de 4kb até 256Mb
23. Paginação/Swapping
– Quando um processo vai ser carregado em memória, o paginador
gerencia que páginas serão usadas e leva apenas as páginas necessárias
para a memória, diminuindo o tempo de troca e a quantidade de
memória física necessária por processo.
– Quando há pouca RAM, a memória virtual move dados da memória física
a um espaço chamado arquivo de paginação (lentidão).
– Na nomenclatura do Windows “Memória Virtual” é o espaço disponível
para o arquivo de paginação:
» Windows 3.x: 386SPART.PAR
» Windows 9x: WIN386.SWP
» Windows NT: PAGEFILE.SYS
24. Limites: Arquiteturas 32 e 64 bit
– Memória virtual máxima (disponível por processo *)
• 32 bit *: 4 GB = 2^32 = 4.294.967.296 bits
• 64 bit: 16 TB = 2^64 = 18.446.744.073.709.551.616 bits
* Desde o “Pentium Pro” as CPUs “32 bit” são capazes de endereçar de 36 bits de RAM. Mas limitadas
a um endereçamento virtual de 32 bit (4GB) por processo.
http://www.microsoft.com/whdc/system/platform/server/pae/pae_os.mspx
– Tamanho do arquivo de paginação
• 32 bit: 16 TB
• 64 bit: 256 TB
25. Hibernação
– O arquivo de hibernação (%SYSTEMDRIVE%hiberfil.sys) é o somatório da
memória física e da memória de swap - ou paginação - comprimidos.
– Possui dados presentes na memória na última vez que o sistema foi
“hibernado” - estado do sistema no disco para uma rápida recuperação do
trabalho.
– O arquivo hiberfil.sys possui um header (que é sobrescrito depois de uma
restauração), páginas livres, tabelas de paginação e dados comprimidos
– O sistema pode ser forçado a hibernar
26. Kernel Mode/User Mode
todos os endereços são virtuais
(Virtual) Memory Manager
Gerencia a Memória Virtual, controlando a proteção e paginação
de memória entre a memória física e o disco rígido.
Implementa alocação genérica de memória física.
m aioria dos endereços de memória são virtuais
Implementa um analisador de PE (portable executables) que
permite que um executável seja mapeado ou retirado da memória
em um passo
Process Manager
Responsável por criar processos e threads
27. Kernel Windows
– Do ponto de vista de Domínio
de Proteção Hierárquica, o
Kernel Windows está no Ring 0
– Componentes do Kernel possuem
acesso irrestrito a todo o sistema
28. Kernel Windows
– Windows Executive gerencia memória, processos,
threads, segurança, objetos, I/O, e rede
– Camada de Abstração de Hardware (HAL)
– USER and GUI functionality
– drivers provêm extensão a entrada e saída (I/O) de
usuários e hardware
29. User mode
• Acesso restrito ao sistema (Ring 3)
– Acessa recursos do sistema através das APIs
Windows (kernel32.dll, ntdll.dll)
• Contém:
– Aplicação de usuários
– Processos de suporte (logon)
– Processos de Serviço
– Subsistemas de Ambiente
30. Memória
Memoria (RAM)
Physical Memory
P1 P2 P3 P4 P5
Windows
Memórias Virtuais
Cada processo (P1-5) tem um Diretório de Paginas (PDE) mapeando endereços virtuais para endereços físicos ou do arquivo de paginação
31. Memória Lógica Total
• Soma de todas as memórias virtuais
2 GB Memory (RAM) Memória Física
OS
Memória Virtual
4GB 4GB 4GB 4GB 4GB 4GB
6 x 4GB = 24 GB <= Memória Lógica
32. Diretório de Paginas e Tabelas de Páginas
2 GB
Memória Virtual do Processo
0 GB 4 GB
Memória Física
0x00C00000 – 0x00E00000
0x00CD0000 – 0x00CDF000 0x00CE0000 – 0x00E00000
PTE 0010 - 0015
0 GB
0x00CE0000 – 0x00CF0000 0x00D10000 – 0x00D20000
VAD Tree
A reconstrução da VAD Tree (Virtual Adress Descriptors) permite a reconstrução do espaço
memória de um processo juntamente com todos os arquivos mapeados por ele
Disco Rígido HbGary
33. Virtual Address Descriptors
vaddump Dump the Vad sections to files $ python volatility vadwalk -f <path-to-image-dump>
vadinfo Dump the VAD info ************************************************************************
vadwalk Walk the vad tree Pid: 4
Address Parent Left Right Start End Tag Flags
819c1300 00000000 00000000 81948bc0 00010000 00033fff Vad
0x00C00000 – 0x00E00000
81948bc0 819c1300 8185b008 00000000 7c900000 7c9b1fff Vad
8185b008 81948bc0 00000000 817dd0b0 00060000 00060fff Vad
817dd0b0 8185b008 00000000 00000000 00070000 0016ffff Vad
A reconstrução da VAD ************************************************************************
tree permite a construção Pid: 440
0x00CD0000 – 0x00CDF000 0x00CE0000 – 0x00E00000
do espaço de memória de Address 0010 - 0015
PTE Parent Left Right Start End Tag Flags
8183a210 00000000 8186b670 819806e0 48580000 4858efff Vad
um processo juntamente 8186b670 8183a210 00000000 81856080 00000000 000fffff VadS
com todos os arquivos 81856080 8186b670 00000000 8184a050 00100000 00100fff VadS
8184a050 81856080 00000000 81849790 00110000 00110fff VadS
mapeados por ele 0x00CE0000 – 0x00CF0000 0x00D10000 – 0x00D20000
81849790 8184a050 00000000 81845050 00120000 0015ffff VadS
81845050 81849790 00000000 816d3030 00160000 0025ffff VadS
816d3030 81845050 00000000 816d30c0 00260000 0026ffff VadS
VAD Tree
34. Tradução de um endereço virtual
As etapas a seguir são executadas durante a tradução de um endereço virtual:
1. O hardware de gerenciamento de memória localiza o diretório de página (PDE) para o processo atual. Na
troca de contexto de cada processo, o hardware é informado quanto ao endereço de um novo diretório da
página de processo, normalmente pelo sistema operacional definindo um registrador especial da CPU.
2. O índice do diretório de página é usado para localizar a entrada que descreve o local da tabela de página
necessário para mapear o endereço virtual.
3. O índice da tabela de página é usado para que a tabela de página localize a PTE que descreve o local da
página virtual em questão.
4. A PTE é usada para localizar a página. Se a página for válida, ela terá o número ou o frame da página física
(na memória física) que contém a página virtual. Se a página não for válida (page fault), o manipulador de
falta do gerenciamento de memória localizará a página e tentará torná-la válida. Se a página não puder se
tornar válida (por exemplo, devido a uma falha na proteção), o manipulador de falta gerará uma violação
de acesso ou uma verificação de bug.
5. Quando a PTE é apontada para uma página válida, o índice de byte é usado para localizar o endereço dos
dados desejados dentro da página física.
SOLOMON, Da vi d A. Desvendando o Windows NT. 2ª edição
35. Tradução de endereços virtuais
Diretório de pagina (10 bits) indica a entrada na tabela de paginação (10 bits), que aponta
um endereço de 12 bits que contém o (byte offset) real da página de memória buscada.
Page Directory Base / Directory Table Base (PDB/DTB) -> endereço virtual
Page Directory Entry (PDE)
Page Table Entry (PTE)
Memory Page
Mais informações – exemplos:Andreas Schuster
http://computer.forensikblog.de/en/2006/03/converting_virtual_into_physical_addresses.html
36. Mapeamento de Memória
Endereçamento Virtual
Blocos de Memória Tamanho do bloco
Páginas Únicas para este bloco Páginas não referenciadas
37. Layout da Memória Virtual
4 GB
• Os primeiros 2GB* de
Memória de Kernel espaço de memória virtual
é reservado para o Kernel
do Windows Kernel. E não
2 GB é acessível para os
processos da userland.
* exceto quando a opção /3GB é utilizada em boot.ini
Memória de Usuário [boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)WINNT="????" /3GB
0 GB
38. Memória Virtual - userland
2 GB Processa estruturas específicas do Windows
Bibliotecas (DLLs) de sistema Windows
DLLs Windows ou de Aplicações ou Memória Alocada
DLLs ou Memória Alocada
Binário da Aplicação
Stack
Heap ou Memoria Alocada
0 GB
39. Processos
– Processos são containeres para espaço de
endereçamento de memória e threads
– Espaço de memória virtual próprio
• Identificador único: Process ID (PID)
– Ao menos um thread de execução
– Contexto de Segurança
40. Processos
• Processos são unidades de alocação de recursos
como arquivos, I/O, memória, privilégios e rodam
em espaços de endereçamento separados
• Processos são também unidades para
agendamento de threads – estes podem estar
prontos (ready) , esperando (wait), ou rodando
(running)
41. Alocação de Memória
• Quando o programa está em execução, cada processo tem seu
próprio espaço de endereçamento de memória e o sistema
operacional controla esta utilização de páginas de memória na
memória física (RAM) ou na “memória virtual” – arquivo de
paginação (%SYSTEMDRIVE%pagefile.sys)
• Problema: O mapeamento não é consistente (*) entre versões
do Windows (XP, 2000, 2003, Vista, 7) e até mesmo categorias
(Home, Pro, Enterprise) e Service Packs (0,1,2,3)
(*) Windows Operating System Agnostic Memory Analysis. James Okolica and Gilbert Peterson.
http://dfrws.org/2010/proceedings/2010-306.pdf
42. Alocação de Memória Virtual
– Programas podem alocar memória virtual de
forma dinâmica
– O kernel Windows usa a estrutura de dados
Virtual Address Descriptors (VADs) para controlar
as alocações de memória virtual
– As ferramentas de análise de memória
combinam as informações presentes nos VADs
com a tabela de página de cada processo
43. Kernel Windows: Memória
– Análise para identificação de endereços e páginas
de memória usadas por processos:
• EPROCESS/KPROCESS/ETHREAD – estruturas acessadas
apenas a partir do kernel mode
• PEB – Process Environment Block – endereço virtual fixo
para 32bit: 0x7FFDF000 – acessado também do user
mode
– Demo:
• Livekd + Microsoft Windows Debugger (online)
• volatiliy volshell (offline) <= SIFT 2.0
44. Kernel Windows: Memória
• EPROCESS
– DirectoryTableBase (DTB) – também conhecido
como Page Directory Base (PDB)
– CreateTime
– UniqueProcessId
– ImageFileName – nome do executável
– InheritedFromUniqueProcessID – Parent Process ID
– PEB – Process Environment Block
45. Kernel Windows: Memória
Possibilitam a separação entre processos. Exemplo: quando um processo executa em
memória ele possui um forward link (FLINK) e um backward link (BLINK) para processos
que estão localizados próximos na memória.
46. Controle de Alocação de Memória
• O Windows utiliza listas duplamente encadeadas. Esta
variação é importante quando necessitamos fazer um
merge de buracos (e.g., no caso de término de processo).
Alba Cristina Melo
P O 5 B 5 2 P 7 2 B 9 1 P 10 2 B 12 4
P O 5 B 5 5 P 10 2 B 12 4
47. Criação e Término de Processos
• Criação de Processos:
– Inicialização do sistema
– Ações de outros processos
– Ações do usuário
– Ações de um gerenciador de jobs/batch
• Término de Processos:
– Normalmente – saída
– Voluntariamente ou involuntariamento em erros
– Morto (killed) pelas ações de um usuário
– Morto (killed) pelas ações de um processo
49. Threads
– Um Thread é um container para execução
• Armazenamento privado Thread Local Storage / TLS
• Identificador único: Thread ID (TID)
• Estados da CPU (contadores dos registradores)
• Pilhas de execução (stack / LIFO)
• Contexto de segurança
50. Estados de Threads
Initialized
KeInitThread
Transition PspCreateThread
k stack KiReadyThread
swapped KiInsertDeferredReadyList
KiInsertDeferredReadyList
KiReadyThread Deferred
Ready
Ready
process
swapped KiRetireDpcList/KiSwapThread/ KiSetAffinityThread
KiExitDispatcher KiSetpriorityThread
KiProcessDeferredReadyList
KiDeferredReadyThread
no avail.
Ready
processor
KiSelectNextThread
KiUnwaitThread
KiReadyThread
Idle
processor
or Standby preemption
Waiting preemption
Affinity
ok
KiQuantumEnd
KiIdleSchedule
KiSwapThread
KiExitDispatcher
NtYieldExecution
Affinity
not ok
Terminated Running preemption
KeTerminateThread
Kernel Thread Transition Diagram
DavePr@Microsoft.com
2003/04/06 v0.4b
51. Processo, Thread, Job
• Processo – no mínimo um thread, pode ter
mais (multi-threaded)
– espaço utilizado em memória e recursos
controlado pelo processo
• Thread – unidade básica de execução
– S.O. agenda threads para a execução
• Job – quando a execução é controlada por
programas (userland) – a partir do Windows
2000
52. Device Drivers
– Modulos dinâmicos que podem ser carregados no
kernel para prover suporte de I/O ou interface de
I/O com usuário
– Como todos os componentes do kernel, drivers
tem acesso irrestrito ao sistema (Ring 0)
53. Serviços
– Programas (user mode) que provêm
funcionalidades independente do usuário logado
– Exemplos:
• Gerenciador de Tarefas
• Spooler de Impressão
• Windows Update
54. Registro do Windows
– Um banco de dados hierárquico que contém
informações de configuração
• Registro em disco (windowssystem32config)
• Registro LIVE (Memória)
– Exemplos:
• Configurações de inicialização
• Configurações de Hardware
• Configurações de Drivers
• Configurações de Usuários
• Configurações de aplicações
• Dados do usuário logado (current user)
55. Forense de Memória
– Coleta/Aquisição
• Memória em execução
• Arquivo de paginação
• Arquivo de hibernação
– Contextualização
• Encontrar offsets das estruturas necessárias
• Extrair estruturas de Memória
• Isolamento de processos
– Análise
• Análise da interação entre estruturas
• Recuperação de indícios
56. Forense de Memória
– Independe do sistema operacional - que pode estar sendo
enganado)
• Ferramentas Anti-Forense/Malware/Rootkits
– Pode detectar códigos maliciosos que bypassam outras
ferramentas de segurança como anti-vírus e HIPS
– O objetivo é reconstruir as informações a partir da camada
física, verificando o estado de execução do sistema
57. Forense de Memória – vantagens
– Rootkits que bypassam o usermode e atuam em kernel
mode, enganando o S.O. e aplicações utilizadas em “Live
Response”
– Senhas em claro na memória
– Programas em execução
– Documentos abertos
– Conteúdo aberto de programas compactados (packers)
– Conexões de Rede – atuais e recentes
– Chaves de Criptografia (BitLocker, PGP Whole Disk
Encryption, TrueCrypt, etc...)
– Parâmetros da linha de comando (DOSKEY/cmd.exe)
58. Forense: Casos de Hacking
– Lembrar sempre – não se deve confiar no sistema
operacional
– Ataques de injeção de memória não tocam no disco
– Ferramentas hacker usam estas técnicas há anos:
• Metasploit Framework/Meterpreter (www.metasploit.com)
• Canvas (www.immunitysec.com)
• Core Impact (www.coresecurity.com)
– Para certos ataques, não há um mecanismo de
detecção via software sem a aquisição e preservação
da memória física e posterior análise offline
59. “Trojan Defense”
– “Eu não fiz nada, foi o cavalo de tróia/backdoor”
• “havia um hacker controlando meu PC”
– Defesa usada pela 1a vez no Reino Unido, em 2003
• Plausible deniability porque LE não gerou uma imagem da
memória física
– Força da Lei destruiu 4GB de provas
• 4GB = mais de um milhão de páginas de papel
• Objetivo: Análise para provar que não havia nenhum
trojan ou outro software malicioso rodando na máquina
análisada para contradizer esta possível alegação da
defesa.
60. Informações em Memória
• Processos • Usuários logados
• Drivers • Buffers do driver de rede
• Módulos de Kernel • Arquivos abertos
• Informações de Sockets • Documentos ainda não salvos
• Senhas • Registro Vivo
• Chaves de Criptografia • Buffers de Vídeo (screen shots)
• Arquivos descriptografados • Memória da BIOS
• Ordem de execução • Chamadas VOIP
• Estado de execução • Código Malicioso
• Informações de Configuração • Conversas de IM
• Rootkits
61. Histórico da Aquisição de processos
• Pmdump – Arne Vidstrom
• Process Dumper – Tobias Klein
• Userdump – Microsoft
• Adplus.vbs – Microsoft Debugging Tools
– pode ser útil para gerar um dump de um processo
específico de interesse (MSN, GTALK, IE, FF, ...)
62. Aquisição de Memória via HW
– Supensão da CPU e Uso de Direct Memory Access (DMA)
para copiar a memória física
• Tribble (2004). Por Brian Carrier e Joe Grand
• precisa ser instalado antes da aquisição dos dados
• outros devices similares servem para debuggind de hardware
– Firewire / IEEE 1394
• Especificação permite acesso direto à memória (DMA)
• Mapeamento de memória é feito por hardware
• exemplo: http://blogs.gnome.org/muelli/2010/04/04/reading-ram-using-firewire/
63. Aquisição de Memória
• Crash Dumps
• Vantagens:
– estado do sistema é congelado
– garante que nenhuma alteração seja feita
– Microsoft disponibiliza o “Microsoft Debugging Tools” e o
“Kernel Memory Space Analyzer”
• Limitações:
– sistemas com mais de 2GB de memória não geram dumps
completos
– Por padrão, o Windows não gera crash dumps através de
comandos
– Algumas versões do Windows não geram dumps completos
Ferramenta: NotmyFault - Sysinternals (Mark Russinovich)
64. Aquisição de Memória
• Memparser – Chris Betz
– DFRWS 2005
• Apenas Windows 2000
• http://sourceforge.net/projects/memparser/
• dd para windows – dd.exe
• <…>dd.exe if=.PhysicalMemory of=<…>memorydump.img
• http://gmgsystemsinc.com/fau/
65. Aquisição de Memória
– Nigilant32 – Agile Risk Management (GUI)
– ProDiscover IR (GUI)
– Problemas dd.exe/Nigilant32/Prodiscover IR
• Acesso userland à memória física (=.PhysicalMemory) foi bloqueado a
partir da userland a partir do Windows 2003 SP 1 / Windows XP SP2
66. Aquisição de Memória
– KnTDD (George Garner) – grátis para LE
• Roda em 32 e 64 bits
• Capaz de gerar Microsoft Crash Dumps
• Coleta local (usb/firewire) e remota (tcp/ip)
• Registro de auditoria e checagem de integridade
– MDD (Mantech)
• Sistemas mais novos (até Vista)
• Incapaz de coletar mais de 4Gb de memória
67. Aquisição de Memória
• Virtualização
– VMWare
• Suspensão de VM gera aquivo .vmem (similar ao raw)
• SnapShots
– VirtualPC
– Xen
– Qemu
68. Aquisição de Memória: Hibernação
• O arquivo de hibernação
(%SYSTEMDRIVE%hiberfil.sys) é o somatório da
memória física e da memória de swap - ou
paginação - comprimidos.
• Matthieu Suiche decodificou o formato do arquivo
de hibernação windows (BH 2008 – SandMan
project)
– Moonsols Community Edition – hibr2bin.exe para XP, 2003,
2008 e Vista 32bits (comercial: 32 e 64 bit até Windows 7)
69. Forçando a Hibernação
• 1) configuração
Windows XP,2000,2003
» powercfg.exe /HIBERNATE on (binário de sistema)
Windows Vista, 7, 2008 (pode não ser necessário – default)
» powercfg.exe –h on (binário de sistema)
• 2) rundll32.exe powrprof.dll,SetSuspendState Hibernate
» ou através da interface gráfica
» ou c:> psshutdown.exe –h (binário da Sysinternals)
• <%SYSTEMDRIVE%>/hiberfil.sys é gerado (sobrescreve hiberfil.sys anterior)
70. Aquisição de Memória
• Princeton – Cold Boot (verdadeira hibernação)
– Lest We Remember: Cold Boot Attacks on
Encryption Keys (2006)
– http://citp.princeton.edu/pub/coldboot.pdf
• DRAM submersa em nitrogênio líquido (-196
graus Celsius) – perda de apenas 0.17% dos
dados depois de 60 min fora do computador
71. Aquisição de Memória
• Memoryze (Jamie Butler e Peter Silberman)
– A ferramenta Memoryze prove um script batch para
aquisição de memória física.
– cd %SystemVolume%%ProgramFiles%MandiantMemoryze”
• Executar “MemoryDD.bat –output <directory_name>”
– Vantagem: coleta ao mesmo tempo o arquivo de
paginação e a memória física da máquina
– Para instalar em um pendrive:
• msiexec /a MemoryzeSetup.msi /qb TARGETDIR=<pendrive>:Memoryze
72. Aquisição de Memória
– winen / winen64
– Guidance Software (http://www.guidancesoftware.com)
– Expert Witness Format (EWF/E01)
73. FTK Imager
• AccessData – http://www.accessdata.com
– GUI (possui command line mas sem memory dump)
– Formato raw / Converte de E01 para raw
74. Aquisição de Memória
• FastDump / FastDump Pro (Greg Hoghlund)
– HBGary (http://www.hbgary.com)
• Inclui o arquivo de paginação no dump (pagefile.sys)
75. Aquisição de Memória
• MoonSols / win32dd, win64dd (Matthieu
Suiche)
– Grátis (community edition)
– Todas as versões de windows 32-64bit
– Código aberto
– Cria windbg crash dumps
– Aquisição remota via tcp/ip
– Gera Hashes Criptográficos (MD5/SHA-1/SHA-256)
76. Moonsools community edition:
http://moonsols.com | http://msuiche.net
README:
- win32dd works for Microsoft Windows XP, 2003, 2008, Vista, 2008 R2, 7 32-bits Edition.
- win64dd works for Microsoft Windows XP, 2003, 2008, Vista, 2008 R2, 7 64-bits (x64)
hibr2dmp and hibr2bin only works with Microsoft Windows XP, 2003, 2008, Vista 32-bits
Edition Microsoft Windows hibernation files, including corrupted hibernation files.
- dmp2bin only works with Microsoft Windows XP, 2003, 2008, Vista, 2008 R2, 7 32-bits
Edition of Microsoft full memory crash dump files.
- bin2dmp works with Microsoft Windows XP, 2003, 2008, Vista 32-bits Edition raw
memory snapshots (windd, VMWare -- Can also work with Live VMWare Virtual Machine
but only in the Professional Edition).).
77.
78.
79. Análise de Memória
– “old-school” – strings e grep/findstr em um dump
de memória para procurar por strings ASCII e
UNICODE, carving manual
• Pode ser útil incluir como alvo para indexação e/ou
pesquisa (nomes de documentos, programas, senhas.. )
• Funcionalidade restrita pela incapacidade de
diferenciar os endereçamentos e páginas de memória
utilizadas por cada processo
• Produz grande quantidade de dados sem
contextualização
80. Análise de Memória
• Pattern Matching baseado em expressoes
regulares (regex) sobre strings de dumps de
processos ou memória física:
root@SIFT-Workstation:/usr/local/src/ram-analysis# find . -iname '*.py' -ls
1728861 12 -rwxr-xr-x 1 root root 8497 Mar 16 00:05 ./pdgmail.py
1728862 16 -rwxr-xr-x 1 root root 12645 Mar 16 00:05 ./pdymail.py
82129 16 -rwxr-xr-x 1 root root 16288 Mar 16 00:14 ./pdfbook.py
82133 4 -rwxr-xr-x 1 root root 3014 Mar 8 11:38 ./skypeex/skypeex26.py
93. Lab 01: Conclusão
• Análise offline de memória gera idênticas ou melhores
informações e é menos invasiva que “live response”
• Análise de Processos e Conexões estabelecidas através da
análise de dump de memória possibilita recuperação de
mais dados
• Isto vale inclusive quando foram utilizadas algumas
técnicas de rootkit usermode e kernelmode
94. Lab 02: Hash Dump
Objetivo: Transformar o arquivo de hibernação em um dump de memória e recuperar senha de usuários
Obtenção do arquivo de hibernação:
Maquina Desligada: Forense de Disco Tradicional: Boot usb / cd linux (helix/caine/etc..)
ou extrair hiberfil.sys de E01 (ftkimager/encase/etc..)
Máquina Ligada: FGET.exe HBGARY
Conversão de arquivo de hibernação para dump de memória:
Volatility:
python volatility hibinfo –f <path-to-hiberfil.sys> -d <hiberfil.memory.img>
Moonsols:
hibr2bin.exe <path-to-hiberfil.sys> -d <hiberfil.memory.img>
95. Lab 02
– Volatility & RegRipper
– Passos:
• encontrar a localização dos hives de registro na memória
• encontrar e fazer um dump dos hives SAM e SYSTEM
• quebrar a senha dos usuários
96. Lab 02
– Achando os hives do registro na memória (Hivescan)
root@SIFT-Workstation:/media/usb# /usr/bin/python /usr/local/bin/volatility hivescan -f
fdpro_dump/20100817_fdpro_acmexp_dump.bin
Offset (hex)
34267144 0x20ae008
34289480 0x20b3748
38249752 0x247a518
76358936 0x48d2518
97. Lab 02
Identificando quais hives estão presentes nestes
endereços de memória:
root@SIFT-Workstation:/media/usb# /usr/bin/python /usr/local/bin/volatility hivelist -f
fdpro_dump/20100817_fdpro_acmexp_dump.bin -o 0x20ae008
Address Name
0xe107b7b0 Documents and SettingsAdministratorLocal SettingsApplication DataMicrosoftWindowsUsrClass.dat
0xe1069b60 Documents and SettingsAdministratorNTUSER.DAT
0xe198c720 Documents and SettingsLocalServiceLocal SettingsApplication DataMicrosoftWindowsUsrClass.dat
0xe14ab008 WINDOWSsystem32configsoftware
0xe18086b8 WINDOWSsystem32configdefault
0xe17c9888 WINDOWSsystem32configSAM
0xe1808b60 WINDOWSsystem32configSECURITY
0xe139c518 [no name]
0xe1019748 WINDOWSsystem32configsystem
0xe1013008 [no name]
98. Lab 02
• Dump dos hashes dos hives SYSTEM e SAM
root@SIFT-Workstation:/media/usb# /usr/bin/python /usr/local/bin/volatility hashdump -f
fdpro_dump/20100817_fdpro_acmexp_dump.bin -y 0xe1019748 -s 0xe17c9888
Administrator:500:e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
HelpAssistant:1000:b4d242a1cdc59680a8d465842d29c2a2:84ee8679c50437e502ae9b1c8e5f4285:::
SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:edf2c0cd26a166c903a857f3785b043c:::
102. Lab 03: Live Registry
root@SIFT-Workstation:/usr/local/src/volatility# perl rip.pl -r
/media/usb/fdpro_dump/20100817_fdpro_acmexp_dump.bin@0xe17c9888 -f sam
Parsed Plugins file.
Launching samparse v.20080415
User Information
-------------------------
Username : Administrator [500]
Full Name :
User Comment : Built-in account for administering the computer/domain
Last Login Date : Fri Aug 13 21:47:26 2010 Z
Pwd Reset Date : Wed Jun 27 22:54:58 2007 Z
Pwd Fail Date : Fri Aug 13 00:59:01 2010 Z
Login Count : 55
--> Password does not expire
(...)