CTF Starter Pack - wiki.imesec.ime.usp.br

56
Um guia inicial para competições Capture The Flag Introdução Como identificar uma flag? Criptografia O que é criptografia? Cifra de César Cifras de Substituição Simples Cifra de Vigenère One-Time Pad Cifras de Transposição Códigos Dados e códigos Código ASCII Base64 Esteganografia Cifra de Bacon Interpretar imagem como texto LSB: Least Significant Bits Imagem em áudio O que é esteganografia? Sites para treinar Bandit CTF Starter Pack

Transcript of CTF Starter Pack - wiki.imesec.ime.usp.br

Page 1: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 2: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 3: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 4: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 5: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 6: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 7: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 8: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 9: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 10: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 11: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 12: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 13: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 14: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 15: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 16: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 17: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 18: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 19: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 20: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 21: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 22: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 23: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 24: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 25: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 26: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 27: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 28: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 29: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 30: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 31: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 32: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 33: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 34: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 35: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 36: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 37: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 38: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 39: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 40: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 41: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 42: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 43: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 44: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 45: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 46: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 47: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 48: CTF Starter Pack - wiki.imesec.ime.usp.br

(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

Page 49: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 50: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 51: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 52: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 53: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 54: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 55: CTF Starter Pack - wiki.imesec.ime.usp.br

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

Page 56: CTF Starter Pack - wiki.imesec.ime.usp.br

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