Steganografia :: Escondendo arquivos criptografados em imagens no Linux com Steghide

Share:

O que é Esteganografia? 

No mundo de hoje, onde são trafegados números exacerbantes de informações a cada segundo em redes internas e externas, se tornou cada vez mais difícil manter essas informações em perfeita segurança e ocultá-las de hackers e de espiões do governo que tendem cada vez mais interceptá-las. Portanto, o uso da criptografia simétrica e assimétrica com algoritmos cada vez mais sofisticados tem ganho um valor inimaginável no mercado, e a esteganografia, que se baseia na técnica de esconder texto e informações criptografadas ou não dentro de imagens, áudios e vídeos tem chamado cada vez mas a atenção de pesquisadores.

No quesito imagens digitais, podemos classificá-las em dois meios, sendo eles os vetoriais que são imagens constituídas de definições geométricas em um sistema de coordenadas cartesianas e as Bitmaps, que são definidas por ser uma matriz de pontos de pixels, como as imagens PNG, JPG e GIFS animados ou não.

Nessas imagens bitmaps, as cores são representadas normalmente dentro do padrão RGB, famoso Red, Green e Blue, sistema de cores que usam os padrões vermelhos, verdes e azuis para compor a sua gama de cores.

Cada um dos três tons de cor dentro do padrão RGB é composto por uma pixel, que por sua vez é composto por um inteiro de 8 bits, que por sua vez proporciona 2^24 cores possíveis, cerca de 16 milhões de cores possíveis com 24 bits por píxel descendente do padrão, e algumas extensões como o GIF e PNG permitem transparência em imagens, chamamos isso de camada ALFA do Bitmap, inclusive muito obrigado Rafael Alencar pela explicação.

O principio da esteganografia é pegar alguns desses bits gerados pelo padrão, os menos importantes possíveis e convertê-los em bits do arquivo de texto, de forma que o mapa desses bits seja somente revelado a partir do algoritmos de uma senha. Esse bit é conhecido como LSB (Least Significant Bit), ou o bit menos significante da cadeia, normalmente o primeiro bit da direita com menos valor, que quando é trocado, normalmente só altera o valor de uma unidade, causando o menos de perda possível na imagem original e por ser de menos valor, o torna o mais aconselhável possível na hora de aplicar um algoritmo de esteganografia.

É meio chover no molhado quando digo que a qualidade da imagem deriva de acordo com a quantidade de pixels da mesma, portanto quando acontece o processo de esteganografia, não ocorre a mudança de tamanho do arquivo, porque não foram inseridos bits extras dentro a imagem, apenas trocaram seus valores, como apresentado no artigo a seguir.


Vamos fazer um pequeno lab utilizando uma ferramentinha chamada steghide para esconder alguns dados dentro de uma imagem aleatória. Ela é Open Source e é capaz e introduzir dados dentro de arquivos de imagens de audio. 

Site do Projeto: http://steghide.sourceforge.net/

Instalando o Steghide

O Steghide está na maioria dos grandes repositórios da maioria das distribuições, ele pode ser baixado diretamente do site do projeto também. 
 # sudo apt-get install steghide  // Debian Distros
 # sudo yum install steghide // Fedora, CentOS/RHEL

Helper --help

 root@fidelis:/home/matheus# steghide --help  
 steghide version 0.5.1  
   
 the first argument must be one of the following:  
  embed, --embed     embed data  
  extract, --extract   extract data  
  info, --info      display information about a cover- or stego-file  
   info <filename>    display information about <filename>  
  encinfo, --encinfo   display a list of supported encryption algorithms  
  version, --version   display version information  
  license, --license   display steghide's license  
  help, --help      display this usage information  
   
 embedding options:  
  -ef, --embedfile    select file to be embedded  
   -ef <filename>    embed the file <filename>  
  -cf, --coverfile    select cover-file  
   -cf <filename>    embed into the file <filename>  
  -p, --passphrase    specify passphrase  
   -p <passphrase>    use <passphrase> to embed data  
  -sf, --stegofile    select stego file  
   -sf <filename>    write result to <filename> instead of cover-file  
  -e, --encryption    select encryption parameters  
   -e <a>[<m>]|<m>[<a>] specify an encryption algorithm and/or mode  
   -e none        do not encrypt data before embedding  
  -z, --compress     compress data before embedding (default)  
   -z <l>         using level <l> (1 best speed...9 best compression)  
  -Z, --dontcompress   do not compress data before embedding  
  -K, --nochecksum    do not embed crc32 checksum of embedded data  
  -N, --dontembedname   do not embed the name of the original file  
  -f, --force       overwrite existing files  
  -q, --quiet       suppress information messages  
  -v, --verbose      display detailed information  
   
 extracting options:  
  -sf, --stegofile    select stego file  
   -sf <filename>    extract data from <filename>  
  -p, --passphrase    specify passphrase  
   -p <passphrase>    use <passphrase> to extract data  
  -xf, --extractfile   select file name for extracted data  
   -xf <filename>    write the extracted data to <filename>  
  -f, --force       overwrite existing files  
  -q, --quiet       suppress information messages  
  -v, --verbose      display detailed information  
   
 options for the info command:  
  -p, --passphrase    specify passphrase  
   -p <passphrase>    use <passphrase> to get info about embedded data  
   
 To embed emb.txt in cvr.jpg: steghide embed -cf cvr.jpg -ef emb.txt  
 To extract embedded data from stg.jpg: steghide extract -sf stg.jpg  
   


