EVENT_03 - Cryptography

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