Memory Anti-Anti Forensics in a
Nutshell
Aborting the Abort Factor
Tony Rodrigues
www.octanelabs.net
#whoami
• Tony Rodrigues, CISSP, CFCP, Security+
• 30 anos em TI
– Desenvolvimento
– Contingência
– Segurança de Informações/Computação Forense
• Perito em DFIR
• Fundador e Pesquisador-Chefe do OctaneLabs
• Blog: http://forcomp.blogspot.com
#whoami
Fora de TI
●
Carioca
●
Faixa Preta em Kickboxing e Muay Thai
Fora de TI
Fora de TI
• Fotógrafo, Mochileiro
• E o mais importante ...
Torcedor do Melhor Time
do Mundo !!!
Agenda
• Computação Forense e a importancia
da Forense de Memória
• Forense de Memória
• Organização de Memória do Windows
• Lembra daqueles erros no seu dump
de memória ?
• Abort Factor
• Atacando a Memória
• Podemos reverter ?
• Abortando o Abort Factor
• Conclusões
Aviso de Isenção de
Responsabilidade
As declarações publicadas aqui são
de minha única e exclusiva
iniciativa e não representam,
necessariamente, opinião,
estratégia e posicionamento do
meu empregador.
Computação Forense e
a importancia da
Forense de Memória
CF – Importancia da
Forense de Memória
• Análise Post Mortem
• Análise Live
• Análise Dump Memória
Volume de dados dificulta a
localização de malwares
Pode ser comprometida por
malwares (hooking) – menos
confiável em alguns casos
Melhor relação esforço-resultado!!
• Processo realizado em apenas 2 etapas
– Coleta da memória (Dump)
– Análise do dump
• Consegue identificar
–Processos e respectivas informações
– Dados não alocados (processos terminados)
– Processos que estejam ocultos
CF – Importancia da
Forense de Memória
Forense de Memória
Coletando a Memoria
User Mode
Kernel Mode
Inicio da Aquisição Inicio da Analise
Ferramenta de
Aquisição
Ferramenta de
Analise
Dump de
Memória
Analise Dump
Driver de
Aquisição
NtWriteFile () dump
NtWriteFile () dump
Host Remoto
Dump Memória
Algoritmo Dump de
Memória
DevicePhysicalMemory
Physical space mapping (MmMapIoSpace())
• Coleta
– MoonSols Windd (Raw e CrashDump)
– WinEn (Raw)
– HBGary Responder (Raw)
– DumpIt (Raw)
– WinPMem (Raw e CrashDump)
– Windows Memory Reader
– Belkasoft Live Ram Capturer
Forense de Memória
• Análise
– Volatility
– Redline ou Memorize
– HBGary Responder
– Rekall
Forense de Memória
• Open Source
• Versão Windows OS – XP, Vista, 7, 8,
8.1, 2003, 2008 e 2012
• Suporta Raw, Crash Dump, snapshot de
máquinas virtuais e Hibernation
• Arquitetura Intel x86
• Trabalha com conceito de plugins
Volatility
Volatility
• Desenvolvido pela Mandiant
– Foco na análise dos processos
• Versão Windows OS - todas
• Suporta apenas Raw
• Duas arquiteturas: x86 e AMD64
• Trabalha três conceitos
– Malware Risk Index
– IoC (Indicators of Compromise)
– MemD5 (whitelist)
Redline
Redline
• Desenvolvido pela HBGary
• Versão Windows OS – Todas
• Suporta apenas Raw
• Duas arquiteturas: x86 e AMD64
• Trabalha com dois conceitos
– Digital DNA
– Code Graphing
HBGary Responder
HBGary Responder
Organização de Memória
do Windows
Atenção
As estruturas da memória
podem variar com a versão
do Sistema Operacional ou
mesmo do Service Pack
Memória do Windows
Um conjunto de bytes
Organização da Memoria
Page
Table
Entries
Memória FísicaPaginas
Virtuais
00000000
7FFFFFFF
80000000
C0000000
C1000000
FFFFFFFF
Tradução de endereços
virtuais
Pagina
Desejada
Existem outros modelos de endereçamento como o PAE e 64 bits
Page Directory
Index
Page Table
Index
Byte Index
KPROCESS
CR3
PFN
PFNPDE
PTE
Endereço
Físico
Index
Index
Index
Endereço Físico
Estruturas Importantes
Process Control Block (PCB)
Process ID
Parent Process ID
Image File Name
Exit Status
Create and Exit Time
Active Process Link
Session Process Link
Quota Block
Memory Management Information
Security,Exception, Debug Ports
(...)
Process Counter
Process Flag
Image Base Address
EPROCESS
Dispatcher Header
Kernel Time
User Time
Cycle Time
Inheritable Thread
Scheduling Flags (...)
Insawap-Outswap List Entry
Thread List Head
Process Spinlock
Processor Afinity
Resident Kernel Stack Count
Process State
Thread Seed
Ideal Node
KTHREAD
PSActiveProcessHead
Estrutura EPROCESS
Estrutura KPROCESS
(...) Directory Table Base
Outras Estruturas
Lembra daqueles erros
no seu dump de
memória ?!?



