Introdução à identificação de fuso horário forense

Em um exame forense digital, o estabelecimento do fuso horário em que o sistema foi definido deve ser uma das primeiras tarefas de exame, aqui trataremos como fuso horário forense. Se essas informações não forem estabelecidas em um estágio inicial e levadas em consideração, a validade da evidência Data/Hora poderá ser posta em causa. Isso não só é verdade para o exame do Histórico do navegador e artefatos relacionados, mas também é importante ao examinar os metadados do sistema de arquivos.

Eu também acredito que isso é algo que todo examinador deve ser capaz de fazer manualmente, em vez de confiar em apontar e clicar ou em script forense. Embora o apontar e clicar certamente tenha um lugar e as ferramentas de software possam aumentar bastante a eficiência do processo de exame, os profissionais forenses digitais precisam possuir as habilidades e a capacidade de verificar os resultados.

Alguns valores de Data/Hora armazenados em arquivos binários são afetados pela configuração de Fuso horário do computador suspeito original e muitos aplicativos forenses digitais podem alterar a representação dessas datas pela configuração de Fuso horário da estação de trabalho forense.

Isso se torna particularmente complicado quando o computador suspeito foi definido como um fuso horário incorreto e o relógio do computador foi definido para corresponder ao fuso horário local. Muitos carimbos de data / hora armazenam os dados como valores UTC. Em tais circunstâncias, o sistema operacional (ou aplicativo) precisa converter o valor da hora local para o UTC.

Exemplo de caso

Isso foi demonstrado em um caso em que me pediram para revisar há alguns anos. Um computador foi apreendido como parte de uma investigação sobre imagens abusivas de crianças. A polícia examinou o computador corretamente e o indivíduo envolvido foi acusado de crimes sob a Lei de Proteção às Crianças de 1978.

Um especialista em defesa examinou a imagem forense do computador declarando em seu relatório que a polícia havia violado as evidências e alegado que eles eram responsáveis ​​pelo material ilegal, pois os carimbos de data / hora mostram que o material foi criado no disco por cerca de quatro horas depois de ter sido apreendido pela polícia.

Meu exame inicial revelou que o especialista em defesa não havia estabelecido as configurações de fuso horário para o sistema nem as havia levado em consideração durante o exame e o relatório subsequente. Se tivesse, ele teria visto que o sistema estava incorretamente configurado para o horário do Pacífico e não para o GMT. No que diz respeito ao sistema operacional, o sistema estava no horário do Pacífico e adicionou 8 horas aos horários locais para convertê-los em UTC. Isso resultou nos carimbos de data / hora 8 horas antes da hora correta.

Quando o especialista em defesa afirmou que o computador tinha material ilegal gravado no disco após a apreensão do sistema, era fato que isso havia acontecido cerca de 4 horas antes da execução do mandado na casa do suspeito.

Estabelecendo o fuso horário atual

Para estabelecer a configuração de fuso horário para um sistema Microsoft Windows, o examinador forense pode examinar a seção do registro do sistema. Para fazer isso, você precisa estabelecer qual ControlSet estava ativo quando o computador foi apreendido.

Time_Zone_Registry_Key

figura 1

Lá você encontrará 4 teclas que detalham os conjuntos de controle Atual, Padrão, Falha e LastKnownGood. O controle atual definido na tela abaixo é definido como 3. Você também pode ver os três ControlSets numerados de 001 a 003.

Registry_Current_Control_Set

Figura 2

Agora que esse conjunto de controle atual foi identificado, podemos navegar para esse local no registro e calcular os diferentes valores armazenados. Nesse caso, as configurações de fuso horário são armazenadas aqui:

ControlSet003

Figura 3

As informações de fuso horário para este conjunto de controles são mostradas na Figura 4.

TimeZoneInformation_Registry

Figura 4

As teclas são explicadas abaixo. Observe que as configurações de polarização são armazenadas em minutos como um número inteiro assinado. O viés é a diferença, em minutos, entre o UTC e a hora local. Todas as traduções entre o UTC e a hora local são baseadas na seguinte fórmula:

TimeZone_Formula

Figura 5

ActiveTimeBias

Este valor é a diferença de horário atual do UTC em minutos, independentemente de o horário de verão estar em vigor ou não. É esse valor que ajuda a estabelecer as configurações atuais do fuso horário. Usando a fórmula acima, pegue esse valor e adicione-o à hora local para obter o valor UTC.

Bias

Este valor é a diferença horária normal do UTC em minutos. Este valor é o número de minutos que precisariam ser adicionados a um horário local para retorná-lo ao valor UTC. Este valor identificará o fuso horário principal (horário padrão).

StandardBias

Este valor é adicionado ao valor do membro de polarização para formar a polarização usada durante o tempo padrão. Na maioria dos fusos horários, o valor desse membro é zero.

DaylightBias

Este valor especifica um valor de polarização a ser usado durante as conversões de horário local que ocorrem durante o horário de verão. Este valor é adicionado ao valor do membro de Polarização para formar a polarização usada durante o horário de verão. Na maioria dos fusos horários, o valor desse membro é –60.

DaylightName

O sistema operacional usa esse nome durante o horário de verão para exibir a configuração atual do fuso horário.

DaylightStart

