Your SlideShare is downloading. ×
Forense memoria windows_sandro_suffert_2009_2010
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Forense memoria windows_sandro_suffert_2009_2010

4,100
views

Published on

Material sobre Forense de Memória em Ambientes WIndows

Material sobre Forense de Memória em Ambientes WIndows

Published in: Technology

4 Comments
4 Likes
Statistics
Notes
No Downloads
Views
Total Views
4,100
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
0
Comments
4
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Forense em Windows Aquisição e Análise de Memória Sandro Süffert - http://suffert.com CTO, Techbiz Forense Digital Versão: 4Criação: 03/02/2009 – Última atualização: 04/06/2010
  • 2. Tema A: Material de ReferênciaLivros:I - Windows Forensic Analysis v2, Harlan Carvey Capítulos 3 – Windows Memory Analysis e Capítulo 4 – Registry AnalysisII - Malware Forensics – Investigating and Analyzing Malicious Code, James Aquilina, - Eoghan Casey, Cameron MalinCapítulos 3 – Memory Forensics: Analyzing Physical and Process Memory Dumps e 9 – Analysis of a Suspect ProgramIII – Computer Evidence Collection & Preservation, Christopher L.T. BrownCapítulos 6 – Volatile Data e 11 – Collecting Volatile DataIV - EnCE – The Official Encase Certified Examiner Study Guide, 2 nd Edition, Steve BuntingCapítulos 3 – First Response e 9 – Windows Operating System ArtifactsV - Undocumented Windows, capítulo 4, Sven B. SchreiberVI - Windows Internals (4a edição) capítulo 7, Mark Russinovich e David Salomon.
  • 3. Tema A: Material de ReferênciaPapers:Computer Forensics: Results of Live Response Inquiry vs. Memory Image AnalysisCERT: http://www.cert.org/archive/pdf/08tn017.pdf (Cal Waits, Joseph Ayo Akinyele, Richard Nolan, LarryRogers)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.pdfEletronic Crime Investigation - NIJ: http://www.ncjrs.gov/pdffiles1/nij/187736.pdfElectronic Evidence – Guide for First Responders – http://www.forwardedge2.usss.gov/pdf/bestPractices.pdf
  • 4. Tema A: Material de ReferênciaPapers DFRWS - Digital Forensic Research Conference:Windows Operating System Agnostic Memory Analysis. James Okolica and GilbertPeterson. http://dfrws.org/2010/proceedings/2010-306.pdfExtracting Windows Command Line Details from Physical Memory. Richard Stevens and EoghanCasey. http://dfrws.org/2010/proceedings/2010-307.pdfA Novel Time-Memory Trade-Off Method for Password Recovery. Vrizlynn L. L. Thing and Hwei-MingYing. http://dfrws.org/2009/proceedings/p114-thing.pdfExtraction of Forensically Sensitive Information from Windows Physical Memory. Seyed Mahmood Hejazi,Chamseddine Talhi and Mourad Debbabi. http://dfrws.org/2009/proceedings/p121-hedjazi.pdfThe 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.pdfForensic 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ênciaPapers DFRWS - Digital Forensic Research Conference:Recovering Deleted Data From the Windows Registry. Timothy Morgan.http://www.dfrws.org/2008/proceedings/p33-morgan.pdfForensic Memory Analysis: Files mapped in memory. Ruud van Baar.http://www.dfrws.org/2008/proceedings/p52-vanBaar.pdfThe impact of Microsoft Windows pool allocation strategies on memory forensics. Andreas Schuster.http://www.dfrws.org/2008/proceedings/p58-schuster_pres.pdfBodySnatcher: Towards Reliable Volatile Memory Acquisition by Software. Bradley Schatz.http://www.dfrws.org/2007/proceedings/p126-schatz.pdfThe VAD Tree: A Process-Eye View of Physical Memory. Brendan F Dolan-Gavitt.http://www.dfrws.org/2007/proceedings/p62-dolan-gavitt.pdfSearching for processes and threads in Microsoft Windows memory dumps. Andreas Schuster.http://www.dfrws.org/2006/proceedings/2-Schuster.pdf
  • 6. Tema A: Ferramentas1) VMWare Workstation, Server ou Player: http://www.vmware.com1.1) VM SIFT Workstation 2.0: https://computer-forensics2.sans.org/community/siftkit/ - DVD1.2) VM BackTrack 4 R1: http://www.backtrack-linux.org/download.php?fname=bt4r1vm1.3) VM de Laboratório: “ACMEXP01” - DVD2.01 - MoonSols Community Edition -http://www.moonsols.com/component/jdownloads/view.download/3/2 - DVD2.02 - FastDump - https://www.hbgary.com/community/free-tools/#fastdump - DVD2.03 - FTKImager - http://www.accessdata.com/downloads.html#FTKImager - DVD2.04 - Memoryze - http://www.mandiant.com/products/free_software/memoryze/ - DVD2.05 - Volatility - https://www.volatilesystems.com/default/volatility - DVD - SIFT2.06 - Fget - https://www.hbgary.com/community/free-tools/#fget2.07 - Microsoft Windows Debugger - http://www.microsoft.com/whdc/devtools/debugging/default.mspx2.08 - LiveKD - http://technet.microsoft.com/en-us/sysinternals/bb897415.aspx - DVD2.09 - pdgmail/pdymail - http://jeffbryner.com/code/ - DVD – SIFT2.10 - PTK - http://ptk.dflabs.com/- DVD - SIFT2.10 - Ferramentas Sysinternals - http://technet.microsoft.com/en-us/sysinternals/default.aspx2.11 - Ferramentas NirSoft - http://www.nirsoft.net/2.12 - Ferramentas NTSecurity - http://ntsecurity.nu/toolbox/3) Ferramentas Comerciais:3.1 – AccessData FTK 3.13.2 – Encase FIM/Enterprise 6.173.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.”
  • 8. Análise de Memória vs Live Response
  • 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 DecafComputer Online Forensic Evidence Extractorarp.exe ‐a Contaminate MAC Addresses: netdom.exe query DCat.exe Spoof MAC addresses of network adapters netstat.exe ‐aoautorunsc.exe netstat.exe ‐nogetmac.exe Kill Processes: openfiles.exe /query/vhandle.exe ‐a Quick shutdown of running processes psfile.exehostname.exe pslist.exeipconfig.exe /all Shutdown Computer: pslist.exe ‐tmsinfo32.exe /report On the fly machine power down psloggedon.exenbtstat.exe ‐n psservice.exenbtstat.exe ‐A 127.0.0.1 Disable network adapters pstat.exenbtstat.exe ‐S psuptime.exenbtstat.exe ‐c Disable USB ports quser.exenet.exe share route.exe printnet.exe use Disable Floppy drive sc.exe querynet.exe file sc.exe queryexnet.exe user Disable CD-ROM sclist.exenet.exe accounts showgrps.exenet.exe view Disable Serial/Printer Ports srvcheck 127.0.0.1net.exe start tasklist.exe /svcnet.exe Session Erase Data: Quick file/folder removal (Basic Windows delete) whoami.exenet.exe localgroup administrators/domain Clear Event Viewer: Remove logs from the Event Viewernet.exe localgroupnet.exe localgroup administrators Remove Torrent Clients: Removes Azureus and BitTorrent clientsnet.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
  • 17. “Memória”• RAM• ROM• Flash memory (EPROM)• Cache (L1, L2)• Dynamic RAM (DRAM)• Static RAM (SRAM)• PenDrives (ThumbDrives)• Memória Virtual• Memória de Vídeo• BIOS• “Memória Permanente” (HD)
  • 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) volatilidade3. 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áximoque um processo pode ocupar– Espaço em disco endereçáveldisponí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 Modetodos 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 VirtuaisCada 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 Virtual4GB 4GB 4GB 4GB 4GB 4GB 6 x 4GB = 24 GB <= Memória Lógica
  • 32. Diretório de Paginas e Tabelas de Páginas2 GB Memória Virtual do Processo 0 GB 4 GB Memória Física 0x00C00000 – 0x00E00000 0x00CD0000 – 0x00CDF000 0x00CE0000 – 0x00E00000 PTE 0010 - 00150 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 Descriptorsvaddump 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 VadA reconstrução da VAD ************************************************************************tree permite a construção Pid: 440 0x00CD0000 – 0x00CDF000 0x00CE0000 – 0x00E00000do espaço de memória de Address 0010 - 0015 PTE Parent Left Right Start End Tag Flags 8183a210 00000000 8186b670 819806e0 48580000 4858efff Vadum processo juntamente 8186b670 8183a210 00000000 81856080 00000000 000fffff VadScom todos os arquivos 81856080 8186b670 00000000 8184a050 00100000 00100fff VadS 8184a050 81856080 00000000 81849790 00110000 00110fff VadSmapeados 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 virtualAs 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 virtuaisDiretório de pagina (10 bits) indica a entrada na tabela de paginação (10 bits), que apontaum 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 VirtualBlocos de Memória Tamanho do bloco Páginas Únicas para este bloco Páginas não referenciadas
  • 37. Layout da Memória Virtual4 GB • Os primeiros 2GB* de Memória de Kernel espaço de memória virtual é reservado para o Kernel do Windows Kernel. E não2 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="????" /3GB0 GB
  • 38. Memória Virtual - userland2 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 Alocada0 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óriaPossibilitam a separação entre processos. Exemplo: quando um processo executa emmemória ele possui um forward link (FLINK) e um backward link (BLINK) para processosque 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 MeloP 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
  • 48. Criação de Processos• CreateProcess • ShellExec• Rundll32.exe • ShellExecute• cmd.exe • ShellExecuteA• cmd /c • WinExec• command.com /c • Shell32.DLL • exec • execve • system
  • 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 KiInsertDeferredReadyListKiReadyThread Deferred Ready Ready processswapped 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.netREADME:- 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. 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
  • 78. 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
  • 79. Análise de memória – pdgmail.py
  • 80. Análise de Estruturas de Memória• Recente (desde 2003) – Primeiras ferramentas: DFRWS 2005, Kornblum, Carvey, .. (pag. 95 WFA2)• Ambiente Acadêmico – 2008 – Frozen Memory – Princeton -• Open source and academic projects • Perl scripts • Hex editors • Volatility framework – http://www.volatilesystems.com • Memoryze – http://www.mandiant.com
  • 81. Ferramenta: Volatility
  • 82. Ferramenta Volatility
  • 83. SANS SIFT 2.0 > PTK > Memory
  • 84. Volatility: volshell.py• http://kurtz.cs.wesleyan.edu/~bdolangavitt/memory/omfw-notes.txt
  • 85. LAB 01 – Live vs Offline Memory Analysis: Vmware – VM “XPDUMMY” usuário “Administrator”, senha “password” Live Response: fport /foundstone:
  • 86. Lab 01Live Response: pstools / sysinternals-microsoft:
  • 87. Lab 01Volatility – SIFT Workstation 2.0:
  • 88. Lab 01python volatility connscan –f <imagem-de-memoria>
  • 89. Lab 01python volatility sockscan –f <imagem-de-memoria>
  • 90. Lab 01python volatility procdump –f <imagem-de-memoria> -p <pid>
  • 91. 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
  • 92. Lab 02: Hash DumpObjetivo: Transformar o arquivo de hibernação em um dump de memória e recuperar senha de usuáriosObtençã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 HBGARYConversã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>
  • 93. 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
  • 94. 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.binOffset (hex)34267144 0x20ae00834289480 0x20b374838249752 0x247a51876358936 0x48d2518
  • 95. Lab 02Identificando 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 0x20ae008Address Name0xe107b7b0 Documents and SettingsAdministratorLocal SettingsApplication DataMicrosoftWindowsUsrClass.dat0xe1069b60 Documents and SettingsAdministratorNTUSER.DAT0xe198c720 Documents and SettingsLocalServiceLocal SettingsApplication DataMicrosoftWindowsUsrClass.dat0xe14ab008 WINDOWSsystem32configsoftware0xe18086b8 WINDOWSsystem32configdefault0xe17c9888 WINDOWSsystem32configSAM0xe1808b60 WINDOWSsystem32configSECURITY0xe139c518 [no name]0xe1019748 WINDOWSsystem32configsystem0xe1013008 [no name]
  • 96. Lab 02• Dump dos hashes dos hives SYSTEM e SAMroot@SIFT-Workstation:/media/usb# /usr/bin/python /usr/local/bin/volatility hashdump -f fdpro_dump/20100817_fdpro_acmexp_dump.bin -y 0xe1019748 -s 0xe17c9888Administrator:500:e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c:::Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::HelpAssistant:1000:b4d242a1cdc59680a8d465842d29c2a2:84ee8679c50437e502ae9b1c8e5f4285:::SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:edf2c0cd26a166c903a857f3785b043c:::
  • 97. Lab: recapitulando...# /usr/bin/python /usr/local/bin/volatility hivescan -f fdpro_dump/20100817_fdpro_acmexp_dump.bin Offset (hex) 34267144 0x20ae008 76358936 (…)# /usr/bin/python /usr/local/bin/volatility hivelist -f fdpro_dump/20100817_fdpro_acmexp_dump.bin -o 0x20ae008 Address Name (...) 0xe17c9888 WINDOWSsystem32configSAM 0xe1808b60 WINDOWSsystem32configSECURITY 0xe1019748 WINDOWSsystem32configsystem (...)# /usr/bin/python /usr/local/bin/volatility hashdump -f fdpro_dump/20100817_fdpro_acmexp_dump.bin -y 0xe1019748 -s 0xe17c9888Administrator:500:e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c:::(…)SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:edf2c0cd26a166c903a857f3785b043c:::
  • 98. Lab 02• “Quebra” de hashes via RainbowTables – OphCrack / rcrack / PRTK-DNA / EDPR• Online: – http://www.lmcrack.com – http://www.objectif-securite.ch/en/products.php?hash=<hash>#Demo Os plugins para volatility utilizados neste laboratório foram desenvolvidos por Brendan Dolan-Gavitt: http://moyix.blogspot.com
  • 99. Lab 02: ConclusãoAdministrator: SUPPORT_388945a0:
  • 100. Lab 03: Live Registryroot@SIFT-Workstation:/usr/local/src/volatility# perl rip.pl -r /media/usb/fdpro_dump/20100817_fdpro_acmexp_dump.bin@0xe17c9888 -f samParsed Plugins file.Launching samparse v.20080415User Information-------------------------Username : Administrator [500]Full Name :User Comment : Built-in account for administering the computer/domainLast Login Date : Fri Aug 13 21:47:26 2010 ZPwd Reset Date : Wed Jun 27 22:54:58 2007 ZPwd Fail Date : Fri Aug 13 00:59:01 2010 ZLogin Count : 55 --> Password does not expire(...)
  • 101. Lab 04: FerramentaMemoryze/AuditViewer
  • 102. Lab 04: Memoryze
  • 103. Lab 05: FerramentaEncase/Encase FIM (Mem)
  • 104. Lab 05: Encase
  • 105. Lab 06: FerramentaFTK 3.x Remote (Mem)
  • 106. Lab 07: FerramentaHBGary Responder Pro
  • 107. Sandro Süffert - http://blog.suffert.com CTO, Techbiz Forense Digital