SNMP, DES et CrypTool sont dans un bateau…

CryptTool 2.0

cryptool logoPour fêter cette rentrée, je vous présente un petit outil qui se révèle incroyablement pratique lorsque l’on se retrouve précipité dans une jungle cryptographique… CrypTool c’est un peu l’équivalent de la pierre à feu que trimbale partout Bear Grylls, le petit gadget indispensable qui vous permet d’y voir un peu plus clair dans l’obscurité, et de faire cuire la limace géante de Papouasie fraichement capturée ou le cryptosaure nain bigarré, espèce qui pullule dans les forêts Cryptophallique…

CryptTool 2 est, pour reprendre les termes officiels, une interface graphique de programmation visuelle. L’idée exprimée ici est qu’il n’est pas question d’écrire la moindre ligne de code, mais de construire un modèle cryptographique à partir d’objets préfabriqués tel que des algorithmes de chiffrement, des générateurs et même des protocoles…

Le banc d’essais offert par le logiciel permet de visualiser en temps réel et sur n’importe quel élément de votre modèle, l’état des données qui y transitent. Il est ainsi possible de se familiariser avec des systèmes complexes sans frôler de trop près la crise de nerf.

La suite CrypTool comprend aussi un certain nombre d’outils de cryptanalyse. Ne m’étant pas encore penché sur la question, je vous laisse découvrir par vous même ces quelques jouets ! :p

DES-chiffrement SNMPv3

Vous vous souvenez sans doute de mon précédent billet sur l’authentification SNMPv3, je vais compléter ma présentation de ce protocole  par une explication d’un type de chiffrement utilisé par SNMPv3.

Il s’agit de l’algorithme DES (d’ailleurs 0x0c en parle dans son précédent billet) en mode CBC. L’algorithme est symétrique, il est utilisé pour chiffrer ou  déchiffrer un message de la même façon.

xor schema

 

Dans le cas de SNMP v3 les 8 premiers octets de la clé secrète partagée sont utilisées comme clé DES. Les 8 derniers octets sont utilisés avec le champ msgPrivacyParameters qui constitue le grain de sel (Salt) pour créer le vecteur d’initialisation.

Notre vecteur d’initialisation est le résultat d’un XOR entre les 8 derniers octets de la clé secrète partagée  (appelés Pre-IV) et du msgPrivacyParameters (Salt). Le vecteur d’initialisation est donc composé de 8 octets également.

Note : Les messages cryptés sont constitués de 7 x 8 = 56 octets chacun. Il est important que ces messages soient composés d’un multiple de 8 octets. Lors du chiffrement d’un message SNMP, pour respecter cette norme des octets de bourrage sont concaténés à la fin du message si celui-ci est trop court.

attention : La fiabilité du protocole DES est dépendante de la robustesse de la clé secrète partagée !

Cas pratique

Dans un souci de clarté, j’ai utilisé deux comptes distincts pour cette petite présentation. Le premier pour présenter l’authentification (authNoPriv), et le second pour présenter le chiffrement (authPriv).

Les clés de la baraque

snmpkey –help

0x0ff@kali:~# snmpkey
snmpkey v6.0.0
Copyright (c) 2001-2009 David M. Town.  All rights reserved.
All rights reserved.
Usage: snmpkey <authProto> <password> <authEngineID> [<privProto> [<password>]]
<authProto> = md5|sha
<privProto> = des|3des|aes

Le compte que j’utilise pour présenter l’authentification

0x0ff@kali:~# snmpkey md5 useruseruser 80001f888062dc7f4c15465c5100000000
authKey: 0x21f1e9d9b30ceaeb84f2812beee685d5
privKey: 0x21f1e9d9b30ceaeb84f2812beee685d5

Le compte que j’utilise pour présenter le chiffrement

Si le mot de passe du chiffrement n’est pas précisé, c’est le password correspondant normalement à l’authentification qui est utilisé…

0x0ff@kali:~# snmpkey md5 adminadmin 80001f888062dc7f4c15465c5100000000
authKey: 0x0db1036575d89ce512655d6034e43ec3
privKey: 0x0db1036575d89ce512655d6034e43ec3

Authentification SNMPv3

Ci dessous, un paquet SNMPv3 authentifié et capturé par Wireshark. Pour plus d’information sur les champs c’est encore ici que ça se passe !

SNMPv3 authenticated message
Les mécanismes de l’authentification de ce protocole en mode hachage MD5 peut très simplement être représenté sur CrypTool 2.
SNMPv3 CrypTool Authentication

Chiffrement SNMPv3

Voici un paquet chiffré avec l’algorithme DES – CBC. Plus précisément, seule la partie encryptedPDU située en fin de trame est chiffrée.

SNMPv3 pcap encryption DES
Une nouvelle fois, il est extrêmement facile de représenter le chiffrement SNMPv3 sur CrypTool 2. D’autant plus que cette fois l’algorithme DES (CBC) est présent sous la forme d’un bloc !

SNMPv3 CrypTool encryption DES
Après lecture de ces quelques lignes, vous devriez (j’espère) être en mesure de résoudre le petit challenge sur SNMPv3 !

linkThe loots

Comme je suis un mec hyper sympa, voilà les paquets et les fichiers .cwm pour CrypTool 2 !

 

(noAuthNoPriv|authNoPriv|authPriv)