Criptografia Numaboa

A fraude do Camouflage

Dom

20

Mar

2005


16:18

  • Imprimir
(17 votos, média 4.71 de 5) 


O software Camouflage é um dos mais primários em termos de esteganografia. Adiciona dados no final de arquivos de diversos tipos usando um método que, para ser muito gentil, é uma babaquice: um simples XOR smile

Para quem não está familiarizado com as lidas criptográficas (e esteganográficas), estas afirmações parecem sem sentido ou coisa de sociedades herméticas. Se você não sabe o que é um XOR, sugiro que dê uma olhada no texto da seção de Informática - Oráculo de Referências - Gerais e leia Lógica Booleana antes de continuar. Se você já sabe, então vamos lá!

A seguir estão três imagens no formato gif: mosquito.gif (a imagem original), mosquitoC.gif (a imagem com texto camuflado sem senha) e mosquitoCP.gif (a imagem com texto camuflado protegido pela senha "numaboa").

Mosquito 1
Gif original (2,3 Kb)
Mosquito 2
Gif + texto (3,4 Kb)
Mosquito 3
Gif + texto + senha (3,4 Kb)

O TAMANHO DOS ARQUIVOS

A primeira coisa que chama a atenção é o tamanho dos arquivos. Se o criptoanalista não possuir a imagem original, este fator não é relevante, mas não deixa de ser um ponto fraco do método.


LOCALIZANDO O TEXTO ADICIONADO

Sabendo que qualquer arquivo gif possui uma "assinatura de fim de arquivo" constituída pelos valores hexadecimais 00 3B (assim como arquivos jpg possuem os terminadores FF D9), ao se inspecionar num editor hexadecimal as imagens que contêm texto, encontra-se muitos bytes após o ponto onde o arquivo deveria terminar (destacado em azul). A seguir, encontra-se um bloco de dados que contém alguns valores de cabeçalho do camouflage e o texto cifrado (destacado em vermelho). Este, por sua vez, é seguido por um longo bloco de 20 (valor hexadecimal do ASCII do caracter "espaço"), interrompido em três pontos por mais alguns dados.

Observe a listagem abaixo que corresponde à imagem mosquitoC.gif, que contém texto cifrado sem senha:

2384                                    00 3B 20 00 5C
2400   E0 C2 01 E0 6F 82 F3 2F 2E C5 01 30 F6 AC 47 58
2416   E0 C2 01 E0 7D 2E F6 D6 00 00 00 43 B5 3B 4E 68
2432   C3 7D 80 C1 81 CA 08 41 0D F1 D2 B9 00 39 27 1A
2448   D6 11 31 8D 53 A2 0C E8 48 8B DC 8C 96 3B BD 6C
2464   6E CF E0 99 BA 5F 2D 76 32 76 41 07 96 00 EB 45
2480   ED 97 A0 CA CD 8F E9 77 CC 4C 09 86 15 04 4E 15
2496   99 A7 85 F1 BD 27 F1 2E AE 26 0C 41 1B CB 6A F7
2512   BA 5C 90 AD D3 46 04 72 B6 B6 E2 F0 5B 8F DC 8C
2528   E3 0F 45 A4 E7 0D AC 3E 73 65 9C C4 3F 78 01 78      Alguns dados
2544   66 E2 4F 22 CF 5B 43 FF CD F1 FC A9 16 DE 5B AB      + texto cifrado
2560   5E B4 94 5E 2A 5C 72 4F F4 56 D9 5D 17 30 95 24
2576   EC 2C B1 45 74 98 03 F4 7D FD 4D DE 49 CB 75 0E
2592   A2 F5 7D FE 76 4F 10 5D F6 7E 97 7B 7E 65 02 03
2608   3E 23 B5 FE DC A9 1A A4 F9 1B DC 92 E0 A1 B4 59
2624   AA AE E9 9E CB 88 EA 3D 21 1E 79 46 0A 5D F8 36
2640   A5 FF FF FF FF 20 00 23 2E C5 01 E0 D7 0D 8B 2F
2656   2E C5 01 90 85 DF 34 23 2E C5 01 90 98 1B 8B 61
2672   F4 17 4D 79 C0 78 80 86 AA E0 11 45 1C EA D6 B7
2688   11 32 27 20 20 20 20 20 20 20 20 20 20 20 20 20
2704   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2720   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2736   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2752   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2768   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2784   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2800   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20      Buffer vazio
2816   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2832   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2848   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2864   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2880   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2896   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2912   20 20 20 20 20 20 20 20 20 20 20 20 20 20 6F FA
2928   09 53 79 CF 60 8E CF A8 D6 03 20 20 20 20 20 20      Alguns dados
2944   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2960   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2976   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2992   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3008   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3024   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3040   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3056   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3072   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20      Buffer vazio
3088   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3104   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3120   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3136   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3152   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3168   20 20 20 20 20 20 20 20 20 20 20 20 20 D6 00 00
3184   00 5D 09 00 00 02 00 20 20 20 20 20 20 20 20 20      Alguns dados
3200   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3216   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3232   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3248   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3264   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3280   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3296   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3312   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20      Buffer vazio
3328   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3344   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3360   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3376   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3392   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3408   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3424   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3440   20 20 20 20 20 20 74 A4 54 10 22 97 20 20 20 20      Alguns dados
3456   20 20 20 20 20 20 20 20 20 20

