Mostrando postagens com marcador forense de memória. Mostrar todas as postagens
Mostrando postagens com marcador forense de memória. Mostrar todas as postagens

Heartbleed - Entenda Um Pouco

Opa, e aí galera.
Tudo bem?

Encontrei um texto bem bacana para leigos sobre como funciona o heartbleed. Como eu disse, é um texto para leigos que explica o que este bug é e como ele funciona, em termos de código.

Como a wikipedia fala, é um erro básico, uma situação em que mais dados podem ser lidos do que deveria ser permitido.

O link para o texto em português é: https://gizmodo.uol.com.br/como-funciona-o-heartbleed/
O link para o texto original é: https://gizmodo.com/how-heartbleed-works-the-code-behind-the-internets-se-1561341209

Bom, é isso.
Um abração!

Instalando o Volatility no Windows

Opa, e aí galera.

Tudo bem?
A ferramenta volatility é muito conhecida na forense de memória, aliás é uma das ferramentas mais populares de forense de memória no mundo open source.
Segundo o site desta ferramenta: The Volatility Foundation is an independent 501(c) (3) non-profit organization that maintains and promotes open source memory forensics with The Volatility Framework.

A questão é que muitas vezes nós encontramos o framework volatility em distribuições linux voltadas para forense computacional (e.g. CAINE, DEFT, SIFT, KALI, etc). E se eu quiser instalar em ambientes Windows? Como eu faço? É esse o propósito desse post: mostrar como instalar o volatility em ambientes Windows.

1) Instalando o Python
Muito bem, vamos lá. A primeira coisa a se fazer é baixar e instalar o python. O faq do volatility diz que pode ser o python 2.6 ou versões acima; mas não pode ser o python 3.x.
OBS: o wiki de instalação da ferramenta diz que podemos instalar pacotes adicionais (se formos usar certos plugins). Mas se instalarmos o básico, a ferramenta ainda irá funcionar. Nesse post, nós vamos instalar o básico da ferramenta.

Eu vou baixar e instalar a versão 2.7.0 do python.
Depois de instalar o python, eu preciso setar nas variáveis de ambiente do sistema.

Abro o painel de controle, clico na opção "Sistema e Segurança" e escolho a opção "Sistema". Depois disso clico na opção "Configurações avançadas do sistema"

Na janela que aparecer, eu escolho a aba "Avançado" e clico no botão "Variáveis de Ambiente"

Depois, no campo Variáveis do sistema, eu vou procurar pela variável "path" e clicar em "editar". Vai abrir uma nova janela para editar a variável do sistema; eu vou adicionar no fim da linha o sinal de ponto e vírgula (;) e o caminho completo de onde o python foi instalado (no meu caso, o python está no C:\Python27). Depois clico em OK



2) Instalando o Volatility
Eu vou baixar a última versão do volatility, que nesse momento é a 2.5. A versão do volatility é a 2.5 Windows Standalone Executable.zip
Eu vou criar uma pasta dentro do C:\ e vou renomeá-la para vol (C:\vol). E aí vou descompactar todo o conteúdo do arquivo volatility_2.5.win.standalone.zip lá dentro.

Depois, eu vou abrir o CMD do Windows e vou navegar até o diretório C:\vol (que é onde eu tenho o executável do volatility). E aí é só digitar no CMD: volatility.2.5-standalone.exe -h


3) Executando o Volatility
Eu vou mostrar a execução do volatility em um dump de memória de um CTF, o grrcon 2015. A linha de comando do volatility no windows é: volatility.exe -f [dump de memória a ser analisado] --profile=[profile que obtivemos usando o plugin imageinfo] [plugin que queremos usar]. Como exemplo, eu vou usar um dump de memória que tem o nome "Target1-1dd8701f.vmss". Portanto, a linha de comando para usar o volatility no windows fica assim: volatility.exe -f "c:\grrcon 2015\target1\Target1-1dd8701f.vmss" --profile=Win7SP0x86 pslist



Bom, é isso.
O volatility rodou numa boa, sem nenhum problema.
Espero que esse post seja importante
Um abração!

GRRCon - Desafio em Forense Computacional

Opa, e aí galera

Tudo bem?