Abort Factor
Ataque do Abort Factor
• BlackHat 2012
• O ataque é contra a análise
• Baseado na modificação de um byte em alguns
lugares específicos (Abort Factor)
• Implementado em código que executa no nível
do Kernel
• Busca inviabilizar as ferramentas de análise
Ataque do Abort Factor
• Ataque é realizado sobre operações
críticas
– Tradução do endereçamento virtual do kernel
space
– Identificação da arquitetura e Sistema
Operacional
– Obtenção de Objetos do Kernel
• Não pode dar BSOD !
Abort Factors Possíveis
Atacando a Memória
Atacando a Memória
• Rootkit
– Altera o abort factor
• Apenas 1 byte alterado em cada
• Não pode dar BSOD*
– Logo no momento da carga do rootkit
• Durante a análise, teremos:
– Impossibilidade de achar o SO
– Erro nas operações
• No PoC realizado a máquina ficou ligada por 15 dias consecutivos sem dar BSOD
Código disponível
Uso
• Malwares
– Esconder os vestígios na memória
– Evitar ou atrasar a análise do dump
• Auto-defesa maliciosa
– Usuário malicioso pode usar na própria
máquina
– Evitar vestígios de atividades ilícitas
Podemos reverter isso?
Apresentando ....
Phosfosol
OctaneLabs
Indicium in Veritas
Abortando o Abort Factor
• Fato
– Abort Factor inviabiliza todas as 3
ferramentas de análise
• Anti-Abort Factor
– Fazendo funcionar para ao menos uma das
ferramentas
• Volatility é o alvo
– Permite indicar DTB e Profile
Como ?
• Principalmente
– Localizando o DTB do Kernel
– Inferindo o profile correto
• Foco em estruturas de kernel intactas e
correlação
– Não atacadas por opção
– Não atacadas por impossibilidade
– Correlação entre os vestígios
Estruturas preservadas
• PoC somente explora 3 Abort Factors
– Código pronto. Copy&Paste
– Os 3 explorados já cumprem o objetivo
• Outros podem ser mais complicados
– Pelo menos em um primeiro momento
• Estruturas mapeadas
– Eprocess do IDLE
– _DBGKD_DEBUG_DATA_HEADER64
(KDBG)
Ataque impossível
• Assinaturas baseadas em endereços
– Endereços adulterados == BSOD
• Estruturas auto-referenciadas
– Page Directory Table, Page Table
Estruturas Auto-Referenciadas
Estruturas Auto-Referenciadas
Phosfosol
Abort Factor
Phosfosol
Vamos usar
essas
informações
Phosfosol → Volatility
DTB informado
Profile
informado
E se não funcionar ?!?
Phosfosol não funcionou
• Outros Abort Factors foram usados
– Assinatura do KDBG adulterada
– Imagename do System ou do Idle adulterado
• Serão endereçados no upgrade do
Phosfosol
Phosfosol 2.0 Ultra Gold
Vitaminado ++
• Uso de assinaturas fortes
– Trabalho de Brendan Dolan-Gavitt
– Carving baseado em campos críticos
• BSOD se adulterados
• Suportará ataques múltiplos até mesmo
de todos os Abort Factors conjugados
• Novas opções de linha de comando
– Confirmação de ataque/abort factor
– Reversão do ataque
Conclusões
• Abort Factor é um ataque eficiente
✔
Lançado em 2012
✔
Ainda efetivo em 2016
• Código disponível
• Phosfosol pode recuperar as informações
danificadas
Referencias
• Phosfosol
– https://code.google.com/p/phosfosol/
• OctaneLabs
– http://www.octanelabs.net
• Moonsols (Dumpit, Win32dd)
– http://www.moonsols.com/
• Mandiant (Red Line, Memoryze)
– http://www.mandiant.com/
• HBGary (Responder Community Edition)
– http://www.hbgary.com/
• Volatility
– https://code.google.com/archive/p/volatility/
References
• One-byte Modification for Breaking Memory Forensic Analysis
– https://media.blackhat.com/bh-eu-12/Haruyama/bh-eu-12-Haruyama-Memory_Fore
nsic-Slides.pdf
• Robust Signatures for Kernel Data Structures
– http://www.cc.gatech.edu/~brendan/ccs09_siggen.pdf
• Windows Kernel Architecture Internals
– Dave Probert
• Windows Internals
– Mark Russinovich, David Solomon
• Windows operating systems agnostic memory analysis
– http://www.dfrws.org/2010/proceedings/2010-306.pdf
Obrigado !
• Agradecimentos do OctaneLabs
– Ao co-autor Diego Fuschini
– Takahiro Haruyama san
– Mr Brendan Dolan-Gavitt
– Mr Matthieu Suiche
OctaneLabs
OctaneLabs
• O que é OctaneLabs ???
• Time de Pesquisa Open Source em
Computação Forense e Resposta a
Incidentes
OctaneLabs
• Objetivos
• Fomentar a pesquisa em
Computação Forense no Brasil
• Promover Projetos Open Source
com foco em Computação Forense
e Investigação Digital
• Ministrar Treinamentos em CF
• Consultoria, Perícia e Investigação
Digital
OctaneLabs
• Projetos
• MUFFIN
• Byte Investigator
• DataJuicer
• Jardineiro
• CORE
• FSJuicer
• Phosfosol
• Blitz
• Langoliers
We Want YOU ! www.octanelabs.net
@octanelabs
Perguntas !
Obrigado !
inv.forense arroba gmail
ponto com
@octanelabs
(Tony Rodrigues)

