Difference between revisions of "Esteganografia"
Line 224: | Line 224: | ||
./truepolyglot szippdf --pdffile a3.pdf --zipfile gotcha.zip --acrobat-compatibility 6.pdf | ./truepolyglot szippdf --pdffile a3.pdf --zipfile gotcha.zip --acrobat-compatibility 6.pdf | ||
+ | |||
+ | |||
+ | ./truepolyglot zipany --payload1file putty.exe --zipfile logo.zip saida.zip |
Revision as of 12:13, 31 October 2019
Contents
Esteganografia em Imagens
Esteganografia Digital é a arte de ocultar informações no interior de arquivos como imagens, áudio e até mesmo vídeos. O foco da Esteganografia é camuflar a mensagem mascarando a sua presença.
A diferença principal entre criptografia e esteganografia, é o fato da primeira existir a presença de uma mensagem na forma codificada, enquanto que na esteganografia esta informação não é visível. Uma mensagem criptografada permite ser detectada e até mesmo modificada caso seja interceptada. Com apenas a utilização da criptografia, a informação cifrada pode ser ilegível, mas este fato remete a existência de um segredo naquela cifra.
- Segurança e privacidade na internet por esteganografia em imagens (artigo: download)
Least Significant Bit
Às vezes abreviado como LSB, o bit menos significativo é o bit mais baixo em uma série de números em binário; o LSB está localizado na extremidade direita de uma string. Por exemplo, no número binário 10111001, o bit menos significativo é o mais à direita 1.
A nível de estrutura da imagem, abaixo temos um esquema da posição dos bits da mesma em relação as áreas de dados. Repare que os locais ideais para se inserir dados esteganografados em imagens são:
Texto: metadados, área de dados ou após o fechamento da imagem Visual: área de dados da imagem
Análise de imagens
Ao analisar uma imagem com indícios de esteganografia, é ideal seguir este mindset para descoberta dos dados ocultos:
- Metadados (exiftool) - Cabeçalho (file, xxd, strings, okteta) - Assinatura (steghide) - Visual (stegsolve, GIMP, Photoshop e etc)
Exercícios
Ferramentas
Esteganografia em audio
Como já comentamos, a Esteganografia é a arte de esconder "uma mensagem secreta" (seja ela texto, imagem, áudio e vídeo) em outro conteúdo, texto, imagem, áudio e vídeo.
Nesta seção iremos abordar a esteganografia em áudio, e para isso precisamos primeiramente entender o funcionamento dos sons e como estes são percebidos pelos seres humanos.
A chave para todos os métodos que discutiremos é o Sistema Auditivo Humano. Devido à sua anatomia, o ouvido humano pode captar as vibrações de uma membrana entre a faixa de freqüência de 20 Hz e 20 kHz. O intervalo real para uma pessoa pode variar com base em vários fatores, como idade, sexo e saúde. Por exemplo, o limite superior para um adulto de meia-idade geralmente é de 12 a 15 kHz e se degrada ainda mais com a idade. Além disso, o alcance da audição para os homens se degrada mais rapidamente do que o das mulheres.
Já o alcance de audição para animais é diferente dos humanos. Por exemplo, com suas orelhas grandes, um elefante pode ouvir “infra-sons” (sons menores que o alcance humano de 20 Hz), como um batimento cardíaco de 1 ou 2 Hz. E da mesma forma, os cães podem ouvir "ultrassons" (sons mais altos que o limite humano de 20000 Hz), como um apito de cachorro.
Desta forma podemos inferir que uma das formas de esteganografar um conteúdo em um áudio seria inserir sons em frequências baixas (infrassons) e/ou altas (ultrassons).
Aplicação da Esteganografia em Ads
Em 2014, descobriu-se que uma empresa indiana de publicidade, a SilverPush, estava usando meios inescrupulosos para rastrear usuários em vários dispositivos. Todos os aplicativos que usaram o SDK do SilverPush puderam ouvir os “sinalizadores de áudio” através do microfone do telefone para facilitar um rastreamento mais eficaz do hábito do usuário. Esses áudios eram secretamente transmitidas como ondas sonoras ultrassônicas vindas do anúncio da empresa veiculado na televisão ou em um navegador da Web executado em um computador. Esses gatilhos secretos eram, obviamente, imperceptíveis para os proprietários dos dispositivos.
No início de 2018, a Amazon anunciou que havia tomado medidas para garantir que os dispositivos do Amazon Echo na casa dos espectadores não fossem ativados inadvertidamente durante o anúncio do Super Bowl para dispositivos Alexa. Especula-se que a Amazon fez uso inteligente da faixa de freqüência acústica para conseguir isso.
O ponto a ser observado aqui é que o mesmo conceito pode ser estendido a ondas de áudio inaudíveis de fontes aparentemente inócuas, como a televisão, que podem interagir com dispositivos domésticos inteligentes sem o conhecimento dos proprietários do dispositivo.
O Caso do The Mosquito
Você já ouviu falar do The Mosquito? Ele um dispositivo eletrônico usado em alguns países para impedir que os jovens se reúnam, principalmente fora de lojas e mercados, e espera reduzir o comportamento anti-social, como vadiagem e vandalismo. Funciona com base no princípio simples de que o alcance da audição para os humanos se deteriora com a idade. Assim, os ultrassons que o The Mosquito produz só podem ser ouvidos pelos jovens. Para causar um leve desconforto, essas ondas de áudio também podem ser transmitidas em níveis mais altos de pressão sonora.
Aproveitando-se do fato de que os celulares geralmente são capazes de produzir e gravar ultrassons, alguns adolescentes gravaram os sons do The Mosquito em seus smartphones e começaram a usá-lo como toque de chamada para poder usar telefones nas salas de aula. Este toque também está comercialmente disponível agora.
O ponto a ser levado em conta é que, se o público-alvo ou o destinatário da mensagem for jovem, você poderá usar intervalos de ultrassom próximos para codificar sua mensagem “secreta”.
Abaixo está uma amostra de áudio para replicar o efeito "Toque do Mosquito". Você pode usá-lo para ver se consegue ouvir o som infame do “Teen Buzz”
17,4 kHz para faixa etária abaixo de 23 anos:
21 kHz para faixa etária abaixo de 20 anos:
Métodos de Esteganografia em áudio
Assim como em imagens, na Esteganografia em áudio também utilizamos o método LSB explicado no início desta página. Porém note que a mudança no LSB afeta a cor tão levemente que a mudança na cor geralmente não é perceptível ao olho humano. No entanto, o ouvido humano é mais sensível a pequenas alterações no som e, portanto, o "ruído" que estamos adicionando teria uma chance maior de ser notado. Para superar esse problema dessa forma trivial do algoritmo LSB, muitos pesquisadores sugeriram variantes que aumentam a robustez no domínio de áudio.
Implementação do algoritmo LSB em Python
Vamos implementar esse método com alguns dados de som como nosso sinal de portadora que carregaria nosso texto secreto. Como nossos dados de som, utilizaremos a amostra de música abaixo, que será a portadora da nossa mensagem de texto secreta, "Peter Parker é o Homem-Aranha!".
Arquivo de áudio inicial
A manipulação de bits subjacente no LSB é bastante simples. Nós executaremos a operação AND lógica entre cada byte de áudio da portadora (a “música”) e uma máscara de bits que redefine o LSB do byte portador.
Em seguida, executaremos uma operação OR lógica simples entre o byte transportador modificado e o próximo bit (0 ou 1) da mensagem secreta.
Usaremos o formato de arquivo de áudio .wav para nossa música de operadora. O Wave é um dos formatos de compactação sem perdas mais populares. O Python possui uma biblioteca nativa chamada “wave” que nos fornece ferramentas básicas para manipular dados de áudio. Abaixo do código é usado pelo remetente para incorporar a mensagem de texto secreta. O código é suficientemente comentado para explicar o processo passo a passo.
# We will use wave package available in native Python installation to read and write .wav audio file import wave # read wave audio file song = wave.open("song.wav", mode='rb') # Read frames and convert to byte array frame_bytes = bytearray(list(song.readframes(song.getnframes()))) # The "secret" text message string='Peter Parker is the Spiderman!' # Append dummy data to fill out rest of the bytes. Receiver shall detect and remove these characters. string = string + int((len(frame_bytes)-(len(string)*8*8))/8) *'#' # Convert text to bit array bits = list(map(int, ''.join([bin(ord(i)).lstrip('0b').rjust(8,'0') for i in string]))) # Replace LSB of each byte of the audio data by one bit from the text bit array for i, bit in enumerate(bits): frame_bytes[i] = (frame_bytes[i] & 254) | bit # Get the modified bytes frame_modified = bytes(frame_bytes) # Write bytes to a new wave audio file with wave.open('song_embedded.wav', 'wb') as fd: fd.setparams(song.getparams()) fd.writeframes(frame_modified) song.close()
Como a saída do código acima, obtemos o arquivo de áudio abaixo que contém o texto secreto embutido nele. Há algum ruído perceptível neste arquivo de áudio. Como um experimento, você poderia tentar incorporar cada segundo ou terceiro byte de áudio da operadora com um bit do segredo e ver se isso obtém um resultado mais robusto.
Arquivo de áudio final
Para extrair o segredo desse áudio, o receptor deve executar o código Python abaixo.
# Use wave package (native to Python) for reading the received audio file import wave song = wave.open("song_embedded.wav", mode='rb') # Convert audio to byte array frame_bytes = bytearray(list(song.readframes(song.getnframes()))) # Extract the LSB of each byte extracted = [frame_bytes[i] & 1 for i in range(len(frame_bytes))] # Convert byte array back to string string = "".join(chr(int("".join(map(str,extracted[i:i+8])),2)) for i in range(0,len(extracted),8)) # Cut off at the filler characters decoded = string.split("###")[0] # Print the extracted text print("Sucessfully decoded: "+decoded) song.close()
Implementando Esteganografia em áudio utilizando SSTV
SSTV é um acrônimo para Slow-Scan Television, que é um método muito popular na transmissão de rádio para enviar dados de imagem a longa distância via propagação ionosférica. O SSTV permite a transmissão de imagens em locais em que há pouca largura de banda disponível, por exemplo, na linha Pluste Old Telephone Service (POTS). Na verdade, a missão lunar Apollo 11 usava SSTV para transmitir imagens de volta à Terra.
O SSTV é baseado na modulação de freqüência analógica, que analisa o brilho de cada pixel e aloca uma freqüência de áudio diferente para ele. Normalmente, o SSTV é usado para transferir imagens em escala de cinza, também podemos usá-lo para transferir imagens coloridas com alguma perda na resolução da imagem.
O wiki do Amateur-Radio tem uma lista de alguns dos softwares SSTV disponíveis em diferentes plataformas. András Szentkirályi criou um pacote Python chamado PySSTV que gera arquivos de onda modulada SSTV para arquivos de imagem. Você pode usar o pip para instalar este pacote.
pip install pysstv
Depois de instalar o pacote, você pode executar o comando abaixo para converter um arquivo de imagem (image.jpg) em um arquivo de áudio modulado SSTV (audio.wav).
python -m pysstv /path/to/image.jpg /path/to/audio.wav
O produto da nossa codificação foi esse: áudio
Você pode ainda especificar os modos e outros parâmetros ao converter a imagem.
Agora você pode reproduzir este áudio no seu computador usando qualquer reprodutor de mídia. Porém para decodificar o áudio eu recomendaria a instalação de algum aplicativo em seu celular que possa extrair a imagem de volta ouvindo o nosso “audio.wav” através do microfone do telefone.
Um excelente app para Android é o Robot36, disponível na PlayStore.
Como exemplo, codifiquei a imagem abaixo usando PySSTV e obtive o áudio codificado.
Esteganografia baseada em modulação de frequência
...continua ;)
Esteganografia em vídeo
em breve
Polyglots (arquivos amórficos)
Disponível no GitHub:
git clone https://git.hackade.org/truepolyglot.git/
Exemplo de uso:
./truepolyglot szippdf --pdffile a3.pdf --zipfile gotcha.zip --acrobat-compatibility 6.pdf
./truepolyglot zipany --payload1file putty.exe --zipfile logo.zip saida.zip