Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
dufflebag — Rechercher des secrets dans les volumes EBS exposés | Kitploit
Outils/GitHubGitHub/bishopfox/dufflebag
Analyse des VulnérabilitésCollecte d'InformationsSécurité CloudDétection de Secrets
GitHubbishopfox/dufflebag

dufflebag

Rechercher des secrets dans les volumes EBS exposés

Voir le dépôt
305393il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Dufflebag

Dufflebag est un outil qui parcourt les instantanés publics d'Elastic Block Storage (EBS) à la recherche de secrets qui auraient pu être laissés accidentellement. Vous pourriez être surpris par tous les mots de passe et secrets qui traînent !

L'outil est organisé sous forme d'application Elastic Beanstalk (« EB », à ne pas confondre avec EBS), et ne fonctionnera définitivement pas si vous essayez de l'exécuter sur votre propre machine.

Dufflebag comporte beaucoup de pièces mobiles car il n'est pas trivial de lire réellement des volumes EBS en pratique. Vous devez être dans un environnement AWS, cloner l'instantané, créer un volume à partir de l'instantané, attacher le volume, monter le volume, etc... C'est pourquoi il est conçu comme une application Elastic Beanstalk, afin qu'il puisse automatiquement monter ou descendre en charge selon vos souhaits, et pour que l'ensemble puisse être facilement démantelé une fois l'opération terminée.

Gardez simplement un œil sur votre console AWS pour vous assurer que rien ne s'emballe et n'accumule les factures. Nous avons essayé de penser à toutes les éventualités et de fournir une gestion des erreurs... mais vous êtes prévenu !

Pour commencer

Permissions

Vous devrez ajouter quelques autorisations IAM AWS supplémentaires au rôle : aws-elasticbeanstalk-ec2-role. Vous pouvez également créer un tout nouveau rôle avec ces autorisations et configurer EB pour utiliser ce rôle, mais c'est un peu plus complexe. Dans tous les cas, vous devrez ajouter :

  • AttachVolume (ec2)
  • CopySnapshot (ec2)
  • CreateVolume (ec2)
  • DeleteSnapshot (ec2)
  • DeleteVolume (ec2)
  • DescribeSnapshots (ec2)
  • DescribeVolumes (ec2)
  • DetachVolume (ec2)
  • PurgeQueue (sqs)
  • ListQueues (sqs)
  • ListAllMyBuckets (s3)
  • PutObject (s3)
Télécharger l’outil

Construction

L'application principale est écrite en Go, vous aurez donc besoin d'un compilateur Golang. Mais l'application EB est en fait construite dans un fichier .zip (c'est ainsi que fonctionne EB) donc le makefile produira un zip pour vous.

  1. Vérifiez votre région. Dufflebag ne peut fonctionner que dans une seule région AWS à la fois. Si vous souhaitez rechercher dans toutes les régions, vous devrez déployer autant d'instances. Pour changer la région, modifiez le contenu du fichier source region.go.

  2. Installez les dépendances : Ubuntu 18.04 x64 :

root@kitploit:~
sudo apt install make golang-go git
go get -u github.com/aws/aws-sdk-go
go get -u github.com/deckarep/golang-set
go get -u github.com/lib/pq
go get -u lukechampine.com/blake3
  1. Ensuite, construisez l'application EB dans un fichier zip avec :
root@kitploit:~
make

Vous devriez maintenant voir un fichier dufflebag.zip dans le répertoire racine du projet.

  1. Enfin, vous devrez créer un bucket S3. Le configurer automatiquement dans Dufflebag est peut-être possible, mais ce serait en fait assez difficile. Alors faites-le vous-même. Vous devez simplement créer un bucket S3 avec des autorisations par défaut, et dont le nom commence par dufflebag. Les noms de bucket S3 doivent être globalement uniques, vous aurez donc probablement besoin d'un suffixe qui est un charabia ou quelque chose du genre.

Déploiement sur Elastic Beanstalk

Allez dans votre console AWS et trouvez l'option de menu Elastic Beanstalk. Cela est probablement faisable via la CLI aussi, mais cette description utilisera la console. Sélectionnez Actions -> Create Environment.

Créer un environnement

Ensuite, dans la fenêtre suivante, choisissez Worker environment et cliquez sur Select.

Environnement de travail

Dans la fenêtre suivante, choisissez Preconfigured -> Go pour la Platform.

Plateforme Go

Sous Application Code, choisissez Upload your Code.

Télécharger votre code

Cliquez sur le bouton Upload et sélectionnez le fichier dufflebag.zip que vous venez de construire.

Origine du code

Enfin, cliquez sur Create Environment pour démarrer.

Cela prendra quelques minutes pour qu'AWS crée tout et démarre. Une fois créé, Dufflebag se mettra immédiatement au travail. Aucune autre action n'est nécessaire.

Retirer la vanne de sécurité