Anti-Anti-Forense de Memória: Abortando o "Abort Factor"

  • 1.
    Memory Anti-Anti Forensicsin a Nutshell Aborting the Abort Factor Tony Rodrigues www.octanelabs.net
  • 2.
    #whoami • Tony Rodrigues,CISSP, CFCP, Security+ • 30 anos em TI – Desenvolvimento – Contingência – Segurança de Informações/Computação Forense • Perito em DFIR • Fundador e Pesquisador-Chefe do OctaneLabs • Blog: http://forcomp.blogspot.com
  • 3.
  • 4.
    Fora de TI ● Carioca ● FaixaPreta em Kickboxing e Muay Thai
  • 5.
  • 6.
    Fora de TI •Fotógrafo, Mochileiro • E o mais importante ...
  • 7.
    Torcedor do MelhorTime do Mundo !!!
  • 8.
    Agenda • Computação Forensee a importancia da Forense de Memória • Forense de Memória • Organização de Memória do Windows • Lembra daqueles erros no seu dump de memória ? • Abort Factor • Atacando a Memória • Podemos reverter ? • Abortando o Abort Factor • Conclusões
  • 9.
    Aviso de Isençãode Responsabilidade As declarações publicadas aqui são de minha única e exclusiva iniciativa e não representam, necessariamente, opinião, estratégia e posicionamento do meu empregador.
  • 10.
    Computação Forense e aimportancia da Forense de Memória
  • 11.
    CF – Importanciada Forense de Memória • Análise Post Mortem • Análise Live • Análise Dump Memória Volume de dados dificulta a localização de malwares Pode ser comprometida por malwares (hooking) – menos confiável em alguns casos Melhor relação esforço-resultado!!
  • 12.
    • Processo realizadoem apenas 2 etapas – Coleta da memória (Dump) – Análise do dump • Consegue identificar –Processos e respectivas informações – Dados não alocados (processos terminados) – Processos que estejam ocultos CF – Importancia da Forense de Memória
  • 13.
  • 14.
    Coletando a Memoria UserMode Kernel Mode Inicio da Aquisição Inicio da Analise Ferramenta de Aquisição Ferramenta de Analise Dump de Memória Analise Dump Driver de Aquisição NtWriteFile () dump NtWriteFile () dump Host Remoto Dump Memória Algoritmo Dump de Memória DevicePhysicalMemory Physical space mapping (MmMapIoSpace())
  • 15.
    • Coleta – MoonSolsWindd (Raw e CrashDump) – WinEn (Raw) – HBGary Responder (Raw) – DumpIt (Raw) – WinPMem (Raw e CrashDump) – Windows Memory Reader – Belkasoft Live Ram Capturer Forense de Memória
  • 16.
    • Análise – Volatility –Redline ou Memorize – HBGary Responder – Rekall Forense de Memória
  • 17.
    • Open Source •Versão Windows OS – XP, Vista, 7, 8, 8.1, 2003, 2008 e 2012 • Suporta Raw, Crash Dump, snapshot de máquinas virtuais e Hibernation • Arquitetura Intel x86 • Trabalha com conceito de plugins Volatility
  • 18.
  • 19.
    • Desenvolvido pelaMandiant – Foco na análise dos processos • Versão Windows OS - todas • Suporta apenas Raw • Duas arquiteturas: x86 e AMD64 • Trabalha três conceitos – Malware Risk Index – IoC (Indicators of Compromise) – MemD5 (whitelist) Redline
  • 20.
  • 21.
    • Desenvolvido pelaHBGary • Versão Windows OS – Todas • Suporta apenas Raw • Duas arquiteturas: x86 e AMD64 • Trabalha com dois conceitos – Digital DNA – Code Graphing HBGary Responder
  • 22.
  • 23.
  • 24.
    Atenção As estruturas damemória podem variar com a versão do Sistema Operacional ou mesmo do Service Pack
  • 25.
    Memória do Windows Umconjunto de bytes
  • 26.
    Organização da Memoria Page Table Entries MemóriaFísicaPaginas Virtuais 00000000 7FFFFFFF 80000000 C0000000 C1000000 FFFFFFFF
  • 27.
    Tradução de endereços virtuais Pagina Desejada Existemoutros modelos de endereçamento como o PAE e 64 bits Page Directory Index Page Table Index Byte Index KPROCESS CR3 PFN PFNPDE PTE Endereço Físico Index Index Index Endereço Físico
  • 28.
    Estruturas Importantes Process ControlBlock (PCB) Process ID Parent Process ID Image File Name Exit Status Create and Exit Time Active Process Link Session Process Link Quota Block Memory Management Information Security,Exception, Debug Ports (...) Process Counter Process Flag Image Base Address EPROCESS Dispatcher Header Kernel Time User Time Cycle Time Inheritable Thread Scheduling Flags (...) Insawap-Outswap List Entry Thread List Head Process Spinlock Processor Afinity Resident Kernel Stack Count Process State Thread Seed Ideal Node KTHREAD PSActiveProcessHead Estrutura EPROCESS Estrutura KPROCESS (...) Directory Table Base
  • 29.
  • 30.
    Lembra daqueles erros noseu dump de memória ?!?
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
    Ataque do AbortFactor • BlackHat 2012 • O ataque é contra a análise • Baseado na modificação de um byte em alguns lugares específicos (Abort Factor) • Implementado em código que executa no nível do Kernel • Busca inviabilizar as ferramentas de análise
  • 36.
    Ataque do AbortFactor • Ataque é realizado sobre operações críticas – Tradução do endereçamento virtual do kernel space – Identificação da arquitetura e Sistema Operacional – Obtenção de Objetos do Kernel • Não pode dar BSOD !
  • 37.
  • 38.
  • 39.
    Atacando a Memória •Rootkit – Altera o abort factor • Apenas 1 byte alterado em cada • Não pode dar BSOD* – Logo no momento da carga do rootkit • Durante a análise, teremos: – Impossibilidade de achar o SO – Erro nas operações • No PoC realizado a máquina ficou ligada por 15 dias consecutivos sem dar BSOD
  • 40.
  • 41.
    Uso • Malwares – Esconderos vestígios na memória – Evitar ou atrasar a análise do dump • Auto-defesa maliciosa – Usuário malicioso pode usar na própria máquina – Evitar vestígios de atividades ilícitas
  • 42.
  • 43.
  • 44.
    Abortando o AbortFactor • Fato – Abort Factor inviabiliza todas as 3 ferramentas de análise • Anti-Abort Factor – Fazendo funcionar para ao menos uma das ferramentas • Volatility é o alvo – Permite indicar DTB e Profile
  • 45.
    Como ? • Principalmente –Localizando o DTB do Kernel – Inferindo o profile correto • Foco em estruturas de kernel intactas e correlação – Não atacadas por opção – Não atacadas por impossibilidade – Correlação entre os vestígios
  • 46.
    Estruturas preservadas • PoCsomente explora 3 Abort Factors – Código pronto. Copy&Paste – Os 3 explorados já cumprem o objetivo • Outros podem ser mais complicados – Pelo menos em um primeiro momento • Estruturas mapeadas – Eprocess do IDLE – _DBGKD_DEBUG_DATA_HEADER64 (KDBG)
  • 47.
    Ataque impossível • Assinaturasbaseadas em endereços – Endereços adulterados == BSOD • Estruturas auto-referenciadas – Page Directory Table, Page Table
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
    Phosfosol → Volatility DTBinformado Profile informado
  • 53.
    E se nãofuncionar ?!?
  • 54.
    Phosfosol não funcionou •Outros Abort Factors foram usados – Assinatura do KDBG adulterada – Imagename do System ou do Idle adulterado • Serão endereçados no upgrade do Phosfosol
  • 55.
    Phosfosol 2.0 UltraGold Vitaminado ++ • Uso de assinaturas fortes – Trabalho de Brendan Dolan-Gavitt – Carving baseado em campos críticos • BSOD se adulterados • Suportará ataques múltiplos até mesmo de todos os Abort Factors conjugados • Novas opções de linha de comando – Confirmação de ataque/abort factor – Reversão do ataque
  • 56.
    Conclusões • Abort Factoré um ataque eficiente ✔ Lançado em 2012 ✔ Ainda efetivo em 2016 • Código disponível • Phosfosol pode recuperar as informações danificadas
  • 57.
    Referencias • Phosfosol – https://code.google.com/p/phosfosol/ •OctaneLabs – http://www.octanelabs.net • Moonsols (Dumpit, Win32dd) – http://www.moonsols.com/ • Mandiant (Red Line, Memoryze) – http://www.mandiant.com/ • HBGary (Responder Community Edition) – http://www.hbgary.com/ • Volatility – https://code.google.com/archive/p/volatility/
  • 58.
    References • One-byte Modificationfor Breaking Memory Forensic Analysis – https://media.blackhat.com/bh-eu-12/Haruyama/bh-eu-12-Haruyama-Memory_Fore nsic-Slides.pdf • Robust Signatures for Kernel Data Structures – http://www.cc.gatech.edu/~brendan/ccs09_siggen.pdf • Windows Kernel Architecture Internals – Dave Probert • Windows Internals – Mark Russinovich, David Solomon • Windows operating systems agnostic memory analysis – http://www.dfrws.org/2010/proceedings/2010-306.pdf
  • 59.
    Obrigado ! • Agradecimentosdo OctaneLabs – Ao co-autor Diego Fuschini – Takahiro Haruyama san – Mr Brendan Dolan-Gavitt – Mr Matthieu Suiche
  • 60.
  • 61.
    OctaneLabs • O queé OctaneLabs ??? • Time de Pesquisa Open Source em Computação Forense e Resposta a Incidentes
  • 62.
    OctaneLabs • Objetivos • Fomentara pesquisa em Computação Forense no Brasil • Promover Projetos Open Source com foco em Computação Forense e Investigação Digital • Ministrar Treinamentos em CF • Consultoria, Perícia e Investigação Digital
  • 63.
    OctaneLabs • Projetos • MUFFIN •Byte Investigator • DataJuicer • Jardineiro • CORE • FSJuicer • Phosfosol • Blitz • Langoliers
  • 64.
    We Want YOU! www.octanelabs.net @octanelabs
  • 65.
  • 66.
    Obrigado ! inv.forense arrobagmail ponto com @octanelabs (Tony Rodrigues)