SlideShare a Scribd company logo
1 of 109
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
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.
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
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
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
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
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.”
Análise de Memória vs Live Response
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
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
Live Response - Limitações




                 http://decafme.org/decaf-software.html
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
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
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?
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
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
“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)
Memória



                      • RAM: leitura em
                      0.00000001 seg (elétrico)

                      • HD: leitura em 0.01 seg
                      (mecânico)




diagrama: wikipedia
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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.
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
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
Criação de Processos
•   CreateProcess    •   ShellExec
•   Rundll32.exe     •   ShellExecute
•   cmd.exe          •   ShellExecuteA
•   cmd /c           •   WinExec
•   command.com /c   •   Shell32.DLL
                     •   exec
                     •   execve
                     •   system
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
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
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
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)
Serviços
– Programas (user mode) que provêm
  funcionalidades independente do usuário logado

– Exemplos:
  • Gerenciador de Tarefas
  • Spooler de Impressão
  • Windows Update
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)
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
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
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)
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
“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.
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
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, ...)
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/
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)
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/
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
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
Aquisição de Memória
• Virtualização
  – VMWare
     • Suspensão de VM gera aquivo .vmem (similar ao raw)
     • SnapShots
  – VirtualPC
  – Xen
  – Qemu
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)
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)
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
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
Aquisição de Memória
– winen / winen64
     – Guidance Software (http://www.guidancesoftware.com)




– Expert Witness Format (EWF/E01)
FTK Imager
• AccessData – http://www.accessdata.com
  – GUI (possui command line mas sem memory dump)
  – Formato raw / Converte de E01 para raw
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)
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)
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).).
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
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
Análise de memória – pdgmail.py
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
Ferramenta: Volatility
Ferramenta Volatility
SANS SIFT 2.0 > PTK > Memory
Volatility: volshell.py
• http://kurtz.cs.wesleyan.edu/~bdolangavitt/memory/omfw-notes.txt
LAB 01 – Live vs Offline
 Memory Analysis: Vmware – VM “XPDUMMY”
 usuário “Administrator”, senha “password”
 Live Response: fport /foundstone:
Lab 01
Live Response: pstools / sysinternals-microsoft:
Lab 01
Volatility – SIFT Workstation 2.0:
Lab 01
python volatility connscan –f <imagem-de-memoria>
Lab 01
python volatility sockscan –f <imagem-de-memoria>
Lab 01
python volatility procdump –f <imagem-de-memoria> -p <pid>
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
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>
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
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
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]
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:::
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 0xe17c9888

Administrator:500:e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c:::
(…)
SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:edf2c0cd26a166c903a857f3785b043c:::
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
Lab 02: Conclusão
Administrator:




 SUPPORT_388945a0:
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

(...)
Lab 04: Ferramenta
Memoryze/AuditViewer
Lab 04: Memoryze
Lab 05: Ferramenta
Encase/Encase FIM (Mem)
Lab 05: Encase
Lab 06: Ferramenta
FTK 3.x Remote (Mem)
Lab 07: Ferramenta
HBGary Responder Pro
Sandro Süffert - http://blog.suffert.com
    CTO, Techbiz Forense Digital

More Related Content

What's hot

オーディオ用レベルメータを作ってみよう
オーディオ用レベルメータを作ってみようオーディオ用レベルメータを作ってみよう
オーディオ用レベルメータを作ってみようKohsuke Yuasa
 
Linux Ethernet device driver
Linux Ethernet device driverLinux Ethernet device driver
Linux Ethernet device driver艾鍗科技
 
U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0GlobalLogic Ukraine
 
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3Linaro
 
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !Pierre-jean Texier
 
Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)Thomas Petazzoni
 
A deep dive into Android OpenSource Project(AOSP)
A deep dive into Android OpenSource Project(AOSP)A deep dive into Android OpenSource Project(AOSP)
A deep dive into Android OpenSource Project(AOSP)Siji Sunny
 
OpenWrt From Top to Bottom
OpenWrt From Top to BottomOpenWrt From Top to Bottom
OpenWrt From Top to BottomKernel TLV
 
HKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewHKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewLinaro
 
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会Shinji Kobayashi
 
HKG15-107: ACPI Power Management on ARM64 Servers (v2)
HKG15-107: ACPI Power Management on ARM64 Servers (v2)HKG15-107: ACPI Power Management on ARM64 Servers (v2)
HKG15-107: ACPI Power Management on ARM64 Servers (v2)Linaro
 
Linux field-update-2015
Linux field-update-2015Linux field-update-2015
Linux field-update-2015Chris Simmonds
 
Browsing Linux Kernel Source
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel SourceMotaz Saad
 
