No Banner to display

O que é um arquivo digital?



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:

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:

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.

Nos próximos posts eu estarei mostrando na prática, como analisar e editar arquivos de diversos formatos.

Não deixem de comentar ;)!!!

13 Comentários para “O que é um arquivo digital?”

22 de janeiro de 2013 ás 14:27hs

muito bom paulo;

Tiago

28 de janeiro de 2013 ás 13:13hs

Gostei da matéria!
Achei ela bem simples. Usou um linguajar simples.

E já estou aguardando a próxima matéria!
Vlw

Luan Kevin Ferreira

30 de janeiro de 2013 ás 14:05hs

Muito bom, espero a próxima matéria…

Dani B.

4 de fevereiro de 2013 ás 21:24hs

Estou começando a me interessar mais por esse assunto e essa matéria foi simples mas importante. Abraço!

armando

12 de fevereiro de 2013 ás 15:39hs

se usar programa para esteganografia, tipo o camouflage pra camuflar um trojam por exemplo, apos a vitima digitar a senha e tal, o antivirus vai detectar amigo?

    14 de fevereiro de 2013 ás 0:23hs

    Na verdade o programa que esconde um vírus ou arquivo executável em um arquivo é o joinner, e para tornar o executável final indetectável, você deve utilizar um crypter.

    Abração!!!

armando

14 de fevereiro de 2013 ás 1:01hs

é mas quase todos os joiners que se acha por ai não funcionam mais!
e crypter nunca tentei mas acredito que tambem vai corromper o server e por isso pergunto sobre esteganografia

Ramon Oliveira

21 de fevereiro de 2013 ás 9:48hs

Bom dia,

Conteúdo muito bom parabéns.
Vou ficar aguardando mais matérias.

Shinnigami

15 de maio de 2013 ás 11:25hs

Ótima matéria. Já com água na boca esperando a próxima. ehehehehe
Vlw Paulo!

18 de maio de 2013 ás 10:13hs

Good

Lucas

28 de junho de 2013 ás 9:54hs

Obrigado, Paulo. Estou esperando a proxima materia, pois me interessei muito por engenharia reversa…

Rosemilson

30 de abril de 2016 ás 4:04hs

Muto legal este poste sobre os códigos binários

Deixe seu Comentário

Comentários Recentes

  • Paulo Tacio: Por enquanto as inscrições não estão aberta...
  • Paulo Tacio: Sim, estão atualizados e funcionais pelo me...
  • Rox: Os cursos estão atualizados pra 2017?...
  • Ludymilla: Por favor me digam como me inscrever....
  • KEVIN TIGRAO: TOP TOP TOP...

Galeria de Imagens

Ver mais imagens