🕵️
StegoLab
Caderno de Práticas de Esteganografia & Análise Forense

📚 1. Fundamentos Teóricos

Esteganografia vs Criptografia:
• Criptografia esconde o significado de uma mensagem (embaralha os dados para que apenas quem tem a chave possa entender). Qualquer um sabe que há uma mensagem.
• Esteganografia esconde a própria existência da comunicação (oculta os dados dentro de um objeto hospedeiro inocente, como uma imagem, áudio ou vídeo).
• A melhor prática: Unir as duas! A esteganografia oculta a existência do canal, e a criptografia com senha (ex: AES-256) garante a confidencialidade mesmo se a técnica for descoberta.

Origem Histórica:

A palavra vem do grego steganos (protegido/oculto) e graphein (escrita). Na Antiguidade, mensagens eram tatuadas no couro cabeludo raspado de mensageiros; após o cabelo crescer, o mensageiro viajava insuspeito. Na era digital, os "cabelos" são os bits imperceptíveis dos arquivos multimídia.

🎨 2. Técnica LSB (Least Significant Bit)

Em imagens digitais coloridas de 24 bits, cada pixel é composto por 3 canais de 8 bits: Vermelho (R), Verde (G) e Azul (B). Cada canal varia de 0 a 255.

Como funciona a substituição LSB:
Considere um canal de cor com valor 204 (em binário: 11001100).
O bit mais à direita é o Bit Menos Significativo (LSB), valendo apenas 1.
Se trocarmos esse último bit de 0 para 1, o valor muda para 205 (11001101).
A diferença na cor de 204 para 205 é de apenas 0,39% — completamente invisível ao olho humano!

Por que usar formatos sem perdas (Lossless como PNG ou BMP)?

⚠️ Alerta Didático Importante:
Formatos como PNG e BMP preservam com precisão matemática o valor de cada pixel. Já o formato JPEG utiliza compressão com perdas (Lossy DCT e quantização). Se você salvar em JPEG após alterar os LSBs, o algoritmo do JPEG descartará pequenas variações de alta frequência, destruindo a mensagem oculta!

Métrica de Qualidade: PSNR (Peak Signal-to-Noise Ratio)

O StegoLab calcula o PSNR em decibéis (dB) entre a imagem original e a imagem esteganográfica. Valores acima de 40 dB indicam que a qualidade é praticamente indistinguível do original. No StegoLab, a substituição de 1 bit alcança tipicamente entre 55 dB e 70 dB!

📁 3. Técnica EOF Injection (Anexação / Polyglot)

Softwares visualizadores de imagens (como navegadores, visualizadores do Windows/Linux) leem os bytes de um arquivo a partir do início e param a leitura no momento em que encontram o marcador oficial de término do formato (End-Of-File).

Marcadores Oficiais de Término (EOF):
• JPEG: Termina com a sequência hexadecimal FF D9 (marcador EOI - End of Image).
• PNG: Termina com o bloco IEND seguido pelo seu CRC-32.
• GIF: Termina com o byte 3B (ponto e vírgula).
• PDF: Termina com o marcador %%EOF.

Se anexarmos dados extras após esse marcador, o visualizador simplesmente ignora os dados excedentes e renderiza a imagem normalmente! No entanto, o sistema de arquivos do computador e ferramentas forenses sabem que o arquivo tem um tamanho maior.

💻 4. Práticas no Terminal Linux

Você pode testar esses mesmos conceitos utilizando comandos nativos do terminal:

Prática A: Criando um Polyglot JPEG + ZIP com o comando cat

# 1. Navegue até a pasta de amostras cd /home/dev/stegolab/samples # 2. Concatene a imagem JPEG com o arquivo ZIP cat hospedeiro.jpg cofre.zip > imagem_polyglot.jpg # 3. Abra como imagem: ela abre perfeitamente! # 4. Descompacte com o utilitário unzip: unzip imagem_polyglot.jpg -d resultado_unzip/ # 5. Veja os arquivos que foram descompactados de dentro da foto: ls -la resultado_unzip/

Prática B: Investigando com Hexdump e Strings

# Veja onde o arquivo ZIP começa dentro da imagem: xxd imagem_polyglot.jpg | grep "PK" # Procure por textos e arquivos ocultos: strings imagem_polyglot.jpg | grep -i "txt"

Prática C: Utilizando a CLI oficial do StegoLab

# Esconder mensagem em PNG com senha: /home/dev/stegolab/cli.py lsb-hide -i /home/dev/stegolab/samples/paisagem.png \ -m "Chave Secreta: 12345" -p "MinhaSenhaForte" -o segredo.png # Extrair a mensagem: /home/dev/stegolab/cli.py lsb-extract -i segredo.png -p "MinhaSenhaForte" # Executar análise forense e cálculo de entropia de Shannon: /home/dev/stegolab/cli.py analyze -i segredo.png

🏆 5. Desafios Práticos (Exercícios para a Turma)

Desafio 1: O Segredo Invisível (LSB)

Objetivo: Baixe o arquivo paisagem.png da aba 'Amostras'. Use a aba 'Ocultar em Imagem (LSB)' para esconder a frase: "A esteganografia protege a privacidade." sem senha. Em seguida, troque a imagem com um colega de turma e peça para ele extrair a mensagem na aba 'Extrair & Revelar'.

Desafio 2: A Importância da Senha (Princípio de Kerckhoffs)

Objetivo: Oculte uma mensagem confidencial usando uma senha forte (ex: Aluno#2026!). Peça para o colega tentar extrair sem senha ou com uma senha incorreta. O que o sistema responde? Por que a combinação de LSB + AES-256 é superior a apenas LSB?

Desafio 3: O Cavalo de Troia (EOF Injection)

Objetivo: Na aba 'Arquivo dentro de Arquivo', mescle a foto hospedeiro.jpg com o arquivo desafio_secreto.txt protegido por senha. Em seguida, submeta o arquivo na aba 'Análise Forense & Entropia'. Observe o alerta de bytes excedentes após o marcador FF D9!