Final Submission for SecOps Exam
هذا الالتزام موجود في:
24
README.md
Normal file
24
README.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# ☁️ Ghaymah Internship 2026 - SecOps Track
|
||||||
|
|
||||||
|
**Applicant Name:** Ammar Yaser Al-Sayyed Abdullah
|
||||||
|
**Track:** SecOps (Security Operations)
|
||||||
|
|
||||||
|
## 📦 Repository Structure (هيكل المستودع)
|
||||||
|
|
||||||
|
تم تنظيم هذا المستودع وفقاً لمتطلبات التسليم الرسمية لبرنامج تدريب غيمة 2026:
|
||||||
|
|
||||||
|
* 📁 `q1-security-audit/`: يحتوي على قائمة التدقيق الأمني لمنصة غيمة و Bash Script للفحص الآلي.
|
||||||
|
* 📁 `q2-red-blue-team/`: يحتوي على تحليل حادثة هجوم Brute Force، خطة الاستجابة، وتصميم Alert Rule.
|
||||||
|
* 📁 `q3-mithal-privacy/`: يحتوي على تقرير تقييم الخصوصية لمحرك بحث `mithal.space` مع اقتراحات التحسين.
|
||||||
|
* 📁 `q4-simple-siem/`: يحتوي على سكريبت Python لتحليل السجلات الأمنية، لوحة تحكم HTML، ودليل النشر على غيمة.
|
||||||
|
* 📁 `q5-ransomware-ir/`: يحتوي على خطة الاستجابة الطارئة لحادثة تشفير Ransomware لبيانات Block Storage.
|
||||||
|
* 📁 `common-mortakaz/`: يحتوي على مقترحات التكامل مع منتجات منصة مرتكز (Faseeh & Matajer).
|
||||||
|
* 📁 `common-qabilah/`: يحتوي على رابط حساب قبيلة.
|
||||||
|
|
||||||
|
## 👥 Qabilah Account (حساب قبيلة)
|
||||||
|
**هذا المطلب إجباري للتأهل للتقييم:**
|
||||||
|
🔗 **My Qabilah Profile URL:** https://qabilah.com/profile/ammaryaser263
|
||||||
|
*(تمت متابعة حساب غيمة الرسمي)*
|
||||||
|
|
||||||
|
---
|
||||||
|
*شكراً لفريق غيمة على هذا الاختبار الممتع والتحدي التقني الرائع، وأتطلع لأن أكون جزءاً من فريق SecOps لحماية البنية التحتية السحابية لمنصات غيمة.*
|
||||||
20
common-mortakaz/integration-1.md
Normal file
20
common-mortakaz/integration-1.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Integration Proposal 1: Faseeh API & mithal.space
|
||||||
|
|
||||||
|
## وصف المنتج المختار
|
||||||
|
**فصيح (Faseeh):** واجهة برمجة تطبيقات (API) مبنية على مرتكز، متخصصة في معالجة اللغات الطبيعية (NLP) للغة العربية، تقوم بتصحيح الأخطاء الإملائية والنحوية وتشكيل النصوص بدقة عالية.
|
||||||
|
|
||||||
|
## كيف يتكامل مع mithal.space؟
|
||||||
|
يتم دمج Faseeh API داخل محرك البحث `mithal.space` كمحرك تصحيح للكلمات المفتاحية (Search Query Auto-Correction). عندما يُدخل المستخدم كلمة بها خطأ إملائي، يرسل "مثال" الكلمة إلى "فصيح"، ويسترد الكلمة الصحيحة ليعرض رسالة: "هل تقصد: [...]؟".
|
||||||
|
|
||||||
|
## القيمة المضافة للمستخدم النهائي
|
||||||
|
* تحسين دقة نتائج البحث بشكل كبير للمستخدم العربي.
|
||||||
|
* التعامل الذكي مع اللهجات والأخطاء الشائعة (مثل الخلط بين الهاء والتاء المربوطة، أو همزات القطع والوصل).
|
||||||
|
|
||||||
|
## رسم بسيط للتكامل (Architecture Sketch)
|
||||||
|
[User] --> (Search Query: "موسسة غيمة") --> [mithal.space Frontend]
|
||||||
|
[mithal.space Backend] --> (API Call) --> [Faseeh API on Mortakaz]
|
||||||
|
[Faseeh API] --> (Returns: "مؤسسة غيمة") --> [mithal.space Backend]
|
||||||
|
[mithal.space Backend] --> (Executes Search for correct term) --> [User]
|
||||||
|
|
||||||
|
## التحديات التقنية أو التجارية المحتملة
|
||||||
|
* **التحدي التقني:** زمن الاستجابة (Latency). محركات البحث تتطلب سرعة فائقة (أجزاء من الثانية)، وأي تأخير في استجابة Faseeh API سيؤثر سلباً على تجربة المستخدم.
|
||||||
24
common-mortakaz/integration-2.md
Normal file
24
common-mortakaz/integration-2.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Integration Proposal 2: Matajer & ghaymah.systems
|
||||||
|
|
||||||
|
## وصف المنتج المختار
|
||||||
|
**متاجر (Matajer):** نظام إدارة محتوى (CMS) مفتوح المصدر للتجارة الإلكترونية مصمم خصيصاً للسوق العربي (يدعم بوابات الدفع المحلية وشركات الشحن). متواجد على منصة مرتكز.
|
||||||
|
|
||||||
|
## كيف يتكامل مع ghaymah.systems؟
|
||||||
|
يتم تقديم "متاجر" كـ "تطبيق بنقرة واحدة" (One-Click Application) داخل متجر خدمات `ghaymah.systems`. يمكن لأي مستخدم اختيار "نشاء متجر"، فتقوم غيمة بإنشاء الحاويات (Containers) وربط قاعدة البيانات آلياً بناءً على صورة (Base Image) مجهزة مسبقاً لنظام "متاجر".
|
||||||
|
|
||||||
|
## القيمة المضافة للمستخدم النهائي
|
||||||
|
* إزالة التعقيد التقني: يمكن للشركات الناشئة إطلاق متجر إلكتروني متكامل وقابل للتوسع في دقائق معدودة بدون خبرة في الـ DevOps.
|
||||||
|
* استضافة سحابية محلية سريعة وموثوقة مدعومة ببنية غيمة التحتية.
|
||||||
|
|
||||||
|
## رسم بسيط للتكامل (Architecture Sketch)
|
||||||
|
[User] --> (Clicks "Deploy Matajer") --> [Ghaymah Control Panel]
|
||||||
|
[Ghaymah API] --> (Pulls Matajer Docker Image) --> [Ghaymah Container Registry]
|
||||||
|
[Ghaymah Orchestrator] --> (Spins up Frontend + DB Containers) & (Attaches Block Storage)
|
||||||
|
[System] --> (Returns Live URL) --> [User]
|
||||||
|
|
||||||
|
## التحديات التقنية أو التجارية المحتملة
|
||||||
|
* **التحدي التقني:** إدارة قواعد البيانات (Stateful Data) وتأمين النسخ الاحتياطي التلقائي لمتاجر المستخدمين لضمان عدم فقدان بيانات العملاء والطلبات.
|
||||||
|
|
||||||
|
---
|
||||||
|
## أي المنتجين الأكثر قابلية للتطبيق؟ ولماذا؟
|
||||||
|
**التكامل الأول (Faseeh & mithal.space)** هو الأكثر قابلية للتطبيق الفوري والأقل في استهلاك الموارد. لأنه يعتمد على استدعاءات API (Stateless) ولا يتطلب من غيمة إدارة بنية تحتية معقدة لبيانات مستخدمين خارجيين (كما هو الحال في التكامل الثاني)، كما أن أثره على تحسين جودة محرك "مثال" سيكون فورياً وملحوظاً جداً.
|
||||||
27
q1-security-audit/audit-checklist.md
Normal file
27
q1-security-audit/audit-checklist.md
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Security Audit Checklist for Ghaymah Platform
|
||||||
|
|
||||||
|
## 1. Container Security
|
||||||
|
* **1.1 Base Image Scanning:** استخدام الصور الرسمية والموثوقة فقط في ghaymah Container Registry وتفعيل الفحص الآلي للثغرات قبل النشر.
|
||||||
|
* **1.2 Least Privilege Execution:** إعداد Dockerfile لضمان عدم تشغيل التطبيق بصلاحيات الـ Root داخل حاويات غيمة لمنع تصعيد الصلاحيات.
|
||||||
|
* **1.3 Immutable Containers:** ضبط نظام ملفات الحاوية على Read-Only لمنع المهاجمين من كتابة أي نصوص برمجية خبيثة داخل الحاوية أثناء التشغيل.
|
||||||
|
|
||||||
|
## 2. Network Security
|
||||||
|
* **2.1 Network Segmentation:** استخدام قواعد الشبكة في غيمة لفصل حاويات الـ Frontend عن الـ Backend، بحيث لا يُسمح بالوصول المباشر لقاعدة البيانات من الخارج.
|
||||||
|
* **2.2 TLS/SSL Encryption:** فرض استخدام بروتوكول HTTPS لجميع الاتصالات الخارجية، وتكوين شهادات SSL لتتجدد تلقائياً.
|
||||||
|
* **2.3 Minimal Exposed Ports:** حظر جميع المنافذ افتراضياً، وفتح المنافذ الضرورية فقط للخدمات (مثل 80 و 443) وإغلاق منافذ الإدارة (مثل 22) عن الإنترنت العام.
|
||||||
|
|
||||||
|
## 3. OWASP Top 5
|
||||||
|
* **3.1 Broken Access Control:** تطبيق سياسة "الرفض الافتراضي" والتأكد من التحقق من صلاحيات المستخدم في كل طلب API يُرسل للتطبيق.
|
||||||
|
* **3.2 Cryptographic Failures:** تشفير البيانات الحساسة باستخدام أدوات إدارة الأسرار وعدم تخزينها كنصوص واضحة في متغيرات البيئة على غيمة.
|
||||||
|
* **3.3 Injection:** استخدام الاستعلامات المجهزة للتعامل مع مدخلات المستخدمين قبل تخزينها في قواعد بيانات غيمة.
|
||||||
|
* **3.4 Insecure Design:** إجراء "نمذجة التهديدات" للتطبيق قبل النشر على غيمة لاكتشاف العيوب المنطقية في التصميم.
|
||||||
|
* **3.5 Security Misconfiguration:** إزالة أي خدمات غير ضرورية، تعطيل رسائل الخطأ التفصيلية في بيئة الإنتاج، وتطبيق إعدادات الأمان الافتراضية لمنصة غيمة.
|
||||||
|
|
||||||
|
## 4. Data Security
|
||||||
|
* **4.1 Encryption at Rest:** تفعيل خاصية التشفير لأقراص التخزين ghaymah Block Storage لضمان سرية البيانات.
|
||||||
|
* **4.2 Automated Backup Strategy:** جدولة النسخ الاحتياطي التلقائي عبر ghaymah Backup وتطبيق قاعدة (3-2-1) لضمان توافر البيانات.
|
||||||
|
|
||||||
|
## 5. IAM
|
||||||
|
* **5.1 MFA:** فرض المصادقة الثنائية على جميع حسابات المطورين ومديري النظام.
|
||||||
|
* **5.2 RBAC:** تعيين الصلاحيات بناءً على الأدوار الوظيفية الدقيقة.
|
||||||
|
* **5.3 Audit Logging:** تفعيل تسجيل الأحداث لجميع محاولات الدخول وحفظها في مساحة تخزين منفصلة وآمنة على غيمة.
|
||||||
46
q1-security-audit/security-check.sh
Normal file
46
q1-security-audit/security-check.sh
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "🔒 Starting Security Audit Check..."
|
||||||
|
echo "------------------------------------"
|
||||||
|
|
||||||
|
echo "🔍 [1] Checking Risky Open Ports..."
|
||||||
|
OPEN_PORTS=$(netstat -tuln | awk '{print $4}' | grep -E ':(22|3306|21)$')
|
||||||
|
if [ -z "$OPEN_PORTS" ]; then
|
||||||
|
echo "✅ PASS: No unauthorized risky ports are open."
|
||||||
|
else
|
||||||
|
echo "❌ WARNING: The following risky ports are exposed:"
|
||||||
|
echo "$OPEN_PORTS"
|
||||||
|
fi
|
||||||
|
echo "------------------------------------"
|
||||||
|
|
||||||
|
echo "🌐 [2] Checking SSL Certificate Expiry for mithal.space..."
|
||||||
|
DOMAIN="mithal.space"
|
||||||
|
EXPIRY_DATE=$(echo | openssl s_client -servername $DOMAIN -connect $DOMAIN:443 2>/dev/null | openssl x509 -noout -dates | grep notAfter | cut -d= -f2)
|
||||||
|
if [ -n "$EXPIRY_DATE" ]; then
|
||||||
|
EXPIRY_SEC=$(date -d "$EXPIRY_DATE" +%s)
|
||||||
|
NOW_SEC=$(date +%s)
|
||||||
|
DAYS_LEFT=$(( ($EXPIRY_SEC - $NOW_SEC) / 86400 ))
|
||||||
|
if [ $DAYS_LEFT -gt 30 ]; then
|
||||||
|
echo "✅ PASS: SSL certificate is valid. Expires in $DAYS_LEFT days."
|
||||||
|
else
|
||||||
|
echo "⚠️ WARNING: SSL certificate expires soon (in $DAYS_LEFT days)!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "❌ ERROR: Could not retrieve SSL certificate."
|
||||||
|
fi
|
||||||
|
echo "------------------------------------"
|
||||||
|
|
||||||
|
echo "📁 [3] Checking Sensitive File Permissions..."
|
||||||
|
SENSITIVE_FILE=".env"
|
||||||
|
if [ -f "$SENSITIVE_FILE" ]; then
|
||||||
|
PERMISSIONS=$(stat -c "%a" "$SENSITIVE_FILE")
|
||||||
|
if [ "$PERMISSIONS" -le 600 ]; then
|
||||||
|
echo "✅ PASS: Permissions for $SENSITIVE_FILE are secure ($PERMISSIONS)."
|
||||||
|
else
|
||||||
|
echo "❌ WARNING: Permissions for $SENSITIVE_FILE are too open ($PERMISSIONS)!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "ℹ️ INFO: No $SENSITIVE_FILE found."
|
||||||
|
fi
|
||||||
|
echo "------------------------------------"
|
||||||
|
echo "🏁 Security Audit Check Completed."
|
||||||
16
q2-red-blue-team/alert-rule.yaml
Normal file
16
q2-red-blue-team/alert-rule.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Brute Force Detection Alert Rule (Ghaymah Monitor / Prometheus Format)
|
||||||
|
groups:
|
||||||
|
- name: SecOps_Alerts
|
||||||
|
rules:
|
||||||
|
- alert: HighLoginFailures_BruteForce
|
||||||
|
expr: rate(http_requests_total{path="/api/login", status="401"}[5m]) > 20
|
||||||
|
for: 2m
|
||||||
|
labels:
|
||||||
|
severity: critical
|
||||||
|
team: secops
|
||||||
|
mitre_tactic: "TA0006 - Credential Access"
|
||||||
|
mitre_technique: "T1110 - Brute Force"
|
||||||
|
annotations:
|
||||||
|
summary: "Potential Brute Force Attack on API Login detected"
|
||||||
|
description: "Detected a high rate of failed login attempts (HTTP 401) on /api/login from IP: {{ $labels.client_ip }}. Rate exceeds 20 requests per second over the last 5 minutes."
|
||||||
|
mitigation: "Check WAF logs immediately, apply Rate Limiting for the offending IP, and verify if any recent 200 OK responses occurred."
|
||||||
9
q2-red-blue-team/attack-timeline.md
Normal file
9
q2-red-blue-team/attack-timeline.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Attack Timeline: API Login Brute Force
|
||||||
|
|
||||||
|
**Incident:** Successful brute force attack resulting in data exfiltration.
|
||||||
|
|
||||||
|
* **[08:00 AM] Reconnaissance (الاستطلاع):** المهاجم يبدأ بفحص الـ Endpoints الخاصة بتطبيق غيمة ويكتشف مسار `/api/login`.
|
||||||
|
* **[08:15 AM] Execution (التنفيذ):** بدء هجوم Brute Force باستخدام أداة مؤتمتة وقائمة كلمات مرور (Dictionary Attack) من عدة عناوين IP للتهرب من الحظر المؤقت.
|
||||||
|
* **[08:45 AM] Initial Access (الاختراق الأولي):** نجاح المهاجم في تخمين كلمة مرور حساب إداري ضعيف (`admin/admin123`) والحصول على JWT Token صالح (استجابة HTTP 200 OK).
|
||||||
|
* **[08:50 AM] Discovery & Collection (الاستكشاف والتجميع):** استخدام الـ Token للوصول إلى مسارات حساسة مثل `/api/users` و `/api/financial_data` وجمع البيانات.
|
||||||
|
* **[09:05 AM] Exfiltration (تسريب البيانات):** تصدير البيانات المجمعة لخادم خارجي تابع للمهاجم (C2 Server)، مما أدى لارتفاع ملحوظ في معدل نقل البيانات الصادرة (Outbound Traffic).
|
||||||
22
q2-red-blue-team/incident-response-plan.md
Normal file
22
q2-red-blue-team/incident-response-plan.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Incident Response Plan (IRP) - Brute Force & Data Breach
|
||||||
|
|
||||||
|
## 1. Identification (التعرف)
|
||||||
|
* رصد تنبيهات من نظام المراقبة تفيد بزيادة هائلة في طلبات `401 Unauthorized` على مسار `/api/login`.
|
||||||
|
* تأكيد وجود تسجيل دخول ناجح `200 OK` من نفس الـ IPs المشبوهة بعد آلاف المحاولات الفاشلة.
|
||||||
|
|
||||||
|
## 2. Containment (الاحتواء)
|
||||||
|
* **احتواء فوري:** حظر عناوين الـ IPs المشبوهة عبر جدار حماية التطبيقات (WAF) على منصة غيمة.
|
||||||
|
* إبطال (Revoke) جميع الـ JWT Tokens الحالية وإجبار جميع المستخدمين على تسجيل الخروج لإخراج المهاجم.
|
||||||
|
* عزل الحاوية (Container) المخترقة شبكياً عن باقي البنية التحتية لتحليلها جنائياً.
|
||||||
|
|
||||||
|
## 3. Eradication & Recovery (الاستئصال والتعافي)
|
||||||
|
* فرض إعادة تعيين كلمات المرور (Password Reset) للحسابات المخترقة.
|
||||||
|
* تفعيل التطبيق من صورة (Base Image) موثوقة وجديدة.
|
||||||
|
|
||||||
|
## 4. Prevention on Ghaymah (منع الهجوم مستقبلاً على غيمة)
|
||||||
|
* **Network Policies (سياسات الشبكة):**
|
||||||
|
- تفعيل ميزة (Rate Limiting) على الـ Load Balancer في غيمة (مثلاً: 5 محاولات فشل لكل IP خلال دقيقتين).
|
||||||
|
- تطبيق سياسة `Egress Deny All` لمنع الحاويات من الاتصال بأي خوادم خارجية غير مصرح بها، مما يمنع خطوة (Exfiltration).
|
||||||
|
* **Container Security (أمان الحاويات):**
|
||||||
|
- عدم تخزين أي بيانات حساسة داخل الحاوية نفسها.
|
||||||
|
- فرض المصادقة الثنائية (MFA) برمجياً على مسارات الـ API الحساسة.
|
||||||
19
q3-mithal-privacy/privacy-assessment-report.md
Normal file
19
q3-mithal-privacy/privacy-assessment-report.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Privacy Assessment Report: mithal.space
|
||||||
|
|
||||||
|
## 1. DevTools Inspection Analysis (نتائج الفحص التقني)
|
||||||
|
بناءً على فحص محرك البحث `mithal.space` باستخدام أدوات المطورين (DevTools)، تم استنتاج الآتي:
|
||||||
|
* **Cookies (ملفات تعريف الارتباط):** الموقع يستخدم فقط (Strictly Necessary Cookies) للحفاظ على الجلسة (Session ID). لا يوجد استخدام لملفات تعريف ارتباط تابعة لجهات خارجية (Third-party Cookies) لأغراض الإعلانات.
|
||||||
|
* **Trackers (المتتبعات):** لا يوجد أي سكريبتات تتبع (Analytics Pixels أو Cross-site trackers) تراقب سلوك المستخدم عبر الصفحات.
|
||||||
|
* **HTTPS:** الاتصال مشفر بالكامل باستخدام بروتوكول TLS 1.3 مع وجود شهادة SSL صالحة، مما يمنع هجمات (Man-in-the-Middle).
|
||||||
|
* **Security Headers (ترويسات الأمان):** يوجد تفعيل لترويسة `Strict-Transport-Security (HSTS)`، ولكن هناك نقص في بعض الترويسات المتقدمة التي يمكن أن تعزز الخصوصية.
|
||||||
|
|
||||||
|
## 2. Comparison with Other Search Engines (مقارنة مع محركات أخرى)
|
||||||
|
* **Google:** يعتمد بشكل أساسي على جمع بيانات المستخدمين (Search History, Location, Device Info) لبناء ملفات شخصية (Profiling) تُستخدم في توجيه الإعلانات المخصصة. الخصوصية فيه منخفضة افتراضياً.
|
||||||
|
* **DuckDuckGo:** محرك يركز على الخصوصية، لا يخزن عناوين IP ولا سجلات البحث، ويحظر المتتبعات.
|
||||||
|
* **mithal.space:** يقترب في نموذجه من DuckDuckGo، حيث يركز على تقديم النتائج دون تتبع أو تخزين معلومات شخصية حساسة للمستخدم، مما يجعله خياراً آمناً ومحترماً لخصوصية المستخدم العربي.
|
||||||
|
|
||||||
|
## 3. Recommended Security & Privacy Improvements (اقتراحات التحسين)
|
||||||
|
لرفع مستوى الأمان والخصوصية لمحرك مثال، نقترح تنفيذ الآتي:
|
||||||
|
1. **تطبيق Content Security Policy (CSP) صارم:** لمنع هجمات البرمجيات الخبيثة (XSS) والتأكد من أن المتصفح يحمل السكريبتات من مصادر موثوقة فقط.
|
||||||
|
2. **إضافة ترويسة Referrer-Policy (no-referrer):** لضمان عدم تسريب مصطلحات البحث (Search Queries) التي أدخلها المستخدم للمواقع الخارجية عندما يضغط على أحد الروابط في نتائج البحث.
|
||||||
|
3. **إضافة ترويسة Permissions-Policy:** لتعطيل وصول المتصفح بشكل صريح للميزات الحساسة مثل الكاميرا، الميكروفون، وتحديد الموقع الجغرافي (Geolocation) أثناء استخدام محرك البحث.
|
||||||
56
q4-simple-siem/dashboard.html
Normal file
56
q4-simple-siem/dashboard.html
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ar" dir="rtl">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>SIEM Dashboard - Ghaymah</title>
|
||||||
|
<style>
|
||||||
|
body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: #f4f7f6; margin: 0; padding: 20px; }
|
||||||
|
.card { background: white; padding: 20px; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); }
|
||||||
|
table { width: 100%; border-collapse: collapse; margin-top: 15px; }
|
||||||
|
th, td { padding: 12px; border-bottom: 1px solid #ddd; text-align: right; }
|
||||||
|
th { background-color: #2c3e50; color: white; }
|
||||||
|
.alert-high { color: #e74c3c; font-weight: bold; }
|
||||||
|
.ip-address { font-family: monospace; background: #eee; padding: 2px 6px; border-radius: 4px; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>🛡️ لوحة مراقبة SIEM - غيمة</h1>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<h2>التنبيهات الأمنية المكتشفة</h2>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>وقت الحدث</th>
|
||||||
|
<th>نوع التهديد</th>
|
||||||
|
<th>عنوان IP المشبوه</th>
|
||||||
|
<th>تفاصيل السجل</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="alerts-table">
|
||||||
|
<!-- Data is injected via JavaScript -->
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// محاكاة استدعاء ملف alerts.json الذي ينتجه البايثون
|
||||||
|
const alertsData = [
|
||||||
|
{ timestamp: "2026-07-26 14:30:00", type: "Brute Force Attempt", source_ip: "192.168.1.50", raw_log: "[AUTH] Failed password for admin" },
|
||||||
|
{ timestamp: "2026-07-26 14:31:15", type: "SQL Injection", source_ip: "Unknown", raw_log: "[WEB] GET /api/data?id=1' OR 1=1-- HTTP/1.1" },
|
||||||
|
{ timestamp: "2026-07-26 14:35:10", type: "Port Scanning", source_ip: "10.0.0.9", raw_log: "[FIREWALL] BLOCK TCP SRC=10.0.0.9 DPT=22" }
|
||||||
|
];
|
||||||
|
|
||||||
|
const tableBody = document.getElementById('alerts-table');
|
||||||
|
alertsData.forEach(alert => {
|
||||||
|
const row = `<tr>
|
||||||
|
<td>${alert.timestamp}</td>
|
||||||
|
<td class="alert-high">${alert.type}</td>
|
||||||
|
<td><span class="ip-address">${alert.source_ip}</span></td>
|
||||||
|
<td dir="ltr" style="text-align: left;"><code>${alert.raw_log}</code></td>
|
||||||
|
</tr>`;
|
||||||
|
tableBody.innerHTML += row;
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
16
q4-simple-siem/deployment-guide.md
Normal file
16
q4-simple-siem/deployment-guide.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# SIEM Deployment Guide on Ghaymah
|
||||||
|
|
||||||
|
## هندسة النظام (Architecture)
|
||||||
|
تم تصميم هذا النظام (SIEM المبسط) ليعمل بكفاءة على بنية منصة غيمة (`ghaymah.systems`)، مع ضمان السرعة وقابلية التوسع.
|
||||||
|
|
||||||
|
## 1. تخزين السجلات (Log Storage via Block Storage)
|
||||||
|
* نظراً لحجم السجلات الضخم والمتزايد باستمرار من الـ Firewalls والـ Web Servers، سنستخدم **ghaymah Block Storage** كمساحة تخزين مركزية.
|
||||||
|
* يتم ربط (Mount) هذا الـ Block Storage بشكل مباشر مع حاوية (Container) الـ SIEM الخاصة بنا. هذه الخطوة تضمن عدم استهلاك مساحة الحاوية الداخلية (Ephemeral Storage) وتسمح بالاحتفاظ بالسجلات حتى لو تم إعادة تشغيل الحاوية.
|
||||||
|
|
||||||
|
## 2. معالجة البيانات (Data Processing)
|
||||||
|
* يتم نشر سكريبت بايثون `siem_parser.py` داخل حاوية مستقلة.
|
||||||
|
* يُجدول السكريبت للعمل كل 5 دقائق (باستخدام CronJob) ليقرأ أحدث الأسطر من السجلات الموجودة في הـ Block Storage، يحللها، ويستخرج التهديدات في ملف `alerts.json`.
|
||||||
|
|
||||||
|
## 3. واجهة العرض (Dashboard)
|
||||||
|
* يتم استضافة ملف `dashboard.html` كصفحة ويب ثابتة (Static Web App).
|
||||||
|
* تقوم الواجهة بجلب التحديثات من ملف JSON وعرض عناوين الـ IP المشبوهة، ليتمكن فريق SecOps من اتخاذ قرارات سريعة مثل الحظر الفوري للـ IP عبر الـ WAF.
|
||||||
44
q4-simple-siem/siem_parser.py
Normal file
44
q4-simple-siem/siem_parser.py
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
import json
|
||||||
|
import re
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
# الأنماط الخبيثة التي نبحث عنها في السجلات
|
||||||
|
SUSPICIOUS_PATTERNS = {
|
||||||
|
"Brute Force Attempt": re.compile(r"Failed password for .* from (?P<ip>\d+\.\d+\.\d+\.\d+)"),
|
||||||
|
"SQL Injection": re.compile(r"UNION SELECT|OR 1=1", re.IGNORECASE),
|
||||||
|
"Port Scanning": re.compile(r"BLOCK .* SRC=(?P<ip>\d+\.\d+\.\d+\.\d+)")
|
||||||
|
}
|
||||||
|
|
||||||
|
def analyze_logs():
|
||||||
|
alerts = []
|
||||||
|
|
||||||
|
# محاكاة لبيانات قادمة من 3 مصادر (Authentication, Web Server, Firewall)
|
||||||
|
mock_logs = [
|
||||||
|
"[AUTH] Failed password for admin from 192.168.1.50",
|
||||||
|
"[AUTH] Failed password for root from 192.168.1.50",
|
||||||
|
"[WEB] GET /api/data?id=1' OR 1=1-- HTTP/1.1",
|
||||||
|
"[FIREWALL] BLOCK TCP SRC=10.0.0.9 DST=192.168.1.10 DPT=22"
|
||||||
|
]
|
||||||
|
|
||||||
|
print("🔍 بدء تحليل السجلات...")
|
||||||
|
|
||||||
|
for line in mock_logs:
|
||||||
|
for attack_type, pattern in SUSPICIOUS_PATTERNS.items():
|
||||||
|
match = pattern.search(line)
|
||||||
|
if match:
|
||||||
|
ip = match.groupdict().get("ip", "Unknown") if "ip" in pattern.groupindex else "Unknown"
|
||||||
|
alerts.append({
|
||||||
|
"timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
||||||
|
"type": attack_type,
|
||||||
|
"source_ip": ip,
|
||||||
|
"raw_log": line
|
||||||
|
})
|
||||||
|
|
||||||
|
# حفظ التنبيهات في ملف JSON لتقرأه لوحة التحكم
|
||||||
|
with open("alerts.json", "w", encoding="utf-8") as f:
|
||||||
|
json.dump(alerts, f, indent=4, ensure_ascii=False)
|
||||||
|
|
||||||
|
print(f"✅ تم الانتهاء من التحليل. تم العثور على {len(alerts)} تهديدات محتملة.")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
analyze_logs()
|
||||||
35
q5-ransomware-ir/ransomware-response-plan.md
Normal file
35
q5-ransomware-ir/ransomware-response-plan.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Incident Response Plan: Ransomware on Ghaymah Block Storage
|
||||||
|
|
||||||
|
## 1. خطة الطوارئ (أول 60 دقيقة - Emergency Plan)
|
||||||
|
في الدقائق الأولى من اكتشاف التشفير ورسالة الفدية، الأولوية القصوى هي إيقاف الانتشار:
|
||||||
|
* **الدقيقة 0 - 15 (العزل - Isolation):**
|
||||||
|
- فصل خوادم `ghaymah Block Storage` المصابة فوراً عن الشبكة لمنع انتقال التشفير إلى أجهزة أو خوادم أخرى (Lateral Movement).
|
||||||
|
- إيقاف جميع الحاويات (Containers) المرتبطة بوحدات التخزين المصابة.
|
||||||
|
* **الدقيقة 15 - 30 (التأمين الجنائي - Preservation):**
|
||||||
|
- أخذ لقطة (Snapshot) سريعة للأنظمة المُشفرة كما هي، للاحتفاظ بالأدلة الرقمية (Forensics) وتحليل كيفية الدخول لاحقاً.
|
||||||
|
- عدم إعادة تشغيل الخوادم المصابة لأن ذلك قد يدمر مفاتيح التشفير الموجودة في الذاكرة العشوائية (RAM).
|
||||||
|
* **الدقيقة 30 - 45 (تحديد الهوية والتقييم - Identification):**
|
||||||
|
- فحص امتدادات الملفات المشفرة ورسالة الفدية لمعرفة نوع الـ Ransomware، والبحث عن أدوات فك تشفير مجانية متاحة (مثل مشروع NoMoreRansom).
|
||||||
|
* **الدقيقة 45 - 60 (التصعيد والتواصل - Communication):**
|
||||||
|
- إبلاغ الإدارة العليا والفريق القانوني بالحادثة.
|
||||||
|
- اتخاذ القرار الحاسم: **عدم دفع الفدية**، والبدء في تفعيل خطة استعادة الكوارث (Disaster Recovery).
|
||||||
|
|
||||||
|
## 2. استراتيجية النسخ الاحتياطي والاسترداد (Backup & Recovery)
|
||||||
|
بناءً على حلول غيمة للنسخ الاحتياطي، تعتمد خطة التعافي على المفاهيم التالية:
|
||||||
|
* **RPO (Recovery Point Objective):** وهو الحد الأقصى المقبول لفقدان البيانات. إذا كان الـ RPO هو 4 ساعات، فهذا يعني أن آخر نسخة احتياطية صالحة تم أخذها منذ 4 ساعات، وسنقبل بخسارة عمل هذه الساعات الأربعة.
|
||||||
|
* **RTO (Recovery Time Objective):** وهو الحد الأقصى للوقت المستغرق لاستعادة النظام للعمل. نهدف لاستعادة الأنظمة من `ghaymah Backup` في أقل من ساعتين (RTO = 2 Hours).
|
||||||
|
* **قاعدة (3-2-1):**
|
||||||
|
- الاحتفاظ بـ **3** نسخ من البيانات.
|
||||||
|
- تخزينها على **2** وسائط تخزين مختلفة (مثلاً Block Storage سريع، و Object Storage بارد).
|
||||||
|
- الاحتفاظ بـ **1** نسخة خارج الموقع (Offsite) والأهم أن تكون **Immutable Backup** (نسخة غير قابلة للتعديل أو الحذف، حتى لو حصل المهاجم على صلاحيات الإدارة).
|
||||||
|
|
||||||
|
## 3. خطة الوقاية الشاملة لمنع التكرار (Prevention Plan)
|
||||||
|
1. **أمان الشبكات والهوية (Zero Trust):**
|
||||||
|
- تطبيق المصادقة الثنائية (MFA) على جميع حسابات الوصول إلى `ghaymah.systems`.
|
||||||
|
- عزل الشبكات (Segmentation) بحيث لا يمكن لخادم ويب مخترق الوصول المباشر إلى الـ Block Storage بدون تصريح صريح.
|
||||||
|
2. **فحص الثغرات الآلي:**
|
||||||
|
- تحديث الصور (Base Images) للحاويات بشكل دوري لترقيع الثغرات المعروفة التي استغلها المهاجم كباب خلفي.
|
||||||
|
3. **التوعية الأمنية (Security Awareness):**
|
||||||
|
- تدريب الموظفين على التعرف على رسائل التصيد الاحتيالي (Phishing) التي تعتبر الناقل الأول لبرمجيات الفدية.
|
||||||
|
4. **مراقبة السلوك (EDR & SIEM):**
|
||||||
|
- تفعيل قواعد تنبيه ترصد "التعديل الجماعي للملفات" في وقت قصير جداً، وإيقاف العملية آلياً قبل تشفير باقي القرص.
|
||||||
المرجع في مشكلة جديدة
حظر مستخدم