Escondendo uma texto dentro de uma imagem JPG

Antes de mais nada, por default a ferramenta não tem suporte para imagens do tipo PNG, portanto você pode utilizar a ferramenta Convert para realizar converter o png em jpg rapidamente. Fizemos um post sobre ela, caso queira saber mais.
 # convert pic.png pic.jpg  

para converter é só passar a imagem como parâmetro -cf  'coverfile' e o texto a ser encriptado no parâmetro -ef 'embedfile'.
 # steghide embed -cf pic.jpg -ef texto.txt  
Você vai precisar inserir uma senha para encriptar a imagem, no caso a extração correta só poderá acontecer caso você tenha a mesma. Depois disso, será gerada uma nova imagem com o conteúdo sobrescrito dentro dos bits da mesma.



Extraindo o arquivo encriptado

Para extrair o arquivo encriptado dentro da imagem que geramos, precisamos utilizar o parâmetro -sf, onde precisaremos informar a senha que utilizamos na criptografia. Mas e aí, como vamos saber se o arquivo que utilizamos abrindo é o mesmo? Antes de extrair podemos consultar o parâmetro info para saber o conteúdo encriptado
 # steghide --info pic.jpg  
Para extrair é simples, como foi dito anteriormente, é só utilizar o extract -sf e informar a senha de criptografia que criamos de antemão para termos acesso a mensagem
 # steghide extract -sf pic.jpg  

Como identificar imagens modificadas? 

Como dissemos, não há um aumento muito significativo no tamanho da imagem dependendo a quantidade de bits, porém a assinatura MD5 do arquivo muda por conta da soma das hashs. Você mesmo pode comprovar. Criei um arquivo original.jpg e uma cópia dele chamada modificado.jpg e comparei as duas hashs dos arquivos. Dentro o modificado.jpg eu inseri um texto criptografado e comparei as duas hashes novamente. Note que não são mais as mesmas. Esse é um jeito bem simples de comparar autenticidade de arquivos, porém existem muitos outros softwares e técnicas forense para identificar essas modificações

:)

7 comentários:

  1. QUE SISTEMA ESTAS UTILIZANDO ?? QUE SISTEMA TAS A UTILIZAR PARA ESTE TUTORIAL????

    ResponderExcluir
  2. Para instalar Steghide no Arch Linux, apenas digite: sudo pacman -S steghide

    ResponderExcluir
  3. Que artigo perfeito! Parabéns pelo conteúdo, brother! Hehehe

    ResponderExcluir
  4. Bom dia a todos que estão lendo esta mensagem

    se você está passando por momentos difíceis ou pobreza
    se você tem dívidas e precisa de ajuda urgente para pagá-las
    se você precisa de dinheiro para iniciar um negócio ou para qualquer situação importante
    Então aconselho você a solicitar o cartão master/ATM já carregado, com este cartão master/ATM você pode fazer saques grátis de até $67.000,00 dólares todas as semanas de 6 meses a 3 anos dependendo dos meses/anos que você precisa. Eu usei esse cartão master/ATM e gosto que você também use e seja feliz. Para obter este cartão master / ATM, entre em contato com o e-mail para respostas imediatas thomasunlimitedhackers@gmail.com

    ResponderExcluir
  5. OPIPLJIVO SVJEDOČANSTVO O PLANIRANJU BOŽIĆNOG KREDITA..

    Ovo nije uobičajena objava koju svakodnevno vidite na internetu kada ljudi daju lažna svjedočanstva i lažne informacije o velikoj financijskoj pomoći.. Svjestan sam da su mnogi od vas prevareni i da su lažni agenti iskoristili one koji traže kredite. Neću ovo nazvati normalnim svjedočanstvom, nazvat ću ovo situacijom u kojoj sam živi svjedok kako možete dobiti svoj kredit nakon što ispunite uvjete i odredbe tvrtke. Nije važno imate li dobar kreditni rejting ili odobrenje vlade, sve što vam treba je važeća osobna iskaznica i važeći IBAN broj kako biste mogli podnijeti zahtjev za kredit s kamatnom stopom od 3%. Minimalni iznos je 1000 eura, a maksimalni iznos koji se može posuditi je 100.000.000 eura. Dajem vam 100% jamstvo da možete dobiti svoj kredit putem ove pouzdane i poštene tvrtke, posluju 24 sata online i daju kredite svim građanima Europe i izvan Europe. Poslali su mi dokument koji je provjeren i testiran kao valjan prije nego što sam dobio kredit, stoga pozivam sve kojima je potreban kredit da posjete ili ih kontaktiraju putem
    E-pošte: michaelgardloanoffice@gmail.com
    WhatsApp za Europu: +385915608706
    WhatsApp za SAD: +1 (717) 826-3251

    Nakon što ih kontaktirate, obavijestite ih da vam je gospođa Dejana Ivica iz Zagreba dala informacije. Vidjeti znači vjerovati i zahvalit ćete mi kasnije kada dobijete kredit od njih. Dao sam obećanje da ću, nakon što dobijem kredit od njih, objaviti dobru vijest svima online. Ako imate prijatelja ili rodbinu, uključujući kolege, možete im reći o ovoj ponudi i da se događa u ovom BOŽIĆNOM DOBU.

    ResponderExcluir