Blog

Simplificando questões complexas: um método exclusivo para extrair evidências de RAID com configuração perdida

Tecnologia

Por  Alexander Leonenko

Hoje, vamos falar sobre RAID onde não sabemos a configuração e como extrair dados evidenciais deles. Vamos começar entendendo o que é um RAID em primeiro lugar.

RAID. O que é isso?

RAID é uma matriz de discos redundantes e independentes. O sistema identifica o RAID como um dispositivo de armazenamento virtual com acesso de bloco. Na essência, o RAID é um disco virtual.

O propósito da montagem do RAID é a criação de um sistema de armazenamento com maior velocidade de acesso, maior capacidade e maior confiabilidade.

Por que as pessoas usam RAID? 

Os usuários domésticos podem optar por RAIDs para criar backups ou armazenar seu arquivo pessoal de fotos e documentos, juntamente com sua biblioteca multimídia doméstica (filmes, músicas etc.). As empresas usam o RAID como armazenamento de dados no servidor. Pode ser um armazenamento de documentos (compartilhado) comum, armazenamento para backups, bancos de dados, dados contábeis e similares.

Em resumo, o RAID é um sistema de armazenamento de alta capacidade para os dados mais valiosos.

Então, como lidar com isso?

Criando uma imagem do RAID

Existem duas maneiras de criar uma imagem de um RAID.

O primeiro é obter uma imagem através do computador que a estiver analisando.

A principal vantagem desse método é que não há necessidade de entender como o RAID é montado. No entanto, esse método tem muitos inconvenientes e o principal é que fazer algo na máquina examinada em execução é um grande tabu forense. Então, quais opções estão disponíveis?

  1. Podemos ligar o servidor e lançar algum software de cópia de um disco flash USB ou de um CD; embora o sistema operacional possa mudar alguma coisa durante o processo de cópia, o que é obviamente ruim.
  2. É possível inicializar o sistema operacional a partir de um CD ou disco flash e iniciar o software para a cópia - não há garantia de que funcione, porque, por exemplo, muitos RAIDs são via software (incluindo o NAS generalizado), portanto, para ver o RAID, você precisa executar o software apropriado. Além disso, se usarmos esse método, não conseguiremos acessar áreas dos discos que não são usados ​​no RAID.

Portanto, em geral, não podemos ter certeza de que os dados permanecerão inalterados.

A segunda abordagem é criar uma imagem forense de cada disco separado e remontar o RAID no modo somente leitura.

Esse é o único método que garante a integridade dos dados e também nos dá a oportunidade de pesquisar todas as áreas do disco rígido (o RAID pode muito bem não usar todo o disco do começo ao fim, mas apenas alguns de seus segmentos internos. Pode também haver áreas não utilizadas que podem armazenar dados ocultos).

A principal desvantagem desse método é ter que remontar o RAID, ou seja, a necessidade de determinar sua configuração. Portanto, para fazer tudo corretamente, precisamos descobrir a sua configuração.

Montagem do RAID

Para montar o RAID, você deve determinar:

  • Quais discos estão sendo usados: às vezes nem todos os discos são usados ​​(pode haver discos extras ou em excesso que são usados ​​para o "sistema"), às vezes não há discos suficientes (um disco pode estar quebrada ou pode ter sido jogada fora, mas o RAID ainda funciona devido à redundância) e assim por diante.
  • A ordem dos discos no RAID. Às vezes, isso reflete a ordem em que os discos foram colocados dentro do computador, mas não conte com isso.
  • O nível RAID e o algoritmo (se houver)
  • O tamanho do bloco
  • O LBA (setor do disco) inicial e final usado no RAID (os discos não são necessariamente usadas de 0 a MaxLBA)
  • O atraso (delay) na paridade. Essa é uma característica muito utilizado pelas controladoras Smart Array da HP/Compaq.

Por que a definição de parâmetros pode ser um problema? 

A resposta é simples - o número de todas as configurações possíveis é enorme! Colocar apenas os discos em ordem nos fornece duas dúzias de variantes para quatro discos, mais de cem variantes para cinco discos e milhares de variantes para sete discos. E ainda temos muitos outros parâmetros que multiplicam o número de configurações possíveis.

Claro que existem casos mais simples, como por exemplo:

  • RAID via software usando um formato bem conhecido
  • Um RAID simples com um número pequeno de discos, como por exemplo, RAID 0 (Stripe) ou RAID 1 (Espelhamento)