Os dados não precisam ser dissecados, pois não são importantes para quebrar este sistema capenga. Apenas como curiosidade, o comprimento do texto embutido na imagem aparece duas vezes - está destacado com sublinhado.


O ENGODO DA SENHA

Se compararmos os valores hexadecimais do arquivo que esconde o texto SEM senha e do arquivo que esconde o texto COM senha, dá vontade de rir. Os textos cifrados (que ficam no primeiro bloco de dados) são IDÊNTICOS, ou seja, a senha não foi usada para nada :crazy: A única diferença entre as duas imagens está na segunda "ilha" de dados:

3168   20 20 20 20 20 20 20 20 20 20 20 20 20 D6 00 00
3184   00 5D 09 00 00 02 00 20 20 20 20 20 20 20 20 20      Sem senha
3200   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

3168   20 20 20 20 20 20 20 20 20 20 20 20 20 D6 00 00
3184   00 5D 09 00 00 02 00 6C E0 17 43 6E C9 75 20 20      Com senha
3200   20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

Comparando-se os dois trechos, observamos que foram adicionados 7 bytes, exatamente o tamanho da senha utilizada ("numaboa") - um sinal claro de que o método é fraco.

Conhecendo-se a localização da senha, é de se supor que o buffer que a segue deve servir apenas para armazenar senhas e que o tamanho máximo da senha seja de 255 bytes. Efetivamente, se ocultarmos um texto usando como senha a letra a repetida 255 vezes, o resultado será:

3168   20 20 20 20 20 20 20 20 20 20 20 20 20 D6 00 00
3184   00 5D 09 00 00 02 00 63 F4 1B 43 6D C7 75 80 80
3200   AE DE 04 41 0E FF D2 F8 04 2B 32 9A 97 14 35 CC
3216   42 AC 1F FD 48 86 9D 83 98 2C B3 23 2F 67 A1 99
3232   FB 7D 03 59 15 45 61 34 BE 20 AA 60 C3 D6 92 EE
3248   EB BC CD 52 E2 01 48 92 19 45 5F 1B 8A B2 85 FC
3264   FC 22 F5 2B A6 24 0C 44 15 8A 6A F9 A8 1D 9D A9
3280   DB 53 0A 61 B2 A4 A3 F5 55 CE D1 84 F4 1C 4B E5
3296   C5 3E 84 0F 46 4B BA F7 1F 5F 29 58 27 AE 0E 10
3312   CB 5D 50 FB C8 FF EE E8 12 D2 58 AB 53 B4 91 50
3328   38 1D 63 4F E7 56 98 4A 1F 30 93 20 E0 6D B5 04
3344   74 96 11 B5 78 F9 41 DE 41 D9 34 06 AD E0 79 ED
3360   72 5D 02 5D F3 70 85 3A 7A 69 43 01 2D 2B A4 EB
3376   D2 A4 14 A2 F1 1B 93 D3 D7 A9 B1 59 EB A3 E7 91
3392   CD 88 AB 3D 2F 5F 68 48 19 48 F8 3B E5 B4 DB 3F
3408   B4 F3 1B 59 9B B1 01 8D 94 46 DB 8F D6 BF FE FA
3424   BF 04 B5 17 58 17 FD BB 09 EC C9 C1 C7 7F B8 BA
3440   6E 2C CA F3 AC 10 74 A4 54 10 22 97 20 20 20 20

