anti-anti-forense de memória: abortando o "abort factor"
TRANSCRIPT
Memory Anti-Anti Forensics in aNutshell
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 Timedo 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 deResponsabilidade
As declarações publicadas aqui sãode minha única e exclusiva
iniciativa e não representam,necessariamente, opinião,
estratégia e posicionamento domeu empregador.
Computação Forense ea importancia da
Forense de Memória
CF – Importancia daForense de Memória
• Análise Post Mortem
• Análise Live
• Análise Dump Memória
Volume de dados dificulta alocalização de malwares
Pode ser comprometida pormalwares (hooking) – menosconfiá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 daForense de Memória
Forense de Memória
Coletando a Memoria
User Mode
Kernel Mode
Inicio da Aquisição Inicio da Analise
Ferramenta deAquisição
Ferramenta deAnalise
Dump deMemória
Analise Dump
Driver deAquisição
NtWriteFile () dumpNtWriteFile () dump
Host Remoto
Dump MemóriaAlgoritmo Dump de
Memória\\Device\\PhysicalMemoryPhysical 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óriado Windows
AtençãoAs estruturas da memória
podem variar com a versãodo Sistema Operacional ou
mesmo do Service Pack
Memória do WindowsUm conjunto de bytes
Organização da Memoria
PageTableEntries
Memória FísicaPaginasVirtuais
00000000
7FFFFFFF
80000000
C0000000
C1000000
FFFFFFFF
Tradução de endereçosvirtuais
PaginaDesejada
Existem outros modelos de endereçamento como o PAE e 64 bits
Page DirectoryIndex
Page TableIndex
Byte Index
KPROCESS
CR3
PFN
PFNPDE
PTE
EndereçoFísico
Index
Index
Index
Endereço Físico
Estruturas ImportantesProcess Control Block (PCB)
Process ID
Parent Process ID
Image File Name
Exit Status
Create and Exit Time
Active Process Link
Session Process Link
Quota BlockMemory Management Information
Security,Exception, Debug Ports
(...)
Process Counter
Process Flag
Image Base Address
EPROCESS
Dispatcher Header
Kernel Time
User Time
Cycle Time
Inheritable ThreadScheduling Flags (...)
Insawap-Outswap List Entry
Thread List Head
Process SpinlockProcessor Afinity
Resident Kernel Stack Count
Process State
Thread Seed
Ideal Node
KTHREAD
PS
Act
iveP
roce
ssH
ead
Estrutura EPROCESS
Estrutura KPROCESS
(...) Directory Table Base
Outras Estruturas
Lembra daqueles errosno 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 ....
PhosfosolOctaneLabs
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 ecorrelaçã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 usaressas
informações
Phosfosol → VolatilityDTB informado
Profileinformado
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 doPhosfosol
Phosfosol 2.0 Ultra GoldVitaminado ++
• Uso de assinaturas fortes– Trabalho de Brendan Dolan-Gavitt– Carving baseado em campos críticos
• BSOD se adulterados
• Suportará ataques múltiplos até mesmode 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 aIncidentes
OctaneLabs
• Objetivos• Fomentar a pesquisa em
Computação Forense no Brasil• Promover Projetos Open Source
com foco em Computação Forensee 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 gmailponto com
@octanelabs
(Tony Rodrigues)