Dados binários na estrutura SYSTEMTIME usados ​​para identificar a data / hora em que o horário de verão começará nesse fuso horário.

StandardName

O sistema operacional usa esse nome durante o horário de verão para exibir a configuração atual do fuso horário.

StandardStart

Dados binários no formato SYSTEMTIME usados ​​para identificar a data / hora em que a Hora Padrão começará neste fuso horário.

DisableAutoDaylightTimeSet

Isso só será visível se a configuração para ajustar automaticamente o relógio para o horário de verão tiver sido desativada.

Cálculo de valores de polarização de número inteiro assinado

Nos sistemas digitais, todos os dados, sejam eles números ou caracteres, são representados por cadeias de dígitos binários. Um problema surge quando você deseja armazenar números negativos.

Ao longo dos anos, os projetistas de hardware desenvolveram três esquemas diferentes para representar números negativos: sinal e magnitude, um complementa e dois complementam. O método mais comum para armazenar números negativos é o complemento de dois. Com esse método, o bit mais significativo (MSB) é usado para armazenar o sinal.

Se o MSB estiver definido, isso representa um número NEGATIVO. Este método fornece aritmética natural sem regras especiais. Para representar um número negativo em duas notações complementares, o processo é simples:

• Decida o número de bits (n)
• Encontre a representação binária do valor + ve em n-bits
• Inverta todos os bits (altere 1 para 0 e vice-versa)
• Adicione 1

A Figura 5 abaixo mostra a representação binária do número positivo 5.

Número_Binário Positivo

Figura 5

Para representar isso como um número negativo (usando 8 bits), o procedimento acima é seguido. Vire os bits como mostrado acima e adicione um como mostrado na Figura 6.

Negative_Binary_Number

Figura 6

Esse método facilita extremamente a adição de números positivos e negativos. Por exemplo:

Binary_Addition

Figura 7

Também facilita a conversão entre números positivos e negativos:

Converting_Binary_Numbers

Figura 8

ActiveTimeBias

Se olharmos novamente para o ActiveTimeBias na Figura 9, você verá um valor hexadecimal assinado. Isso pode ser calculado usando o complemento de dois.

Singed_Value

Figura 9

Esse valor é armazenado em hexadecimal como um valor de 32 bits, portanto, para calcular o valor, ele precisará ser convertido em binário. Ignore o fato de que, nessa ocasião, o editor de registro está mostrando o valor decimal (4294967236) ao lado; isso ocorre apenas porque o editor do registro não percebe que o valor foi armazenado como um número inteiro assinado.

O cálculo do complemento de dois é o seguinte:

Singed_Integer

Converta isso em binário:

Calc2

O MSB está definido para que saibamos que o valor acima será negativo. O próximo estágio é virar todos os bits. Isso envolve alterar 1 para 0 e vice-versa. Isso pode ser conseguido rapidamente usando a função lógica NOT em uma calculadora científica. Você deve garantir que ele esteja configurado para lidar com o número correto de bits.

Calc3

Adicione 1 bit ao valor acima

Calc4

E depois converta esse valor de volta para decimal, lembrando que estamos lidando com um número negativo:

Calc5

TimeZone_Note

Horário de verão / horário de início

Observando a Figura 10 abaixo, você pode ver duas teclas intituladas DaylightStart e StandardStart. Eles mantêm dados codificados mostrando a data / hora exata do início do horário de verão e do horário padrão. Para estabelecer quando o horário de verão começa e termina, as duas teclas precisarão ser decodificadas.

Registry_DaylightStart

Figura 10

Estrutura SYSTEMTIME

Esses dados são armazenados em uma estrutura comum chamada SYTEMTIME. Essa estrutura especifica uma data e hora, usando membros individuais para o mês, dia, ano, dia da semana, hora, minuto, segundo e milissegundo.

SYSTEMTIME_STRUCTURE

Figura 11

Os dados no DalylightStart são os seguintes:

Daylight_Start

Figura 12

Os bytes 0 e 1 (0x0000) referem-se ao ano a partir de uma base de tempo de 1900. Isso é necessário apenas se a alteração for específica do ano e normalmente será zero.

Os bytes 2 e 3 (0x0003) referem-se ao mês, neste caso março.

Os bytes 4 e 5 (0x0005) referem-se à semana (começa em 1 e 5 significa o último). Nesse caso, na última semana.

Os bytes 6 e 7 (0x0001) referem-se à hora. Nesse caso, são 0100 horas.

Os bytes 8 e 9 (0x0000) referem-se à ata. Nesse caso, são zero minutos.

Os bytes 10 e 11 (0x0000) referem-se aos segundos; neste caso, é zero segundos.

Os bytes 12 e 13 (0x0000) referem-se aos milissegundos, neste caso, são zero milissegundos.

Os bytes 14 e 15 (0x0000) referem-se ao dia da semana real (domingo = 0). Neste caso é domingo

Para o nosso exemplo na Figura 12, o Horário de Verão (DST) começará no domingo da última semana de março às 0100 horas. Se tivéssemos decodificado o StandardStart, veríamos que o horário de verão terminaria no domingo da última semana de outubro às 0200 horas.

 

 

Este artigo é uma livre tradução de: https://www.digital-detective.net/manual-identification-of-suspect-computer-time-zone-2/