ctf starter pack - wiki.imesec.ime.usp.br
TRANSCRIPT
Um guia inicial para competiccedilotildees Capture The Flag
IntroduccedilatildeoComo identificar uma flagCriptografia
O que eacute criptografiaCifra de CeacutesarCifras de Substituiccedilatildeo SimplesCifra de VigenegravereOne-Time PadCifras de Transposiccedilatildeo
CoacutedigosDados e coacutedigosCoacutedigo ASCIIBase64
EsteganografiaCifra de BaconInterpretar imagem como textoLSB Least Significant BitsImagem em aacuteudioO que eacute esteganografia
Sites para treinarBandit
CTF Starter Pack
Este guia destina-se a entusiastas de seguranccedila da informaccedilatildeo e que desejam participar de CTFs
CTF significa Capture the Flag No contexto de seguranccedila da informaccedilatildeo satildeo competiccedilotildees queenvolvem diversas aacutereas como descoberta de vulnerabilidades teacutecnicas de espionagem e criaccedilatildeode exploits e ferramentas
De maneira geral nessas competiccedilotildees os jogadores satildeo apresentados a problemas programascom falhas de seguranccedila ou sistemas para serem invadidos Em cada problema programa ousistema haacute uma chave secreta ou flag Encontrar essa flag eacute a prova que vocecirc resolveu odesafio e enviando no campo especificado faz seu time ganhar pontos
Os CTFs satildeo divididos em dois tipos
Todos os times recebem uma Maacutequina Virtual com algumas falhas de seguranccedila O objetivo eacutecapturar as flags atraveacutes das vulnerabilidades dos outros times e protegendo seu proacuteprio time deinvasotildees corrigindo suas falhas de seguranccedila
Introduccedilatildeo
O que satildeo CTFs
Tipos de CTFs
Attack-defense
Jeopardy-sytle
Todos satildeo apresentados a questotildees de diversas categorias niacuteveis de dificuldades e pontuaccedilotildeestambeacutem chamadas de challenges As categorias variam de competiccedilatildeo para competiccedilatildeo asprincipais satildeo
Crypto Envolvem problemas relacionados a criptografiaStegano Esteganografia eacute a arte de esconder em plena vista e que envolve basicamentemensagens escondidas em outras mensagensForensics Eacute uma aacuterea ampla que pode incluir anaacutelise de formato de arquivos memory dumps e pacotes e ateacute esteganografiaReversing Satildeo desafios de engenharia reversa Envolvem encontrar vulnerabilidades dealgum programa que vocecirc natildeo possui o coacutedigoWeb Hacking Envolvem atacar vulnerabilidades comuns no ramo de tecnologia webProgramming Testam sua habilidade de criar scriptsMiscellaneous Problemas variados e normalmente com baixa pontuaccedilatildeo
Esses eventos ocorrem em vaacuterios periacutedos e lugares sendo organizados por pessoas diferentesAlguns podem acontecer remotamente (on-line) ou presencialmente (on-site)
Uma oacutetima plataforma para acompanhar as datas das principais competiccedilotildees eacute o CTFtime
O melhor jeito de se preparar para essas competiccedilotildees eacute praticando
Abaixo estaacute uma lista de alguns sites com oacutetimo conteuacutedo para treinar
Para auxiliar esse processo este guia pretende abordar alguns conceitos baacutesicos para resolveresses desafios de forma didaacutetica e raacutepida
Quando ocorrem os CTFs
Como se preparar para CTFs
E ainda uma oacutetima forma de treinar eacute observar resoluccedilotildees (ou write-ups) de desafios que vocecircnatildeoconseguiu ou quer ver outra resoluccedilatildeo dele
Alguns dos sites abaixo seratildeo usados como exerciacutecio para este guia
Plataforma com desafios de diversas aacutereas e dificuldades
Site com diversos wargames onde eacute necessaacuterio conectar no respectivo servidor por meio doterminal O desafio Bandit eacute muito recomendado para aprender comandos de Linux
A ediccedilatildeo 2018 de uma competiccedilatildeo muito famosa e voltada para estudantes Apresenta oacutetimosdesafios introdutoacuterios e de diversas aacutereas
Plataforma voltada para invasatildeo de maacutequinas simula cenaacuterios reais de pentest Possui tambeacutemalguns desafios de vaacuterias aacutereas como os outros e eacute preciso hackear o site para conseguir ologin
Onde treinar
WeChall
OverTheWire
picoCTF 2018
Hack The Box
Referecircncias
CTF-BR
OpenCTF
Trail of Bits
CTFtime
Todo challenge de um CTF costumar ter pelo menos uma chave-secreta como repostanormalmente chamada de flag
O formato de como essa flag eacute apresentada varia de competiccedilatildeo para competiccedilatildeo Muitas vezes eacuteuma string bem distintiva de forma que quando vocecirc ver uma saberaacute que eacute uma flag Aleacutemdisso a competiccedilatildeo costuma explicitar o formato de flag que deveraacute ser enviado
Por exemplo flags podem estar expliacutecitas como
Assim a flag eacute flagM4C4L191Jd912 ou M4C4L191Jd912 dependendo da competiccedilatildeo
Elas podem ser indicadas por uma frase como
Assim a flag eacute ABidaBBeBelaB
Ou apenas um sentenccedila compreensiacutevel como
Assim a flag eacute a proacutepria sentenccedila ther5s_n0_Place_l1ke_h0m3
Mesmo assim podem existir vaacuterias outras formataccedilotildees diferentes para uma flag como um link ouuma expressatildeo matemaacutetica Mas essas apresentadas seratildeo as mais comuns
WeChall get sourced
Como identificar uma flag
flagM4C4L191Jd912
The answer is ABidaBBeBelaB
ther5s_n0_Place_l1ke_h0m3
Exerciacutecios
Aprenda as teacutecnicas de criptografia e como abordaacute-las em CTFs Desde a criptografia claacutessica dascifras ateacute a criptografia moderna das chaves puacuteblicas
Criptografia
Criptografia
Criptografia vem do grego kryptoacutes e graphein que significam secreta e escritarespectivamente Ateacute a era moderna ela era sinocircnimo de encriptaccedilatildeo que eacute a conversatildeo de umamensagem legiacutevel para algo aparentemente sem sentido e eacute esse o conceito usado em CTFs
Para entender melhor essa ideia digamos que Alice quer mandar uma mensagem para Bob semque uma terceira pessoa digamos Eve descubra seu counteuacutedo
Para isso Alice usa um certo algoritmo para tornar a mensagem ilegiacutevel de forma que soacute Bob
saberaacute reverter a mensagem encriptada
Assim quando Eve interceptar a mensagem por meio do canal inseguro se ela natildeo possui oalgoritmo criptograacutefico usado por Alice e Bob ela natildeo seraacute capaz de entender a mensagem
Ao longo da histoacuteria vaacuterias teacutecnicas de ocultar mensagens foram desenvolvidas Antes dacriptografia preacute-computacional a criptografia claacutessica era formada por um conjunto de meacutetodos
O que eacute criptografia
de substituiccedilatildeo e transpoisccedilatildeo de caracteres E com o advento da computaccedilatildeo a criptografia
moderna se tornou amplamente embasada em teorias matemaacuteticas e praacuteticas de ciecircncia dacomputaccedilatildeo
Para esse guia comeccedilaremos com os meacutetodos da criptografia claacutessica
Criptografia
A Cifra de Ceacutesar eacute um dos meacutetodos mais simples e comuns de encriptaccedilatildeo Mesmo natildeo sendomuito comum em CTFs ainda eacute um conhecimento baacutesico de criptografia
Nessa cifra cada letra da mensagem eacute substituida por uma letra do alfabeto deslocado por umnuacutemero fixo
Por exemplo se queremos encriptar a mensagem hack the planet podemos deslocar cada letrado alfabeto 3 vezes para direita (ou right 3) Assim a substituiccedilatildeo teria esse formato
originalABCDEFGHIJKLM
right3DEFGHI J KLMNOP
originalNOPQRSTUVWXYZ
right3QRSTUVWXYZABC
Dessa forma o texto gerado se torna incompreensiacutevel de forma que soacute quem sabe o algoritmousado poderaacute recuperaacute-lo
Cifra de Ceacutesar
Esse meacutetodo tem esse nome pois era usado por Juacutelio Ceacutesar em suascorrespondecircnciasldquo
texto original hack the planet
texto cifrado kdfn wkh sodqhw
Um dos tipos mais comuns de Cifra de Ceacutesar eacute o ROT13 Nele o alfabeto eacute deslocado 13 vezesComo o alfabeto tradicional possui 26 letras o ROT13 possui a propriedade de que o mesmoalgoritmo usado para encripitar a mensagem eacute usado para decriptar
Mensagens encriptadas pela cifra de ceacutesar normalmente produziratildeo um amontoado de caracteressem significado como kdfn wkh sodqhw e suas letras teratildeo uma distribuiccedilatildeo de frequecircncia similaragrave liacutengua usada (provavelmente inglecircs) mas com as letras trocadas Esse conceito seraacute abordadocom mais profundidade em Cifras de Substituiccedilatildeo
Devido a facilidade de quebrar essa cifra pode ser conveniente tentar solucionaacute-la sem nem aomenos uma anaacutelise de frequecircncia
Como num alfabeto usual satildeo usados apenas 26 caracteres a Cifra de Ceacutesar possui apenas 25tipos de rotaccedilotildees possiacuteveis (pois a rotaccedilatildeo 26 eacute a proacutepria mensagem) Assim um testa tudoonde vocecirc faz todos os tipos de rotaccedilotildees possiacuteveis eacute a opccedilatildeo mais simples
Existem ferramentas online muito eficientes para quebrar uma Cifra de Ceacutesar como o site dcodeporeacutem natildeo eacute muito difiacutecil codificar um testa tudo para isso
ROT13
Detectando
Solucionando
Codificando um testa tudo
Primeiro codificaremos uma funccedilatildeo rot() que aplica a rotaccedilatildeo em um caractere de acordo comodeslocamento determinado (o shift )
Assim podemos usar essa funccedilatildeo para criar um caesar_brute_force() que recebe um texto cifradoe imprime todas as rotaccedilotildees possiacuteveis
OverTheWire Krypton 1
OverTheWire Krypton 2
WeChall Caesar
def rot(char shift)
return chr((ord(char) - ord(A) + shift)26 + ord(A))
def caesar_brute_force(cipher_text)
cipher_text = cipher_textupper()
for i in range(26)
line =
for c in cipher_text
line += rot(c i) if cisalpha() else c
print(frotitline)
Exerciacutecios
Criptografia
Agora que vocecirc estaacute familiarizado com a Cifra de Ceacutesar vamos apresentar uma generalizaccedilatildeodesse conceito as cifras de substituiccedilatildeo simples
Em uma cifra de substituiccedilatildeo simples cada letra eacute substituida individualmente de acordo com um alfabeto de substituiccedilatildeo Esse alfabeto pode ser uma rotaccedilatildeo fixa do alfabeto normal (como acifra de Ceacutesar) ou algum embaralhamento mais complexo
Alguns exemplos notaacuteveis de cifra de substituiccedilatildeo simples satildeo
Nessa cifra cada letra eacute mapeada para o alfabeto invertido ou seja a primeira vira a uacuteltima asegunda vira a penuacuteltima e assim por diante
Assim se usarmos essa cifra em may the force be with you obteremos
Cifras de SubstituiccedilatildeoSimples
Cifra de AtbashSeu nome tem origem da primeira uacuteltima segunda e penuacuteltima letra Hebraica(Aleph-Taw-Bet-Shin)ldquo
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
original M A Y T H E F O R C E B E W I T H Y O U
cifrado N Z B G S V U L I X V Y V D R G S B L F
A Cifra de Atbash pode ser interpretada como um caso particular da Cifra de Affine uma cifra queusa aritimeacutetica modular para encriptar
A Cifra da Palavra-Chave ou keyword cipher consiste em escolher uma chave e usaacute-la para decidircomo as letras seratildeo susbtituidas
As palavras repetidas dessa chave seratildeo removidas e a proacutepria chave seraacute o comeccedilo do alfabeto aser mapeado O resto das letras continuaratildeo em ordem alfabeacutetica tirando as letras jaacute usadas
Por exemplo escolhendo a chave Marvin o novo alfabeto teraacute esse formato
Assim ao encriptar a mensagem Arthur Dent obteremos
Como mencionado na seccedilatildeo de Cifra de Ceacutesar uma mensagem encriptada por uma cifra desubstituiccedilatildeo simples teraacute uma distribuiccedilatildeo de frequecircncia das letras semelhante ao da liacutenguausada mas com as letras trocadas
Essa distribuiccedilatildeo de frequecircncia de um texto pode ser identificada atraveacutes de uma anaacutelise de
frequecircncia
Nas liacutenguas naturais algumas letras aparecem mais frequentemente que outras como umaespeacutecie de digital do idioma Por exemplo a letra mais comum na liacutegua inglesa eacute o e emportuguecircs eacute o a
Cifra da Palavra-Chave
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra M A R V I N B C D E F G H J K L O P Q S T U W X Y Z
original A R T H U R D E N T
cifrado M P S C T P V I J S
Detectando
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Este guia destina-se a entusiastas de seguranccedila da informaccedilatildeo e que desejam participar de CTFs
CTF significa Capture the Flag No contexto de seguranccedila da informaccedilatildeo satildeo competiccedilotildees queenvolvem diversas aacutereas como descoberta de vulnerabilidades teacutecnicas de espionagem e criaccedilatildeode exploits e ferramentas
De maneira geral nessas competiccedilotildees os jogadores satildeo apresentados a problemas programascom falhas de seguranccedila ou sistemas para serem invadidos Em cada problema programa ousistema haacute uma chave secreta ou flag Encontrar essa flag eacute a prova que vocecirc resolveu odesafio e enviando no campo especificado faz seu time ganhar pontos
Os CTFs satildeo divididos em dois tipos
Todos os times recebem uma Maacutequina Virtual com algumas falhas de seguranccedila O objetivo eacutecapturar as flags atraveacutes das vulnerabilidades dos outros times e protegendo seu proacuteprio time deinvasotildees corrigindo suas falhas de seguranccedila
Introduccedilatildeo
O que satildeo CTFs
Tipos de CTFs
Attack-defense
Jeopardy-sytle
Todos satildeo apresentados a questotildees de diversas categorias niacuteveis de dificuldades e pontuaccedilotildeestambeacutem chamadas de challenges As categorias variam de competiccedilatildeo para competiccedilatildeo asprincipais satildeo
Crypto Envolvem problemas relacionados a criptografiaStegano Esteganografia eacute a arte de esconder em plena vista e que envolve basicamentemensagens escondidas em outras mensagensForensics Eacute uma aacuterea ampla que pode incluir anaacutelise de formato de arquivos memory dumps e pacotes e ateacute esteganografiaReversing Satildeo desafios de engenharia reversa Envolvem encontrar vulnerabilidades dealgum programa que vocecirc natildeo possui o coacutedigoWeb Hacking Envolvem atacar vulnerabilidades comuns no ramo de tecnologia webProgramming Testam sua habilidade de criar scriptsMiscellaneous Problemas variados e normalmente com baixa pontuaccedilatildeo
Esses eventos ocorrem em vaacuterios periacutedos e lugares sendo organizados por pessoas diferentesAlguns podem acontecer remotamente (on-line) ou presencialmente (on-site)
Uma oacutetima plataforma para acompanhar as datas das principais competiccedilotildees eacute o CTFtime
O melhor jeito de se preparar para essas competiccedilotildees eacute praticando
Abaixo estaacute uma lista de alguns sites com oacutetimo conteuacutedo para treinar
Para auxiliar esse processo este guia pretende abordar alguns conceitos baacutesicos para resolveresses desafios de forma didaacutetica e raacutepida
Quando ocorrem os CTFs
Como se preparar para CTFs
E ainda uma oacutetima forma de treinar eacute observar resoluccedilotildees (ou write-ups) de desafios que vocecircnatildeoconseguiu ou quer ver outra resoluccedilatildeo dele
Alguns dos sites abaixo seratildeo usados como exerciacutecio para este guia
Plataforma com desafios de diversas aacutereas e dificuldades
Site com diversos wargames onde eacute necessaacuterio conectar no respectivo servidor por meio doterminal O desafio Bandit eacute muito recomendado para aprender comandos de Linux
A ediccedilatildeo 2018 de uma competiccedilatildeo muito famosa e voltada para estudantes Apresenta oacutetimosdesafios introdutoacuterios e de diversas aacutereas
Plataforma voltada para invasatildeo de maacutequinas simula cenaacuterios reais de pentest Possui tambeacutemalguns desafios de vaacuterias aacutereas como os outros e eacute preciso hackear o site para conseguir ologin
Onde treinar
WeChall
OverTheWire
picoCTF 2018
Hack The Box
Referecircncias
CTF-BR
OpenCTF
Trail of Bits
CTFtime
Todo challenge de um CTF costumar ter pelo menos uma chave-secreta como repostanormalmente chamada de flag
O formato de como essa flag eacute apresentada varia de competiccedilatildeo para competiccedilatildeo Muitas vezes eacuteuma string bem distintiva de forma que quando vocecirc ver uma saberaacute que eacute uma flag Aleacutemdisso a competiccedilatildeo costuma explicitar o formato de flag que deveraacute ser enviado
Por exemplo flags podem estar expliacutecitas como
Assim a flag eacute flagM4C4L191Jd912 ou M4C4L191Jd912 dependendo da competiccedilatildeo
Elas podem ser indicadas por uma frase como
Assim a flag eacute ABidaBBeBelaB
Ou apenas um sentenccedila compreensiacutevel como
Assim a flag eacute a proacutepria sentenccedila ther5s_n0_Place_l1ke_h0m3
Mesmo assim podem existir vaacuterias outras formataccedilotildees diferentes para uma flag como um link ouuma expressatildeo matemaacutetica Mas essas apresentadas seratildeo as mais comuns
WeChall get sourced
Como identificar uma flag
flagM4C4L191Jd912
The answer is ABidaBBeBelaB
ther5s_n0_Place_l1ke_h0m3
Exerciacutecios
Aprenda as teacutecnicas de criptografia e como abordaacute-las em CTFs Desde a criptografia claacutessica dascifras ateacute a criptografia moderna das chaves puacuteblicas
Criptografia
Criptografia
Criptografia vem do grego kryptoacutes e graphein que significam secreta e escritarespectivamente Ateacute a era moderna ela era sinocircnimo de encriptaccedilatildeo que eacute a conversatildeo de umamensagem legiacutevel para algo aparentemente sem sentido e eacute esse o conceito usado em CTFs
Para entender melhor essa ideia digamos que Alice quer mandar uma mensagem para Bob semque uma terceira pessoa digamos Eve descubra seu counteuacutedo
Para isso Alice usa um certo algoritmo para tornar a mensagem ilegiacutevel de forma que soacute Bob
saberaacute reverter a mensagem encriptada
Assim quando Eve interceptar a mensagem por meio do canal inseguro se ela natildeo possui oalgoritmo criptograacutefico usado por Alice e Bob ela natildeo seraacute capaz de entender a mensagem
Ao longo da histoacuteria vaacuterias teacutecnicas de ocultar mensagens foram desenvolvidas Antes dacriptografia preacute-computacional a criptografia claacutessica era formada por um conjunto de meacutetodos
O que eacute criptografia
de substituiccedilatildeo e transpoisccedilatildeo de caracteres E com o advento da computaccedilatildeo a criptografia
moderna se tornou amplamente embasada em teorias matemaacuteticas e praacuteticas de ciecircncia dacomputaccedilatildeo
Para esse guia comeccedilaremos com os meacutetodos da criptografia claacutessica
Criptografia
A Cifra de Ceacutesar eacute um dos meacutetodos mais simples e comuns de encriptaccedilatildeo Mesmo natildeo sendomuito comum em CTFs ainda eacute um conhecimento baacutesico de criptografia
Nessa cifra cada letra da mensagem eacute substituida por uma letra do alfabeto deslocado por umnuacutemero fixo
Por exemplo se queremos encriptar a mensagem hack the planet podemos deslocar cada letrado alfabeto 3 vezes para direita (ou right 3) Assim a substituiccedilatildeo teria esse formato
originalABCDEFGHIJKLM
right3DEFGHI J KLMNOP
originalNOPQRSTUVWXYZ
right3QRSTUVWXYZABC
Dessa forma o texto gerado se torna incompreensiacutevel de forma que soacute quem sabe o algoritmousado poderaacute recuperaacute-lo
Cifra de Ceacutesar
Esse meacutetodo tem esse nome pois era usado por Juacutelio Ceacutesar em suascorrespondecircnciasldquo
texto original hack the planet
texto cifrado kdfn wkh sodqhw
Um dos tipos mais comuns de Cifra de Ceacutesar eacute o ROT13 Nele o alfabeto eacute deslocado 13 vezesComo o alfabeto tradicional possui 26 letras o ROT13 possui a propriedade de que o mesmoalgoritmo usado para encripitar a mensagem eacute usado para decriptar
Mensagens encriptadas pela cifra de ceacutesar normalmente produziratildeo um amontoado de caracteressem significado como kdfn wkh sodqhw e suas letras teratildeo uma distribuiccedilatildeo de frequecircncia similaragrave liacutengua usada (provavelmente inglecircs) mas com as letras trocadas Esse conceito seraacute abordadocom mais profundidade em Cifras de Substituiccedilatildeo
Devido a facilidade de quebrar essa cifra pode ser conveniente tentar solucionaacute-la sem nem aomenos uma anaacutelise de frequecircncia
Como num alfabeto usual satildeo usados apenas 26 caracteres a Cifra de Ceacutesar possui apenas 25tipos de rotaccedilotildees possiacuteveis (pois a rotaccedilatildeo 26 eacute a proacutepria mensagem) Assim um testa tudoonde vocecirc faz todos os tipos de rotaccedilotildees possiacuteveis eacute a opccedilatildeo mais simples
Existem ferramentas online muito eficientes para quebrar uma Cifra de Ceacutesar como o site dcodeporeacutem natildeo eacute muito difiacutecil codificar um testa tudo para isso
ROT13
Detectando
Solucionando
Codificando um testa tudo
Primeiro codificaremos uma funccedilatildeo rot() que aplica a rotaccedilatildeo em um caractere de acordo comodeslocamento determinado (o shift )
Assim podemos usar essa funccedilatildeo para criar um caesar_brute_force() que recebe um texto cifradoe imprime todas as rotaccedilotildees possiacuteveis
OverTheWire Krypton 1
OverTheWire Krypton 2
WeChall Caesar
def rot(char shift)
return chr((ord(char) - ord(A) + shift)26 + ord(A))
def caesar_brute_force(cipher_text)
cipher_text = cipher_textupper()
for i in range(26)
line =
for c in cipher_text
line += rot(c i) if cisalpha() else c
print(frotitline)
Exerciacutecios
Criptografia
Agora que vocecirc estaacute familiarizado com a Cifra de Ceacutesar vamos apresentar uma generalizaccedilatildeodesse conceito as cifras de substituiccedilatildeo simples
Em uma cifra de substituiccedilatildeo simples cada letra eacute substituida individualmente de acordo com um alfabeto de substituiccedilatildeo Esse alfabeto pode ser uma rotaccedilatildeo fixa do alfabeto normal (como acifra de Ceacutesar) ou algum embaralhamento mais complexo
Alguns exemplos notaacuteveis de cifra de substituiccedilatildeo simples satildeo
Nessa cifra cada letra eacute mapeada para o alfabeto invertido ou seja a primeira vira a uacuteltima asegunda vira a penuacuteltima e assim por diante
Assim se usarmos essa cifra em may the force be with you obteremos
Cifras de SubstituiccedilatildeoSimples
Cifra de AtbashSeu nome tem origem da primeira uacuteltima segunda e penuacuteltima letra Hebraica(Aleph-Taw-Bet-Shin)ldquo
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
original M A Y T H E F O R C E B E W I T H Y O U
cifrado N Z B G S V U L I X V Y V D R G S B L F
A Cifra de Atbash pode ser interpretada como um caso particular da Cifra de Affine uma cifra queusa aritimeacutetica modular para encriptar
A Cifra da Palavra-Chave ou keyword cipher consiste em escolher uma chave e usaacute-la para decidircomo as letras seratildeo susbtituidas
As palavras repetidas dessa chave seratildeo removidas e a proacutepria chave seraacute o comeccedilo do alfabeto aser mapeado O resto das letras continuaratildeo em ordem alfabeacutetica tirando as letras jaacute usadas
Por exemplo escolhendo a chave Marvin o novo alfabeto teraacute esse formato
Assim ao encriptar a mensagem Arthur Dent obteremos
Como mencionado na seccedilatildeo de Cifra de Ceacutesar uma mensagem encriptada por uma cifra desubstituiccedilatildeo simples teraacute uma distribuiccedilatildeo de frequecircncia das letras semelhante ao da liacutenguausada mas com as letras trocadas
Essa distribuiccedilatildeo de frequecircncia de um texto pode ser identificada atraveacutes de uma anaacutelise de
frequecircncia
Nas liacutenguas naturais algumas letras aparecem mais frequentemente que outras como umaespeacutecie de digital do idioma Por exemplo a letra mais comum na liacutegua inglesa eacute o e emportuguecircs eacute o a
Cifra da Palavra-Chave
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra M A R V I N B C D E F G H J K L O P Q S T U W X Y Z
original A R T H U R D E N T
cifrado M P S C T P V I J S
Detectando
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Todos satildeo apresentados a questotildees de diversas categorias niacuteveis de dificuldades e pontuaccedilotildeestambeacutem chamadas de challenges As categorias variam de competiccedilatildeo para competiccedilatildeo asprincipais satildeo
Crypto Envolvem problemas relacionados a criptografiaStegano Esteganografia eacute a arte de esconder em plena vista e que envolve basicamentemensagens escondidas em outras mensagensForensics Eacute uma aacuterea ampla que pode incluir anaacutelise de formato de arquivos memory dumps e pacotes e ateacute esteganografiaReversing Satildeo desafios de engenharia reversa Envolvem encontrar vulnerabilidades dealgum programa que vocecirc natildeo possui o coacutedigoWeb Hacking Envolvem atacar vulnerabilidades comuns no ramo de tecnologia webProgramming Testam sua habilidade de criar scriptsMiscellaneous Problemas variados e normalmente com baixa pontuaccedilatildeo
Esses eventos ocorrem em vaacuterios periacutedos e lugares sendo organizados por pessoas diferentesAlguns podem acontecer remotamente (on-line) ou presencialmente (on-site)
Uma oacutetima plataforma para acompanhar as datas das principais competiccedilotildees eacute o CTFtime
O melhor jeito de se preparar para essas competiccedilotildees eacute praticando
Abaixo estaacute uma lista de alguns sites com oacutetimo conteuacutedo para treinar
Para auxiliar esse processo este guia pretende abordar alguns conceitos baacutesicos para resolveresses desafios de forma didaacutetica e raacutepida
Quando ocorrem os CTFs
Como se preparar para CTFs
E ainda uma oacutetima forma de treinar eacute observar resoluccedilotildees (ou write-ups) de desafios que vocecircnatildeoconseguiu ou quer ver outra resoluccedilatildeo dele
Alguns dos sites abaixo seratildeo usados como exerciacutecio para este guia
Plataforma com desafios de diversas aacutereas e dificuldades
Site com diversos wargames onde eacute necessaacuterio conectar no respectivo servidor por meio doterminal O desafio Bandit eacute muito recomendado para aprender comandos de Linux
A ediccedilatildeo 2018 de uma competiccedilatildeo muito famosa e voltada para estudantes Apresenta oacutetimosdesafios introdutoacuterios e de diversas aacutereas
Plataforma voltada para invasatildeo de maacutequinas simula cenaacuterios reais de pentest Possui tambeacutemalguns desafios de vaacuterias aacutereas como os outros e eacute preciso hackear o site para conseguir ologin
Onde treinar
WeChall
OverTheWire
picoCTF 2018
Hack The Box
Referecircncias
CTF-BR
OpenCTF
Trail of Bits
CTFtime
Todo challenge de um CTF costumar ter pelo menos uma chave-secreta como repostanormalmente chamada de flag
O formato de como essa flag eacute apresentada varia de competiccedilatildeo para competiccedilatildeo Muitas vezes eacuteuma string bem distintiva de forma que quando vocecirc ver uma saberaacute que eacute uma flag Aleacutemdisso a competiccedilatildeo costuma explicitar o formato de flag que deveraacute ser enviado
Por exemplo flags podem estar expliacutecitas como
Assim a flag eacute flagM4C4L191Jd912 ou M4C4L191Jd912 dependendo da competiccedilatildeo
Elas podem ser indicadas por uma frase como
Assim a flag eacute ABidaBBeBelaB
Ou apenas um sentenccedila compreensiacutevel como
Assim a flag eacute a proacutepria sentenccedila ther5s_n0_Place_l1ke_h0m3
Mesmo assim podem existir vaacuterias outras formataccedilotildees diferentes para uma flag como um link ouuma expressatildeo matemaacutetica Mas essas apresentadas seratildeo as mais comuns
WeChall get sourced
Como identificar uma flag
flagM4C4L191Jd912
The answer is ABidaBBeBelaB
ther5s_n0_Place_l1ke_h0m3
Exerciacutecios
Aprenda as teacutecnicas de criptografia e como abordaacute-las em CTFs Desde a criptografia claacutessica dascifras ateacute a criptografia moderna das chaves puacuteblicas
Criptografia
Criptografia
Criptografia vem do grego kryptoacutes e graphein que significam secreta e escritarespectivamente Ateacute a era moderna ela era sinocircnimo de encriptaccedilatildeo que eacute a conversatildeo de umamensagem legiacutevel para algo aparentemente sem sentido e eacute esse o conceito usado em CTFs
Para entender melhor essa ideia digamos que Alice quer mandar uma mensagem para Bob semque uma terceira pessoa digamos Eve descubra seu counteuacutedo
Para isso Alice usa um certo algoritmo para tornar a mensagem ilegiacutevel de forma que soacute Bob
saberaacute reverter a mensagem encriptada
Assim quando Eve interceptar a mensagem por meio do canal inseguro se ela natildeo possui oalgoritmo criptograacutefico usado por Alice e Bob ela natildeo seraacute capaz de entender a mensagem
Ao longo da histoacuteria vaacuterias teacutecnicas de ocultar mensagens foram desenvolvidas Antes dacriptografia preacute-computacional a criptografia claacutessica era formada por um conjunto de meacutetodos
O que eacute criptografia
de substituiccedilatildeo e transpoisccedilatildeo de caracteres E com o advento da computaccedilatildeo a criptografia
moderna se tornou amplamente embasada em teorias matemaacuteticas e praacuteticas de ciecircncia dacomputaccedilatildeo
Para esse guia comeccedilaremos com os meacutetodos da criptografia claacutessica
Criptografia
A Cifra de Ceacutesar eacute um dos meacutetodos mais simples e comuns de encriptaccedilatildeo Mesmo natildeo sendomuito comum em CTFs ainda eacute um conhecimento baacutesico de criptografia
Nessa cifra cada letra da mensagem eacute substituida por uma letra do alfabeto deslocado por umnuacutemero fixo
Por exemplo se queremos encriptar a mensagem hack the planet podemos deslocar cada letrado alfabeto 3 vezes para direita (ou right 3) Assim a substituiccedilatildeo teria esse formato
originalABCDEFGHIJKLM
right3DEFGHI J KLMNOP
originalNOPQRSTUVWXYZ
right3QRSTUVWXYZABC
Dessa forma o texto gerado se torna incompreensiacutevel de forma que soacute quem sabe o algoritmousado poderaacute recuperaacute-lo
Cifra de Ceacutesar
Esse meacutetodo tem esse nome pois era usado por Juacutelio Ceacutesar em suascorrespondecircnciasldquo
texto original hack the planet
texto cifrado kdfn wkh sodqhw
Um dos tipos mais comuns de Cifra de Ceacutesar eacute o ROT13 Nele o alfabeto eacute deslocado 13 vezesComo o alfabeto tradicional possui 26 letras o ROT13 possui a propriedade de que o mesmoalgoritmo usado para encripitar a mensagem eacute usado para decriptar
Mensagens encriptadas pela cifra de ceacutesar normalmente produziratildeo um amontoado de caracteressem significado como kdfn wkh sodqhw e suas letras teratildeo uma distribuiccedilatildeo de frequecircncia similaragrave liacutengua usada (provavelmente inglecircs) mas com as letras trocadas Esse conceito seraacute abordadocom mais profundidade em Cifras de Substituiccedilatildeo
Devido a facilidade de quebrar essa cifra pode ser conveniente tentar solucionaacute-la sem nem aomenos uma anaacutelise de frequecircncia
Como num alfabeto usual satildeo usados apenas 26 caracteres a Cifra de Ceacutesar possui apenas 25tipos de rotaccedilotildees possiacuteveis (pois a rotaccedilatildeo 26 eacute a proacutepria mensagem) Assim um testa tudoonde vocecirc faz todos os tipos de rotaccedilotildees possiacuteveis eacute a opccedilatildeo mais simples
Existem ferramentas online muito eficientes para quebrar uma Cifra de Ceacutesar como o site dcodeporeacutem natildeo eacute muito difiacutecil codificar um testa tudo para isso
ROT13
Detectando
Solucionando
Codificando um testa tudo
Primeiro codificaremos uma funccedilatildeo rot() que aplica a rotaccedilatildeo em um caractere de acordo comodeslocamento determinado (o shift )
Assim podemos usar essa funccedilatildeo para criar um caesar_brute_force() que recebe um texto cifradoe imprime todas as rotaccedilotildees possiacuteveis
OverTheWire Krypton 1
OverTheWire Krypton 2
WeChall Caesar
def rot(char shift)
return chr((ord(char) - ord(A) + shift)26 + ord(A))
def caesar_brute_force(cipher_text)
cipher_text = cipher_textupper()
for i in range(26)
line =
for c in cipher_text
line += rot(c i) if cisalpha() else c
print(frotitline)
Exerciacutecios
Criptografia
Agora que vocecirc estaacute familiarizado com a Cifra de Ceacutesar vamos apresentar uma generalizaccedilatildeodesse conceito as cifras de substituiccedilatildeo simples
Em uma cifra de substituiccedilatildeo simples cada letra eacute substituida individualmente de acordo com um alfabeto de substituiccedilatildeo Esse alfabeto pode ser uma rotaccedilatildeo fixa do alfabeto normal (como acifra de Ceacutesar) ou algum embaralhamento mais complexo
Alguns exemplos notaacuteveis de cifra de substituiccedilatildeo simples satildeo
Nessa cifra cada letra eacute mapeada para o alfabeto invertido ou seja a primeira vira a uacuteltima asegunda vira a penuacuteltima e assim por diante
Assim se usarmos essa cifra em may the force be with you obteremos
Cifras de SubstituiccedilatildeoSimples
Cifra de AtbashSeu nome tem origem da primeira uacuteltima segunda e penuacuteltima letra Hebraica(Aleph-Taw-Bet-Shin)ldquo
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
original M A Y T H E F O R C E B E W I T H Y O U
cifrado N Z B G S V U L I X V Y V D R G S B L F
A Cifra de Atbash pode ser interpretada como um caso particular da Cifra de Affine uma cifra queusa aritimeacutetica modular para encriptar
A Cifra da Palavra-Chave ou keyword cipher consiste em escolher uma chave e usaacute-la para decidircomo as letras seratildeo susbtituidas
As palavras repetidas dessa chave seratildeo removidas e a proacutepria chave seraacute o comeccedilo do alfabeto aser mapeado O resto das letras continuaratildeo em ordem alfabeacutetica tirando as letras jaacute usadas
Por exemplo escolhendo a chave Marvin o novo alfabeto teraacute esse formato
Assim ao encriptar a mensagem Arthur Dent obteremos
Como mencionado na seccedilatildeo de Cifra de Ceacutesar uma mensagem encriptada por uma cifra desubstituiccedilatildeo simples teraacute uma distribuiccedilatildeo de frequecircncia das letras semelhante ao da liacutenguausada mas com as letras trocadas
Essa distribuiccedilatildeo de frequecircncia de um texto pode ser identificada atraveacutes de uma anaacutelise de
frequecircncia
Nas liacutenguas naturais algumas letras aparecem mais frequentemente que outras como umaespeacutecie de digital do idioma Por exemplo a letra mais comum na liacutegua inglesa eacute o e emportuguecircs eacute o a
Cifra da Palavra-Chave
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra M A R V I N B C D E F G H J K L O P Q S T U W X Y Z
original A R T H U R D E N T
cifrado M P S C T P V I J S
Detectando
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
E ainda uma oacutetima forma de treinar eacute observar resoluccedilotildees (ou write-ups) de desafios que vocecircnatildeoconseguiu ou quer ver outra resoluccedilatildeo dele
Alguns dos sites abaixo seratildeo usados como exerciacutecio para este guia
Plataforma com desafios de diversas aacutereas e dificuldades
Site com diversos wargames onde eacute necessaacuterio conectar no respectivo servidor por meio doterminal O desafio Bandit eacute muito recomendado para aprender comandos de Linux
A ediccedilatildeo 2018 de uma competiccedilatildeo muito famosa e voltada para estudantes Apresenta oacutetimosdesafios introdutoacuterios e de diversas aacutereas
Plataforma voltada para invasatildeo de maacutequinas simula cenaacuterios reais de pentest Possui tambeacutemalguns desafios de vaacuterias aacutereas como os outros e eacute preciso hackear o site para conseguir ologin
Onde treinar
WeChall
OverTheWire
picoCTF 2018
Hack The Box
Referecircncias
CTF-BR
OpenCTF
Trail of Bits
CTFtime
Todo challenge de um CTF costumar ter pelo menos uma chave-secreta como repostanormalmente chamada de flag
O formato de como essa flag eacute apresentada varia de competiccedilatildeo para competiccedilatildeo Muitas vezes eacuteuma string bem distintiva de forma que quando vocecirc ver uma saberaacute que eacute uma flag Aleacutemdisso a competiccedilatildeo costuma explicitar o formato de flag que deveraacute ser enviado
Por exemplo flags podem estar expliacutecitas como
Assim a flag eacute flagM4C4L191Jd912 ou M4C4L191Jd912 dependendo da competiccedilatildeo
Elas podem ser indicadas por uma frase como
Assim a flag eacute ABidaBBeBelaB
Ou apenas um sentenccedila compreensiacutevel como
Assim a flag eacute a proacutepria sentenccedila ther5s_n0_Place_l1ke_h0m3
Mesmo assim podem existir vaacuterias outras formataccedilotildees diferentes para uma flag como um link ouuma expressatildeo matemaacutetica Mas essas apresentadas seratildeo as mais comuns
WeChall get sourced
Como identificar uma flag
flagM4C4L191Jd912
The answer is ABidaBBeBelaB
ther5s_n0_Place_l1ke_h0m3
Exerciacutecios
Aprenda as teacutecnicas de criptografia e como abordaacute-las em CTFs Desde a criptografia claacutessica dascifras ateacute a criptografia moderna das chaves puacuteblicas
Criptografia
Criptografia
Criptografia vem do grego kryptoacutes e graphein que significam secreta e escritarespectivamente Ateacute a era moderna ela era sinocircnimo de encriptaccedilatildeo que eacute a conversatildeo de umamensagem legiacutevel para algo aparentemente sem sentido e eacute esse o conceito usado em CTFs
Para entender melhor essa ideia digamos que Alice quer mandar uma mensagem para Bob semque uma terceira pessoa digamos Eve descubra seu counteuacutedo
Para isso Alice usa um certo algoritmo para tornar a mensagem ilegiacutevel de forma que soacute Bob
saberaacute reverter a mensagem encriptada
Assim quando Eve interceptar a mensagem por meio do canal inseguro se ela natildeo possui oalgoritmo criptograacutefico usado por Alice e Bob ela natildeo seraacute capaz de entender a mensagem
Ao longo da histoacuteria vaacuterias teacutecnicas de ocultar mensagens foram desenvolvidas Antes dacriptografia preacute-computacional a criptografia claacutessica era formada por um conjunto de meacutetodos
O que eacute criptografia
de substituiccedilatildeo e transpoisccedilatildeo de caracteres E com o advento da computaccedilatildeo a criptografia
moderna se tornou amplamente embasada em teorias matemaacuteticas e praacuteticas de ciecircncia dacomputaccedilatildeo
Para esse guia comeccedilaremos com os meacutetodos da criptografia claacutessica
Criptografia
A Cifra de Ceacutesar eacute um dos meacutetodos mais simples e comuns de encriptaccedilatildeo Mesmo natildeo sendomuito comum em CTFs ainda eacute um conhecimento baacutesico de criptografia
Nessa cifra cada letra da mensagem eacute substituida por uma letra do alfabeto deslocado por umnuacutemero fixo
Por exemplo se queremos encriptar a mensagem hack the planet podemos deslocar cada letrado alfabeto 3 vezes para direita (ou right 3) Assim a substituiccedilatildeo teria esse formato
originalABCDEFGHIJKLM
right3DEFGHI J KLMNOP
originalNOPQRSTUVWXYZ
right3QRSTUVWXYZABC
Dessa forma o texto gerado se torna incompreensiacutevel de forma que soacute quem sabe o algoritmousado poderaacute recuperaacute-lo
Cifra de Ceacutesar
Esse meacutetodo tem esse nome pois era usado por Juacutelio Ceacutesar em suascorrespondecircnciasldquo
texto original hack the planet
texto cifrado kdfn wkh sodqhw
Um dos tipos mais comuns de Cifra de Ceacutesar eacute o ROT13 Nele o alfabeto eacute deslocado 13 vezesComo o alfabeto tradicional possui 26 letras o ROT13 possui a propriedade de que o mesmoalgoritmo usado para encripitar a mensagem eacute usado para decriptar
Mensagens encriptadas pela cifra de ceacutesar normalmente produziratildeo um amontoado de caracteressem significado como kdfn wkh sodqhw e suas letras teratildeo uma distribuiccedilatildeo de frequecircncia similaragrave liacutengua usada (provavelmente inglecircs) mas com as letras trocadas Esse conceito seraacute abordadocom mais profundidade em Cifras de Substituiccedilatildeo
Devido a facilidade de quebrar essa cifra pode ser conveniente tentar solucionaacute-la sem nem aomenos uma anaacutelise de frequecircncia
Como num alfabeto usual satildeo usados apenas 26 caracteres a Cifra de Ceacutesar possui apenas 25tipos de rotaccedilotildees possiacuteveis (pois a rotaccedilatildeo 26 eacute a proacutepria mensagem) Assim um testa tudoonde vocecirc faz todos os tipos de rotaccedilotildees possiacuteveis eacute a opccedilatildeo mais simples
Existem ferramentas online muito eficientes para quebrar uma Cifra de Ceacutesar como o site dcodeporeacutem natildeo eacute muito difiacutecil codificar um testa tudo para isso
ROT13
Detectando
Solucionando
Codificando um testa tudo
Primeiro codificaremos uma funccedilatildeo rot() que aplica a rotaccedilatildeo em um caractere de acordo comodeslocamento determinado (o shift )
Assim podemos usar essa funccedilatildeo para criar um caesar_brute_force() que recebe um texto cifradoe imprime todas as rotaccedilotildees possiacuteveis
OverTheWire Krypton 1
OverTheWire Krypton 2
WeChall Caesar
def rot(char shift)
return chr((ord(char) - ord(A) + shift)26 + ord(A))
def caesar_brute_force(cipher_text)
cipher_text = cipher_textupper()
for i in range(26)
line =
for c in cipher_text
line += rot(c i) if cisalpha() else c
print(frotitline)
Exerciacutecios
Criptografia
Agora que vocecirc estaacute familiarizado com a Cifra de Ceacutesar vamos apresentar uma generalizaccedilatildeodesse conceito as cifras de substituiccedilatildeo simples
Em uma cifra de substituiccedilatildeo simples cada letra eacute substituida individualmente de acordo com um alfabeto de substituiccedilatildeo Esse alfabeto pode ser uma rotaccedilatildeo fixa do alfabeto normal (como acifra de Ceacutesar) ou algum embaralhamento mais complexo
Alguns exemplos notaacuteveis de cifra de substituiccedilatildeo simples satildeo
Nessa cifra cada letra eacute mapeada para o alfabeto invertido ou seja a primeira vira a uacuteltima asegunda vira a penuacuteltima e assim por diante
Assim se usarmos essa cifra em may the force be with you obteremos
Cifras de SubstituiccedilatildeoSimples
Cifra de AtbashSeu nome tem origem da primeira uacuteltima segunda e penuacuteltima letra Hebraica(Aleph-Taw-Bet-Shin)ldquo
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
original M A Y T H E F O R C E B E W I T H Y O U
cifrado N Z B G S V U L I X V Y V D R G S B L F
A Cifra de Atbash pode ser interpretada como um caso particular da Cifra de Affine uma cifra queusa aritimeacutetica modular para encriptar
A Cifra da Palavra-Chave ou keyword cipher consiste em escolher uma chave e usaacute-la para decidircomo as letras seratildeo susbtituidas
As palavras repetidas dessa chave seratildeo removidas e a proacutepria chave seraacute o comeccedilo do alfabeto aser mapeado O resto das letras continuaratildeo em ordem alfabeacutetica tirando as letras jaacute usadas
Por exemplo escolhendo a chave Marvin o novo alfabeto teraacute esse formato
Assim ao encriptar a mensagem Arthur Dent obteremos
Como mencionado na seccedilatildeo de Cifra de Ceacutesar uma mensagem encriptada por uma cifra desubstituiccedilatildeo simples teraacute uma distribuiccedilatildeo de frequecircncia das letras semelhante ao da liacutenguausada mas com as letras trocadas
Essa distribuiccedilatildeo de frequecircncia de um texto pode ser identificada atraveacutes de uma anaacutelise de
frequecircncia
Nas liacutenguas naturais algumas letras aparecem mais frequentemente que outras como umaespeacutecie de digital do idioma Por exemplo a letra mais comum na liacutegua inglesa eacute o e emportuguecircs eacute o a
Cifra da Palavra-Chave
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra M A R V I N B C D E F G H J K L O P Q S T U W X Y Z
original A R T H U R D E N T
cifrado M P S C T P V I J S
Detectando
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
CTF-BR
OpenCTF
Trail of Bits
CTFtime
Todo challenge de um CTF costumar ter pelo menos uma chave-secreta como repostanormalmente chamada de flag
O formato de como essa flag eacute apresentada varia de competiccedilatildeo para competiccedilatildeo Muitas vezes eacuteuma string bem distintiva de forma que quando vocecirc ver uma saberaacute que eacute uma flag Aleacutemdisso a competiccedilatildeo costuma explicitar o formato de flag que deveraacute ser enviado
Por exemplo flags podem estar expliacutecitas como
Assim a flag eacute flagM4C4L191Jd912 ou M4C4L191Jd912 dependendo da competiccedilatildeo
Elas podem ser indicadas por uma frase como
Assim a flag eacute ABidaBBeBelaB
Ou apenas um sentenccedila compreensiacutevel como
Assim a flag eacute a proacutepria sentenccedila ther5s_n0_Place_l1ke_h0m3
Mesmo assim podem existir vaacuterias outras formataccedilotildees diferentes para uma flag como um link ouuma expressatildeo matemaacutetica Mas essas apresentadas seratildeo as mais comuns
WeChall get sourced
Como identificar uma flag
flagM4C4L191Jd912
The answer is ABidaBBeBelaB
ther5s_n0_Place_l1ke_h0m3
Exerciacutecios
Aprenda as teacutecnicas de criptografia e como abordaacute-las em CTFs Desde a criptografia claacutessica dascifras ateacute a criptografia moderna das chaves puacuteblicas
Criptografia
Criptografia
Criptografia vem do grego kryptoacutes e graphein que significam secreta e escritarespectivamente Ateacute a era moderna ela era sinocircnimo de encriptaccedilatildeo que eacute a conversatildeo de umamensagem legiacutevel para algo aparentemente sem sentido e eacute esse o conceito usado em CTFs
Para entender melhor essa ideia digamos que Alice quer mandar uma mensagem para Bob semque uma terceira pessoa digamos Eve descubra seu counteuacutedo
Para isso Alice usa um certo algoritmo para tornar a mensagem ilegiacutevel de forma que soacute Bob
saberaacute reverter a mensagem encriptada
Assim quando Eve interceptar a mensagem por meio do canal inseguro se ela natildeo possui oalgoritmo criptograacutefico usado por Alice e Bob ela natildeo seraacute capaz de entender a mensagem
Ao longo da histoacuteria vaacuterias teacutecnicas de ocultar mensagens foram desenvolvidas Antes dacriptografia preacute-computacional a criptografia claacutessica era formada por um conjunto de meacutetodos
O que eacute criptografia
de substituiccedilatildeo e transpoisccedilatildeo de caracteres E com o advento da computaccedilatildeo a criptografia
moderna se tornou amplamente embasada em teorias matemaacuteticas e praacuteticas de ciecircncia dacomputaccedilatildeo
Para esse guia comeccedilaremos com os meacutetodos da criptografia claacutessica
Criptografia
A Cifra de Ceacutesar eacute um dos meacutetodos mais simples e comuns de encriptaccedilatildeo Mesmo natildeo sendomuito comum em CTFs ainda eacute um conhecimento baacutesico de criptografia
Nessa cifra cada letra da mensagem eacute substituida por uma letra do alfabeto deslocado por umnuacutemero fixo
Por exemplo se queremos encriptar a mensagem hack the planet podemos deslocar cada letrado alfabeto 3 vezes para direita (ou right 3) Assim a substituiccedilatildeo teria esse formato
originalABCDEFGHIJKLM
right3DEFGHI J KLMNOP
originalNOPQRSTUVWXYZ
right3QRSTUVWXYZABC
Dessa forma o texto gerado se torna incompreensiacutevel de forma que soacute quem sabe o algoritmousado poderaacute recuperaacute-lo
Cifra de Ceacutesar
Esse meacutetodo tem esse nome pois era usado por Juacutelio Ceacutesar em suascorrespondecircnciasldquo
texto original hack the planet
texto cifrado kdfn wkh sodqhw
Um dos tipos mais comuns de Cifra de Ceacutesar eacute o ROT13 Nele o alfabeto eacute deslocado 13 vezesComo o alfabeto tradicional possui 26 letras o ROT13 possui a propriedade de que o mesmoalgoritmo usado para encripitar a mensagem eacute usado para decriptar
Mensagens encriptadas pela cifra de ceacutesar normalmente produziratildeo um amontoado de caracteressem significado como kdfn wkh sodqhw e suas letras teratildeo uma distribuiccedilatildeo de frequecircncia similaragrave liacutengua usada (provavelmente inglecircs) mas com as letras trocadas Esse conceito seraacute abordadocom mais profundidade em Cifras de Substituiccedilatildeo
Devido a facilidade de quebrar essa cifra pode ser conveniente tentar solucionaacute-la sem nem aomenos uma anaacutelise de frequecircncia
Como num alfabeto usual satildeo usados apenas 26 caracteres a Cifra de Ceacutesar possui apenas 25tipos de rotaccedilotildees possiacuteveis (pois a rotaccedilatildeo 26 eacute a proacutepria mensagem) Assim um testa tudoonde vocecirc faz todos os tipos de rotaccedilotildees possiacuteveis eacute a opccedilatildeo mais simples
Existem ferramentas online muito eficientes para quebrar uma Cifra de Ceacutesar como o site dcodeporeacutem natildeo eacute muito difiacutecil codificar um testa tudo para isso
ROT13
Detectando
Solucionando
Codificando um testa tudo
Primeiro codificaremos uma funccedilatildeo rot() que aplica a rotaccedilatildeo em um caractere de acordo comodeslocamento determinado (o shift )
Assim podemos usar essa funccedilatildeo para criar um caesar_brute_force() que recebe um texto cifradoe imprime todas as rotaccedilotildees possiacuteveis
OverTheWire Krypton 1
OverTheWire Krypton 2
WeChall Caesar
def rot(char shift)
return chr((ord(char) - ord(A) + shift)26 + ord(A))
def caesar_brute_force(cipher_text)
cipher_text = cipher_textupper()
for i in range(26)
line =
for c in cipher_text
line += rot(c i) if cisalpha() else c
print(frotitline)
Exerciacutecios
Criptografia
Agora que vocecirc estaacute familiarizado com a Cifra de Ceacutesar vamos apresentar uma generalizaccedilatildeodesse conceito as cifras de substituiccedilatildeo simples
Em uma cifra de substituiccedilatildeo simples cada letra eacute substituida individualmente de acordo com um alfabeto de substituiccedilatildeo Esse alfabeto pode ser uma rotaccedilatildeo fixa do alfabeto normal (como acifra de Ceacutesar) ou algum embaralhamento mais complexo
Alguns exemplos notaacuteveis de cifra de substituiccedilatildeo simples satildeo
Nessa cifra cada letra eacute mapeada para o alfabeto invertido ou seja a primeira vira a uacuteltima asegunda vira a penuacuteltima e assim por diante
Assim se usarmos essa cifra em may the force be with you obteremos
Cifras de SubstituiccedilatildeoSimples
Cifra de AtbashSeu nome tem origem da primeira uacuteltima segunda e penuacuteltima letra Hebraica(Aleph-Taw-Bet-Shin)ldquo
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
original M A Y T H E F O R C E B E W I T H Y O U
cifrado N Z B G S V U L I X V Y V D R G S B L F
A Cifra de Atbash pode ser interpretada como um caso particular da Cifra de Affine uma cifra queusa aritimeacutetica modular para encriptar
A Cifra da Palavra-Chave ou keyword cipher consiste em escolher uma chave e usaacute-la para decidircomo as letras seratildeo susbtituidas
As palavras repetidas dessa chave seratildeo removidas e a proacutepria chave seraacute o comeccedilo do alfabeto aser mapeado O resto das letras continuaratildeo em ordem alfabeacutetica tirando as letras jaacute usadas
Por exemplo escolhendo a chave Marvin o novo alfabeto teraacute esse formato
Assim ao encriptar a mensagem Arthur Dent obteremos
Como mencionado na seccedilatildeo de Cifra de Ceacutesar uma mensagem encriptada por uma cifra desubstituiccedilatildeo simples teraacute uma distribuiccedilatildeo de frequecircncia das letras semelhante ao da liacutenguausada mas com as letras trocadas
Essa distribuiccedilatildeo de frequecircncia de um texto pode ser identificada atraveacutes de uma anaacutelise de
frequecircncia
Nas liacutenguas naturais algumas letras aparecem mais frequentemente que outras como umaespeacutecie de digital do idioma Por exemplo a letra mais comum na liacutegua inglesa eacute o e emportuguecircs eacute o a
Cifra da Palavra-Chave
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra M A R V I N B C D E F G H J K L O P Q S T U W X Y Z
original A R T H U R D E N T
cifrado M P S C T P V I J S
Detectando
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Todo challenge de um CTF costumar ter pelo menos uma chave-secreta como repostanormalmente chamada de flag
O formato de como essa flag eacute apresentada varia de competiccedilatildeo para competiccedilatildeo Muitas vezes eacuteuma string bem distintiva de forma que quando vocecirc ver uma saberaacute que eacute uma flag Aleacutemdisso a competiccedilatildeo costuma explicitar o formato de flag que deveraacute ser enviado
Por exemplo flags podem estar expliacutecitas como
Assim a flag eacute flagM4C4L191Jd912 ou M4C4L191Jd912 dependendo da competiccedilatildeo
Elas podem ser indicadas por uma frase como
Assim a flag eacute ABidaBBeBelaB
Ou apenas um sentenccedila compreensiacutevel como
Assim a flag eacute a proacutepria sentenccedila ther5s_n0_Place_l1ke_h0m3
Mesmo assim podem existir vaacuterias outras formataccedilotildees diferentes para uma flag como um link ouuma expressatildeo matemaacutetica Mas essas apresentadas seratildeo as mais comuns
WeChall get sourced
Como identificar uma flag
flagM4C4L191Jd912
The answer is ABidaBBeBelaB
ther5s_n0_Place_l1ke_h0m3
Exerciacutecios
Aprenda as teacutecnicas de criptografia e como abordaacute-las em CTFs Desde a criptografia claacutessica dascifras ateacute a criptografia moderna das chaves puacuteblicas
Criptografia
Criptografia
Criptografia vem do grego kryptoacutes e graphein que significam secreta e escritarespectivamente Ateacute a era moderna ela era sinocircnimo de encriptaccedilatildeo que eacute a conversatildeo de umamensagem legiacutevel para algo aparentemente sem sentido e eacute esse o conceito usado em CTFs
Para entender melhor essa ideia digamos que Alice quer mandar uma mensagem para Bob semque uma terceira pessoa digamos Eve descubra seu counteuacutedo
Para isso Alice usa um certo algoritmo para tornar a mensagem ilegiacutevel de forma que soacute Bob
saberaacute reverter a mensagem encriptada
Assim quando Eve interceptar a mensagem por meio do canal inseguro se ela natildeo possui oalgoritmo criptograacutefico usado por Alice e Bob ela natildeo seraacute capaz de entender a mensagem
Ao longo da histoacuteria vaacuterias teacutecnicas de ocultar mensagens foram desenvolvidas Antes dacriptografia preacute-computacional a criptografia claacutessica era formada por um conjunto de meacutetodos
O que eacute criptografia
de substituiccedilatildeo e transpoisccedilatildeo de caracteres E com o advento da computaccedilatildeo a criptografia
moderna se tornou amplamente embasada em teorias matemaacuteticas e praacuteticas de ciecircncia dacomputaccedilatildeo
Para esse guia comeccedilaremos com os meacutetodos da criptografia claacutessica
Criptografia
A Cifra de Ceacutesar eacute um dos meacutetodos mais simples e comuns de encriptaccedilatildeo Mesmo natildeo sendomuito comum em CTFs ainda eacute um conhecimento baacutesico de criptografia
Nessa cifra cada letra da mensagem eacute substituida por uma letra do alfabeto deslocado por umnuacutemero fixo
Por exemplo se queremos encriptar a mensagem hack the planet podemos deslocar cada letrado alfabeto 3 vezes para direita (ou right 3) Assim a substituiccedilatildeo teria esse formato
originalABCDEFGHIJKLM
right3DEFGHI J KLMNOP
originalNOPQRSTUVWXYZ
right3QRSTUVWXYZABC
Dessa forma o texto gerado se torna incompreensiacutevel de forma que soacute quem sabe o algoritmousado poderaacute recuperaacute-lo
Cifra de Ceacutesar
Esse meacutetodo tem esse nome pois era usado por Juacutelio Ceacutesar em suascorrespondecircnciasldquo
texto original hack the planet
texto cifrado kdfn wkh sodqhw
Um dos tipos mais comuns de Cifra de Ceacutesar eacute o ROT13 Nele o alfabeto eacute deslocado 13 vezesComo o alfabeto tradicional possui 26 letras o ROT13 possui a propriedade de que o mesmoalgoritmo usado para encripitar a mensagem eacute usado para decriptar
Mensagens encriptadas pela cifra de ceacutesar normalmente produziratildeo um amontoado de caracteressem significado como kdfn wkh sodqhw e suas letras teratildeo uma distribuiccedilatildeo de frequecircncia similaragrave liacutengua usada (provavelmente inglecircs) mas com as letras trocadas Esse conceito seraacute abordadocom mais profundidade em Cifras de Substituiccedilatildeo
Devido a facilidade de quebrar essa cifra pode ser conveniente tentar solucionaacute-la sem nem aomenos uma anaacutelise de frequecircncia
Como num alfabeto usual satildeo usados apenas 26 caracteres a Cifra de Ceacutesar possui apenas 25tipos de rotaccedilotildees possiacuteveis (pois a rotaccedilatildeo 26 eacute a proacutepria mensagem) Assim um testa tudoonde vocecirc faz todos os tipos de rotaccedilotildees possiacuteveis eacute a opccedilatildeo mais simples
Existem ferramentas online muito eficientes para quebrar uma Cifra de Ceacutesar como o site dcodeporeacutem natildeo eacute muito difiacutecil codificar um testa tudo para isso
ROT13
Detectando
Solucionando
Codificando um testa tudo
Primeiro codificaremos uma funccedilatildeo rot() que aplica a rotaccedilatildeo em um caractere de acordo comodeslocamento determinado (o shift )
Assim podemos usar essa funccedilatildeo para criar um caesar_brute_force() que recebe um texto cifradoe imprime todas as rotaccedilotildees possiacuteveis
OverTheWire Krypton 1
OverTheWire Krypton 2
WeChall Caesar
def rot(char shift)
return chr((ord(char) - ord(A) + shift)26 + ord(A))
def caesar_brute_force(cipher_text)
cipher_text = cipher_textupper()
for i in range(26)
line =
for c in cipher_text
line += rot(c i) if cisalpha() else c
print(frotitline)
Exerciacutecios
Criptografia
Agora que vocecirc estaacute familiarizado com a Cifra de Ceacutesar vamos apresentar uma generalizaccedilatildeodesse conceito as cifras de substituiccedilatildeo simples
Em uma cifra de substituiccedilatildeo simples cada letra eacute substituida individualmente de acordo com um alfabeto de substituiccedilatildeo Esse alfabeto pode ser uma rotaccedilatildeo fixa do alfabeto normal (como acifra de Ceacutesar) ou algum embaralhamento mais complexo
Alguns exemplos notaacuteveis de cifra de substituiccedilatildeo simples satildeo
Nessa cifra cada letra eacute mapeada para o alfabeto invertido ou seja a primeira vira a uacuteltima asegunda vira a penuacuteltima e assim por diante
Assim se usarmos essa cifra em may the force be with you obteremos
Cifras de SubstituiccedilatildeoSimples
Cifra de AtbashSeu nome tem origem da primeira uacuteltima segunda e penuacuteltima letra Hebraica(Aleph-Taw-Bet-Shin)ldquo
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
original M A Y T H E F O R C E B E W I T H Y O U
cifrado N Z B G S V U L I X V Y V D R G S B L F
A Cifra de Atbash pode ser interpretada como um caso particular da Cifra de Affine uma cifra queusa aritimeacutetica modular para encriptar
A Cifra da Palavra-Chave ou keyword cipher consiste em escolher uma chave e usaacute-la para decidircomo as letras seratildeo susbtituidas
As palavras repetidas dessa chave seratildeo removidas e a proacutepria chave seraacute o comeccedilo do alfabeto aser mapeado O resto das letras continuaratildeo em ordem alfabeacutetica tirando as letras jaacute usadas
Por exemplo escolhendo a chave Marvin o novo alfabeto teraacute esse formato
Assim ao encriptar a mensagem Arthur Dent obteremos
Como mencionado na seccedilatildeo de Cifra de Ceacutesar uma mensagem encriptada por uma cifra desubstituiccedilatildeo simples teraacute uma distribuiccedilatildeo de frequecircncia das letras semelhante ao da liacutenguausada mas com as letras trocadas
Essa distribuiccedilatildeo de frequecircncia de um texto pode ser identificada atraveacutes de uma anaacutelise de
frequecircncia
Nas liacutenguas naturais algumas letras aparecem mais frequentemente que outras como umaespeacutecie de digital do idioma Por exemplo a letra mais comum na liacutegua inglesa eacute o e emportuguecircs eacute o a
Cifra da Palavra-Chave
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra M A R V I N B C D E F G H J K L O P Q S T U W X Y Z
original A R T H U R D E N T
cifrado M P S C T P V I J S
Detectando
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Aprenda as teacutecnicas de criptografia e como abordaacute-las em CTFs Desde a criptografia claacutessica dascifras ateacute a criptografia moderna das chaves puacuteblicas
Criptografia
Criptografia
Criptografia vem do grego kryptoacutes e graphein que significam secreta e escritarespectivamente Ateacute a era moderna ela era sinocircnimo de encriptaccedilatildeo que eacute a conversatildeo de umamensagem legiacutevel para algo aparentemente sem sentido e eacute esse o conceito usado em CTFs
Para entender melhor essa ideia digamos que Alice quer mandar uma mensagem para Bob semque uma terceira pessoa digamos Eve descubra seu counteuacutedo
Para isso Alice usa um certo algoritmo para tornar a mensagem ilegiacutevel de forma que soacute Bob
saberaacute reverter a mensagem encriptada
Assim quando Eve interceptar a mensagem por meio do canal inseguro se ela natildeo possui oalgoritmo criptograacutefico usado por Alice e Bob ela natildeo seraacute capaz de entender a mensagem
Ao longo da histoacuteria vaacuterias teacutecnicas de ocultar mensagens foram desenvolvidas Antes dacriptografia preacute-computacional a criptografia claacutessica era formada por um conjunto de meacutetodos
O que eacute criptografia
de substituiccedilatildeo e transpoisccedilatildeo de caracteres E com o advento da computaccedilatildeo a criptografia
moderna se tornou amplamente embasada em teorias matemaacuteticas e praacuteticas de ciecircncia dacomputaccedilatildeo
Para esse guia comeccedilaremos com os meacutetodos da criptografia claacutessica
Criptografia
A Cifra de Ceacutesar eacute um dos meacutetodos mais simples e comuns de encriptaccedilatildeo Mesmo natildeo sendomuito comum em CTFs ainda eacute um conhecimento baacutesico de criptografia
Nessa cifra cada letra da mensagem eacute substituida por uma letra do alfabeto deslocado por umnuacutemero fixo
Por exemplo se queremos encriptar a mensagem hack the planet podemos deslocar cada letrado alfabeto 3 vezes para direita (ou right 3) Assim a substituiccedilatildeo teria esse formato
originalABCDEFGHIJKLM
right3DEFGHI J KLMNOP
originalNOPQRSTUVWXYZ
right3QRSTUVWXYZABC
Dessa forma o texto gerado se torna incompreensiacutevel de forma que soacute quem sabe o algoritmousado poderaacute recuperaacute-lo
Cifra de Ceacutesar
Esse meacutetodo tem esse nome pois era usado por Juacutelio Ceacutesar em suascorrespondecircnciasldquo
texto original hack the planet
texto cifrado kdfn wkh sodqhw
Um dos tipos mais comuns de Cifra de Ceacutesar eacute o ROT13 Nele o alfabeto eacute deslocado 13 vezesComo o alfabeto tradicional possui 26 letras o ROT13 possui a propriedade de que o mesmoalgoritmo usado para encripitar a mensagem eacute usado para decriptar
Mensagens encriptadas pela cifra de ceacutesar normalmente produziratildeo um amontoado de caracteressem significado como kdfn wkh sodqhw e suas letras teratildeo uma distribuiccedilatildeo de frequecircncia similaragrave liacutengua usada (provavelmente inglecircs) mas com as letras trocadas Esse conceito seraacute abordadocom mais profundidade em Cifras de Substituiccedilatildeo
Devido a facilidade de quebrar essa cifra pode ser conveniente tentar solucionaacute-la sem nem aomenos uma anaacutelise de frequecircncia
Como num alfabeto usual satildeo usados apenas 26 caracteres a Cifra de Ceacutesar possui apenas 25tipos de rotaccedilotildees possiacuteveis (pois a rotaccedilatildeo 26 eacute a proacutepria mensagem) Assim um testa tudoonde vocecirc faz todos os tipos de rotaccedilotildees possiacuteveis eacute a opccedilatildeo mais simples
Existem ferramentas online muito eficientes para quebrar uma Cifra de Ceacutesar como o site dcodeporeacutem natildeo eacute muito difiacutecil codificar um testa tudo para isso
ROT13
Detectando
Solucionando
Codificando um testa tudo
Primeiro codificaremos uma funccedilatildeo rot() que aplica a rotaccedilatildeo em um caractere de acordo comodeslocamento determinado (o shift )
Assim podemos usar essa funccedilatildeo para criar um caesar_brute_force() que recebe um texto cifradoe imprime todas as rotaccedilotildees possiacuteveis
OverTheWire Krypton 1
OverTheWire Krypton 2
WeChall Caesar
def rot(char shift)
return chr((ord(char) - ord(A) + shift)26 + ord(A))
def caesar_brute_force(cipher_text)
cipher_text = cipher_textupper()
for i in range(26)
line =
for c in cipher_text
line += rot(c i) if cisalpha() else c
print(frotitline)
Exerciacutecios
Criptografia
Agora que vocecirc estaacute familiarizado com a Cifra de Ceacutesar vamos apresentar uma generalizaccedilatildeodesse conceito as cifras de substituiccedilatildeo simples
Em uma cifra de substituiccedilatildeo simples cada letra eacute substituida individualmente de acordo com um alfabeto de substituiccedilatildeo Esse alfabeto pode ser uma rotaccedilatildeo fixa do alfabeto normal (como acifra de Ceacutesar) ou algum embaralhamento mais complexo
Alguns exemplos notaacuteveis de cifra de substituiccedilatildeo simples satildeo
Nessa cifra cada letra eacute mapeada para o alfabeto invertido ou seja a primeira vira a uacuteltima asegunda vira a penuacuteltima e assim por diante
Assim se usarmos essa cifra em may the force be with you obteremos
Cifras de SubstituiccedilatildeoSimples
Cifra de AtbashSeu nome tem origem da primeira uacuteltima segunda e penuacuteltima letra Hebraica(Aleph-Taw-Bet-Shin)ldquo
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
original M A Y T H E F O R C E B E W I T H Y O U
cifrado N Z B G S V U L I X V Y V D R G S B L F
A Cifra de Atbash pode ser interpretada como um caso particular da Cifra de Affine uma cifra queusa aritimeacutetica modular para encriptar
A Cifra da Palavra-Chave ou keyword cipher consiste em escolher uma chave e usaacute-la para decidircomo as letras seratildeo susbtituidas
As palavras repetidas dessa chave seratildeo removidas e a proacutepria chave seraacute o comeccedilo do alfabeto aser mapeado O resto das letras continuaratildeo em ordem alfabeacutetica tirando as letras jaacute usadas
Por exemplo escolhendo a chave Marvin o novo alfabeto teraacute esse formato
Assim ao encriptar a mensagem Arthur Dent obteremos
Como mencionado na seccedilatildeo de Cifra de Ceacutesar uma mensagem encriptada por uma cifra desubstituiccedilatildeo simples teraacute uma distribuiccedilatildeo de frequecircncia das letras semelhante ao da liacutenguausada mas com as letras trocadas
Essa distribuiccedilatildeo de frequecircncia de um texto pode ser identificada atraveacutes de uma anaacutelise de
frequecircncia
Nas liacutenguas naturais algumas letras aparecem mais frequentemente que outras como umaespeacutecie de digital do idioma Por exemplo a letra mais comum na liacutegua inglesa eacute o e emportuguecircs eacute o a
Cifra da Palavra-Chave
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra M A R V I N B C D E F G H J K L O P Q S T U W X Y Z
original A R T H U R D E N T
cifrado M P S C T P V I J S
Detectando
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Criptografia
Criptografia vem do grego kryptoacutes e graphein que significam secreta e escritarespectivamente Ateacute a era moderna ela era sinocircnimo de encriptaccedilatildeo que eacute a conversatildeo de umamensagem legiacutevel para algo aparentemente sem sentido e eacute esse o conceito usado em CTFs
Para entender melhor essa ideia digamos que Alice quer mandar uma mensagem para Bob semque uma terceira pessoa digamos Eve descubra seu counteuacutedo
Para isso Alice usa um certo algoritmo para tornar a mensagem ilegiacutevel de forma que soacute Bob
saberaacute reverter a mensagem encriptada
Assim quando Eve interceptar a mensagem por meio do canal inseguro se ela natildeo possui oalgoritmo criptograacutefico usado por Alice e Bob ela natildeo seraacute capaz de entender a mensagem
Ao longo da histoacuteria vaacuterias teacutecnicas de ocultar mensagens foram desenvolvidas Antes dacriptografia preacute-computacional a criptografia claacutessica era formada por um conjunto de meacutetodos
O que eacute criptografia
de substituiccedilatildeo e transpoisccedilatildeo de caracteres E com o advento da computaccedilatildeo a criptografia
moderna se tornou amplamente embasada em teorias matemaacuteticas e praacuteticas de ciecircncia dacomputaccedilatildeo
Para esse guia comeccedilaremos com os meacutetodos da criptografia claacutessica
Criptografia
A Cifra de Ceacutesar eacute um dos meacutetodos mais simples e comuns de encriptaccedilatildeo Mesmo natildeo sendomuito comum em CTFs ainda eacute um conhecimento baacutesico de criptografia
Nessa cifra cada letra da mensagem eacute substituida por uma letra do alfabeto deslocado por umnuacutemero fixo
Por exemplo se queremos encriptar a mensagem hack the planet podemos deslocar cada letrado alfabeto 3 vezes para direita (ou right 3) Assim a substituiccedilatildeo teria esse formato
originalABCDEFGHIJKLM
right3DEFGHI J KLMNOP
originalNOPQRSTUVWXYZ
right3QRSTUVWXYZABC
Dessa forma o texto gerado se torna incompreensiacutevel de forma que soacute quem sabe o algoritmousado poderaacute recuperaacute-lo
Cifra de Ceacutesar
Esse meacutetodo tem esse nome pois era usado por Juacutelio Ceacutesar em suascorrespondecircnciasldquo
texto original hack the planet
texto cifrado kdfn wkh sodqhw
Um dos tipos mais comuns de Cifra de Ceacutesar eacute o ROT13 Nele o alfabeto eacute deslocado 13 vezesComo o alfabeto tradicional possui 26 letras o ROT13 possui a propriedade de que o mesmoalgoritmo usado para encripitar a mensagem eacute usado para decriptar
Mensagens encriptadas pela cifra de ceacutesar normalmente produziratildeo um amontoado de caracteressem significado como kdfn wkh sodqhw e suas letras teratildeo uma distribuiccedilatildeo de frequecircncia similaragrave liacutengua usada (provavelmente inglecircs) mas com as letras trocadas Esse conceito seraacute abordadocom mais profundidade em Cifras de Substituiccedilatildeo
Devido a facilidade de quebrar essa cifra pode ser conveniente tentar solucionaacute-la sem nem aomenos uma anaacutelise de frequecircncia
Como num alfabeto usual satildeo usados apenas 26 caracteres a Cifra de Ceacutesar possui apenas 25tipos de rotaccedilotildees possiacuteveis (pois a rotaccedilatildeo 26 eacute a proacutepria mensagem) Assim um testa tudoonde vocecirc faz todos os tipos de rotaccedilotildees possiacuteveis eacute a opccedilatildeo mais simples
Existem ferramentas online muito eficientes para quebrar uma Cifra de Ceacutesar como o site dcodeporeacutem natildeo eacute muito difiacutecil codificar um testa tudo para isso
ROT13
Detectando
Solucionando
Codificando um testa tudo
Primeiro codificaremos uma funccedilatildeo rot() que aplica a rotaccedilatildeo em um caractere de acordo comodeslocamento determinado (o shift )
Assim podemos usar essa funccedilatildeo para criar um caesar_brute_force() que recebe um texto cifradoe imprime todas as rotaccedilotildees possiacuteveis
OverTheWire Krypton 1
OverTheWire Krypton 2
WeChall Caesar
def rot(char shift)
return chr((ord(char) - ord(A) + shift)26 + ord(A))
def caesar_brute_force(cipher_text)
cipher_text = cipher_textupper()
for i in range(26)
line =
for c in cipher_text
line += rot(c i) if cisalpha() else c
print(frotitline)
Exerciacutecios
Criptografia
Agora que vocecirc estaacute familiarizado com a Cifra de Ceacutesar vamos apresentar uma generalizaccedilatildeodesse conceito as cifras de substituiccedilatildeo simples
Em uma cifra de substituiccedilatildeo simples cada letra eacute substituida individualmente de acordo com um alfabeto de substituiccedilatildeo Esse alfabeto pode ser uma rotaccedilatildeo fixa do alfabeto normal (como acifra de Ceacutesar) ou algum embaralhamento mais complexo
Alguns exemplos notaacuteveis de cifra de substituiccedilatildeo simples satildeo
Nessa cifra cada letra eacute mapeada para o alfabeto invertido ou seja a primeira vira a uacuteltima asegunda vira a penuacuteltima e assim por diante
Assim se usarmos essa cifra em may the force be with you obteremos
Cifras de SubstituiccedilatildeoSimples
Cifra de AtbashSeu nome tem origem da primeira uacuteltima segunda e penuacuteltima letra Hebraica(Aleph-Taw-Bet-Shin)ldquo
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
original M A Y T H E F O R C E B E W I T H Y O U
cifrado N Z B G S V U L I X V Y V D R G S B L F
A Cifra de Atbash pode ser interpretada como um caso particular da Cifra de Affine uma cifra queusa aritimeacutetica modular para encriptar
A Cifra da Palavra-Chave ou keyword cipher consiste em escolher uma chave e usaacute-la para decidircomo as letras seratildeo susbtituidas
As palavras repetidas dessa chave seratildeo removidas e a proacutepria chave seraacute o comeccedilo do alfabeto aser mapeado O resto das letras continuaratildeo em ordem alfabeacutetica tirando as letras jaacute usadas
Por exemplo escolhendo a chave Marvin o novo alfabeto teraacute esse formato
Assim ao encriptar a mensagem Arthur Dent obteremos
Como mencionado na seccedilatildeo de Cifra de Ceacutesar uma mensagem encriptada por uma cifra desubstituiccedilatildeo simples teraacute uma distribuiccedilatildeo de frequecircncia das letras semelhante ao da liacutenguausada mas com as letras trocadas
Essa distribuiccedilatildeo de frequecircncia de um texto pode ser identificada atraveacutes de uma anaacutelise de
frequecircncia
Nas liacutenguas naturais algumas letras aparecem mais frequentemente que outras como umaespeacutecie de digital do idioma Por exemplo a letra mais comum na liacutegua inglesa eacute o e emportuguecircs eacute o a
Cifra da Palavra-Chave
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra M A R V I N B C D E F G H J K L O P Q S T U W X Y Z
original A R T H U R D E N T
cifrado M P S C T P V I J S
Detectando
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
de substituiccedilatildeo e transpoisccedilatildeo de caracteres E com o advento da computaccedilatildeo a criptografia
moderna se tornou amplamente embasada em teorias matemaacuteticas e praacuteticas de ciecircncia dacomputaccedilatildeo
Para esse guia comeccedilaremos com os meacutetodos da criptografia claacutessica
Criptografia
A Cifra de Ceacutesar eacute um dos meacutetodos mais simples e comuns de encriptaccedilatildeo Mesmo natildeo sendomuito comum em CTFs ainda eacute um conhecimento baacutesico de criptografia
Nessa cifra cada letra da mensagem eacute substituida por uma letra do alfabeto deslocado por umnuacutemero fixo
Por exemplo se queremos encriptar a mensagem hack the planet podemos deslocar cada letrado alfabeto 3 vezes para direita (ou right 3) Assim a substituiccedilatildeo teria esse formato
originalABCDEFGHIJKLM
right3DEFGHI J KLMNOP
originalNOPQRSTUVWXYZ
right3QRSTUVWXYZABC
Dessa forma o texto gerado se torna incompreensiacutevel de forma que soacute quem sabe o algoritmousado poderaacute recuperaacute-lo
Cifra de Ceacutesar
Esse meacutetodo tem esse nome pois era usado por Juacutelio Ceacutesar em suascorrespondecircnciasldquo
texto original hack the planet
texto cifrado kdfn wkh sodqhw
Um dos tipos mais comuns de Cifra de Ceacutesar eacute o ROT13 Nele o alfabeto eacute deslocado 13 vezesComo o alfabeto tradicional possui 26 letras o ROT13 possui a propriedade de que o mesmoalgoritmo usado para encripitar a mensagem eacute usado para decriptar
Mensagens encriptadas pela cifra de ceacutesar normalmente produziratildeo um amontoado de caracteressem significado como kdfn wkh sodqhw e suas letras teratildeo uma distribuiccedilatildeo de frequecircncia similaragrave liacutengua usada (provavelmente inglecircs) mas com as letras trocadas Esse conceito seraacute abordadocom mais profundidade em Cifras de Substituiccedilatildeo
Devido a facilidade de quebrar essa cifra pode ser conveniente tentar solucionaacute-la sem nem aomenos uma anaacutelise de frequecircncia
Como num alfabeto usual satildeo usados apenas 26 caracteres a Cifra de Ceacutesar possui apenas 25tipos de rotaccedilotildees possiacuteveis (pois a rotaccedilatildeo 26 eacute a proacutepria mensagem) Assim um testa tudoonde vocecirc faz todos os tipos de rotaccedilotildees possiacuteveis eacute a opccedilatildeo mais simples
Existem ferramentas online muito eficientes para quebrar uma Cifra de Ceacutesar como o site dcodeporeacutem natildeo eacute muito difiacutecil codificar um testa tudo para isso
ROT13
Detectando
Solucionando
Codificando um testa tudo
Primeiro codificaremos uma funccedilatildeo rot() que aplica a rotaccedilatildeo em um caractere de acordo comodeslocamento determinado (o shift )
Assim podemos usar essa funccedilatildeo para criar um caesar_brute_force() que recebe um texto cifradoe imprime todas as rotaccedilotildees possiacuteveis
OverTheWire Krypton 1
OverTheWire Krypton 2
WeChall Caesar
def rot(char shift)
return chr((ord(char) - ord(A) + shift)26 + ord(A))
def caesar_brute_force(cipher_text)
cipher_text = cipher_textupper()
for i in range(26)
line =
for c in cipher_text
line += rot(c i) if cisalpha() else c
print(frotitline)
Exerciacutecios
Criptografia
Agora que vocecirc estaacute familiarizado com a Cifra de Ceacutesar vamos apresentar uma generalizaccedilatildeodesse conceito as cifras de substituiccedilatildeo simples
Em uma cifra de substituiccedilatildeo simples cada letra eacute substituida individualmente de acordo com um alfabeto de substituiccedilatildeo Esse alfabeto pode ser uma rotaccedilatildeo fixa do alfabeto normal (como acifra de Ceacutesar) ou algum embaralhamento mais complexo
Alguns exemplos notaacuteveis de cifra de substituiccedilatildeo simples satildeo
Nessa cifra cada letra eacute mapeada para o alfabeto invertido ou seja a primeira vira a uacuteltima asegunda vira a penuacuteltima e assim por diante
Assim se usarmos essa cifra em may the force be with you obteremos
Cifras de SubstituiccedilatildeoSimples
Cifra de AtbashSeu nome tem origem da primeira uacuteltima segunda e penuacuteltima letra Hebraica(Aleph-Taw-Bet-Shin)ldquo
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
original M A Y T H E F O R C E B E W I T H Y O U
cifrado N Z B G S V U L I X V Y V D R G S B L F
A Cifra de Atbash pode ser interpretada como um caso particular da Cifra de Affine uma cifra queusa aritimeacutetica modular para encriptar
A Cifra da Palavra-Chave ou keyword cipher consiste em escolher uma chave e usaacute-la para decidircomo as letras seratildeo susbtituidas
As palavras repetidas dessa chave seratildeo removidas e a proacutepria chave seraacute o comeccedilo do alfabeto aser mapeado O resto das letras continuaratildeo em ordem alfabeacutetica tirando as letras jaacute usadas
Por exemplo escolhendo a chave Marvin o novo alfabeto teraacute esse formato
Assim ao encriptar a mensagem Arthur Dent obteremos
Como mencionado na seccedilatildeo de Cifra de Ceacutesar uma mensagem encriptada por uma cifra desubstituiccedilatildeo simples teraacute uma distribuiccedilatildeo de frequecircncia das letras semelhante ao da liacutenguausada mas com as letras trocadas
Essa distribuiccedilatildeo de frequecircncia de um texto pode ser identificada atraveacutes de uma anaacutelise de
frequecircncia
Nas liacutenguas naturais algumas letras aparecem mais frequentemente que outras como umaespeacutecie de digital do idioma Por exemplo a letra mais comum na liacutegua inglesa eacute o e emportuguecircs eacute o a
Cifra da Palavra-Chave
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra M A R V I N B C D E F G H J K L O P Q S T U W X Y Z
original A R T H U R D E N T
cifrado M P S C T P V I J S
Detectando
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Criptografia
A Cifra de Ceacutesar eacute um dos meacutetodos mais simples e comuns de encriptaccedilatildeo Mesmo natildeo sendomuito comum em CTFs ainda eacute um conhecimento baacutesico de criptografia
Nessa cifra cada letra da mensagem eacute substituida por uma letra do alfabeto deslocado por umnuacutemero fixo
Por exemplo se queremos encriptar a mensagem hack the planet podemos deslocar cada letrado alfabeto 3 vezes para direita (ou right 3) Assim a substituiccedilatildeo teria esse formato
originalABCDEFGHIJKLM
right3DEFGHI J KLMNOP
originalNOPQRSTUVWXYZ
right3QRSTUVWXYZABC
Dessa forma o texto gerado se torna incompreensiacutevel de forma que soacute quem sabe o algoritmousado poderaacute recuperaacute-lo
Cifra de Ceacutesar
Esse meacutetodo tem esse nome pois era usado por Juacutelio Ceacutesar em suascorrespondecircnciasldquo
texto original hack the planet
texto cifrado kdfn wkh sodqhw
Um dos tipos mais comuns de Cifra de Ceacutesar eacute o ROT13 Nele o alfabeto eacute deslocado 13 vezesComo o alfabeto tradicional possui 26 letras o ROT13 possui a propriedade de que o mesmoalgoritmo usado para encripitar a mensagem eacute usado para decriptar
Mensagens encriptadas pela cifra de ceacutesar normalmente produziratildeo um amontoado de caracteressem significado como kdfn wkh sodqhw e suas letras teratildeo uma distribuiccedilatildeo de frequecircncia similaragrave liacutengua usada (provavelmente inglecircs) mas com as letras trocadas Esse conceito seraacute abordadocom mais profundidade em Cifras de Substituiccedilatildeo
Devido a facilidade de quebrar essa cifra pode ser conveniente tentar solucionaacute-la sem nem aomenos uma anaacutelise de frequecircncia
Como num alfabeto usual satildeo usados apenas 26 caracteres a Cifra de Ceacutesar possui apenas 25tipos de rotaccedilotildees possiacuteveis (pois a rotaccedilatildeo 26 eacute a proacutepria mensagem) Assim um testa tudoonde vocecirc faz todos os tipos de rotaccedilotildees possiacuteveis eacute a opccedilatildeo mais simples
Existem ferramentas online muito eficientes para quebrar uma Cifra de Ceacutesar como o site dcodeporeacutem natildeo eacute muito difiacutecil codificar um testa tudo para isso
ROT13
Detectando
Solucionando
Codificando um testa tudo
Primeiro codificaremos uma funccedilatildeo rot() que aplica a rotaccedilatildeo em um caractere de acordo comodeslocamento determinado (o shift )
Assim podemos usar essa funccedilatildeo para criar um caesar_brute_force() que recebe um texto cifradoe imprime todas as rotaccedilotildees possiacuteveis
OverTheWire Krypton 1
OverTheWire Krypton 2
WeChall Caesar
def rot(char shift)
return chr((ord(char) - ord(A) + shift)26 + ord(A))
def caesar_brute_force(cipher_text)
cipher_text = cipher_textupper()
for i in range(26)
line =
for c in cipher_text
line += rot(c i) if cisalpha() else c
print(frotitline)
Exerciacutecios
Criptografia
Agora que vocecirc estaacute familiarizado com a Cifra de Ceacutesar vamos apresentar uma generalizaccedilatildeodesse conceito as cifras de substituiccedilatildeo simples
Em uma cifra de substituiccedilatildeo simples cada letra eacute substituida individualmente de acordo com um alfabeto de substituiccedilatildeo Esse alfabeto pode ser uma rotaccedilatildeo fixa do alfabeto normal (como acifra de Ceacutesar) ou algum embaralhamento mais complexo
Alguns exemplos notaacuteveis de cifra de substituiccedilatildeo simples satildeo
Nessa cifra cada letra eacute mapeada para o alfabeto invertido ou seja a primeira vira a uacuteltima asegunda vira a penuacuteltima e assim por diante
Assim se usarmos essa cifra em may the force be with you obteremos
Cifras de SubstituiccedilatildeoSimples
Cifra de AtbashSeu nome tem origem da primeira uacuteltima segunda e penuacuteltima letra Hebraica(Aleph-Taw-Bet-Shin)ldquo
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
original M A Y T H E F O R C E B E W I T H Y O U
cifrado N Z B G S V U L I X V Y V D R G S B L F
A Cifra de Atbash pode ser interpretada como um caso particular da Cifra de Affine uma cifra queusa aritimeacutetica modular para encriptar
A Cifra da Palavra-Chave ou keyword cipher consiste em escolher uma chave e usaacute-la para decidircomo as letras seratildeo susbtituidas
As palavras repetidas dessa chave seratildeo removidas e a proacutepria chave seraacute o comeccedilo do alfabeto aser mapeado O resto das letras continuaratildeo em ordem alfabeacutetica tirando as letras jaacute usadas
Por exemplo escolhendo a chave Marvin o novo alfabeto teraacute esse formato
Assim ao encriptar a mensagem Arthur Dent obteremos
Como mencionado na seccedilatildeo de Cifra de Ceacutesar uma mensagem encriptada por uma cifra desubstituiccedilatildeo simples teraacute uma distribuiccedilatildeo de frequecircncia das letras semelhante ao da liacutenguausada mas com as letras trocadas
Essa distribuiccedilatildeo de frequecircncia de um texto pode ser identificada atraveacutes de uma anaacutelise de
frequecircncia
Nas liacutenguas naturais algumas letras aparecem mais frequentemente que outras como umaespeacutecie de digital do idioma Por exemplo a letra mais comum na liacutegua inglesa eacute o e emportuguecircs eacute o a
Cifra da Palavra-Chave
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra M A R V I N B C D E F G H J K L O P Q S T U W X Y Z
original A R T H U R D E N T
cifrado M P S C T P V I J S
Detectando
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Um dos tipos mais comuns de Cifra de Ceacutesar eacute o ROT13 Nele o alfabeto eacute deslocado 13 vezesComo o alfabeto tradicional possui 26 letras o ROT13 possui a propriedade de que o mesmoalgoritmo usado para encripitar a mensagem eacute usado para decriptar
Mensagens encriptadas pela cifra de ceacutesar normalmente produziratildeo um amontoado de caracteressem significado como kdfn wkh sodqhw e suas letras teratildeo uma distribuiccedilatildeo de frequecircncia similaragrave liacutengua usada (provavelmente inglecircs) mas com as letras trocadas Esse conceito seraacute abordadocom mais profundidade em Cifras de Substituiccedilatildeo
Devido a facilidade de quebrar essa cifra pode ser conveniente tentar solucionaacute-la sem nem aomenos uma anaacutelise de frequecircncia
Como num alfabeto usual satildeo usados apenas 26 caracteres a Cifra de Ceacutesar possui apenas 25tipos de rotaccedilotildees possiacuteveis (pois a rotaccedilatildeo 26 eacute a proacutepria mensagem) Assim um testa tudoonde vocecirc faz todos os tipos de rotaccedilotildees possiacuteveis eacute a opccedilatildeo mais simples
Existem ferramentas online muito eficientes para quebrar uma Cifra de Ceacutesar como o site dcodeporeacutem natildeo eacute muito difiacutecil codificar um testa tudo para isso
ROT13
Detectando
Solucionando
Codificando um testa tudo
Primeiro codificaremos uma funccedilatildeo rot() que aplica a rotaccedilatildeo em um caractere de acordo comodeslocamento determinado (o shift )
Assim podemos usar essa funccedilatildeo para criar um caesar_brute_force() que recebe um texto cifradoe imprime todas as rotaccedilotildees possiacuteveis
OverTheWire Krypton 1
OverTheWire Krypton 2
WeChall Caesar
def rot(char shift)
return chr((ord(char) - ord(A) + shift)26 + ord(A))
def caesar_brute_force(cipher_text)
cipher_text = cipher_textupper()
for i in range(26)
line =
for c in cipher_text
line += rot(c i) if cisalpha() else c
print(frotitline)
Exerciacutecios
Criptografia
Agora que vocecirc estaacute familiarizado com a Cifra de Ceacutesar vamos apresentar uma generalizaccedilatildeodesse conceito as cifras de substituiccedilatildeo simples
Em uma cifra de substituiccedilatildeo simples cada letra eacute substituida individualmente de acordo com um alfabeto de substituiccedilatildeo Esse alfabeto pode ser uma rotaccedilatildeo fixa do alfabeto normal (como acifra de Ceacutesar) ou algum embaralhamento mais complexo
Alguns exemplos notaacuteveis de cifra de substituiccedilatildeo simples satildeo
Nessa cifra cada letra eacute mapeada para o alfabeto invertido ou seja a primeira vira a uacuteltima asegunda vira a penuacuteltima e assim por diante
Assim se usarmos essa cifra em may the force be with you obteremos
Cifras de SubstituiccedilatildeoSimples
Cifra de AtbashSeu nome tem origem da primeira uacuteltima segunda e penuacuteltima letra Hebraica(Aleph-Taw-Bet-Shin)ldquo
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
original M A Y T H E F O R C E B E W I T H Y O U
cifrado N Z B G S V U L I X V Y V D R G S B L F
A Cifra de Atbash pode ser interpretada como um caso particular da Cifra de Affine uma cifra queusa aritimeacutetica modular para encriptar
A Cifra da Palavra-Chave ou keyword cipher consiste em escolher uma chave e usaacute-la para decidircomo as letras seratildeo susbtituidas
As palavras repetidas dessa chave seratildeo removidas e a proacutepria chave seraacute o comeccedilo do alfabeto aser mapeado O resto das letras continuaratildeo em ordem alfabeacutetica tirando as letras jaacute usadas
Por exemplo escolhendo a chave Marvin o novo alfabeto teraacute esse formato
Assim ao encriptar a mensagem Arthur Dent obteremos
Como mencionado na seccedilatildeo de Cifra de Ceacutesar uma mensagem encriptada por uma cifra desubstituiccedilatildeo simples teraacute uma distribuiccedilatildeo de frequecircncia das letras semelhante ao da liacutenguausada mas com as letras trocadas
Essa distribuiccedilatildeo de frequecircncia de um texto pode ser identificada atraveacutes de uma anaacutelise de
frequecircncia
Nas liacutenguas naturais algumas letras aparecem mais frequentemente que outras como umaespeacutecie de digital do idioma Por exemplo a letra mais comum na liacutegua inglesa eacute o e emportuguecircs eacute o a
Cifra da Palavra-Chave
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra M A R V I N B C D E F G H J K L O P Q S T U W X Y Z
original A R T H U R D E N T
cifrado M P S C T P V I J S
Detectando
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Primeiro codificaremos uma funccedilatildeo rot() que aplica a rotaccedilatildeo em um caractere de acordo comodeslocamento determinado (o shift )
Assim podemos usar essa funccedilatildeo para criar um caesar_brute_force() que recebe um texto cifradoe imprime todas as rotaccedilotildees possiacuteveis
OverTheWire Krypton 1
OverTheWire Krypton 2
WeChall Caesar
def rot(char shift)
return chr((ord(char) - ord(A) + shift)26 + ord(A))
def caesar_brute_force(cipher_text)
cipher_text = cipher_textupper()
for i in range(26)
line =
for c in cipher_text
line += rot(c i) if cisalpha() else c
print(frotitline)
Exerciacutecios
Criptografia
Agora que vocecirc estaacute familiarizado com a Cifra de Ceacutesar vamos apresentar uma generalizaccedilatildeodesse conceito as cifras de substituiccedilatildeo simples
Em uma cifra de substituiccedilatildeo simples cada letra eacute substituida individualmente de acordo com um alfabeto de substituiccedilatildeo Esse alfabeto pode ser uma rotaccedilatildeo fixa do alfabeto normal (como acifra de Ceacutesar) ou algum embaralhamento mais complexo
Alguns exemplos notaacuteveis de cifra de substituiccedilatildeo simples satildeo
Nessa cifra cada letra eacute mapeada para o alfabeto invertido ou seja a primeira vira a uacuteltima asegunda vira a penuacuteltima e assim por diante
Assim se usarmos essa cifra em may the force be with you obteremos
Cifras de SubstituiccedilatildeoSimples
Cifra de AtbashSeu nome tem origem da primeira uacuteltima segunda e penuacuteltima letra Hebraica(Aleph-Taw-Bet-Shin)ldquo
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
original M A Y T H E F O R C E B E W I T H Y O U
cifrado N Z B G S V U L I X V Y V D R G S B L F
A Cifra de Atbash pode ser interpretada como um caso particular da Cifra de Affine uma cifra queusa aritimeacutetica modular para encriptar
A Cifra da Palavra-Chave ou keyword cipher consiste em escolher uma chave e usaacute-la para decidircomo as letras seratildeo susbtituidas
As palavras repetidas dessa chave seratildeo removidas e a proacutepria chave seraacute o comeccedilo do alfabeto aser mapeado O resto das letras continuaratildeo em ordem alfabeacutetica tirando as letras jaacute usadas
Por exemplo escolhendo a chave Marvin o novo alfabeto teraacute esse formato
Assim ao encriptar a mensagem Arthur Dent obteremos
Como mencionado na seccedilatildeo de Cifra de Ceacutesar uma mensagem encriptada por uma cifra desubstituiccedilatildeo simples teraacute uma distribuiccedilatildeo de frequecircncia das letras semelhante ao da liacutenguausada mas com as letras trocadas
Essa distribuiccedilatildeo de frequecircncia de um texto pode ser identificada atraveacutes de uma anaacutelise de
frequecircncia
Nas liacutenguas naturais algumas letras aparecem mais frequentemente que outras como umaespeacutecie de digital do idioma Por exemplo a letra mais comum na liacutegua inglesa eacute o e emportuguecircs eacute o a
Cifra da Palavra-Chave
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra M A R V I N B C D E F G H J K L O P Q S T U W X Y Z
original A R T H U R D E N T
cifrado M P S C T P V I J S
Detectando
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Criptografia
Agora que vocecirc estaacute familiarizado com a Cifra de Ceacutesar vamos apresentar uma generalizaccedilatildeodesse conceito as cifras de substituiccedilatildeo simples
Em uma cifra de substituiccedilatildeo simples cada letra eacute substituida individualmente de acordo com um alfabeto de substituiccedilatildeo Esse alfabeto pode ser uma rotaccedilatildeo fixa do alfabeto normal (como acifra de Ceacutesar) ou algum embaralhamento mais complexo
Alguns exemplos notaacuteveis de cifra de substituiccedilatildeo simples satildeo
Nessa cifra cada letra eacute mapeada para o alfabeto invertido ou seja a primeira vira a uacuteltima asegunda vira a penuacuteltima e assim por diante
Assim se usarmos essa cifra em may the force be with you obteremos
Cifras de SubstituiccedilatildeoSimples
Cifra de AtbashSeu nome tem origem da primeira uacuteltima segunda e penuacuteltima letra Hebraica(Aleph-Taw-Bet-Shin)ldquo
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
original M A Y T H E F O R C E B E W I T H Y O U
cifrado N Z B G S V U L I X V Y V D R G S B L F
A Cifra de Atbash pode ser interpretada como um caso particular da Cifra de Affine uma cifra queusa aritimeacutetica modular para encriptar
A Cifra da Palavra-Chave ou keyword cipher consiste em escolher uma chave e usaacute-la para decidircomo as letras seratildeo susbtituidas
As palavras repetidas dessa chave seratildeo removidas e a proacutepria chave seraacute o comeccedilo do alfabeto aser mapeado O resto das letras continuaratildeo em ordem alfabeacutetica tirando as letras jaacute usadas
Por exemplo escolhendo a chave Marvin o novo alfabeto teraacute esse formato
Assim ao encriptar a mensagem Arthur Dent obteremos
Como mencionado na seccedilatildeo de Cifra de Ceacutesar uma mensagem encriptada por uma cifra desubstituiccedilatildeo simples teraacute uma distribuiccedilatildeo de frequecircncia das letras semelhante ao da liacutenguausada mas com as letras trocadas
Essa distribuiccedilatildeo de frequecircncia de um texto pode ser identificada atraveacutes de uma anaacutelise de
frequecircncia
Nas liacutenguas naturais algumas letras aparecem mais frequentemente que outras como umaespeacutecie de digital do idioma Por exemplo a letra mais comum na liacutegua inglesa eacute o e emportuguecircs eacute o a
Cifra da Palavra-Chave
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra M A R V I N B C D E F G H J K L O P Q S T U W X Y Z
original A R T H U R D E N T
cifrado M P S C T P V I J S
Detectando
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
A Cifra de Atbash pode ser interpretada como um caso particular da Cifra de Affine uma cifra queusa aritimeacutetica modular para encriptar
A Cifra da Palavra-Chave ou keyword cipher consiste em escolher uma chave e usaacute-la para decidircomo as letras seratildeo susbtituidas
As palavras repetidas dessa chave seratildeo removidas e a proacutepria chave seraacute o comeccedilo do alfabeto aser mapeado O resto das letras continuaratildeo em ordem alfabeacutetica tirando as letras jaacute usadas
Por exemplo escolhendo a chave Marvin o novo alfabeto teraacute esse formato
Assim ao encriptar a mensagem Arthur Dent obteremos
Como mencionado na seccedilatildeo de Cifra de Ceacutesar uma mensagem encriptada por uma cifra desubstituiccedilatildeo simples teraacute uma distribuiccedilatildeo de frequecircncia das letras semelhante ao da liacutenguausada mas com as letras trocadas
Essa distribuiccedilatildeo de frequecircncia de um texto pode ser identificada atraveacutes de uma anaacutelise de
frequecircncia
Nas liacutenguas naturais algumas letras aparecem mais frequentemente que outras como umaespeacutecie de digital do idioma Por exemplo a letra mais comum na liacutegua inglesa eacute o e emportuguecircs eacute o a
Cifra da Palavra-Chave
original A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cifra M A R V I N B C D E F G H J K L O P Q S T U W X Y Z
original A R T H U R D E N T
cifrado M P S C T P V I J S
Detectando
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Essa anaacutelise de frequecircncia pode ser feita simplesmente contando as letras do texto Existemferramentas online para isso como o site dcode ou pode ser feito rapidamente com um bibliotecaem Python onde text eacute o texto a ser analisado
O ponto fraco de cifras de substituiccedilatildeo simples eacute que elas satildeo muito suscetiacuteveis agrave anaacutelises de
frequecircncia
Assim se vocecirc tiver um texto de tamanho razoaacutevel por volta de 50 caracteres eacute possiacutevel analisara frequecircncia com que as letras aparecem e deduzir qual foi o alfabeto de substituiccedilatildeo usado
O site guaballa eacute um excelente decodificador de cifras de substituiccedilatildeo simples
Cifra de Atbash Jeremiahs Game
Cifra da Palavra-Chave GeeksforGeeks
Learn Cryptography
OverTheWire Krypton 3
from collections import Counter
Counter(textupper())most_common()
Solucionando
Referecircncias
Exerciacutecios
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Criptografia
Devido agrave vulnerabilidade das cifras de substituiccedilatildeo simples foi necessaacuterio a criaccedilatildeo de uma cifraque conseguisse se proteger disso A Cifra de Vigenegravere veio com esse propoacutestio e eacutebasicamente uma extensatildeo da foacutermula da Cifra de Ceacutesar Ela gera uma distribuiccedilatildeo praticamenteuniforme em uma anaacutelise de frequecircncia e foi considerada inquebraacutevel por 3 seacuteculos
Essa Cifra consiste basicamente em pegar uma palavra-chave e aplicar a cifra de Ceacutesar vaacuteriasvezes de acordo com os caracteres da palavra-chave
Por exemplo se noacutes queremos encriptar a mensagem the cake is a lie usando a palavra-chave portal primeiro cada caractere da palavra-chave teraacute um nuacutemero de rotaccedilotildees equivalente (de
acordo com sua posiccedilatildeo no alfabeto)
letraP O R T A L
rotaccedilotildees161518201 12
Assim para cada letra da mensagem seraacute rotacionada de acordo com a sequecircncia de rotaccedilotildeesacima
Essa cifra diferentemente das cifras de substituiccedilatildeo simples eacute uma Cifra de Substituiccedilatildeo
Polialfabeacutetica
Cifra de Vigenegravere
Ela tem esse nome em homenagem a Blaise de Vigenegravereldquo
mensagem T H E C A K E I S A L I E
chave P O R T A L P O R T A L P
mensagem cifrada I V V V A V T W J T L T T
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Um texto encriptado por essa cifra pode ser detectado atraveacutes de uma anaacutelise de frequecircncia
A Cifra de Vigenegravere costuma gerar textos com uma distribuiccedilatildeo de frequecircncia das letras proacuteximoao uniforme Se um texto cifrado que natildeo eacute esperado esse tipo de distribuiccedilatildeo obter esseresultado provavelmente eacute Cifra de Vigenegravere ou alguma outra Cifra Polialfabeacutetica
Mesmo gerando uma distribuiccedilatildeo uniforme em anaacutelises de frequecircncia essa cifra tem umavulnerabilidade a palavra-chave eacute usada vaacuterias vezes em um texto grande
Dessa forma se a chave tiver tamanho 5 por exemplo e ajustarmos o texto em linhas decomprimento 5 cada coluna teraacute a mesma rotaccedilatildeo Assim podemos chutar tamanhos da palavra-chave e usar a mesma anaacutelise de cifra de substituiccedilatildeo simples para cada coluna
Uma ferramenta online muito uacutetill para quebrar a Cifra de Vigenegravere eacute o site dcode
GeeksforGeeks
OverTheWire Krypton4
OverTheWire Krypton5
Detectando
Solucinando
Referecircncias
Exerciacutecios
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
picoCTF-2018 blaises cipher
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Criptografia
Por muitos anos o problema de esconder os padrotildees da liacutengua ainda persistia poreacutem no final doseacuteculo XIX surgiu aquele que seria o meacutetodo mais forte de criptografia o one-time pad
Primeiro precisamos gerar uma sequecircncia aleatoacuteria de bits do mesmo tamanho da mensagemessa seraacute o one-time pad Essa chave deveraacute ser passada por um meio seguro para o destinataacuterio
Para esse exemplo usaremos codificaccedilatildeo em base64 para os caracteres
Depois vamos criar o texto cifrado a partir da mensagem e do one-time pad Para issocodificaremos a mensagem e o one-time pad em binaacuterio e realizamos a operaccedilatildeo de ou exclusivo
bit a bit ou XOR
Jaacute para recuperar a mensagem usamos exatamente a mesma operaccedilatildeo realizando um XOR bit a
One-Time Pad
Funcionamento
mensagem H O P E
one-time pad y T 2 5
A operaccedilatildeo XOR de dois bits retorna 1 se eles forem diferentes e 0 se foremiguaisldquo
mensagem H O P E -gt 000111 001110 001111 000100
one-time pad y T 2 5 -gt 110010 010011 110110 111001
|
XOR |
V
texto cifrado 1 d 5 9 -gt 110101 011101 111001 111101
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
bit com o texto cifrado e o one-time pad
Apoacutes um uso o one-time pad deveraacute ser destruiacutedo
No final da deacutecada de 1940 Claude Shannon provou que se cada chave for usada uma uacutenica vez
e ela for gerada aleatoriamente entatildeo o meacutetodo de one-time pad eacute perfeitamente seguro
Isso pode ser visualizado pelo seguinte exemplo digamos que temos uma mensagem de 24 bitslogo temos 2^24 possiacuteveis valores para a chave A partir disso temos dois problemas
Poderiacuteamos tentar verificar todas as chaves Para uma mensagem de 24 bits ainda eacute umaalternativa viaacutevel mas de expandirmos para 54 mesmo se checando 1 milhatildeo de valores porsegundo ainda levariacuteamos mais de 570 anos para checar todas as possibilidades
Outro problema eacute que cada possiacutevel chave gera uma possiacutevel mensagem com igual probabilidadedas demais assim se checarmos todas as chaves veriacuteamos todas as combinaccedilotildees possiacuteveis demensagens de 24 bits
chavepossiacutevelmensagem
A AA A
1 d5 9
A AA B
1 d5 8
+ Jz 5
L UK E
y T2 5
H OP E
A criptografia perfeita
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Dessa forma natildeo haacute como distinguir a mensagem real de todas as outras possibilidades
Entetanto mesmo a teacutecnica de One-time pad sendo simples e teoricamente inquebraacutevel napraacutetica ela possui alguns pontos negativos que costumam trazer suas vulnerabilidades
A chave precisa ser usada uma uacutenica vez Se repetida ela pode ser facilmente quebradaEssa era a principal vulnerabilidade de uma cifra semelhante a Cifra de VernamAinda eacute preciso de um canal seguro para distribuir as chavesConseguir bits realmente aleatoacuterios eacute bem difiacutecil O exeacutercito dos Estados Unidosconseguiu decifrar em 1944 as mensagens alematildes cifradas por one-time pad porque aschaves natildeo eram completamente aleatoacuteriasA chave precisa ser tatildeo longa quanto a mensagem Isso implica numa grande dificuldadede gerar e armazenar chaves para mensagens longas
Esses dois uacuteltimos pontos especialmente acabam tornando o one-time pad teoacuterico impraticaacutevel
Como alternativa agraves longas sequecircncias de bits realmente aleatoacuterias foi criado um algoritmodeterminiacutestico capaz de produzir valores pseudo-aleatoacuterios o linear feedback shift register
ou LFSR
Valores pseudo-aleatoacuterios satildeo sequecircncias de bits que parecem ser aleatoacuterias Elas natildeo satildeoaleatoacuterias de fato pois satildeo criadas por algoritmos determiniacutesticos mas para efeitos praacuteticos temas mesmas propriedades de sequecircncias aleatoacuterias
Esses valores pseudo-aleatoacuterios satildeo criados da seguinte maneira
Primeiro precisamos de uma sequecircncia de bits inicial chamada de seed Essa seed daraacute otamanho do registrador que eacute um elemento que armazena todos os bits necessaacuterios para geraro proacuteximo
Depois geraremos uma nova sequecircncia atraveacutes da operaccedilatildeo XOR de dois bits colocando os bitsresultantes agrave direita
Linear Feedback Shift Register
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Por exemplo a imagem acima representa o registrador com a seed Nela os bits 11 e 9 foramescolhidos para gerar o proacuteximo Essas posiccedilotildees satildeo chamadas de tap ela eacute uma numeraccedilatildeo quecomeccedila do 1 indo da direita para esquerda
Para descrever essas posiccedilotildees do algoritmo usamos a notaccedilatildeo [N k] LFSR que representa umalgoritmo de LFSR com um registrador de N bits com taps em N e k Na imagem acima temosum [119] LFSR
Abaixo estaacute uma pequena simulaccedilatildeo de um [54] LFSR com a seed 00001
Assim precisamos apenas criar uma lista de pequenas seeds e distribuiacute-las por um canal segurousando elas para criar chaves do one-time pad por meio do LFSR
[54] LFSR
novo bit
V
seed -gt 00001 0
00010 0
00100 0
01000 1
10001 1
00011 0
00110 0
01100 1
11001 0
10010 1
00101 0
^
registrador
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Krypton 6
Khan Academy
Computer Science - Sedgewick amp Wayne
Mensagens alematildes natildeo aleatoacuterias
Exerciacutecios
Referecircncias
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Criptografia
Na tentativa de encontrar um meacutetodo alternativo agraves cifras de substituiccedilatildeo simples que estavamse tornando fraacutegeis foram criadas as Cifras de Transposiccedilatildeo Nessa cifra o texto permanece omesmo mas as ordem dos caracteres satildeo alteradas embaralhando a mensagem de acordo comum padratildeo
Existem vaacuterios padrotildees diferentes para realizar a transposiccedilatildeo os dois mais famosos satildeo a transposiccedilatildeo colunar simples e a rail fence
Com essa regra a mensagem eacute escrita horizontalmente numa matriz de largura fixa e a saiacuteda eacute otexto lido verticalmente nessa matriz
Numa transposiccedilatildeo colunar simples essa leitura eacute feita por colunas da esquerda para direitaPor exemplo com texto a wizard is never late a encriptaccedilatildeo seraacute da forma
Para decriptar escrevemos o texto cifrado verticalmente numa matriz de mesma largura e lemoso texto horizontalmente
A ordem de leitura de colunas pode ser determinada tambeacutem de acordo com uma palvra-chave
Cifras de Transposiccedilatildeo
Transposiccedilatildeo colunar
Texto A WIZARD IS NEVER LATE
Matriz
A W I Z A R
D I S N E V
E R L A T E
Texto cifrado ADEWIRISLZNAAETRVE
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
O tamanho da palavra-chave definiraacute a largura da matriz usada e cada caractere determina aordem que as colunas seratildeo lidas Por exemplo usando a chave FRODO numeramos as letras emordem alfabeacutetica 25314 Assim podemos usar essa ordem para ler as colunas e gerar o textocifrado
Nesse tipo de transposiccedilatildeo os caracteres satildeo escritos numa matriz usando um padratildeo fixo emzigue-zague e a saiacuteda eacute o texto lido horizontalmente o rail fence admite vaacuterias variaccedilotildees como alinha que a primeira letra comeccedila e o nuacutemero de linhas usadas Por exemplo usando um rail fencecom duas linhas
Outro exemplo mas com trecircs linhas seraacute da forma
Texto A WIZARD IS NEVER LATE
Ordem 2 5 3 1 4
Matriz A W I Z A
R D I S N
E V E R L
A T E
Texto cifrado ZSRAREAIIEEANLWDVT
Rail Fence
Texto A WIZARD IS NEVER LATE
Matriz
A - I - A - D - S - E - E - L - T -
- W - Z - R - I - N - V - R - A - E
Texto ciffrado AIADSEELTWZRINVRAE
Texto A WIZARD IS NEVER LATE
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Para descriptografar eacute necessaacuterio o conhecimento do padratildeo usado e preencher as lacunas com otexto cifrado horizontalmente e depois ler em zigue-zague
Essa teacutecnica foi usada na Guerra Civil norte-americana para cifrar as mensagens dos confederadose dos federalistas
Como apenas a ordem do texto eacute alterada a distribuiccedilatildeo de frequecircncia das letras seraacute muitoparecida com a frequecircncia da liacutengua usada Assim uma anaacutelise de frequecircncia do texto cifrado eacuteum oacutetimo meacutetodo para identificar o uso de uma cifra de transposiccedilatildeo
Aleacutem disso podem ter sido usadas cifras de substituiccedilatildeo em conjunto dificultando a indentificaccedilatildeo
Um primeiro meacutetodo que podemos pensar para quebrar cifras de transposiccedilatildeo eacute testar todas aspossiacuteveis permutaccedilotildees dos caracteres Poreacutem um texto de 20 caracteres geraria 20 possiacuteveispermutaccedilotildees Se computaacutessemos 100 milhotildees de valores por segundo demorariacuteamos mais de300 anos para computar todos Logo testar todas as possibilidades eacute inviaacutevel
Como existem vaacuterios meacutetodos diferentes de cifras de transposiccedilatildeo cada um necessita de umaabordagem diferente
Matriz
A - - - A - - - S - - - E - - - T -
- W - Z - R - I - N - V - R - A - E
- - I - - - D - - - E - - - L - - -
Texto ciffrado AASETWZRINVRAEIDEL
Identificando
Solucionando
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Nesses dois posts no StackExchange [1] e [2] Ilmari Karonen mostra meacutetodos para resolvermanualmente cifras de transposiccedilatildeo colunar
Applied Cryptography second edition
WeChall Transposition I
Referecircncias
Exerciacutecios
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Aprenda vaacuterias formas de representar dados no computador e suas aplicaccedilotildees em CTFs
Coacutedigos
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Coacutedigos
Nos computadores todos os dados satildeo guardados da mesma forma em coacutedigo binaacuterio Essecoacutedigo eacute como uma sequecircncia de 0s e 1s e essas sequecircncias satildeo agrupadas e sofremmodificaccedilotildees para representar tudo o que vemos em um computador
Mas se tudo satildeo apenas zeros e uns o que diferencia um texto de uma muacutesica A diferenccedila eacute omodo como esses dados satildeo representados
Para cada tipo de dado existe uma codificaccedilatildeo diferente aplicada a ela e por isso um mesmo dadopode ter vaacuterias interpretaccedilotildees dependendo da codificaccedilatildeo que vocecirc trabalha
Um exemplo de uma representaccedilatildeo de um valor binaacuterio eacute como um nuacutemero
Um nuacutemero em binaacuterio pode ser convertido para um nuacutemero em decimal Por exemplo 00101010eacute o nuacutemero 42 em decimal
Uma representaccedilatildeo mais comum para um coacutedigo binaacuterio eacute a base hexadecimal que tem avantagem de que cada casa pode representar uma sequecircncia de 4 bits Por exemplo o mesmonuacutemero 00101010 eacute 2A em hexadecimal (0010 = 2 e 1010 = A)
Nas proacuteximas seccedilotildees vocecirc veraacute outras formas de representar os dados no computador
Dados e coacutedigos
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Coacutedigos
Nessa seccedilatildeo vamos apresentar uma das codificaccedilotildees mas famosas para representar texto em umcomputador o ASCII
O ASCII originalmente baseado no inglecircs codifica 128 caracteres especiacuteficos com 7 bits Comoum computador normalmente trabalha na escala de bytes (8 bits) o ASCII eacute mais frequentementeencontrado numa representaccedilatildeo de 8 bits
A tabela abaixo mostra todos os caracteres do coacutedigo ASCII
Coacutedigo ASCII
O nome ASCII vem do inglecircs American Standard Code for Information
Interchange que significa Coacutedigo Padratildeo Americano para o Intercacircmbio deInformaccedilatildeo
ldquo
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Vocecirc pode usar essa tabela para decodificar uma sequecircncia de nuacutemeros em binaacuterio decimal ouhexadecimal para ASCII
Uma maneira mais faacutecil de manipular a codificaccedilatildeo ASCII em vez de usar manualmente umatabela eacute por meio de coacutedigos Em Python usamos as funccedilotildees ord() e chr() para isso
A funccedilatildeo ord() recebe uma string de tamanho 1 e retorna um inteiro que representa o coacutedigo daletra se ela for ASCII devolveraacute seu coacutedigo ASCII Por exemplo ord(a) devolveraacute 97
Jaacute a funccedilatildeo chr() eacute o inverso da anterior Ela recebe um inteiro e devolve o caractere com orespectivo coacutedigo ASCII Por exemplo chr(97) devolveraacute a
ASCII em Python
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
WeChall ASCII
WeChall URL
ASCII table
Python Built-in Functions
Exerciacutecios
Referecircncias
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Coacutedigos
Agora que vocecirc jaacute teve contato com o coacutedigo ASCII vamos conhecer o Base64 um meacutetodo paracodificar e decodificar dados binaacuterios em caracteres ASCII
Esse meacutetodo eacute utilizado frequentemente para transferir dados em meios que soacute suportamformatos ASCII por exemplo enviar anexos por e-mail (que usa o MIME)
O nome base64 origina-se do fato de que esse sistema eacute constituido de 64 caracteresrepresentando exatamente 6 bits de dados Com isso trecircs bytes de 8 bits podem serrepresentados por 4 digitos de 6 bits em Base64
A tabela abaixo mostra a equivalecircncia entre os valores de um conjunto de 6 bits e os caracteresusados para codificaccedilatildeo
Quando os bits da mensagem original natildeo satildeo multiplos de 6 satildeo adicionados zeros como padding
Assim na mensagem codificada eacute colocado um = para cada dois zeros de padding Aliaacutes esse =
Base64
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
eacute uma forma bem comum de reconhecer um texto codificado em Base64
Abaixo estaacute um exemplo de um texto codificado em Base64
E se tirarmos o n a codificaccedilatildeo vai necessitar de um padding
Para manipular textos em Base64 pode-se usar o comando Unix base64
Por exemplo se tivermos uma arquivo sagantxt com o texto The Cosmos is all that is or ever was or ever will be Podemos convertecirc-lo para um arquivo sagan64txt com o comando
O resultado seraacute o arquivo sagan64txt com o texto VGhlIENvc21vcyBpcyBhbGwgdGhhdCBpcyBvciBldmVyIHdhcyBvciBldmVyIHdpbGwgYmUK
Agora para decodificar o arquivo sagan64txt usamos o mesmo comando com a flag -d
texto M | a | n
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 | 0 1 1 0 1 1 1 0
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 1 | 1 0 1 1 1 0
Valor 19 | 22 | 5 | 46
texto T | W | F | u
(Base64)
texto M | a |
8 bits 0 1 0 0 1 1 0 1 | 0 1 1 0 0 0 0 1 |
6 bits 0 1 0 0 1 1 | 0 1 0 1 1 0 | 0 0 0 1 0 0 | 0 0 0 0 0 0
Valor 19 | 22 | 5 | (padding)
texto T | W | E | =
(Base64)
Ferramentas
base64 sagantxt gt sagan64txt
base64 -d sagan64txt
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
OverTheWire Krypton 0
Decodifique essa mensagem
Exerciacutecios
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Aprenda como esconder uma mensagem em plena vista e suas aplicaccedilotildees em CTFs
Esteganografia
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Esteganografia
Nessa seccedilatildeo veremos um primeiro exemplo de Esteganografia a Cifra de Bacon
A ideia por traacutes dessa cifra diferente de uma cifra criptograacutefica comum eacute esconder a mensagemsecreta por meio de um texto legiacutevel apenas mudando a grafia de suas letras
Essa eacute uma cifra de substituiccedilatildeo e cada letra eacute representada por um conjunto de 5 caracteresbinaacuterios (a e b ou 0 e 1) O alfabeto de substituiccedilatildeo da Cifra de Bacon possui dois modelos
A cifra de 24 letras Eacute a original Nela os pares de caracteres (IJ) e (UV) natildeo possuemdistinccedilatildeo
A cifra de 26 letras A segunda versatildeo da cifra Agora todas as letras possuem um coacutedigouacutenico
Cifra de Bacon
Ela tem esse nome pois foi criada por Francis Bacon em 1605ldquo
A = aaaaa IJ = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb UV = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
A = aaaaa I = abaaa Q = baaaa Y = bbaaa
B = aaaab J = abaab R = baaab Z = bbaab
C = aaaba K = ababa S = baaba
D = aaabb L = ababb T = baabb
E = aabaa M = abbaa U = babaa
F = aabab N = abbab V = babab
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Dessa forma substituiacutemos o A da mensagem secreta por aaaaa um B por aaaab e assim pordiante Por exemplo digamos que queremos esconder a mensagem fly you fools Assim asubstituiccedilatildeo das letras seraacute da forma abaixo usando a cifra de 26 letras
Com isso podemos usar esse padratildeo e esconder em uma mensagem comum de tamanho maiorou igual ao texto cifrado como according to all known laws of aviation there is no way a bee should be able to fly
Assim removendo os espaccedilos e pontuaccedilotildees para facilitar a associaccedilatildeo podemos esconder amensagem no texto de vaacuterias formas como associar letras maiuacutesculas ao a e minuacutesculas aob associar a letras com ou sem itaacutelico ou ateacute com duas fontes diferentes Para esse exemplousaremos maiacuteusculas e minuacutesculas
Voltando agrave formataccedilatildeo original da mensagem temos acCoRdInG TO All kNOwn laWS Of AvIatioN tHeRE Is nO WAy a BeE SHouLd be able to fly Com isso quem interceptar essa mensagemesteganograacutefica natildeo vai imaginar que ela possui algo aleacutem de uma escrita engraccedilada
Em uma primeira observaccedilatildeo uma mensagem oculta pela cifra de Bacon pode ser identificadapela mudanccedila alternada dos padrotildees das letras maiacuteuscula e minuacutescula itaacutelico fonte ou ateacute aalternacircncia expliacutecita de duas letras
G = aabba O = abbba W = babba
H = aabbb P = abbbb X = babbb
texto original F L Y Y O U F O O L S
texto cifrado aabab ababb bbaaa bbaaa abbba babaa aabab abbba abbba ababb baaba
falsa mensagem accordingtoallknownlawsofaviationthereisnowayabeeshouldbeabletofly
texto cifrado aababababbbbaaabbaaaabbbababaaaabababbbaabbbaababbbaaba
mensagem final acCoRdInGTOAllkNOwnlaWSOfAvIatioNtHeREIsnOWAyaBeESHouLdbeabletofly
Identificando
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Outra abordagem seria uma anaacutelise de frequecircncia Como a cifra de Bacon eacute um tipo de cifra desubstituiccedilatildeo ela eacute sensiacutevel a uma anaacutelise de frequecircncia
Para solucionar desafios que conteacutem Cifra de Bacon o primeiro passo eacute identificar o modo como amensagem foi escondida Depois disso eacute preciso percorrer o texto e transformaacute-lo em sequecircnciasde as e bs
Assim vocecirc pode guardar o alfabeto de substituiccedilatildeo com um dicionaacuterio e usaacute-lo para substituir osblocos de 5 caracteres pela letra correspondente
Por exemplo podemos implementar isso com um coacutedigo em Python
Solucionando
bacon_to_letter_26 =
aaaaaA aaaabB aaabaC aaabbD aabaaE
aababF aabbaG aabbbH abaaaI abaabJ
ababaK ababbL abbaaM abbabN abbbaO
abbbbP baaaaQ baaabR baabaS baabbT
babaaU bababV babbaW babbbX bbaaaY
bbaabZ
def format(text a=a b=b)
Format a steganographic text to a binary sequence
formated_text =
for c in text
if not cisalpha()
continue
if cistitle()
formated_text += b
else
formated_text += a
return formated_text
def decode(text a=a b=b bacon_alpha=bacon_to_letter_26)
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
WeChall Baconian
WeChall Bacon Returns
GeeksforGeeksPractical Cryptography
Decode a encrypted Bacon cipher text
cipher = format(text a=a b=b)
output =
while len(cipher) gt= 5
token cipher = cipher[5] cipher[5]
if token in bacon_alpha
output += bacon_alpha[token]
else
break
return output
if __name__ == __main__
input = input()
output = decode(input)
print(output)
Exerciacutecios
Referecircncias
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Esteganografia
Como foi explicado na seccedilatildeo de dados e coacutedigos qualquer arquivo no computador pode serinterpretado como uma sequecircncia binaacuteria e dessa forma tem sua representaccedilatildeo em texto Assimesse recurso pode ser usado para esconder informaccedilatildeo numa imagem
Um recurso comum em CTFs eacute colocar um trecho de texto puro em alguma regiatildeo arbitraacuteria daimagem Por exemplo se queremos esconder a palavra such cake na imagem dogejpg podemosusar o comando Linux
Com isso such cake ficaraacute no final dos dados da imagem
Para extrair a informaccedilatildeo escondida por esse meacutetodo vaacuterias ferramentas podem ser usadas Asduas principais satildeo os comandos de Linux strings e hexdump
O comando strings imprime basicamente todas as sequecircncias de dados imprimiacuteveis de umarquivo Por exemplo o comando aplicado a imagem dogejpg
Com isso o final da saiacuteda do comando seraacute algo da forma
Interpretar imagem comotexto
echo such cake gtgt dogejpg
Solucionando
strings dogejpg
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Jaacute o comando hexdump permite que a imagem seja analisada de forma mais minuciosa onde oformato de leitura e impressatildeo pode ser especificado pelo usuaacuterio Por exemplo um uso docomando com a imagem dogejpg onde a flag -C representa a forma canocircnica de impressatildeohex+ASCII
O final da saiacuteda desse comando eacute algo da forma
hexdump -C dogejpg
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
WeChall Stegano I
picoCTF-2018 hex-editor
HowtoForge
Sanfoudry
Exerciacutecios
Referecircncias
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Esteganografia
Um dos meacutetodos mais comuns e populares nos dias de hoje para se esconder uma mensagemnuma imagem eacute a teacutecnica de LSB ou Least Significant Bits Esse meacutetodo consiste em escondera informaccedilatildeo nos bits menos significativos de uma imagem
Como mencionado em Dados e Coacutedigos todos os arquivos no computador satildeo sequecircncias binaacuteriase com as imagens natildeo eacute diferente
Uma imagem eacute composta na maioria das vezes por duas partes O cabeccedilalho (ou header) eacuteonde ficam armazenadas as informaccedilotildees sobre a imagem como o seu formato e dimensotildees Jaacute o corpo da imagem eacute onde ficam armazenados a informaccedilatildeo dos seus pixels de fato
Cada formato tem suas particularidades para representar um pixel por simplicidade vamosconsiderar um pixel de 24 bits de uma imagem lossless
Por exemplo um pixel com a cor em RGB ebc700 teria sua representaccedilatildeo em binaacuterio como 11101011 11000111 00000000 onde
RedGreenBlue
8bits
8bits
8bits
111010111100011100000000
Para esconder informaccedilatildeo em uma imagem usando o meacutetodo de LSB alteraremos os bits menos
LSB Least Significant Bits
Representaccedilatildeo da imagem
Escondendo na imagem por LSB
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
significativos de cada byte no corpo da imagem
Por exemplo se temos uma imagem de trecircs pixels
Se queremos esconder o byte 01100001 uma nova imagem seraacute gerada com a mensagem nosuacuteltimos bits (destacado por )
Dessa forma ao esconder a mensagem nos bits menos significativos fazemos apenas umapequena alteraccedilatildeo na imagem Por exexmplo o pixel 1 foi da cor ebc700 para eac701
Assim vemos que a imagem precisa ser maior que a mensagem que vamos esconder nela Nessacaso no miacutenimo 8 vezes maior Para contornar esse problema alguns algoritmos usam 2 ou 3bits menos significativos de cada byte aumentando a alteraccedilatildeo da imagem
Para recuperar a mensagem fazemos o processo inverso identificando os bits menossignificativos no corpo e remontando em bytes
pixel 1 11101011 11000111 00000000
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
pixel 1 11101010 11000111 00000001
pixel 2 01000010 10000110 11110100
pixel 3 11110100 01010111 01000010
-gt mensagem 01100001
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
O pacote Steacuteganocirc possui vaacuterias ferramentas para esteganografia A maioria sua a teacutecnica de LSB
Ele necessita de Python 3 e pode ser instalado por
Uma das ferramentas desse pacote eacute o comando stegano-lsb
Ele pode ser usado para esconder uma mensagem em uma imagem com o argumento hide como por exemplo
Jaacute com o comando reveal podemos recuperar a mensagem a partir da imagem
Aleacutem disso em vez de modificar os pixels sequncialmente a partir do comeccedilo um outro comandoo stegano-lsb-set permite inserir a informaccedilatildeo de acordo com outros padrotildees especificados Elerecebe um argumento para um gerador como por exemplo eratosthenes que produz os pontosonde os pixels seratildeo modificados
Assim eacute preciso usar o mesmo gerador para esconder e recuperar a mensagem
Ferramentas para LSBSteacuteganocirc
sudo pip3 install Stegano
stegano-lsb hide -i dogpng -o dog_stegpng -m dont-worry-be-happy
stegano-lsb reveal -i dog_stegpng
stegano-lsb-set hide -i dogpng -o dog_steg2png -g eratosthenes -m dont-worry-be-happy
stegano-lsb-set reveal -i dog_steg2png -g eratosthenes
zsteg
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
O zsteg eacute uma oacutetima e super simples ferramenta para detectar steganografia em imagem Elanecessita de Ruby e pode ser instalada por
Para detectar uma informaccedilatildeo escondida por um LSB simples pode-se digitar apenas
O resultado seraacute algo como
Image not found or type unknown
Muitas vezes a teacutecnica de LSB pode ser usada junto a uma criptografia para proteger ainda maisa mensagem e dificultar sua detecccedilatildeo
Na vida real a teacutecnica de LSB pode ser usada como marca daacutegua digital para detectar coacutepiasde miacutedias natildeo autorizadas O programa OpenStego eacute um oacutetimo exemplo de software com essafinalidade
gem install zsteg
zsteg dog_stegpng
Informaccedilotildees adicionais
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
(to-do)
Computerphile
Steacuteganocirc
zsteg
Exerciacutecios
Referecircncias
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Esteganografia
Mais uma forma interessante de esteganografia eacute esconder uma imagem em um aacuteudio Nela aimagem eacute transformada em ondas sonoras de forma que ela pode ser vista atraveacutes de seu espectrograma
Um espectrograma eacute uma forma de visualizar a intensidade de um sinal atraveacutes do tempo e emvaacuterias frequecircncias
Os espectrogramas satildeo graacuteficos de duas dimensotildees (frequecircncia x tempo) com a terceiradimensatildeo a amplitude sendo representada pela variaccedilatildeo das cores O tempo eacute normalmenterepresentado no eixo x em sentido crescente Jaacute a frequecircncia (medida em Hz) eacute representada noeixo y com frequecircncias mais baixas em baixo e mais altas em cima Por fim a amplitude
(medida em dB) eacute representada com cores mais escuras para amplitudes menores e cores maisclaras para maiores
Para visualizar o espectrograma de um aacuteudio pode-se usar o programa sonic visualizer (maissimples) ou audacity (mais robusto)
Primeiro precisamos realizar a conversatildeo da imagem para o aacuteudio Isso pode ser feito utilizando aferramenta img-encoder no GitHub
Imagem em aacuteudio
O espectrograma
Escondendo uma imagem em umaacuteudio
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Por exemplo se queremos converter a imagem aestheticpng
No demo online dessa ferramenta adicionamos a imagem em Open-Image e convertemos com Encode Renomearemos o resultado para aestheticwav
Utilizando o sonic-visualizer para visualizar o aacuteudio gerado mudamos a visualizaccedilatildeo para Add spectrogram com o comando Shift+G
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Agora precisamos juntar esse aacuteudio em outra muacutesica para camuflar a informaccedilatildeo Por exemplousaremos a muacutesica リサフランク420 現代のコンピューmp3 Abrindo a muacutesica com audacity importamos o nosso aacuteudio com Ctrl+Shift+i
Com a ferramenta Time Shift Tool podemos mudar a posiccedilatildeo do aacuteudio esteganograacutefico para ocomeccedilo ou fim (assim a muacutesica vai interferir menos o aacuteudio)
Poreacutem o aacuteudio esteganograacutefico ainda pode ser percebido devido a seu ruiacutedo Para diminuir esseefeito primeiro selecionamos a track do aacuteudio (clicando em uma aacuterea neutra do Painel deControle na parte esquerda da track) e clicando em Effect e Amplify Assim podemos mudar aamplitude do som para dificultar sua detecccedilatildeo (algo em torno de -20 dB)
Assim selecinando todas as tracks e exportando a muacutesica gerada para WAV steg-macintosh-pluswav teremos uma muacutesica audiacutevel mas com uma imagem escondida em seu espectrograma
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
PNSN Espectrogramas
Selecionando Tracks no Audacity
Mental Floss
Referecircncias
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Esteganografia
Em um primeiro contato com a aacuterea esteganografia provavelmente seraacute o nome que lhecausaraacute mais estranheza O termo vem do grego steganos que significa encoberto escondido e graphein que significa escrita
Esteganografia eacute a teacutecnica de ocultar uma mensagem dentro de outra Diferentemente dacriptografia onde torna-se a mensagem ilegiacutevel a esteganografia procura esconder o fato de
que a mensagem existe em primeiro lugar
Assim a falsa mensagem funcionaraacute como uma espeacutecie de cobertura da mensagem realdesviando a atenccedilatildeo de quem estiver buscando a mensagem real Alguns exemplos poderiam sero ato de escrever com tinta invisiacutevel entre as linhas de uma carta comum ou escrever um textonos bits de uma imagem sem alteraacute-la visualmente
Nas proacuteximas seccedilotildees seratildeo abordadas teacutecnicas de esteganografia e suas aplicaccedilotildees em CTFs
O que eacute esteganografia
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Sites para treinar
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Sites para treinar
O Bandit eacute um wargame para totais iniciantes focado em programascomandos de terminal dolinux Ele te ensina o baacutesico para vocecirc conseguir progredir e te preparar para outros desafios
Como a maioria dos jogos do tipo ele eacute organizado em niacuteveis Vocecirc comeccedila no niacutevel 0 e tentacompletaacute-lo Ao terminaacute-lo vocecirc consegue informaccedilotildees para comeccedilar o proacuteximo niacutevel (geralmentea senha do usuaacuterio do niacutevel X + 1) Todos os niacuteveis do Bandit tecircm uma paacutegina de explicaccedilatildeo(vistas na barra lateral) que embora natildeo estritamente necessaacuterias conteacutem informaccedilotildeesimportantes sobre como como prosseguir ao proacuteximo niacutevel aleacutem de comandos sugeridos
Para poder jogar tudo que vocecirc precisa eacute de um cliente de SSHConecte-se em banditlabsoverthewireorg na porta 2220
Eacute bem possiacutevel (e provaacutevel) que vocecirc encontre alguma situaccedilatildeo em que vocecirc fique preso Natildeo sepreocupe e natildeo desista O objetivo do jogo eacute te ensinar o baacutesico e para aprender muitas vezes eacutepreciso pesquisar Eacute muito importante saber usar eficientemente uma ferramenta de pesquisacomo o Google ou o DuckDuckGo
Tem muitas coisas que vocecirc pode tentar quando natildeo souber exatamente como continuar
Primeiro se vocecirc sabe de algum comando (e no Bandit vocecirc sempre sabe quais comandos satildeonecessaacuterios porque eles estatildeo na paacutegina do niacutevel) mas natildeo sabe usaacute-lo vocecirc pode consultar omanual dele utilizando o comando man ltcomandogt Por exemplo se quiser saber como funciona ocomando find basta executar man find Aliaacutes o proacuteprio comando man tem um manual entatildeo sevocecirc quiser ler um manual sobre o manual soacute executar man man
BanditLink para o site
Como funciona
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se
Se o comando natildeo tiver uma paacutegina no manual ele pode ser built-in do shell entatildeo nesse casovocecirc pode executar help ltcomandogt para ver uma paacutegina de ajuda resumida
Mas se nada der certo vocecirc pode sempre pedir ajuda seja no nosso Discord Telegram ouqualquer outro meio
Divirta-se