Todos os outros casos podem ser realmente difíceis para um usuário inexperiente. Além disso, no dia a dia, você precisa lidar com fatores que a tornam essa tarefa extramamente complexa:

  • As assinaturas do RAID nos discos (também chamado de Metadados) estão ausentes, corrompidas ou incorretas (muitas vezes isso acontece quando o RAID é reconfigurado e se perde a configuração original)
  • O sistema de arquivos no RAID está corrompido e é muito difícil usar esses Metadados para definir uma configuração válida (vírus ou algum outro agente pode danificar o sistema de arquivo)
  • Alguns discos podem não fazer parte do RAID, por exemplo, discos de reserva ou discos do sistema.
  • Outro problema comum - você pode ter discos misturados de RAIDs diferentes. Então, primeiramente, há necessidade de descobrir quais discos pertencem ao mesmo grupo de RAID.
  • O próximo problema – RAIDs com configurações exóticas, por exemplo, uma mudança incomum do início do disco, um atraso (delay) de paridade, ou qualquer outra coisa pode ser usada.
  • Geralmente é necessário restaurar dados após uma reconstrução destrutiva (reconstruir um RAID com parâmetros incorretos) que resulta em danos aos dados.

É necessário remontar o RAID durante o exame forense digital, mesmo que essa tarefa possa ser muito, muito difícil.

Chave para o sucesso

O que pode nos ajudar a lidar com todas essas dificuldades? Uma combinação conjunta de várias ideias e abordagens:

  • O primeiro é uma gravação de arquivo (usando o Data Extractor em modo de "Recuperação RAW") com a capacidade de determinar o tamanho da parte inteira dos arquivos
  • O 2º é o processamento estatístico dos resultados encontrados pelo reconstrutor de arquivos. Arquivos individuais podem dar uma imagem errada, mas o conjunto mostra um resultado muito melhor
  • A terceira - a capacidade de verificar rapidamente por suposição - para isso, precisamos de uma ferramenta que execute todas as configurações associadas ao RAID ou, em outras palavras, precisamos de reconstruções RAID dinâmicas e rápidas. Construir uma imagem para cada verificação de suposição leva muito tempo

A seguir, veremos todas essas coisas com mais detalhes.

Noções básicas de reconstrução de arquivo

A gravação de arquivos (modo "Recuperação RAW" em SOFWARE DE ANÁLISE FORENSE) é uma maneira de encontrar cabeçalhos de arquivos usando o conhecimento dos formatos de arquivo sem informações do sistema de arquivos. A abordagem mais simples e mais usada é procurar a assinatura do início do arquivo. Por exemplo, as imagens PNG têm a assinatura "% PNG" no início do arquivo. Para outros tipos de arquivos, as assinaturas são, obviamente, diferentes.

Conhecimento do format dos arquivos nos permite não apenas encontrar o cabeçalho do arquivo, mas também estimar o tamanho total do arquivo.

Por exemplo, os arquivos PNG consistem em uma sequência de blocos, cada bloco tendo uma assinatura, tamanho e soma de verificação, ou seja, podemos verificar com confiabilidade suficiente. Isso significa que, se o arquivo não estiver danificado ou fragmentado, podemos verificá-lo do começo ao fim e dizer que é "inteiro" e que seu tamanho é N bytes.

Se o arquivo estiver fragmentado ou parte dele foi reescrito, podemos dizer que aqui está o título e as primeiras partes são inteiras. Eles ocupam K bytes. E em algum lugar depois disso, há danos. Pode ser K + 1 byte ou K + 100 byte - desconhecido. Mas os primeiros K bytes são exatamente inteiros.

Para diferentes tipos de arquivos, a capacidade de verificar a parte inteira e a precisão dessa verificação são muito diferentes. Às vezes é possível verificar o arquivo inteiro, como neste exemplo png. Mas, às vezes, podemos verificar apenas algumas centenas de bytes desde o início, por exemplo, arquivos BMP, independentemente de estarem inteiros ou danificados.

A capacidade de encontrar cabeçalhos e verificar partes inteiras para muitos tipos diferentes de arquivos é um recurso exclusivo dos sistemas de análise Forense que nenhuma outra ferramenta possui.

Reconstrução de arquivos em um membro de um RAID

Vamos ver um exemplo de um RAID 5 Left Synchronous (LS) simples que consiste em três membros. Se você já tentou recuperar dados de RAID, essa configuração deve ser familiar para você:

E agora, vamos dar uma analisada em um de seus membros, por exemplo, o Membro A:

Esta tabela RAID descreve a regra de conversão repetida. A imagem mostra apenas duas repetições completas e o início da terceira. Por ser um membro RAID, ele armazena os blocos de dados e o bloco de redundância - XOR. Os blocos de dados não vão um após o outro como 0, 1, 2, 3,…, eles têm lacunas - 0, 3, 6 etc. porque outros blocos são armazenados em outros membros.

Vamos falar agora sobre como funciona a reconstrução de arquivos em um membro do RAID.

