
IMDSPOOF est un outil de cyberdeception qui usurpe le service AWS IMDS pour retourner des HoneyTokens pouvant déclencher des alertes.
IMDSPOOF est un outil de cyber-déception qui usurpe un service AWS IMDS. Une façon pour les attaquants d'élever leurs privilèges ou de se déplacer latéralement dans un environnement cloud est de récupérer les clés d'accès AWS à partir du point de terminaison du service IMDS situé à http://169.254.169.254/latest/meta-data/iam/security-credentials/<user>. Cet outil usurpe ce point de terminaison et redirige le trafic envoyé vers 169.254.169.254 vers un serveur web local qui fournit de fausses données. Cela peut être utilisé pour des détections très ciblées en insérant des jetons AWS honey (honeytokens) dans la réponse de l'IMDS usurpée.

Cet outil est destiné à être utilisé par les équipes bleues sur des instances AWS qui n'utilisent PAS activement l'IMDS (version 1 ou 2).
Du point de vue d'un attaquant, il n'a aucune idée si l'IMDS est utilisé sur l'instance EC2 sur laquelle il se trouve. L'objectif d'IMDSPOOF est de tromper un attaquant qui atterrit dans votre environnement cloud en lui faisant croire qu'il interagit avec un service IMDS légitime.
Encore une fois, si les applications exécutées sur votre instance EC2 utilisent le service IMDS, cet outil causera des problèmes!
Pour essayer IMDSPOOF dans un environnement de test, créez une instance EC2 et assurez-vous qu'iptables est installé (yum install iptables-services si vous utilisez Amazon Linux)
IMDS.go (Comment compiler du code Go)curl http://169.254.169.254/latest/meta-data/iam/security-credentials/ec2-admin{
"Code": "Success",
"Message": "The request was successfully processed.",
"LastUpdated": "2023-11-22T03:33:51Z",
"Type": "AWS-HMAC",
"AccessKeyId": "InsertHoneyToken",
"SecretAccessKey": "InsertHoneyToken",
"Token": "HoneyToken",
"Expiration": "2023-11-22T09:33:51Z"
}
iptables -t nat -D OUTPUT -p tcp -d 169.254.169.254 --dport 80 -j DNAT --to-destination 127.0.0.1:54321Pour que cela soit utile, vous devez modifier les variables en haut du fichier IMDS.go pour qu'elles paraissent plus réalistes. Je recommande fortement de placer des honey tokens (jetons factices) dans le fichier. Vous pouvez laisser la variable token telle quelle ou la modifier par une personnalisée.
IMDS.go pour obtenir ce que vous voulez comme résultat lors de l'accès à http://169.254.169.254/latest/meta-data/iam/security-credentials/ec2-adminvar accessKey string = "InsertHoneyToken"
var secretAccessKey string = "InsertHoneyToken"
var token string = "IQoJb3Jpz2cXpQRkpVX3Uf////////////xMdLZHNjb<snip>"
Les gens de Thinkst Canary ont un excellent outil qui vous permet de générer facilement des identifiants AWS qui déclencheront une alerte en cas d'utilisation.

aws_access_key_id = AKIA....
aws_secret_access_key = uZF0y/l5X....
IMDS.go, remplacez les variables accessKey et secretAccessKey par les valeurs aws_access_key_id et aws_secret_access_key que vous a données CanaryTokens.
IMDS.go. IMDS renverra désormais les honey tokens lorsque l'IMDS sera interrogée.


Exécuter IMDSpoof au démarrage peut se faire facilement en créant un service systemd et en activant ce service.
sudo vim /etc/systemd/system/IMDS.service (vous pouvez le nommer autrement, plus discret, si vous le souhaitez, mais les commandes systemctl suivantes s'attendent à ce que le service s'appelle IMDS.service)IMDS.service que vous venez de créer[Unit]
# Changez ceci si vous le souhaitez
Description=IMDSPOOF
# Après que les dépendances soient disponibles
After=multi-user.target
[Service]
# Type de service
Type=simple
# Commande pour exécuter le programme du service
ExecStart=/bin/IMDS
# Utilisateur sous lequel exécuter le service
User=root
# Redémarrer si le service plante
Restart=always
# Délai de redémarrage en secondes
RestartSec=10
[Install]
# Activer le service au démarrage
WantedBy=multi-user.target
/bin/ : sudo mv IMDS /bin/sudo systemctl enable IMDSsudo systemctl start IMDSsudo systemctl status IMDSOui ! Grâce à la manière dont IMDSpoof manipule iptables sur l'instance EC2, peu importe d'où vient le trafic. Cela signifie qu'en plus de fonctionner via l'utilitaire curl sur l'instance EC2, IMDSpoof fonctionne également si une vulnérabilité SSRF est découverte via une application web hébergée sur l'instance EC2. En utilisant l'application vulnérable du blog d'AlexanderHose sur le test d'intrusion IMDS, nous pouvons exploiter la vulnérabilité SSRF qui renverra également les faux identifiants d'IMDSpoof

sudo systemctl stop IMDSsudo systemctl disable IMDSiptables -t nat -D OUTPUT -p tcp -d 169.254.169.254 --dport 80 -j DNAT --to-destination 127.0.0.1:54321