Existe uma conferência de segurança da informação que acontece em Michigan, USA, chamada GRRCon.
Eles sempre colocam alguns desafios para serem solucionados pelos participantes em cada evento.
Em 2012 teve um desafio muito legal envolvendo análise forense de memória. Então foi dado um dump para cada participante e você tinha que solucionar o caso, respondendo 20 perguntas.

O link para baixar o dump é: https://pay.reddit.com/r/netsec/comments/11dbto/solving_the_grrcon_network_forensics_challenge/

Acontece que algumas pessoas resolveram este caso e disponibilizaram a solução na internet.
Vocês podem  ver este blog: http://volatility-labs.blogspot.com.br/2012/10/solving-grrcon-network-forensics.html
E também este: http://sysforensics.org/2012/11/aptish-attack-via-metasploit-part-iii-memory-analysis.html
Este também: http://pmelson.blogspot.com.br/2012/10/grrcon-2012-forensics-challenge.html

O interessante é que existem alguns vídeos no youtube com as soluções de alguns profissionais, sendo que um destes vídeos é do próprio autor do desafio
vídeo 1: http://www.securitytube.net/video/7073
vídeo 2: http://www.youtube.com/watch?v=fbs9kIPeIXw
vídeo 3 (resolução do autor do desafio): https://www.youtube.com/watch?v=wWwzVp0pBrg

Espero que este possa ser uma boa fonte de estudos para todos vocês.

Um abraço!

Dump de Memória 3 - Memoryze

Opa, bom dia galera!

Hoje eu vou falar sobre o programa para fazer dump de memória, chamado Memoryze, da empresa Mandiant. Sem dúvida, é uma ótima ferramenta forense, extremamente poderosa na análise de conteúdo de memória e deveria fazer parte de todo kit forense de qualquer especialista na área.

Então vamos começar. Antes de fazer o download do programa, é preciso ter em mente que o memoryze trabalha com 2 componentes: o próprio Memoryze e o Audit Viewer. O primeiro é responsável por fazer a extração e análise do conteúdo da memória; já o segundo é responsável por pegar o resultado XML gerado pelo memoryze e apresentar este conteúdo em um formato mais amigável. Isso significa que é preciso fazer o download do audit viewer tambem. Como pré-requisito é preciso ter instalado o python no ambiente para rodar o AuditViewer.

O memoryze suporta as seguintes plataformas:
  • Windows 2000 Service Pack 4 (32-bit)
  • Windows XP Service Pack 2 e Service Pack 3 (32-bit)
  • Windows Vista Service Pack 1 e Service Pack 2 (32-bit)
  • Windows 2003 Service Pack 2 (32-bit)
  • Windows 2003 Service Pack 2 (64-bit)
  • Windows 7 Service Pack 0 (32-bit)
  • Windows 7 Service Pack 0 (64-bit)
  • Windows 2008 Service Pack 0 (64-bit)
O primeiro passo é entrar no site e fazer o download dos 2 programas. Depois de ter feito o donwload, é só instalar os programas. É muito fácil. É só clicar em next, next e finish.
A Figura 1 mostra o diretório onde o Memoryze foi instalado.

















Antes de realizar o dump é preciso prestar atenção em um ponto: o Memoryze precisa carregar seu driver no kernel-land para acessar e extrair o conteúdo da memória. Mas por questões de segurança, os sistemas operacionais da Microsoft vêm desabilitando este acesso dos drivers na memória RAM. Esta postura da Microsoft, faz com que mesmo que eu tenha acesso de administrador do sistema, ainda preciso realizar algumas ações para poder rodar o Memoryze com poderes de root. A Figura 2 mostra exatamente este erro de rodar o programa sem os devidos privilégios de root.










Para contornar esse problema, precisamos tomar algumas medidas que eu já mostrei em um post passado, sobre o win32dd. Mas vamos refazer estes passos. Primeiramente, vá no botão iniciar que está do lado esquerdo da tela, lá embaixo. Depois clique em acessórios. Agora clique com o botão direito do mouse em cima do ícone prompt de comando. Irá abrir um menu, escolha a opção Executar como administrador. A Figura 3 mostra essa opção.





















O meu computador mostra que eu só tenho um único login na minha máquina. A Figura 4 mostra esse único usário.










Agora nós precisamos alterar os privilégios desse usuário para que ela passe a ser root. O comando é net user [nome da conta] \active:yes. A figura 5 mostra o comando na tela para alterar os privilégios do usuário.









