O Que É Um Arquivo Digital

O Que É Um Arquivo Digital

wxfm.png

Essa matéria pode parecer um pouco iniciante para um site hacker, mas ela é precisa, afinal todo mundo que mexe com informática sabe o que é um arquivo, mas as vezes não sabe a parte técnica da coisa, ou seja, do que é formado e como é tratado pelos programas que os lêem e escrevem, até porque muitos se preocupam apenas em clicar duas vezes no arquivo e ver do que se trata :D , mas tratando de assuntos hacker isso não é o suficiente, pois as vezes temos que ler, tratar e até modificar pontos específicos de um arquivo, para identificarmos uma possível ameça (vírus ou código arbitrário) ou até mesmo mascararmos informações a fim de transmiti-las de forma oculta, então não deixe de ler essa matéria achando que ela será chata ;) .
Um arquivo digital é composto por dados binários (0 e 1) que juntos formam um tipo de dado, que juntos formam informações, e quando estamos falando não só de hacking mas de informática, estamos falando também de informações que estão salvas em arquivos.
Todo arquivo pode ter uma extensão por exemplo .txt, .png, .exe, etc, isso irá facilitar na hora de ler e/ou escrever nesses arquivos, por exemplo, quando temos um arquivo.txt já sabemos que ele é um arquivo de texto e pode ser aberto por um bloco de notas, Wordpad, Word, Gedit, VI e qualquer outro leitor de texto, já quando temos um arquivo.png sabemos que trata-se de um arquivo de imagem, sendo assim esse tipo de arquivo deve ser tratado por um leitor (visualizador) de imagens, além disso para um programa, fica mais fácil saber quando ele pode ou não tratar um determinado arquivo, sabendo antes qual a sua extensão, afinal, se todos os arquivos (imagem, texto, musica, vídeo …) não tivessem uma extensão, um programa leitor de arquivos pdf por exemplo, iria acabar aplicando rotinas para abrir um arquivo PDF em um arquivo de vídeo, e obviamente ele não conseguiria mostrar nada e poderia até mesmo travar o programa.
Além dos arquivos conterem uma extensão, alguns desses arquivos que possuem extensões, podem também conter um cabeçalho, isso irá novamente ajudar o programa leitor a identificar o que é o arquivo e como ele deve tratá-lo, por exemplo um arquivo de imagem.png, esse tipo de arquivo contém dados quantificados em uma escala de cor RGB (Red, Green, Blue), aonde será aplicado o nível de cada cor, ou seja, podemos ter um nível alto de vermelho, com um nível médio de verde e nada de azul, isso formará uma cor qualquer, para fazer isso precisamos obviamente atribuir números, só que para atribuir esses números nós precisamos de bits (0 e 1) e é ai que esta a importância do cabeçalho. Se uma imagem foi formada utilizando 8 bits de cores para RGB, essa imagem pode atribuir um valor de 0 a 255 para vermelho, verde e azul, já se essa imagem foi formada com 16 bits os valores podem ir de 0 a 65535, obviamente quanto mais números temos para atribuir, maior será a possibilidade de cores, então maior será a qualidade da imagem. A questão é que um visualizador de imagem, precisa se comunicar com a API de vídeo do sistema, para formatar cada pixel e montar a imagem no seu monitor com cada cor, sendo assim ele precisa então saber o tamanho de bits de cada cor (8, 16, 24), dimensão da imagem (largura x altura) para fazer a matriz de vídeo, saber se houve alguma compressão nos dados, dentre outras informações, e isso tudo estará no cabeçalho, veja abaixo como exemplo o cabeçalho de um arquivo de imagem.jpeg:

cc7i.jpg
Apesar do cabeçalho ter um papel importante em um arquivo, não são todos os arquivos que precisam de um cabeçalho, afinal se um arquivo tiver uma extensão única e os dados seguirem um padrão, o próprio programa já saberá qual é esse padrão e conseguirá interpretar tudo corretamente, podemos levar como exemplo os arquivos.txt, esse tipo de arquivo contém dados inteiro (sem vírgula) de 8 bits (0 ~ 255) puro, então basta utilizar o padrão ASCII, para converter um numero por exemplo 80 em um caracter, no caso seria P, fazendo isso com cada byte do arquivo devemos ter então a mensagem, por exemplo:

rcpd.jpg
Sabendo agora que um arquivo pode conter um cabeçalho com informações sobre o mesmo, podemos entender melhor como funcionam algumas técnicas hacker, como por exemplo, esconder mensagens e informações em um arquivo (esteganografia), e também incluir código arbitrário em um determinado arquivo.
Uma das informações contidas em alguns cabeçalhos de arquivo é o tamanho total do arquivo em bytes, isso é importante, porque os programas leitores podem fazer um loop de x bytes, já que ele sabe aonde será o fim do arquivo, porém se adicionarmos mais dados (bytes) do que o cabeçalho informa, nós conseguiremos esconder dados, ou seja, o programa que ira ler o arquivo irá tratar apenas o tamanho em bytes contido no cabeçalho e o resto ficará no arquivo mas não será exibido, essa é uma das formas mais comuns de esteganografia, é claro que em alguns casos o hacker criptografa os dados da mensagem, para que apenas ele ou quem tenha a senha, consiga ler a mesma.
Outra forma de tirar proveito de um arquivo, é explorando uma vulnerabilidade que um leitor do arquivo tenha, dessa forma você pode utilizar um código arbitrário, que estoure o buffer do programa e seja executado pelo mesmo, isso pode fazer com que o programa ou sistema trave, ou até mesmo seja infectado por algum vírus, isso irá depender da gravidade da falha.
Nós podemos analisar um arquivo em nível de código, através de leitores hexadecimais, esses leitores irão mostrar cada byte (8bits) do arquivo, além de uma conversão de hexadecimal para decimal ou hexadecimal para caracter ASCII, para que possamos saber se o dado trata-se de números que normalmente é realmente os dados do arquivo, ou se trata-se de uma mensagem, caracteres ou código malicioso, dentre esses leitores e editores hexadecimais eu recomendo o Free Hex Editor Neo, esse editor faz tudo que foi citado acima e possui uma interface bem simples e amigável.
Postagem anterior
Próxima postagem

postagem escrita por:

0 Comentário: