
أنشئ بيئة اختبار اختراق AWS الخاصة بك والمصمّمة لتكون عرضة للثغرات

ابدأ الاختراق: CloudFoxable
اقرأ المدونة لمزيد من التفاصيل: تقديم CloudFoxable: بيئة اختبار اختراق سحابية بأسلوب الألعاب
يساعد CloudFox مختبرِي الاختراق ومحترفي الأمن على اكتشاف مسارات الهجوم القابلة للاستغلال في البنية التحتية السحابية. ولكن ماذا لو أردت العثور على خدمات غير موجودة بعد في بيئتك الحالية واستغلالها؟ ماذا لو لم تكن لديك إمكانية الوصول إلى بيئة AWS مؤسسية؟
هنا يأتي دور CloudFoxable، وهي بيئة AWS هشّة عن قصد صُممت خصيصًا لإبراز قدرات CloudFox ومساعدتك في العثور على مسارات الهجوم الكامنة بشكل أكثر فعالية. استلهامًا من CloudGoat وflaws.cloud وflaws2.cloud وMetasploitable 1-3، توفّر CloudFoxable مجموعة واسعة من الأعلام (flags) ومسارات الهجوم بصيغة CTF.
على غرار CloudGoat وIAM-Vulnerable، تنشر CloudFoxable موارد AWS هشّة عن قصد في حساب تجريبي يديره المستخدم، ليتعلم المستخدمون كيفية تحديد الثغرات السحابية واستغلالها. ومع ذلك، وكما هو الحال إلى حد كبير في flaws.cloud، تكون تجربتك أكثر توجيهًا واعتمادًا على الويب.
تستخدم CloudFoxable أداة Terraform لنشر وإدارة بنية AWS هشّة عن قصد. يوفّر هذا القسم الحد الأدنى من الإرشادات المطلوبة لتثبيت Terraform ولنشر موارد CloudFoxable وتعديلها وإزالتها.
يجب تثبيت Terraform محليًا قبل نشر CloudFoxable.
اتبع دليل التثبيت الرسمي من HashiCorp لنظام التشغيل الخاص بك:
https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli
تحقق من التثبيت:
terraform version
سيؤدي التثبيت الناجح إلى طباعة إصدار Terraform.
قبل تشغيل Terraform:
aws configure، أو متغيرات البيئة، أو دور مفترض).مهم: تنشر CloudFoxable بنية تحتية هشّة عن قصد. لا تنشر هذا في حسابات AWS للإنتاج أو المشتركة أو الخاصة بالشركات.
يجب تشغيل جميع أوامر Terraform من الدليل التالي:
cd cloudfoxable/aws
قم بتهيئة دليل العمل وتنزيل المزوّدين المطلوبين:
terraform init
على غرار IAM-Vulnerable، بعض التحديات مفعّلة افتراضيًا (تلك التي لا تترتب عليها تكاليف تُذكر)، وبعضها الآخر معطّل افتراضيًا (تلك التي تترتب عليها تكاليف عند نشرها). وبهذه الطريقة، يمكنك تفعيل وحدات محددة حسب الحاجة. غير أن آلية تفعيل/تعطيل التحديات تختلف قليلًا عن IAM-Vulnerable.
داخل cloudfoxable.bishopfox.com، سيخبرك كل تحدٍّ ما إذا كنت بحاجة إلى إجراء أي تغييرات على terraform (أي نشر شيء ما) لإكمال التحدي. طريقة القيام بذلك هي تحرير terraform.tfvars وتحديث علامة enabled من false إلى true حسب الحاجة.
إليك مثال:
############################
# Enabled/Disabled Challenges
############################
# Always on (Low or No cost)
challenge_foo_enabled = true
challenge_bar_enabled = true
challenge_alice_enabled = true
# Enable as needed (These challenges incur cost)
challenge_bob_enabled = false
challenge_mallory_enabled = false
لتفعيل تحدي mallory، يمكنك ببساطة تحديث السطر التالي:
challenge_mallory_enabled = true
بعد تفعيل أحد التحديات، ستحتاج إلى إعادة تشغيل terraform apply:
terraform apply
لقد قمت الآن بنشر تحدي mallory.
التنظيف
متى أردت إزالة جميع الموارد التي أنشأتها CloudFoxable، يمكنك تشغيل هذه الأوامر:
cd cloudfoxable/awsterraform destroyإذا كنت تستخدم Windows، فقد تواجه مشكلات عند نشر بعض التحديات بسبب قيود خاصة بالمنصة. لتجنّب ذلك، يتم توفير Dockerfile لمساعدتك في بناء التطبيق وتشغيله في بيئة متسقة عبر الأنظمة المختلفة.
ابدأ باستنساخ المستودع إلى جهازك المحلي:
git clone https://github.com/BishopFox/cloudfoxable.git
cd cloudfoxable
بعد استنساخ المستودع، قم ببناء صورة Docker باستخدام الأمر التالي. سيضمن ذلك استخدام بناء جديد دون أي طبقات مخزّنة مؤقتًا:
docker build --no-cache -t cloudfoxable .
إذا كنت على Windows، فاستخدم أمر PowerShell التالي لتشغيل حاوية Docker. سيقوم هذا الأمر بـ:
cd aws
docker run -it -v $env:USERPROFILE/.aws/credentials:/root/.aws/credentials -v ${PWD}:/cloudfoxable/aws cloudfoxable
https://github.com/iknowjason/Awesome-CloudSec-Labs
إذا كنت ترغب في إضافة تحدي جديد، فهذه هي الخطوات داخل CloudFoxable بعد أن تقوم بعمل fork للمستودع:
cp aws/challenges/1_challenge_template aws/challenges/challenge_namechallenge_name.tf إلى اسم التحدي الخاص بك.variable "challenge_name_enabled" {
description = "Enable or disable challenge_name challenge (true = enabled, false = disabled)"
type = bool
default = false
}
terraform.tfvars.example. حدد ما إذا كان يجب تفعيله افتراضيًا (بتكلفة منخفضة/بدون تكلفة)، أو تعطيله افتراضيًا (بتكلفة $$)
challenge_name_enabled = false
module "challenge_challenge_name" {
source = "./challenges/challenge-name"
count = var.challenge_name_enabled ? 1 : 0
aws_assume_role_arn = (var.aws_assume_role_arn != "" ? var.aws_assume_role_arn : data.aws_caller_identity.current.arn)
account_id = data.aws_caller_identity.current.account_id
aws_local_profile = var.aws_local_profile
user_ip = local.user_ip
}
enabled_challenges:
هذا مطلوب مرة واحدة لكل مساحة عمل (أو عند تغيّر تكوين المزوّد).
لمراجعة ما سينشئه Terraform أو يعدّله أو يدمره:
terraform plan
لنشر التحديات المفعّلة حاليًا:
terraform apply
اكتب yes عند مطالبتك بالتأكيد.
لإزالة جميع الموارد التي أنشأتها CloudFoxable:
terraform destroy
أكّد بالكتابة yes عند المطالبة.
| Command | Description |
|---|---|
terraform init | تهيئة مشروع Terraform |
terraform plan | عرض تغييرات البنية التحتية المقترحة |
terraform apply | إنشاء الموارد أو تحديثها |
terraform destroy | إزالة جميع الموارد المنشورة |
var.challenge_name_enabled ? "name | $12/month |" : ""