
IMDSPOOF é uma ferramenta de ciberdecepção que falsifica o serviço AWS IMDS para retornar HoneyTokens que podem ser alertados.
IMDSPOOF é uma ferramenta de ciberdecepção que falsifica um serviço AWS IMDS. Uma maneira pela qual invasores conseguem escalar privilégios ou mover-se lateralmente em um ambiente de nuvem é recuperando chaves de acesso AWS do endpoint do serviço IMDS localizado em http://169.254.169.254/latest/meta-data/iam/security-credentials/<user>. Esta ferramenta falsifica esse endpoint e redireciona o tráfego enviado para 169.254.169.254 para um servidor web local que serve dados falsos. Isso pode ser aproveitado para detecções altamente ajustadas, inserindo tokens AWS isca na resposta da resposta IMDS falsificada.

Esta ferramenta é destinada a ser usada por equipes azuis em instâncias AWS que NÃO estão utilizando ativamente o IMDS (versão 1 ou 2).
Da perspectiva de um invasor, ele não tem ideia se o IMDS está sendo usado na instância EC2 em que está. O objetivo do IMDSPOOF é enganar um invasor que pousa em seu ambiente de nuvem, fazendo-o pensar que está interagindo com um serviço IMDS legítimo.
Mais uma vez, se as aplicações em execução na sua instância EC2 ESTÃO usando o serviço IMDS, esta ferramenta CAUSARÁ problemas!
Para testar o IMDSPOOF em um ambiente de teste, crie uma instância EC2 e certifique-se de que o iptables está instalado (yum install iptables-services se usar Amazon Linux)
IMDS.go (Como 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 isso seja útil, você deve alterar as variáveis no topo do arquivo IMDS.go para algo com aparência mais real. Eu recomendo fortemente colocar tokens isca no arquivo. Você pode deixar a variável token como está ou alterá-la para uma personalizada.
IMDS.go para o que você deseja que seja retornado ao acessar 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>"
O pessoal da Thinkst Canary tem uma ferramenta maravilhosa que permite gerar facilmente credenciais AWS que gerarão um alerta ao serem usadas.

aws_access_key_id = AKIA....
aws_secret_access_key = uZF0y/l5X....
accessKey e secretAccessKey pelos valores aws_access_key_id e aws_secret_access_key fornecidos pelo CanaryTokens.



Executar o IMDS spoof na inicialização pode ser feito facilmente criando um serviço systemd e habilitando o serviço.
sudo vim /etc/systemd/system/IMDS.service (Você pode nomear isso de outra forma mais discreta, se desejar, mas os seguintes comandos systemctl esperam que o serviço seja nomeado IMDS.service)IMDS.service recém-criado[Unit]
# Change this to something else if you wish
Description=IMDSPOOF
# After dependencies are available
After=multi-user.target
[Service]
# Type of service
Type=simple
# Command to execute the service program
ExecStart=/bin/IMDS
# User to run the service as
User=root
# Restart if the service crashes
Restart=always
# Restart delay in seconds
RestartSec=10
[Install]
# Enable the service at boot
WantedBy=multi-user.target
/bin/: sudo mv IMDS /bin/sudo systemctl enable IMDSsudo systemctl start IMDSsudo systemctl status IMDSSim! Devido à forma como o IMDSpoof manipula o iptables na instância EC2, não importa de onde o tráfego está vindo. Isso significa que, além de funcionar via utilitário curl na instância EC2, o IMDSpoof também funciona se uma vulnerabilidade SSRF for encontrada através de uma aplicação web hospedada na instância EC2. Usando a seguinte aplicação vulnerável do blog de AlexanderHose sobre testes de penetração no IMDS, podemos explorar a vulnerabilidade SSRF que também retornará as credenciais falsas do 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