Se a senha constituída por 255 letras a foi armazenada no buffer da senha com bytes uns diferentes dos outros, o que vem imediatamente à cabeça é que a senha deve ter sido modificada por uma string também de 255 caracteres. O modo mais simples (e ingênuo) de "casar" esta string com a senha é fazendo a operação lógica XOR entre os bytes da senha e os bytes da string "secreta".

Como a operação XOR é reversível, se repetirmos as operações XOR dos bytes do buffer com o byte 61 (valor hexadecimal do ASCII da letra a), o resultado será a... string secreta original :) Assim, os primeiros 16 bytes do buffer da senha XORados com 61 resultam em

          63 F4 1B 43 6D C7 75 80 80 AE DE 04 41 0E FF D2
  XOR     61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
         -------------------------------------------------
   =      02 95 7A 22 0C A6 14 E1 E1 CF BF 65 20 6F 9E B3

O conteúdo total do buffer XORado, ou seja, a string ou chave "secreta" revela-se a seguinte:

          02 95 7A 22 0C A6 14 E1 E1 CF BF 65 20 6F 9E B3
          99 65 4A 53 FB F6 75 54 AD 23 CD 7E 9C 29 E7 FC
          E2 F9 4D D2 42 4E 06 C0 F8 9A 1C 62 38 74 24 00
          55 DF 41 CB 01 A2 B7 F3 8F 8A DD AC 33 83 60 29
          F3 78 24 3E 7A EB D3 E4 9D 9D 43 94 4A C7 45 6D
          25 74 EB 0B 98 C9 7C FC C8 BA 32 6B 00 D3 C5 C2
          94 34 AF B0 E5 95 7D 2A 84 A4 5F E5 6E 27 2A DB
          96 7E 3E 48 39 46 CF 6F 71 AA 3C 31 9A A9 9E 8F
          89 73 B3 39 CA 32 D5 F0 31 59 7C 02 2E 86 37 F9
          2B 7E 51 F2 41 81 0C D4 65 15 F7 70 D4 19 98 20
          BF 20 B8 55 67 CC 81 18 8C 13 3C 63 3C 92 11 E4
          5B 1B 08 22 60 4C 4A C5 8A B3 C5 75 C3 90 7A F2
          B2 B6 C8 D0 38 8A C2 86 F0 AC E9 CA 5C 4E 3E 09
          29 78 29 99 5A 84 D5 BA 5E D5 92 7A 38 FA D0 60
          EC F5 27 BA EE B7 DE 9F 9B DE 65 D4 76 39 76 9C
          DA 68 8D A8 A0 A6 1E D9 DB 0F 4D AB 92 CD 71

Se voltarmos para a imagem que contém o texto cifrado com senha de 7 bytes e realizarmos um XOR destes bytes com os 7 primeiros da chave "secreta", obteremos o seguinte resultado:

     senha     6C E0 17 43 6E C9 75
      XOR      02 95 7A 22 0C A6 14
              ----------------------
       =       6E 75 6D 61 62 6F 61

     ASCII      n  u  m  a  b  o  a

Esta foi muuuito fácil. Agora é só repetir a operação com o bloco que contém alguns dados e o texto cifrado para extrair a mensagem embutida na imagem, ou seja:

2416                                         43 B5 3B 4E 68
XOR chave                                    02 95 7A 22 0C
                                            ----------------
   =                                         41 20 41 6C 64