Depois disso, podemos ir até onde está instalado o Memoryze e realizar o dump de memória. A Figura 6 mostra quais são os arquivos dentro da pasta Memoryze.










Notem que existem vários arquivos, cada qual com sua função. Nós temos os scripts (.xml) que são:
  • AcquireDriver.Batch.xml
  • AcquireMemory.Batch.xml
  • AcquireProcessMemory.Batch.xml
  • DriverAuditModuleList.Batch.xml
  • DriverAuditSignature.Batch.xml
  • HookAudit.Batch.xml
  • ProcessAuditMemory.Batch.xml

Além dos scripts, nós temos os arquivos Batch (.bat), que são:
  • MemoryDD.bat - obtém a imagem da memória física
  • ProcessDD.bat - obtém a imagem do espaço de endereço do processo
  • DriverDD.bat - obtém a imagem de um driver específico
  • Process.bat - enumera todas as informações sobre um processo específico, como memória virtual, portas de rede, handle e strings
  • HookDetection.bat - procura por hooks (ganchos) dentro do sistema operacional
  • DriverSearch.bat - acha drivers

Agora nós estamos prontos para fazer o dump de memória. Para realizar o dump de toda a memória RAM, nós usamos o MemoryDD.bat. A Figura 7 mostra a linha de comando.









Por padrão, a saída do comando vai ser gravado no diretório C:\Arquivos de Programas\mandiant\Memoryze\Audits\[nome do computador]\[data e hora]. Se quisermos gravar a saída do comando em outra pasta, basta adcionarmos o parâmetro -output [caminho completo da pasta onde queremos colocar a saída do comando]. A Figura 8 mostra o exemplo na tela








A Figura 7 mostrou o comando na tela do computador para fazer o dump completo da memória. À medida em que o programa vai realizando o dump, aparece na tela alguns warnings. Esses warnings informam ao usuário que algumas páginas da memória (4096 bytes) não puderam ser lidas pela ferramenta. No memoryze, cada warning possui um endereço; portanto, existe um warning para cada página (4096 bytes) que não foi lida.
A Figura9 mostra esses warnings na tela












A Figura10 mostra na tela o comando para extrair algumas informações do dump de memória como: portas abertas, handles e todos os processos com suas seções de memória associadas (este último parâmetro pode ser usado para descobrir as DLL carregadas).
OBS: Handle - referencia para o bloco da memória que um processo se encontra
PID - referencia o número do processo junto à lista de tarefas do Windows










Depois de feito o dump de memória, vamos usar o programa Audit Viewer para analisá-lo. Eu volto a dizer que o auditviewer é depende do python. Descomprima o auditviewer no mesmo diretório do memoryze (se quiser, você pode descomprimí-lo em um outro diretório) . A Figura11 mostra os 2 arquivos no mesmo diretório.








Agora nós vamos acessar o diretório do AuditViewer e dar um duplo clique no arquivo auditviewer.exe. Vai aparecer uma imagem na tela como o da figura12














Vocês podem notar que escolhemos a segunda opção Configure Memoryze. A primeira, nós vamos abordar mais tarde, que é usada quando já temos um resultado de análise do conteúdo da memória e então nós vamos reanalisar o dump da memória. Seguindo em frente, clique no botão next e aí então vai aparecer na tela uma imagem como mostra a Figura 13. Vocês podem notar que existem 3 campos:
  • número 1: vamos informar ao auditviewer aonde o arquivo memoryze.exe está localizado
  • número 2: informamos ao auditviewer aonde iremos salvar os resultados da nossa análise. (memoryze acrescenta ao diretório de sáida: Audits\[NOME DO COMPUTADOR]\[REGISTRO DA HORA E DO DIA%]. Por exemplo: C:\Program Files\MANDIANT\Memoryze\Audits\NOTEBOOK\20101130104030)
  • número 3: o padrão é escolher sem compressão. Mas se o usuário quiser, ele pode escolher compressão AFF ou gzip.












Clicando no botão next, nós vamos para outra tela, Figura14, aonde vamos informar se queremos trabalhar com a imagem de uma memória adquirida previamente (dead memory) ou se vamos fazer a imagem da memória pra depois análisá-la (live memory). Nós vamos ecolher a primeira opção "dead memory".