Bootloaders (U-Boot)
Bootloaders (U-Boot) Bootloaders (U-Boot)
Bootloaders (U-Boot) Omkar Rane
 
Raspberry pi 基本操作
Raspberry pi 基本操作Raspberry pi 基本操作
Raspberry pi 基本操作艾鍗科技
 

What's hot (20)

オーディオ用レベルメータを作ってみよう
オーディオ用レベルメータを作ってみようオーディオ用レベルメータを作ってみよう
オーディオ用レベルメータを作ってみよう
 
Linux Ethernet device driver
Linux Ethernet device driverLinux Ethernet device driver
Linux Ethernet device driver
 
U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0
 
ConstituiçãO Do Computador
ConstituiçãO Do ComputadorConstituiçãO Do Computador
ConstituiçãO Do Computador
 
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
 
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
 
U boot-boot-flow
U boot-boot-flowU boot-boot-flow
U boot-boot-flow
 
Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)
 
A deep dive into Android OpenSource Project(AOSP)
A deep dive into Android OpenSource Project(AOSP)A deep dive into Android OpenSource Project(AOSP)
A deep dive into Android OpenSource Project(AOSP)
 
OpenWrt From Top to Bottom
OpenWrt From Top to BottomOpenWrt From Top to Bottom
OpenWrt From Top to Bottom
 
HKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewHKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting Review
 
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会
 
HKG15-107: ACPI Power Management on ARM64 Servers (v2)
HKG15-107: ACPI Power Management on ARM64 Servers (v2)HKG15-107: ACPI Power Management on ARM64 Servers (v2)
HKG15-107: ACPI Power Management on ARM64 Servers (v2)
 
Linux field-update-2015
Linux field-update-2015Linux field-update-2015
Linux field-update-2015
 
Browsing Linux Kernel Source
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel Source
 
Pcie drivers basics
Pcie drivers basicsPcie drivers basics
Pcie drivers basics
 
Bootloaders (U-Boot)
Bootloaders (U-Boot) Bootloaders (U-Boot)
Bootloaders (U-Boot)
 
Aula 10 semana
Aula 10 semanaAula 10 semana
Aula 10 semana
 
I2c drivers
I2c driversI2c drivers
I2c drivers
 
Raspberry pi 基本操作
Raspberry pi 基本操作Raspberry pi 基本操作
Raspberry pi 基本操作
 

Viewers also liked

Iccyber 2012 sandro suffert - apura - evolucao das tecnicas de investigacao...
Iccyber 2012   sandro suffert - apura - evolucao das tecnicas de investigacao...Iccyber 2012   sandro suffert - apura - evolucao das tecnicas de investigacao...
Iccyber 2012 sandro suffert - apura - evolucao das tecnicas de investigacao...Sandro Suffert
 
Forense windows registro_sandro_suffert
Forense windows registro_sandro_suffertForense windows registro_sandro_suffert
Forense windows registro_sandro_suffertSandro Suffert
 
Iccyber 2010 - Sandro Süffert Avanços Tecnológicos
Iccyber 2010 - Sandro Süffert   Avanços TecnológicosIccyber 2010 - Sandro Süffert   Avanços Tecnológicos
Iccyber 2010 - Sandro Süffert Avanços TecnológicosSandro Suffert
 
201108 sandro süffert - desafios em forense computacional e resposta a incide...
201108 sandro süffert - desafios em forense computacional e resposta a incide...201108 sandro süffert - desafios em forense computacional e resposta a incide...
201108 sandro süffert - desafios em forense computacional e resposta a incide...Sandro Suffert
 
Iccyber2012 sandro suffert apura - jacomo picolini teamcymru - desafio fore...
Iccyber2012   sandro suffert apura - jacomo picolini teamcymru - desafio fore...Iccyber2012   sandro suffert apura - jacomo picolini teamcymru - desafio fore...
Iccyber2012 sandro suffert apura - jacomo picolini teamcymru - desafio fore...Sandro Suffert
 
2010 2013 sandro suffert memory forensics introdutory work shop - public
2010 2013 sandro suffert memory forensics introdutory work shop - public2010 2013 sandro suffert memory forensics introdutory work shop - public
2010 2013 sandro suffert memory forensics introdutory work shop - publicSandro Suffert
 
Desafios para a Cibersegurança em 2014 e 2016
Desafios para a Cibersegurança em 2014 e 2016Desafios para a Cibersegurança em 2014 e 2016
Desafios para a Cibersegurança em 2014 e 2016Sandro Suffert
 
Sistema operacional
Sistema operacionalSistema operacional
Sistema operacionalMichael Soto
 

Viewers also liked (10)

