Escrevendo em discos sem sistemas de arquivos

Passo algumas maneiras de como escrever em um dispositivo sem que ele possua um sistema de arquivos e como usar isso para segurança. Também é possível aproveitar a dica para realizar formatações sem perder dados e qualquer coisa do gênero.

[ Hits: 26.240 ]

Por: Douglas Ritter em 27/04/2009


Manter arquivo no dispositivo depois de formatação



Recentemente queria formatar um HD que estava em NTFS e EXT3, famosa instalação do Windows junto com Linux. Mas eu tinha 30GB de dados e não possuía drive ótico ou mesmo pendrive para gravar as informações. Rede, seja a interna ou a Internet, considerei muitos dados para isso, não valeria o tempo. Resolvi fazer de outra maneira e compartilho abaixo.

Usei um Linux live CD e os mesmos comandos acima. Montei o HD e usei o DD (NOTA: o DD permite if e of para o mesmo dispositivo, só evite fazer que leitura e escrita caiam no mesmo lugar ao mesmo tempo).

# dd if=/mnt/sda1/arquivo.rar of=/dev/sda seek=(setores que eu quiser que o arquivo comece a ser gravado)*

* 1. Eram 30 GB e muitos arquivos, logo preferi usar um programa de compactação, assim deixava tudo em arquivo só. Porém não escolhi a opção compactar, pois demoraria muito e a redução seria insignificante, para isso usei o winrar.

2. O comando seek pula setores no dispositivo de saída e vou usá-lo aqui justamente para o arquivo não ficar no início do HD, assim sendo quando eu formatá-lo de novo, o que tiver ali será apagado e eu não quero isso. Também assim mantenho os sistemas de arquivos da partição montada intacta. Procure sempre afastar pelo menos 20 KB a frente por segurança. No meu caso, já mandei o arquivo mais para o fim do HD (lembrando para não por totalmente no final, pois a formatação ira escrever x blocos também no final, onde x depende da quantidade informada para a formatação. Quando isso não é informado, são usados valores padrão, mas podem variar dependendo programa usado e dispositivo, por isso sempre cheque antes. Mas nunca será algo maior que 64kb (provavelmente) logo, nem esquente a cabeça com isso não deixando o arquivo lá, mas caso precise, cheque isso bem) escrevi ele a partir dos setores que compreendiam 60 GB de dados (calcule: 60GB (em bytes) / 512 = setor). Lembre-se de colocar um a menos no DD, já que você quer ele leia a partir dali e não pule até aquele ali. Ou seja, se for 3 coloque 2. Seja para skip ou seek.

Depois formate o dispositivo tranquilamente e busque seu arquivo novamente usando DD. Use como saída ele montado e na entrada o dispositivo, não se preocupe, não haverá problemas.

Manter formatação e instalar outro SO sem fazer backup do HD inteiro

Certa vez recém tinha instalo o Windows XP em uma máquina e precisei olhar um dado que somente poderia diante o Linux. Como o Windows já tinha sido ativado e eu teria problemas caso tentasse de novo (em x tempo próximo), instalei meu Linux sem perder a formatação Windows.

Jeito 1 (redimensionando e depois voltando ao normal)

Faça uma cópia dos primeiros 4 MB do HD por exemplo. Depois faça a instalação, redimensione como quiser, procure-o mais para o final possível (ou melhor em locais não hajam dados). Depois quando quiser voltar, basta repassar a cópia dos 4MB para o começo do disco. Como os dados que haviam nos setores que continham dados não foram mexidos, estará tudo idêntico.

Jeito 2 (não redimensionar)

Faça um backup novamente dos primeiros 4 MB (4 MB tanto aqui como no jeito 1 é só um valor alto, 8KB é o suficiente, mas não custa ir pouco mais além) e depois faça a partição que quiser, no meu caso criei uma partição nos últimos 4GB do disco e instalei. Quando quis voltar, bastou copiar novamente os 4 MB que eu tinha para o início do disco e o Windows XP abriu sem saber de nada que tinha acontecido. ;)

Página anterior     Próxima página

Páginas do artigo
   1. Introdução ao sistemas de arquivos
   2. Escrevendo sem sistemas de arquivos: mão na massa!
   3. Considerações gerais
   4. Manter arquivo no dispositivo depois de formatação
   5. Conclusão
Outros artigos deste autor