Terminamos de ajusatr o ambiente. Agora vamos escolher várias opções de tarefas que o memoryze vai executar. Mas eu não vou mostrar essas opções aqui no blog. Eu vou dar a oportunidade de vocês procurarem isso no manual de usuário do Memoryze e do AuditViewer, que por sinal foi um belo trabalho de documentação da Mandiant. Depois de concluir a escolha dessas tarefas, vai aparecer uma tela mostrando uma barra de progressão culminando com uma tela mostrando todos os processos junto com suas DLL's, handles, etc. Esse procedimento vai demorar um pouco (pode ser até uns 30 minutos ou mais) dependendo do número de tarefas que pedimos para serem executadas. A Figura15 mostra o AuditViewer trabalhando com "dead memory". Do lado esquerdo estão os nomes de cada processo com algumas informações. Escolha um processo qualquer, clique 2 vezes no seu nome e aí então do lado direito vão aparecer várias abas, com várias informações a seu respeito.















É isso, galera!
Espero que eu tenha contribuído um pouco no uso dessas ótimas ferramentas que são o Memoryze e o Audit Viewer.
Até a próxima.
Abração!


Referência:

Dump de Memória 1 - Win32dd

Eu , de vez em quando, uso o Windows Vista Basic 32 bits aqui no meu notebook.
Fiquei encucado esses tempos, pq não estava conseguindo fazer o dump de memória nele.
Utilizei vários programas, inclusive o DD para windows. Mas não consegui. O DD não rodava em cima do Vista. E não entendia porque.
Fui pesquisar sobre o DD e acabei descobrindo que após o Windows XP SP2, a Microsoft limitou o acesso a certas áreas de memória. Com isso, somente os device drivers conseguem fazer dump. O uso do DD para fazer dump de memória no WinXP SP2 (e acima dele) deixou de funcionar, e além disso, o device \\.\PhysicalMemory foi desabilitado neste utilitário.

Continuei pesquisando sobre o assunto e achei um outro programa para fazer dump de memória, chamado: win32dd
No site da ferramenta, diz que existem 2 versões.
Encontrei em alguns sites o pessoal falando muito bem dele, dizendo que é até melhor que o próprio DD.
Acabei fazendo o download da versão free e instalei aqui no meu notebook (criei um diretório e descompactei os 2 arquivos lá dentro: win32dd.exe e o win32dd.sys).
O link pra fazer o download direto é: http://moonsols.com/component/jdownloads/view.download/3/2

Na hora de rodar e fazer o memory dump, novamente deu erro.
Eu não entendia a mensagem de erro pq dizia que eu precisava ter privilégios de administrador para ter acesso ao kernel-land (acessado somente pelo root do windows, ao contrário do user-land, acessado por qualquer usuário).
Detalhe: só existe um usuário cadastrado no meu notebook, e ele é administrador. Que por um acaso, é o que eu faço o login aqui na minha máquina. Ou seja, eu acesso como administrador no meu notebook, e o win32dd diz que eu não tinha privilégios de root.
A imagem1 mostra esse erro.









A imagem2 mostra através do comando net user que só existe um usuário cadastrado no meu notebook, e que ele é administrador.









Pesquisando sobre este erro, acabei descobrindo que a conta de administrador no Windows Vista vem desabilitada por default (apesar de ser classificada como administrador, ela não possui privilégios de root).
Resumindo: mesmo eu pertencer ao domínio de administradores, não tinha tais privilégios.
Eu tinha que fazer alguma coisa para conseguir rodar o win32dd. E fui pesquisar novamente sobre o erro que estava dando.
E achei o seguinte tutorial:
  1. vá em iniciar;
  2. depois vá em acessórios, e depois em prompt de comando;
  3. clique com o botão direito em cima de prompt de comando e escolha a opção : executar como administrador (imagem 3);
  4. escreva no prompt de comando aberto: net user [nome da conta que apareceu na imagem 2] /active:yes



















O que ele faz é ativar a conta de administrador do Vista, que vinha desabilitada por default.
Assim, meu problema teria sido resolvido parcialmente. Faltava agora rodar o win32dd e fazer o dump da memória.
Depois eu fiz o seguinte:
  1. usando o prompt, entrei no diretório onde está o win32dd;
  2. depois, digitei: win32dd.exe /d /f
Rodei novamente o win32dd e consegui, finalmente, fazer o dump de memória sem nenhum problema.
A imagem4 mostra o win32dd rodando.