Iccyber 2012 sandro suffert - apura - evolucao das tecnicas de investigacao...
Iccyber 2012   sandro suffert - apura - evolucao das tecnicas de investigacao...Iccyber 2012   sandro suffert - apura - evolucao das tecnicas de investigacao...
Iccyber 2012 sandro suffert - apura - evolucao das tecnicas de investigacao...
 
Forense windows registro_sandro_suffert
Forense windows registro_sandro_suffertForense windows registro_sandro_suffert
Forense windows registro_sandro_suffert
 
Iccyber 2010 - Sandro Süffert Avanços Tecnológicos
Iccyber 2010 - Sandro Süffert   Avanços TecnológicosIccyber 2010 - Sandro Süffert   Avanços Tecnológicos
Iccyber 2010 - Sandro Süffert Avanços Tecnológicos
 
201108 sandro süffert - desafios em forense computacional e resposta a incide...
201108 sandro süffert - desafios em forense computacional e resposta a incide...201108 sandro süffert - desafios em forense computacional e resposta a incide...
201108 sandro süffert - desafios em forense computacional e resposta a incide...
 
Iccyber2012 sandro suffert apura - jacomo picolini teamcymru - desafio fore...
Iccyber2012   sandro suffert apura - jacomo picolini teamcymru - desafio fore...Iccyber2012   sandro suffert apura - jacomo picolini teamcymru - desafio fore...
Iccyber2012 sandro suffert apura - jacomo picolini teamcymru - desafio fore...
 
2010 2013 sandro suffert memory forensics introdutory work shop - public
2010 2013 sandro suffert memory forensics introdutory work shop - public2010 2013 sandro suffert memory forensics introdutory work shop - public
2010 2013 sandro suffert memory forensics introdutory work shop - public
 
Desafios para a Cibersegurança em 2014 e 2016
Desafios para a Cibersegurança em 2014 e 2016Desafios para a Cibersegurança em 2014 e 2016
Desafios para a Cibersegurança em 2014 e 2016
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Sistema operacional
Sistema operacionalSistema operacional
Sistema operacional
 
3 FunçòEs Inorganicas
3 FunçòEs Inorganicas3 FunçòEs Inorganicas
3 FunçòEs Inorganicas
 

Similar to Análise de Memória em Windows

Lista 221 Comandos Executar do Windows.docx
Lista 221 Comandos Executar do Windows.docxLista 221 Comandos Executar do Windows.docx
Lista 221 Comandos Executar do Windows.docxSLVIOPAIVADOSANTOSSI
 
Mini Curso - Pen Test - Univem
Mini Curso - Pen Test - UnivemMini Curso - Pen Test - Univem
Mini Curso - Pen Test - Univemevandrovv
 
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018Tchelinux
 
SOP M3 Apresentação 10ºAno v004.PDF
SOP M3 Apresentação 10ºAno v004.PDFSOP M3 Apresentação 10ºAno v004.PDF
SOP M3 Apresentação 10ºAno v004.PDFFChico2
 
Ferramentas GPL para segurança de redes - Vanderlei Pollon
Ferramentas GPL para segurança de redes - Vanderlei PollonFerramentas GPL para segurança de redes - Vanderlei Pollon
Ferramentas GPL para segurança de redes - Vanderlei PollonTchelinux
 
Forense Computacional
Forense ComputacionalForense Computacional
Forense Computacionalrenanwb
 
Falhando miseralvelmente com PHP
Falhando miseralvelmente com PHPFalhando miseralvelmente com PHP
Falhando miseralvelmente com PHPAugusto Pascutti
 
Como administrar SQL Server no Linux - Rodrigo Crespi
Como administrar SQL Server no Linux - Rodrigo CrespiComo administrar SQL Server no Linux - Rodrigo Crespi
Como administrar SQL Server no Linux - Rodrigo CrespiTchelinux
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas OperacionaisAdir Kuhn
 
Sistemas operacionais 14
Sistemas operacionais 14Sistemas operacionais 14
Sistemas operacionais 14Nauber Gois
 
Primeiros passos com Openstack
Primeiros passos com OpenstackPrimeiros passos com Openstack
Primeiros passos com OpenstackDalton Valadares
 
Nmap Avaliando Rede Em Ambiente Linux
Nmap  Avaliando Rede Em Ambiente LinuxNmap  Avaliando Rede Em Ambiente Linux
Nmap Avaliando Rede Em Ambiente Linux987123987123
 
1os passoscisco
1os passoscisco1os passoscisco
1os passoscisconogueira
 
Configuração Ethernet Wireless Linux
Configuração Ethernet Wireless LinuxConfiguração Ethernet Wireless Linux
Configuração Ethernet Wireless LinuxSoftD Abreu
 