Criando ou aumentando a memória virtual (SWAP) no Linux

Leitura recomendada

Implementação de um sistema de arquivos criptografado transparente ao usuário

Descobrindo serviço através das portas

Servidor SSH (Secure Shell Hosting)

Como fazer: chroot SSH (SSH mais seguro)

Desvendando código malicioso no fórum Viva o Linux

  
Comentários
[1] Comentário enviado por capitainkurn em 27/04/2009 - 20:05h

Muito interessante e criativo seu artigo! Parabéns! Já o adcionei em meus favoritos.

[2] Comentário enviado por rodrigomanga em 27/04/2009 - 21:10h

ótimo artigo!
me deu até algumas idéias

volta e meia tenho q formatar micros com XP, e lotado de videos e mp3, ao inves de eu usar gparted, posso copiar os arquivos direto pro hd.

será q não tem um jeito de usar o tar sem compactação pra juntar os arquivo e pegar a saida da linha de comando pra jogar direto no dd?

[3] Comentário enviado por gustavoh84 em 28/04/2009 - 00:08h

Excelente artigo!
Tá de parabéns mesmo!

[4] Comentário enviado por removido em 28/04/2009 - 01:34h

Excelente artigo, em minha opinião um dos melhores publicados nos últimos meses. Muito interessante para estudantes da área de TI.

[5] Comentário enviado por dstter em 28/04/2009 - 07:51h

rodrigomanga excelente idéia e tem sim.

tar -cvf - suaentrada | dd of=caminhosaida seek=x (Use seek caso queria pular n setores no dispositivos de saida)

Lembrando geral que NUNCA "suaentrada" deve possuir arquivo(s) nos setores que dd ira começar a escrever, por exemplo:

Dispositvo com 1000 setores (/dev/qlr)
Arquivo gravado dos setores 650 até 850 (do mesmo dispositivo (/dev/qlr))
nome do arquivo: teste.vol

tar -cvf - teste.vol | dd of=/dev/qlr SEEK=702

Aqui ele faria e não daria nenhum erro. Porém, como ele começou a escrever no setor 703 e nesse setor contia uma parte do arquivo teste.vol o mesmo ficou corrupto, pois agora naqueles setores está o inicio desse mesmo arquivo. Ficou alguma coisa assim:

Lendo setor 650 e escrevendo em setor 703
Lendo setor 651 e escrevendo em setor 704
...
...
...
Ou seja podemos prever que ao ler o setor 703 ele já vai estar escrevendo do 756, porém esse setor 756 será idêntico em dados que o 650 e 703 (esse obviamente). E as partes do arquivos que estavam ali foram trocadas pelos dados do 650. O mesmo aconteceu com o setor 704 que passou a ter os dados que tinham o setor 651 e assim seguidamente. É preciso ter certeza que os setores o DD irá escrever não há dados consideráveis e ainda devem ser lidos, senão resultará em erro. Eu não consegui me expressar bem, mas espero que tenha deixado a imagem.


[6] Comentário enviado por aaron.binner em 28/04/2009 - 16:53h

Ótimo artigo, muito bem detalhado. já foi para os meus favoritos!

[7] Comentário enviado por removido em 28/04/2009 - 18:14h

Texto muito bem escrito, didática excelente, tema muito interessante. Mas a sua aplicação em segurança é ridícula! Seria uma piada tentar esconder arquivos valiosos desta forma. Existem trilhões de softwares prontos para escovar cada bit do disco em busca de qualquer coisa relevante. Infinitamente mais seguro, simples e prático utilizar um sistema de arquivos criptografado. O truecrypt permite até mesmo criar volumes escondidos. Mas o artigo é excelente! Gostei muito de ler e tive muitas idéias legais (decidi escrever o meu próprio sistema de arquivos por diversão). Sem dúvidas uma ótima contribuição.

[8] Comentário enviado por dstter em 29/04/2009 - 06:22h

