
IMDSPOOF هي أداة خداع إلكتروني تقوم بتزوير خدمة AWS IMDS لإرجاع HoneyTokens يمكن التنبيه عليها.
IMDSPOOF هي أداة خداع إلكتروني تقوم بتزوير خدمة AWS IMDS. إحدى الطرق التي يستخدمها المهاجمون لتصعيد الصلاحيات أو الانتقال الجانبي في بيئة سحابية هي استرداد مفاتيح الوصول AWS من نقطة نهاية خدمة IMDS الموجودة في http://169.254.169.254/latest/meta-data/iam/security-credentials/<user>. تقوم هذه الأداة بتزوير تلك النقطة النهائية وتوجيه الحركة المرسلة إلى 169.254.169.254 إلى خادم ويب محلي يقدم بيانات مزيفة. يمكن الاستفادة من ذلك لإنشاء كشف دقيق للغاية عن طريق إدراج رموز AWS وهمية في استجابة IMDS المزيفة.

هذه الأداة مخصصة لاستخدامها من قبل فرق الدفاع على مثيلات AWS التي ليست تستخدم IMDS (الإصدار 1 أو 2) بشكل نشط.
من وجهة نظر المهاجم، ليس لديه أي فكرة عما إذا كان IMDS قيد الاستخدام على مثيل EC2 الذي يتواجد فيه. الهدف من IMDSPOOF هو خداع مهاجم يصل إلى بيئتك السحابية ليعتقد أنه يتفاعل مع خدمة IMDS شرعية.
مرة أخرى، إذا كانت التطبيقات التي تعمل على مثيل EC2 الخاص بك تستخدم خدمة IMDS، فإن هذه الأداة ستسبب مشاكل!
لتجربة IMDSPOOF في بيئة اختبار، قم بإنشاء مثيل EC2 وتأكد من تثبيت iptables (yum install iptables-services إذا كنت تستخدم Amazon Linux)
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-adminvar 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....
IMDS.go، استبدل متغيري accessKey و secretAccessKey بقيم aws_access_key_id و aws_secret_access_key المعطاة لك من CanaryTokens.
IMDS.go. سيعيد IMDS الآن الرموز الوهمية عند الاستعلام عن IMDS.


يمكن تشغيل IMDSPOOF عند بدء التشغيل بسهولة عن طريق إنشاء خدمة 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 بقواعد iptables على مثيل EC2، فلا يهم مصدر الحركة. هذا يعني أنه بالإضافة إلى العمل عبر أداة curl على مثيل EC2، فإن IMDSPOOF يعمل أيضاً إذا تم العثور على ثغرة SSRF عبر تطبيق ويب مستضاف على مثيل EC2. باستخدام التطبيق الضعيف من مدونة AlexanderHose حول اختبار اختراق IMDS، يمكننا استغلال ثغرة 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