Introduction à la Stéganographie
Alex GARRIDO - @Zeecka_
WHOAMI
Alex GARRIDO - Zeecka
Sommaire
- Historique
- Aujourd'hui ?
- Couleurs
- MSB - LSB
- Aperi'Solve
- Aperi'CTF - Sudo Ku
- Pixel Indicator Technique
- Pour aller plus loin
Définitions
© ECW 2018
Définitions
Stéganographie :
Procédé de dissimulation d'un message confidentiel au sein de données.
Cryptographie :
Ensemble des techniques de chiffrement qui assurent l'inviolabilité de textes et, en informatique, de données.
Historique
Historique
Historique
Aujourd'hui ?
- Échanges terroristes
- Contre la censure
- Malware
- Watermarking
- Renseignements ?
Cas d'utilisation - Drogue
Cas d'utilisation - Drogue
- 2008 : Juan Carlos Ramirez Abadia
Cas d'utilisation - Malware
OceanLotus (APT 32 - Vietnam) - 16/10/2019
Watermarking "Visible"
Source: Charles Préaux
Watermarking "Invisible"
- 1990 : XEROX
Watermarking "Invisible"
- 2005 : EFF
Watermarking "Invisible"
- 2017 : Reality Winner
Watermarking "Invisible"
- 2019 : Genius & Google
Bases de la stéganographies
Couleurs
Est composée de
Plusieurs nuances pour chaque layer
Plusieurs "layers"
Couleurs RGB(A)
- 256 Nuances par layer [0-255]
- >16 Millions de couleurs (256 ³)
- Couches RGB (Red, Green, Blue)
- Couche "Alpha" pour la transparence (optionnelle)
Couleurs : Vision "Binaire"
112
48
160
01110000
00110000
10100000
RGB(112,48,160)
MSB : Most Significant Bit LSB : Least Significant Bit
Codage sur tous les bits
~ 75 lignes
Codage sur tous les bits
Couleurs Aléatoires
Texte ASCII
Texte Chiffré (AES)
MSB : Most Significant Bit
MSB : Most Significant Bit
Originale
MSB = 0
MSB = 1
MSB : Most Significant Bit
"Lorem Ipsum"
en boucle
Text ASCII
Text Chiffré (AES)
MSB : Most Significant Bit
Text ASCII
(Couche Rouge)
Text ASCII
(Couche Verte)
Text ASCII
(Couche Bleu)
LSB : Least Significant Bit
LSB : Least Significant Bit
Originale
LSB = 0
LSB = 1
LSB : Least Significant Bit
"Lorem Ipsum"
en boucle
Text ASCII
Text Chiffré (AES)
LSB : Least Significant Bit
Text ASCII
( Couche Rouge )
Text ASCII
( Couche Verte )
Text ASCII
( Couche Bleu )
Une image dans une image ?
00110011
Bit de poids forts
Image 1
Bit de poids forts
Image 2
Une image dans une image ?
12345678
12345671
12345612
Une image dans une image ?
12345123
12341234
12312345
Une image dans une image ?
12123456
11234567
12345678
Aperi'Solve - Demo
Aperi'CTF - Sudo Ku
Aperi'CTF - Sudo Ku
Aperi'CTF - Sudo Ku
Aperi'CTF - Sudo Ku
Aperi'CTF - Sudo Ku
Aperi'CTF - Sudo Ku
Aperi'CTF - Sudo Ku
- Dupliquer le sudoku pour passer d'une matrice 9*9 à une matrice 420*696 (taille de l'image de la marionnette)
- Chaque coordonnées M y,x correspond à une valeur comprise dans [1;9]
(Documentation fournie avec le challenge)
Aperi'CTF - Sudo Ku
x
y
M10,16 = 4
0
16
10
Aperi'CTF - Sudo Ku
N = 8 premiers pixels = taille du message
- 8 px = (0;0;0);...;(0;1;188)
-
Taille = 444
- ((256^2) * 0) + ((256^1) * 1) + ((256^0) * 188)
Sudo Ku
data = ""
-
Pixel n° 9 : rgb(30,19,11)
- M30,19 = 4
- data = data + "4"
data = "4"
-
Pixel n° 10 : rgb(30,19,10)
- M30,19 = 3
- data = data + "4"
data = "44"
-
Pixel n° 11 : rgb(30,20,10)
- M30,20 = 8
- data = data + "8"
data = "448"
448698889698142461797114359818718295749193976356246828431713266883865884813536116113228227172158629127645191314333928897979526221926644675171894387725291228175758913362588121832172535464849119981385237187344111176386852197453559664676895773485183645619736422684187734353651433414632764185256777265567995655785718963269749967586821574647158395219312475132736787935653714421491515159272113187713996731235888942269276477538857378333943479497592394
Aperi'CTF - Sudo Ku
Après 444 pixels...
Aperi'CTF - Sudo Ku
Conversion en texte
- Changer le charset [1;9] 🡆 [0;8] (base 9)
- Convertir base 9 🡆 base 10
- Convertir base10 (long) 🡆 texte
Bravo ! Vous pouvez valider le challenge avec le flag suivant: APRK{*5UD0KU_M4ST3R*}.
Congratz ! You can validate the challenge with the following flag: APRK{*5UD0KU_M4ST3R*}.
Pixel Indicator Technique (P.I.T)
N = 8 Premiers octets = Taille du message (en Bit)
Parité binaire : Parité du nombre de 1 dans l'écriture binaire du nombre.
56
00111000
3 nombres "1"
Parité binaire = Non
N paire ?
N premier ?
N impaire
Channel
"Indicateur" = R
Channel
"Indicateur" = B
Channel
"Indicateur" = V
Parité binaire ?
Parité binaire ?
Parité binaire ?
Oui
Non
Oui
Non
Oui
Non
Ch1 = V
Ch2 = B
Ch1 = B
Ch2 = V
Ch1 = R
Ch2 = V
Ch1 = V
Ch2 = R
Ch1 = B
Ch2 = R
Ch1 = R
Ch2 = B
P.I.T.
P.I.T.
2 LSB de IC
= '00'
= '01'
= '10'
= '11'
Pixel Suivant
Secret += 2LSB de CH1
Pixel Suivant
Secret += 2LSB de CH2
Pixel Suivant
Secret += 2LSB de CH1 et CH2
Pixel Suivant
Oui
Oui
Oui
Oui
Non
Non
Non
IC = Channel « Indicateur »
CH1 = Channel 1
CH2 = Channel 2
Note: On débute à la deuxième ligne.
Pour aller plus loin
- Stéganographie dans le Son (Spectre, Fréquences inaudibles, ...)
- Fichiers polyglottes
- Angecryption, PVD, Stereogrammes, ...
- Stéganographie fréquentielle
- Résistance à la compression/détérioration
- Résistance à la modification
Lien des slides/scripts
Ressources
Ressources
- Playboy Magazine. November 1972 - Lena Söderberg
- https://fr.wikipedia.org/wiki/Autost%C3%A9r%C3%A9ogramme
- Pixel Indicator Technique for RGB Image Steganography - Adnan Abdul - Aziz Gutub
- https://youtu.be/teShYhts2So?t=1m26s
Ressources
Ressources
- https://www.devcondetect.com/blog/2019/2/24/hacking-group-using-polyglot-images-to-hide-malvertsing-attacks
- https://blog.didierstevens.com/2019/11/12/steganography-and-malware/
- https://threatvector.cylance.com/en_us/home/malicious-payloads-hiding-beneath-the-wav.html
- http://www.henryfarrell.net/cybersecurity/jones/2009/12/more_examples_of_organized_cri.html
Outils
- Slides : https://slides.com
- Carbon (code) : https://carbon.now.sh
- Aperi'Solve : https://aperisolve.fr
- Os et Shell: Debian Gnome + ZSH & PowerLevel9k
Introduction à la Stéganographie
By Zeecka
Introduction à la Stéganographie
- 2,220