
IMDSPOOF es una herramienta de engaño cibernético que falsifica el servicio AWS IMDS para devolver HoneyTokens que pueden ser alertados.
IMDSPOOF es una herramienta de ciberdecepción que suplanta el servicio IMDS de AWS. Una forma en que los atacantes pueden escalar privilegios o moverse lateralmente en un entorno en la nube es recuperando claves de acceso de AWS desde el servicio IMDS en el endpoint http://169.254.169.254/latest/meta-data/iam/security-credentials/<usuario>. Esta herramienta suplanta ese endpoint y redirige el tráfico enviado a 169.254.169.254 a un servidor web local que sirve datos falsos. Esto puede aprovecharse para detecciones altamente ajustadas insertando tokens honey de AWS en la respuesta de la IMDS suplantada.

Esta herramienta está pensada para ser usada por equipos azules en instancias AWS que NO estén usando activamente el IMDS (versión 1 o 2).
Desde la perspectiva de un atacante, no tiene idea de si el IMDS está siendo usado en la instancia EC2 en la que se encuentra. El objetivo de IMDSPOOF es engañar a un atacante que aterriza en tu entorno en la nube para que piense que está interactuando con un servicio IMDS legítimo.
Una vez más, si las aplicaciones que se ejecutan en tu instancia EC2 están usando el servicio IMDS, ¡esta herramienta causará problemas!
Para probar IMDSPOOF en un entorno de prueba, crea una instancia EC2 y asegúrate de que iptables esté instalado (yum install iptables-services si usas Amazon Linux).
IMDS.go (Cómo compilar código 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:54321Para que esto sea útil, debes cambiar las variables al inicio del archivo IMDS.go para que parezcan más reales. Recomiendo encarecidamente colocar tokens honey en el archivo. Puedes dejar la variable token como está o cambiarla por una personalizada.
IMDS.go por lo que quieras que se devuelva al acceder 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>"
El equipo de Thinkst Canary tiene una herramienta maravillosa que te permite generar fácilmente credenciales AWS que generarán una alerta al usarse.

aws_access_key_id = AKIA....
aws_secret_access_key = uZF0y/l5X....
IMDS.go, reemplaza las variables accessKey y secretAccessKey con los valores aws_access_key_id y aws_secret_access_key que te proporcionó CanaryTokens.



Ejecutar IMDSPOOF al inicio se puede hacer fácilmente creando un servicio systemd y habilitándolo.
sudo vim /etc/systemd/system/IMDS.service (Puedes nombrarlo de otra manera más sigilosa si lo deseas, pero los siguientes comandos systemctl esperan que el servicio se llame IMDS.service)IMDS.service recién creado[Unit]
# Cambia esto por otra cosa si lo deseas
Description=IMDSPOOF
# Después de que las dependencias estén disponibles
After=multi-user.target
[Service]
# Tipo de servicio
Type=simple
# Comando para ejecutar el programa del servicio
ExecStart=/bin/IMDS
# Usuario bajo el cual ejecutar el servicio
User=root
# Reiniciar si el servicio falla
Restart=always
# Retardo de reinicio en segundos
RestartSec=10
[Install]
# Habilitar el servicio al arrancar
WantedBy=multi-user.target
/bin/: sudo mv IMDS /bin/sudo systemctl enable IMDSsudo systemctl start IMDSsudo systemctl status IMDS¡Sí! Debido a la forma en que IMDSpoof manipula las iptables en la instancia EC2, no importa de dónde provenga el tráfico. Esto significa que, además de funcionar a través de la utilidad curl en la instancia EC2, IMDSpoof también funciona si se encuentra una vulnerabilidad SSRF a través de una aplicación web alojada en la instancia EC2. Usando la siguiente aplicación vulnerable del blog de AlexanderHose sobre pruebas de penetración en IMDS, podemos explotar la vulnerabilidad SSRF, lo que también devolverá las credenciales falsas de 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