
IMDSPOOF는 AWS IMDS 서비스를 스푸핑하여 경고를 발생시킬 수 있는 HoneyTokens를 반환하는 사이버 기만 도구입니다.
IMDSPOOF는 AWS IMDS 서비스를 스푸핑하는 사이버 기만 도구입니다. 공격자가 클라우드 환경에서 권한 상승 또는 측면 이동을 수행하는 한 가지 방법은 http://169.254.169.254/latest/meta-data/iam/security-credentials/<user> 엔드포인트에 위치한 IMDS 서비스에서 AWS 액세스 키를 검색하는 것입니다. 이 도구는 해당 엔드포인트를 스푸핑하여 169.254.169.254로 전송된 트래픽을 가짜 데이터를 제공하는 로컬 웹 서버로 리디렉션합니다. 스푸핑된 IMDS 응답에 허니 AWS 토큰을 삽입하여 정밀하게 조정된 탐지에 활용할 수 있습니다.

이 도구는 IMDS(버전 1 또는 2)를 활발히 사용하지 않는 AWS 인스턴스에서 블루 팀이 사용하도록 고안되었습니다.
공격자의 관점에서 보면, 자신이 침투한 EC2 인스턴스에서 IMDS가 사용되고 있는지 전혀 알 수 없습니다. IMDSPOOF의 목표는 클라우드 환경에 침투한 공격자가 실제 IMDS 서비스와 상호작용하고 있다고 착각하게 만드는 것입니다.
다시 한번 말씀드리지만, EC2 인스턴스에서 실행 중인 애플리케이션이 IMDS 서비스를 사용하고 있다면 이 도구는 문제를 일으킬 것입니다!
테스트 환경에서 IMDSPOOF를 사용해보려면 EC2 인스턴스를 생성하고 iptables가 설치되어 있는지 확인하십시오 (Amazon Linux 사용 시 yum install iptables-services)
IMDS.go를 컴파일하고 실행하십시오 (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:54321이 도구를 유용하게 사용하려면 IMDS.go 파일 상단의 변수를 더 실제처럼 보이도록 변경해야 합니다. 파일에 허니 토큰을 넣는 것을 적극 권장합니다. token 변수는 그대로 두거나 사용자 정의 값으로 변경할 수 있습니다.
IMDS.go 상단에 있는 다음 변수들을 http://169.254.169.254/latest/meta-data/iam/security-credentials/ec2-admin 접근 시 반환되길 원하는 값으로 변경하십시오.var accessKey string = "InsertHoneyToken"
var secretAccessKey string = "InsertHoneyToken"
var token string = "IQoJb3Jpz2cXpQRkpVX3Uf////////////xMdLZHNjb<snip>"
Thinkst Canary 팀은 사용 시 알림을 생성하는 AWS 자격 증명을 쉽게 생성할 수 있는 훌륭한 도구를 제공합니다.

aws_access_key_id = AKIA....
aws_secret_access_key = uZF0y/l5X....
accessKey 및 secretAccessKey 변수를 CanaryTokens에서 제공된 aws_access_key_id 및 aws_secret_access_key 값으로 교체하십시오.



IMDS 스푸핑을 시작 시 실행하는 것은 systemd 서비스를 생성하고 활성화하여 쉽게 수행할 수 있습니다.
sudo vim /etc/systemd/system/IMDS.service (원한다면 더 은밀한 다른 이름을 지정할 수 있지만, 다음 systemctl 명령어는 서비스 이름이 IMDS.service라고 가정합니다)IMDS.service 파일에 다음을 추가하십시오.[Unit]
# 원한다면 다른 것으로 변경하십시오
Description=IMDSPOOF
# 종속성이 사용 가능해진 후
After=multi-user.target
[Service]
# 서비스 유형
Type=simple
# 서비스 프로그램을 실행할 명령어
ExecStart=/bin/IMDS
# 서비스를 실행할 사용자
User=root
# 서비스가 중단되면 재시작
Restart=always
# 재시작 지연 시간(초)
RestartSec=10
[Install]
# 부팅 시 서비스 활성화
WantedBy=multi-user.target
/bin/ 디렉터리에 있는지 확인하십시오: sudo mv IMDS /bin/sudo systemctl enable IMDSsudo systemctl start IMDSsudo systemctl status IMDS네! IMDSPOOF가 EC2 인스턴스의 iptables를 조작하는 방식 때문에 트래픽 출처는 중요하지 않습니다. 즉, EC2 인스턴스에서 curl 유틸리티를 통해 작동할 뿐만 아니라, EC2 인스턴스에서 호스팅되는 웹 애플리케이션에서 SSRF 취약점이 발견된 경우에도 IMDSPOOF가 작동합니다. AlexanderHose의 블로그에 있는 취약한 애플리케이션을 사용하여 SSRF 취약점을 악용하면 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