Olá bpiero, poderia me passar quais programas você se referia? Eu fiz milhões de testes antes de escrever esse artigo e não posso garantir, mas não é bem assim para trazer o arquivo de volta, contudo eu também especifiquei que o uso mais adequado era para usuário doméstico. Você não vai varrer um dispositivo se não souber que tem algo interessante nele, certo? Já se você criptografar estará dizendo que é algo importante tão logo fará curiosidade e onde tem curiosidade tem gênio e onde tem gênio em função do tempo tem descoberta. Criptografias podem ser quebradas. Eu coloquei um arquivo na area "conclusão" onde a idéia justamente era essa: tentar trazer de volta e invalidar a idéia. Como Darwin, eu a jogaria no lixo. Atualmente também trabalho em um projeto de segurança que não só criptografará (com logaritmos alternados) como também irá mover as bits de seus lugares tornando o arquivo impróprio. Aposto 20 mil reais aqui para quem me indicar um programa que traga o arquivo postado no megaupload de volta (sem passar pelo script). Com todo respeito, acho errado ser liberado uma informação sem antes ter certeza do que esta sendo dito, sobretudo agradeço você e aos demais aqui pelo apoio e positivação ao artigo. Boas idéias a todos :)

PS: Eu não tenho 20 mil reais, alguém tem um programa para recuperar o arquivo? xP

[9] Comentário enviado por gustavs em 29/04/2009 - 20:20h

Belo artigo!
Mas como bpiero disse, não é exatamente seguro: 'esconder' nunca será o mesmo que 'trancar' - mas usar os dois pode definitivamente ajudar. E sobre criptografia, talvez fosse mais útil e prático utilizar o número do setor que você teria que guardar para criptografar o arquivo normalmente do que fazer o indicado.

Mas há um jeito de inutilizar qualquer programa que busca por cabeçalhos zip ou qualquer outro padrão, muito simpes:

"Scrambler" (embaralha os bits de um arquivo)
Pseudo-código:

for ( i = 1; i <= comrpimentoArquivoBits; i++ ) {
..temp[i mod 4] = arquivo[i]
..if ( i mod 4 == 0 ) {
....for ( i2 = 4; i2 <= 1; i2++ ) {
......arquivo_saida[i] = temp[i2]
....}
..}
}


Eu fiz um algoritmo simples poque ele pode ser utilizado para codificar e decodificar
(bom ele é bem simples: ele só mudaria uma sequência de 12345678 para 43218765, mas nada conseguiria identificar esse padrão, mesmo que simples)

[10] Comentário enviado por dstter em 01/05/2009 - 16:54h

Oooolhaaa! Embaralhar as bits também faz parte da criptografia que eu estou criando. É uma do total de 10 modulos, mas como eu disse.. isso era para uso doméstico. Nenhum programa que escove HD dará o arquivo de cara para ninguém. Tá certo que para uso doméstico uma criptografia é muito melhor e mais pratica (mas estou escrevendo programa que faz o que eu disse a cima) Contudo, imagine você puder entrar numa empresa fazer copias e sair com o pendrive na mão sem medo? Esse é o lado ruim do procedimento, mas o lado bom é ter documentos que não existem. Se empresas guardassem coisas assim seria muito melhor. Imagine uma pilha de cds, disquetes ou seja lá o que for.. Ai de 1000, 700 estão cheio de nada (mas aparecerá dados) e os outros 300 tem dados importantes.. Muito mais dificil ter tempo para achar e roubar a informação...


[11] Comentário enviado por marcrock em 14/05/2009 - 03:01h

Muito bom seu artigo !
Essa maneira pode não ser a mais indicada para segurança de dados, mas é com certeza um modo interessante de dificultar o acesso a eles. Talvez fosse possível também fazer um script que dividisse o arquivo em muitas partes e escrevesse essas partes de maneira aleatória de acordo com uma senha ou algo parecido e depois para recuperar os bytes ela voltasse a ser usada pra indicar os setores onde estariam os dados . Quanto aos programas que o bpiero citou, com certeza existem softwares otimizados para isso ( creio que sejam usados principalmente em ações forenses ), realmente nesse tipo de análise onde se ignora os sistemas de arquivos e se faz até varredura de carga residual nos bits, não creio que dá pra escapar , já na criptografia ainda existem algoritmos que não foram quebrados com a capacidade de procesamento atual , mas é questão de tempo :-p !

Parabéns pelo artigo .


Até +.

[12] Comentário enviado por dstter em 16/05/2009 - 15:05h

Olá todos. Não é que eu não aceite criticas, nem esteja defendendo meu método, porque o artigo é meu. Programas forenses não fazem milagre. Se alguém me recuperar o arquivo que postei, ai eu sedo a mão, mas tenho conhecimento nessa area, eu sei do que estou falando. Agradeço a todos pela parabenizações :)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts