
Rechercher des secrets dans les volumes EBS exposés
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 !
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 :
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.
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.
Installez les dépendances : Ubuntu 18.04 x64 :
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
make
Vous devriez maintenant voir un fichier dufflebag.zip dans le répertoire racine du projet.
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.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.

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

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

Sous Application Code, choisissez Upload your Code.

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

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.
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 :
//#####################################################################
//#### Safety Valve ####
//#### Remove this line of code below to search all of your region ####
//#####################################################################
snapshots = snapshots_result.Snapshots[0:20]
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.

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
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 :