ASCII                                         A     A  l  d

2432        C3 7D 80 C1 81 CA 08 41 0D F1 D2 B9 00 39 27 1A
XOR chave   A6 14 E1 E1 CF BF 65 20 6F 9E B3 99 65 4A 53 FB
           -------------------------------------------------
   =        65 69 61 20 4E 75 6D 61 62 6F 61 20 65 73 74 E1
ASCII        e  i  a     N  u  m  a  b  o  a     e  s  t  á

2448        D6 11 31 8D 53 A2 0C E8 48 8B DC 8C 96 3B BD 6C
XOR chave   F6 75 54 AD 23 CD 7E 9C 29 E7 FC E2 F9 4D D2 42
           -------------------------------------------------
   =        20 64 65 20 70 6F 72 74 61 6C 20 6E 6F 76 6F 2E
ASCII           d  e     p  o  r  t  a  l     n  o  v  o  .

2464        6E CF E0 99 BA 5F 2D 76 32 76 41 07 96 00 EB 45
XOR chave   4E 06 C0 F8 9A 1C 62 38 74 24 00 55 DF 41 CB 01
           -------------------------------------------------
   =        20 C9 20 61 20 43 4F 4E 46 52 41 52 49 41 20 44
ASCII           É     a     C  O  N  F  R  A  R  I  A     D

2480        ED 97 A0 CA CD 8F E9 77 CC 4C 09 86 15 04 4E 15
XOR chave   A2 B7 F3 8F 8A DD AC 33 83 60 29 F3 78 24 3E 7A
           -------------------------------------------------
   =        4F 20 53 45 47 52 45 44 4F 2C 20 75 6D 20 70 6F
ASCII        O     S  E  G  R  E  D  O  ,     u  m     p  o

e assim por diante...

Só Deus sabe porque o autor deste método horroroso cifrou também a senha. Aliás, nem é preciso conhecer a senha que o usuário utilizou para retirar o texto de qualquer arquivo (imagem, som, texto, etc e tal). É só pregar o chinelo com texto oculto XOR chave para obter o texto claro.

Se você quiser saber o texto na íntegra que está escondido nas imagens mosquitoC.gif e mosquitoCP.gif, copie as imagens, abra qualquer delas num editor hexadecimal, retire o texto cifrado e faça o XOR com a chave que você já conhece. Tá feito o jogo wink

Existem mais alguns pormenores desta história que talvez sejam de interesse. Se você ainda tiver paciência, leia na próxima página.


Em 2002 surgiram os primeiros boatos de que a Al Qaeda estava usando métodos de esteganografia para ocultar mensagens terroristas em gráficos espalhados pela Internet. Aproveitando o furor causado pelas falsas informações, devidamente vitaminadas por jornalistas inescropulosos, em 11 de setembro deste mesmo ano, o "gênio" de criptógrafo que inventou esta maravilha de "método" foi entrevistado no show "Le Journal des Bonnes Nouvelles" do "Canal Plus". Fizeram uma "demonstração" de um software de esteganografia "famoso" e "inquebrável, mesmo pela NSA", que escondia dados de uma "forma totalmente indetectável" e que era "ilegal". Adivinhou, era o Camouflage smile

Alguns criptoanalistas amadores, entre eles Guillermito, Kaski e ViKTORY, precisaram apenas de algumas horas para detonar o Camouflage. E não foi só isto. Colocaram à disposição programas que extraem o texto claro de qualquer arquivo "camuflador". No site do PaketStorm há também um script Perl, da autoria de Andrew Christensen, que faz o mesmo serviço. Todo estes softwares encontram-se à disposição na seção de downloads da Aldeia.

MORAL DA HISTÓRIA: não acredite em tudo que você ouve ou vê na tevê e na Internet. Pode ser a maior fria.

Abraços a todos e tenham um bom dia

vovo vovó Vicki

вулкан казино бесплатнокерамическая сковорода купитьотзывы полигон сотрудников лобановский александрказан это посудаколпачок скруткаполигон ооо