Date : 26/03/2019 - 18h
Présentation : disponible ici
Cryptographie ?
La cryptographie consiste à protéger un message en rendant celui-ci inintelligible à autre que qui-de-droit. Il doit être le plus résistant possible par rapport au degré de sensibilité de l’information.
La cryptanalyse est la science analysant les cryptogrammes en vue de les décrypter. C’est une catégorie principale en CTF. Parfois, elle est utilisée dans une autre catégorie en chiffrant l’information sensible.
Exemples
En CTF, le message sera chiffré, hashé avec diverses méthodes possibles … même les plus improbables. Bien souvent la méthode de chiffrement se révèle reconnaissable ou éclairé par des indices.
Par ailleurs, en dehors de cette catégorie, vous pourrez aussi tomber sur une information chiffrée servant à la protéger ou à vous induire vers une mauvaise piste.
OUTIL
File
La commande file
est très utilisée en CTF, en effet elle permet de connaître le type de fichier auquel on a affaire. Parfois, les fichiers ont une extension erronée, ce qui nous empêche de les ouvrir normalement, et dans notre cas, un fichier peut aussi s’avèrer autre chose que ce qu’il prétendait être aux premiers abords. Cette commande se base sur les premiers octets du fichier afin de déterminer le type de ce dernier. Ces premiers octets sont les magic numbers. Remplacer les premiers octets permet de très facilement changer la sortie de la commande file
.
Toujours penser à exécuter la commande sur les fichiers reçus en début de résolution d’un challenge.
CyberChef
CyberChef
plateforme en ligne pour le chiffrement, le codage, la compression et l’analyse de données pouvant aussi servir à déchiffrer dans de multiple langage différent.
Dcode
La plateforme en ligne Dcode
va être similaire à celle de CyberChef mais vous permettra, en plus, de procéder à des attaques par analyse statistique ou même par mot courant, en d’autres termes, avec leurs propres WordList.
FactorDB
Factor db
est une plateforme en ligne contenant une très grande base de données de factorisation permettant ainsi la factorisation de grands nombres.
OpenSSL
OpenSSL
est un outil de ligne de commande permettant d’utiliser les différents fonctions cryptographique de la bibliothèque de chiffrement OpenSSL.
Cet outil permet :
- Chiffrement et déchiffrement de différents mécanismes
- Calcul de hash
- Génération de clé RSA
- Génération de certificat
- …
# generate private key
$ openssl genrsa -out priv_key.pem 2048
# generate public key from priv_key.pem
$ openssl rsa -in priv_key.pem -pubout -out pub_key.pem
# encrypt flag.txt file with pub_key.pem to flag.txt.enc
$ openssl rsautl -encrypt -pubin -inkey pub_key.pem -in flag.txt -out flag.txt.enc
# decrypt flag.txt.enc with priv_key.pem
$ openssl rsautl -decrypt -inkey priv_key.pem -in flag.txt.enc -out flag.txt.dec
Quipqiup
La plateforme en ligne quipqiup
permettant de résoudre des chiffrements par alphabet de substitution grâce à une analyse statistique du site puis aux indices que vous pourriez trouver à l’aide d’une attaque par clair connu.
Rsatool
L’outil RsaTool
, partagé sur github, permet de calculer la clé privée RSA correspondant aux paramètres donnés.
# Installation
$ wget https://raw.github.com/ius/rsatool/master/rsatool.py
$ sudo pip install rsa
$ sudo pip install gmpy
$ python rsatool.py
Usage: rsatool.py [options]
Options:
-h, --help show this help message and exit
-p P prime
-q Q prime
-n N modulus
-d D private exponent
-e E public exponent (default: 65537)
-o FILENAME output filename
-f FORMAT output format (DER, PEM) (default: PEM)
-v also display CRT-RSA representation
Usage: rsatool.py [options]
rsatool.py: error: Either (p, q) or (n, d) needs to be specified
# Utilise les informations collectées afin de générer la clé privée
$ python rsatool.py -p valeur_p -q valeur_q -n valeur_n -e valeur_e -o cle_privee
Rsactftools
L’outil Rsactftools
, partagé sur github, permet de faire des attaques sur RSA avec des tailles de clés de petites tailles. Cet outil utilise différentes techniques d’attaques (factorisation, attaque Wiener’s, attaque Hastad’s).
- Télécharger le dossier présent sur le git
Lien -> https://github.com/Ganapati/RsaCtfTool
# Déchiffre un fichier à partir d'une clef publique attaquable
$ ./RsaCtfTool.py --publickey ./pub_key.pem --uncipherfile ./file.enc
# Calcul la clé privée (attaque sur une clé publique)
$ ./RsaCtfTool.py --publickey ./pub_key.pub --private
# Calcul la clé privée (attaque sur de multiples clés publiques)
$ ./RsaCtfTool.py --publickey "*.pub" --private