
IMDSPOOF è uno strumento di inganno informatico che spoofa il servizio AWS IMDS per restituire HoneyTokens che possono generare avvisi.
IMDSPOOF è uno strumento di cyber deception che contraffà un servizio AWS IMDS. Un modo in cui gli attaccanti riescono a elevare i privilegi o a muoversi lateralmente in un ambiente cloud è recuperare le chiavi di accesso AWS dall'endpoint del servizio IMDS situato a http://169.254.169.254/latest/meta-data/iam/security-credentials/<utente>. Questo strumento contraffà tale endpoint e reindirizza il traffico inviato a 169.254.169.254 verso un webserver locale che serve dati falsi. Può essere sfruttato per rilevamenti finemente sintonizzati inserendo token AWS honey nella risposta della risposta IMDS contraffatta.

Questo strumento è pensato per essere utilizzato dai blue team su istanze AWS che NON stanno attivamente usando l'IMDS (versione 1 o 2).
Dal punto di vista di un attaccante, non ha idea se l'IMDS sia in uso sull'istanza EC2 in cui si trova. L'obiettivo di IMDSPOOF è ingannare un attaccante che arriva nel tuo ambiente cloud, facendogli credere di interagire con un servizio IMDS legittimo.
Ancora una volta, se le applicazioni in esecuzione sulla tua istanza EC2 STANNO usando il servizio IMDS, questo strumento CAUSERÀ problemi!
Per provare IMDSPOOF in un ambiente di test, crea un'istanza EC2 e assicurati che iptables sia installato (yum install iptables-services se usi Amazon Linux)
IMDS.go (Come compilare codice 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:54321Affinché sia utile, devi modificare le variabili all'inizio del file IMDS.go per renderle più realistiche. Raccomando vivamente di inserire token honey nel file. Puoi lasciare la variabile token invariata o cambiarla con una personalizzata.
IMDS.go con ciò che vuoi venga restituito quando si accede a 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>"
Le persone di Thinkst Canary hanno un meraviglioso strumento che permette di generare facilmente credenziali AWS che genereranno un avviso all'uso.

aws_access_key_id = AKIA....
aws_secret_access_key = uZF0y/l5X....
accessKey e secretAccessKey con i valori aws_access_key_id e aws_secret_access_key forniti da CanaryTokens.



Eseguire IMDS spoof all'avvio può essere fatto facilmente creando un servizio systemd e abilitandolo.
sudo vim /etc/systemd/system/IMDS.service (Puoi chiamarlo in modo più furtivo se desideri, ma i seguenti comandi systemctl si aspettano che il servizio si chiami IMDS.service)IMDS.service appena creato[Unit]
# Cambia questo se desideri
Description=IMDSPOOF
# Dopo che le dipendenze sono disponibili
After=multi-user.target
[Service]
# Tipo di servizio
Type=simple
# Comando per eseguire il programma del servizio
ExecStart=/bin/IMDS
# Utente con cui eseguire il servizio
User=root
# Riavvia se il servizio crasha
Restart=always
# Ritardo di riavvio in secondi
RestartSec=10
[Install]
# Abilita il servizio all'avvio
WantedBy=multi-user.target
/bin/: sudo mv IMDS /bin/sudo systemctl enable IMDSsudo systemctl start IMDSsudo systemctl status IMDSSì! A causa del modo in cui IMDSpoof manipola le iptables sull'istanza EC2, non importa da dove provenga il traffico. Questo significa che, oltre a funzionare tramite l'utilità curl sull'istanza EC2, IMDSpoof funziona anche se viene trovata una vulnerabilità SSRF attraverso un'applicazione web ospitata sull'istanza EC2. Utilizzando la seguente applicazione vulnerabile dal blog di AlexanderHose sul pentesting IMDS, possiamo sfruttare la vulnerabilità SSRF che restituirà anche le credenziali false da 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