Análise de Malware em Dump de Memória com Volatility
Análise de Malware em Dump de Memória com VolatilityAnálise de Malware em Dump de Memória com Volatility
Análise de Malware em Dump de Memória com Volatilityederluis1973
 

Similar to Análise de Memória em Windows (20)

Lista 221 Comandos Executar do Windows.docx
Lista 221 Comandos Executar do Windows.docxLista 221 Comandos Executar do Windows.docx
Lista 221 Comandos Executar do Windows.docx
 
Mini Curso - Pen Test - Univem
Mini Curso - Pen Test - UnivemMini Curso - Pen Test - Univem
Mini Curso - Pen Test - Univem
 
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
 
SOP M3 Apresentação 10ºAno v004.PDF
SOP M3 Apresentação 10ºAno v004.PDFSOP M3 Apresentação 10ºAno v004.PDF
SOP M3 Apresentação 10ºAno v004.PDF
 
Ferramentas GPL para segurança de redes - Vanderlei Pollon
Ferramentas GPL para segurança de redes - Vanderlei PollonFerramentas GPL para segurança de redes - Vanderlei Pollon
Ferramentas GPL para segurança de redes - Vanderlei Pollon
 
Melhorando o windows XP.001
Melhorando o windows XP.001Melhorando o windows XP.001
Melhorando o windows XP.001
 
Forense Computacional
Forense ComputacionalForense Computacional
Forense Computacional
 
Cygwin
CygwinCygwin
Cygwin
 
Falhando miseralvelmente com PHP
Falhando miseralvelmente com PHPFalhando miseralvelmente com PHP
Falhando miseralvelmente com PHP
 
Como administrar SQL Server no Linux - Rodrigo Crespi
Como administrar SQL Server no Linux - Rodrigo CrespiComo administrar SQL Server no Linux - Rodrigo Crespi
Como administrar SQL Server no Linux - Rodrigo Crespi
 
Gentoo
GentooGentoo
Gentoo
 
Pentest conisli07
Pentest conisli07Pentest conisli07
Pentest conisli07
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Tutorial: Instalação do Linaro Ubuntu na Gumstix Overo® Fire COM
Tutorial: Instalação do Linaro Ubuntu na Gumstix Overo® Fire COMTutorial: Instalação do Linaro Ubuntu na Gumstix Overo® Fire COM
Tutorial: Instalação do Linaro Ubuntu na Gumstix Overo® Fire COM
 
Sistemas operacionais 14
Sistemas operacionais 14Sistemas operacionais 14
Sistemas operacionais 14
 
Primeiros passos com Openstack
Primeiros passos com OpenstackPrimeiros passos com Openstack
Primeiros passos com Openstack
 
Nmap Avaliando Rede Em Ambiente Linux
Nmap  Avaliando Rede Em Ambiente LinuxNmap  Avaliando Rede Em Ambiente Linux
Nmap Avaliando Rede Em Ambiente Linux
 
1os passoscisco
1os passoscisco1os passoscisco
1os passoscisco
 
Configuração Ethernet Wireless Linux
Configuração Ethernet Wireless LinuxConfiguração Ethernet Wireless Linux
Configuração Ethernet Wireless Linux
 
Análise de Malware em Dump de Memória com Volatility
Análise de Malware em Dump de Memória com VolatilityAnálise de Malware em Dump de Memória com Volatility
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.”
  • 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 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
  • 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) 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
  • 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 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
  • 81. Análise de memória – pdgmail.py
  • 82. 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
  • 85. SANS SIFT 2.0 > PTK > Memory
  • 87. LAB 01 – Live vs Offline Memory Analysis: Vmware – VM “XPDUMMY” usuário “Administrator”, senha “password” Live Response: fport /foundstone:
  • 88. Lab 01 Live Response: pstools / sysinternals-microsoft:
  • 89. Lab 01 Volatility – SIFT Workstation 2.0:
  • 90. Lab 01 python volatility connscan –f <imagem-de-memoria>
  • 91. Lab 01 python volatility sockscan –f <imagem-de-memoria>
  • 92. Lab 01 python volatility procdump –f <imagem-de-memoria> -p <pid>
  • 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:::
  • 99. 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 0xe17c9888 Administrator:500:e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c::: (…) SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:edf2c0cd26a166c903a857f3785b043c:::
  • 100. 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
  • 101. Lab 02: Conclusão Administrator: SUPPORT_388945a0:
  • 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 (...)
  • 107. Lab 06: Ferramenta FTK 3.x Remote (Mem)
  • 108. Lab 07: Ferramenta HBGary Responder Pro
  • 109. Sandro Süffert - http://blog.suffert.com CTO, Techbiz Forense Digital