Une fois que cela est opérationnel, vous pouvez réessayer avec la vanne de sécurité retirée. Par défaut, Dufflebag ne recherche que 20 instantanés EBS. (Pour éviter que cela ne s'emballe dès le premier essai). Pour étendre la recherche à toute la région, allez dans populate.go, supprimez la ligne de code suivante, et reconstruisez :

root@kitploit:~
//#####################################################################
//####                    Safety Valve                             ####
//#### Remove this line of code below to search all of your region ####
//#####################################################################
snapshots = snapshots_result.Snapshots[0:20]

Montée en charge

L'une des raisons pour lesquelles Dufflebag est conçu comme une application Elastic Beanstalk est de pouvoir automatiquement monter ou descendre en charge facilement. Par défaut, il s'exécutera sur une seule instance et sera assez lent. Mais si vous souhaitez l'accélérer un peu, ajustez l'autoscaling dans Elastic Beanstalk. Les options complètes dépassent un peu le cadre de ce document, je vous laisse donc les explorer. Mais en pratique, j'ai constaté qu'un simple déclencheur basé sur l'utilisation du CPU fonctionne assez bien.

Lors de la configuration de l'environnement ci-dessus, vous trouverez les options sous le bouton Configure more options (au lieu de cliquer sur Create environment), puis cliquez sur Scaling.

Mise à l'échelle

Récupérer le butin

Dufflebag copiera tous les fichiers intéressants vers le bucket S3 que vous avez créé précédemment. (Techniquement, Dufflebag utilisera le premier bucket S3 dont le nom commence par "dufflebag".)

Vous pouvez simplement regarder les fichiers arriver un par un dans votre bucket S3. Ils seront nommés :

originalfilename_blake3sum_volumeid

Vérifier l'état

Si tout se passe bien, vous n'aurez pas besoin de lire les journaux. Mais au cas où, Elastic Beanstalk permet aux applications d'écrire dans des fichiers journaux pendant leur exécution, et ceux-ci sont capturés en naviguant vers l'onglet Logs. Cliquez ensuite sur Request Logs puis Last 100 Lines. Cela vous donnera le lot le plus récent des journaux de Dufflebag. Cliquez sur le bouton Download pour le lire. Ce fichier contiendra beaucoup d'autres journaux système, mais la partie Dufflebag se trouve sous "/var/log/web-1.log" en haut.

Pour voir l'historique complet des journaux, sélectionnez Full Logs au lieu de Last 100 Lines. (Notez qu'EB fera automatiquement tourner les journaux assez agressivement par défaut)

De plus, vous pouvez avoir une idée de la progression globale en regardant la file d'attente SQS de l'environnement. Les environnements de travail Elastic Beanstalk utilisent SQS pour gérer le flux de travail. Chaque message dans la file d'attente de Dufflebag représente un volume EBS à traiter :

Files d'attente SQS

La colonne Messages Available indique combien de volumes n'ont pas encore été traités. La colonne Messages in Flight indique combien de volumes sont en cours de traitement.

Ajuster ce qu'il faut rechercher

Dufflebag est programmé pour rechercher des choses que nous pensions susceptibles d'être « intéressantes » : clés privées, mots de passe, clés AWS, etc... Mais que faire si vous voulez vraiment rechercher quelque chose de spécifique à VOUS ? Par exemple, vous travaillez pour bank.com et souhaitez voir ce qui existe qui référence bank.com.

Pour cela, une modification mineure du code de Dufflebag sera nécessaire, mais pas trop. Ne vous inquiétez pas ! La logique de ce qu'il faut rechercher se trouve dans inspector.go. La fonction pilfer() est une goroutine qui inspecte un fichier. Le code peut sembler un peu intimidant au premier abord, mais voici ce qu'il fait (et comment le modifier sans trop de difficulté).

Listes noires de noms de fichiers :

  1. Vérifier le nom du fichier par rapport à une liste noire exacte. (blacklist_exact)
  2. Vérifier le nom du fichier par rapport à une liste noire « contient ». (Rejeter le fichier s'il contient une chaîne donnée) (blacklist_contains)
  3. Vérifier le nom du fichier par rapport à une liste noire de préfixes. (Rejeter le fichier s'il commence par une chaîne donnée) (blacklist_prefix)

Vous pouvez modifier la logique de recherche assez facilement en changeant simplement le contenu de ces trois listes. Cependant, je recommande généralement de les laisser telles quelles. Ces listes noires sont conçues pour couvrir les fichiers ennuyeux présents dans de nombreux systèmes de fichiers et empêcher Dufflebag d'avoir à inspecter en profondeur chaque fichier sur tout AWS. Les données sensibles que vous recherchez pourraient se trouver dans ces fichiers... mais probablement pas.

Liste blanche de noms de fichiers :

  1. La fonction IsSensitiveFileName() vérifie le nom du fichier par rapport à une expression régulière qui trouve les noms de fichiers sensibles. (Tels que /etc/shadow, bash_history, etc...)

Contenu des fichiers :

  1. La fonction checkContentsRegex() vérifie le contenu du fichier par rapport à un ensemble d'expressions régulières. (L'argument d'entrée du fichier est ligne par ligne, donc l'entrée de cette fonction est une ligne d'un fichier, pas le fichier entier.) Donc pour rechercher des mots-clés liés à votre organisation, modifiez simplement les expressions régulières dans checkContentsRegex().