O disco membro armazena os blocos individuais da matriz, portanto, a parte inteira do arquivo é limitada pelo tamanho do bloco.

  • O arquivo pode começar e terminar em algum lugar dentro do bloco de dados
  • Se o arquivo for grande, ele será interrompido no final do bloco, pois a outra parte do arquivo é armazenada em outro membro

Aqui vemos situações cuja probabilidade é extremamente pequena:

A parte inteira do arquivo em um membro do RAID:

  • Não pode passar de bloco para bloco
  • Não pode estar dentro do bloco XOR

É claro que tais situações existem, mas seu número é muito menor que as "tradicionais" (como na imagem anterior).

A conclusão é que podemos encontrar as partes inteiras dos arquivos apenas dentro dos blocos de dados individuais.

Tratamento estatístico de reconstrução de dados

A regra de conversão de dados no RAID é periódica. No nosso caso, dois blocos em cada três são realmente blocos de dados e o último é XOR (paridade):

Se apenas resumirmos quantas partes inteiras existem em cada setor de cada bloco, veremos algo assim:

  • Existem muitas partes inteiras de arquivos dentro dos blocos de dados
  • Não há nada dentro do XOR
  • Você pode ver a “borda” entre os blocos porque o arquivo não cruza a borda do bloco

Vamos verificar a teoria na prática via sistemas RAID SOFWARE DE ANÁLISE FORENSE que têm a capacidade de processar estatisticamente os dados gravados e demonstrar graficamente os resultados. Nesta captura de tela, você pode ver o histograma do software obtido durante a solução de um caso real:

A imagem é muito semelhante à anterior. Os blocos de dados e o bloco XOR “vazio” são claramente visíveis. As linhas vermelhas mostram os locais onde os valores zero e não zero estão localizados próximos um do outro. Eles ajudam a ver as possíveis fronteiras do bloco.

E aqui estão três discos ao mesmo tempo:

Podemos ver que o bloco XOR (o "vazio") está localizado em lugares diferentes em membros diferentes, como deveria ser com o RAID 5. O tamanho do bloco é igual a 128 setores e é mostrado no histograma (apenas não esqueça que os LBAs aumentam da esquerda para a direita, e não de cima para baixo. Esta é uma maneira mais conveniente de visualizar informações em monitores widescreen).

Histograma para períodos diferentes

O tamanho do período é o número de discos multiplicados pelo tamanho e atraso do bloco. E se cometemos um erro? O que vamos conseguir? Aqui estão exemplos reais de como o histograma do mesmo disco se parece por diferentes períodos:

  • No primeiro caso, cometemos um erro com o tamanho do bloco - definimos o tamanho duas vezes menos que o necessário e recebemos um período duas vezes menor, e não está claro se isso é RAID 5
  • Na segunda imagem, todos os parâmetros estão corretos, é claro que este é RAID 5
  • E na última foto - escolhemos o número errado de participantes - quatro ao invés de três - e novamente vemos que o histograma está "quebrado".
  • Portanto, se criarmos estatísticas com o período errado, veremos o histograma errado.

Isso pode ser usado como um teste rápido de histograma: calcule o período e observe o histograma. Se áreas vazias estiverem visíveis (como nos blocos XOR) - os parâmetros estão definidos corretamente; caso contrário, isso pode ser um erro ou a configuração não possui nenhum bloco XOR, RS ou HS. Nos casos do dia a dia, o histograma é construído instantaneamente ou em alguns segundos. Então, é realmente um teste rápido.

Exemplos em diferentes configurações

Agora, vamos ver alguns padrões para diferentes configurações. Todos os histogramas nas imagens são baseados em casos reais.

RAID 5, 8 discos, bloco com 128 setores

Aqui você poderá ver uma configuração de RAID 5 construída com 8 discos e tamanho do bloco de 128 setores:

  • Por que RAID 5? Porque tem apenas um bloco “vazio” – XOR 
  • Porque 8 membros? Por que o período consiste em 8 blocos
  • O tamanho do bloco de 128 setores é claramente visível pela distância entre as linhas auxiliares vermelhas

Além disso, você pode ver o "ruído" no bloco XOR. Alguns arquivos foram encontrados lá, não é impossível. No entanto, há significativamente menos deles do que nos blocos de dados.

RAID 6 (ou 5EE), 6 discos, bloco com  256 setores, LBA de início deslocado

Esse é o RAID 6 ou 5EE que consiste de 6 discos:

  • Porque RAID 6? – porque existem dois blocos “vazios”. Um é o XOR, e o outro é o Reed-Solomon (ou um disco de bloco Hot Spare, se for um RAID 5EE)
  • 6 discos porque existem 6 blocos no período
  • O comprimento de um “pico” é de 256 setores. Esse é o tamanho do bloco

Nesta figura, você pode ver que existem duas partes do bloco no início e no final:

Isso acontece porque o RAID não inicia a partir de 0, como nos casos anteriores, ele tem alguma mudança. O tamanho da parte azul no início é de 64 setores (há uma dica acima da linha vermelha). Isso significa que o RAID começa com algum LBA, que deve ser assim: N * TamBloco + 64, N = 0, 1, 2,…. No nosso caso, era 1088 (= 4 * 256 + 64) - LBA inicial típico de RAIDs HP/Compaq.

RAID 5, 4 discos, delay de 16, bloco com 128 setores

Isso é como você vai encontrar um RAID 5 com delay igual a 16:

Como determinamos isso? Aqui você pode ver que o 1/4 mais à direita é uma área com dados de serviço. Existem muitas linhas vermelhas - esse é o "ruído" que cria os pequenos arquivos encontrados no XOR. No total, tínhamos quatro discos, por isso sugerimos que este é um RAID 5 que consiste em quatro discos. Um histograma semelhante pode ser visto para o RAID 6, que consiste em oito discos. As áreas restantes são preenchidas com dados, mas é claramente visto que existem muitos blocos dentro de uma área. Vamos ampliar uma das áreas.

Agora você pode ver que existem 16 blocos em uma área:

Isso significa que o delay é 16 e o tamanho do bloco é 128 setores.

RAID 0 (ou 10, ou 1E), bloco com 128 setores

Esse é um exemplo de RAID 0:

Entretanto, o RAID 10 ou 1E, ou outro nível, se não determinamos o período certo, será exatamente o mesmo. Se você trabalha com essa configuração, procure primeiro um histograma para RAID-5 ou 6. Então poderemos dizer que é 0, 10 ou 1E. Esses níveis não possuem blocos XOR, Reed-Solomon ou HS (hot spare), portanto, não vemos blocos "vazios". Além disso, não podemos dizer quantos discos existem no RAID, porque vemos padrões semelhantes para um número diferente de discos.

JBOD ou disco sem RAID

Agora veja como é o histograma para JBOD ou apenas um disco não RAID. Você pode ver que não há nenhum bloco:

Quando um disco não está sendo usado e quando um disco está perdido

Discos não utilizados são discos que não pertencem a nenhum RAID específico. Podem ser  discos sobressalentes ou destinados a armazenar os dados do SO (Sistema Operacional).

Na imagem, você pode ver que existem quatro discos que pertencem ao RAID 5, feito de cinco discos com tamanho de bloco de 512 setores. E o último é um estranho. O histograma deste disco difere de todas os outros. Conclusão: o último disco não está sendo utilizado.

Como temos apenas quatro membros em cada cinco, um deles está perdido.

A mesma ideia vale para discos de diferentes RAIDs - seus histogramas serão diferentes.

Sendo assim, vemos que cada nível de RAID possui um histograma peculiar, que pode dizer muito sobre a configuração e pode até ser chamado de "impressão digital".

Que tipo de dados podemos analisar com o histograma?

Somente o histograma nos fornece muitas informações sobre a matriz:

  • Tamanho do bloco
  • Nível do RAID (0, 1, 5, 6, ...)
  • Número de discos
  • Delay
  • Conjunto de possíveis LBAs de início
  • Discos perdidos ou não utilizados

Mas e a ordem dos discos?

Aqui está um exemplo de um RAID 5, de cinco discos e os histogramas cada um deles. Na sua opinião, quantas possibilidades são possíveis?

Os histogramas dos discos permitem definir a diagonal do XOR. No total, temos quatro algoritmos usados no RAID 5. E para cada algoritmo, podemos especificar a ordem exata usando essa diagonal. Os sistemas RAID SOFWARE DE ANÁLISE FORENSE têm várias abordagens sobre como encontrar a opção certa e como verificá-la. Não entraremos em detalhes, pois este é um tópico para um artigo separado. Mas, resumindo, a maneira mais fácil é tentar todas as quatro opções.

Para fazer isso, você precisa criar o RAID em tempo real e visualizar várias configurações ao invés de criar uma imagem para cada uma. Os sistemas RAID SOFWARE DE ANÁLISE FORENSE podem alterar rapidamente os parâmetros RAID e observar imediatamente o resultado. Portanto, levará menos de um minuto para passar por quatro configurações.

A mesma situação é para o RAID 6 e 5EE, mas existem mais algumas opções: para cada algoritmo, você precisa escolher qual bloco (XOR ou RS) primeiro.

Em suma, a abordagem proposta de usar o processamento estatístico dos resultados da gravação de arquivos - também conhecido como histogramas - reduz milhões de opções em algumas possíveis. Em outras palavras, simplifica os problemas complexos de recuperação de dados RAID!

Sobre o autor: 

Alexander Leonenko é desenvolvedor de software e instrutor de recuperação de dados RAID no ACE Lab.

Comment Facebook
Post Relacionado