المختبر 11.3: مسابقة CTF مصغرة شاملة
مقدمة
مرحبًا بكم في مسابقة CTF المصغرة الشاملة لدورة أنظمة التشغيل!
هذا التحدي يدمج المهارات المكتسبة طوال الجلسة:
- إعداد النظام
- تحليل العمليات والذاكرة
- أمان Windows
- PowerShell والبرمجة النصية
- الاتصال بين العمليات
- كشف التهديدات
التنسيق
- النوع: Capture The Flag (CTF)
- المدة: 90 دقيقة
- النقاط: 100 نقطة إجمالاً
- الأعلام: التنسيق
FLAG{texte_du_flag}
القواعد
- عمل فردي - لا تعاون أثناء CTF
- الموارد المسموح بها:
- ملاحظات الدورة
- توثيق Microsoft
- أدوات Sysinternals
- الموارد المحظورة:
- التواصل مع طلاب آخرين
- الحلول عبر الإنترنت
- التقديم: انسخ الأعلام في وثيقة الإجابة
البيئة
لديك جهاز افتراضي Windows مُعد مسبقًا مع:
- أدوات Sysinternals مثبتة
- PowerShell متاح
- أدلة مخفية في النظام
تأكد من وجود لقطة قبل البدء!
التحديات
التحدي 1: استكشاف النظام (15 نقطة)
الهدف: العثور على معلومات مخفية في إعدادات النظام.
التعليمات:
- علم مخفي في متغيرات البيئة للمستخدم
- ابحث عن المتغير الذي يحتوي على العلم
تلميح: يبدأ اسم المتغير بـ "SECRET_"
إعداد للمدرس (يجب القيام به قبل CTF):
# إضافة متغير البيئة
[Environment]::SetEnvironmentVariable("SECRET_CTF", "FLAG{env_vars_reveal_secrets}", "User")
الحل المتوقع: FLAG{env_vars_reveal_secrets}
التحدي 2: سجل Windows (15 نقطة)
الهدف: استكشاف السجل للعثور على علم مخفي.
التعليمات:
- علم مخفي في مفتاح سجل
- ابحث في HKCU:\Software\
تلميح: يسمى المفتاح "CoursSE"
الإعداد:
# إنشاء مفتاح السجل
New-Item -Path "HKCU:\Software\CoursSE" -Force
Set-ItemProperty -Path "HKCU:\Software\CoursSE" -Name "Flag" -Value "FLAG{registry_hunter_pro}"
أمر مفيد:
Get-ItemProperty -Path "HKCU:\Software\CoursSE"
التحدي 3: الملفات المخفية (15 نقطة)
الهدف: العثور على ملف مخفي في النظام.
التعليمات:
- ملف مخفي يحتوي على العلم
- يوجد في مجلد المستندات للمستخدم
- يستخدم الملف تدفق بيانات بديل (ADS)
الإعداد:
# إنشاء الملف مع ADS
$path = [Environment]::GetFolderPath("MyDocuments")
Set-Content "$path\readme.txt" -Value "Ceci est un fichier normal."
Set-Content "$path\readme.txt:secret" -Value "FLAG{ads_are_sneaky}" -Stream "secret"
أمر مفيد:
Get-Item "$path\readme.txt" -Stream *
Get-Content "$path\readme.txt" -Stream secret
التحدي 4: خدمة مشبوهة (20 نقطة)
الهدف: تحديد خدمة مشبوهة والعثور على علمها.
التعليمات:
- تم إنشاء خدمة بوصف يحتوي على علم
- الخدمة غير مفعلة
- ابحث عنها بين الخدمات المثبتة
الإعداد:
# إنشاء خدمة وهمية (يتطلب صلاحيات المسؤول)
New-Service -Name "SvcCTF" -BinaryPathName "C:\Windows\System32\cmd.exe" `
-DisplayName "Windows CTF Helper" `
-Description "FLAG{service_enumeration_master}" `
-StartupType Manual
أوامر مفيدة:
Get-Service | Where-Object { $_.DisplayName -like "*CTF*" }
Get-WmiObject Win32_Service | Where-Object { $_.Description -like "*FLAG*" }
التحدي 5: العمليات والذاكرة (20 نقطة)
الهدف: تحليل عملية للعثور على علم.
التعليمات:
- يعمل سكربت PowerShell في الخلفية
- يحتوي على العلم في وسائط سطر الأوامر
- استخدم أدوات التحليل للعثور عليه
الإعداد:
# تشغيل عملية مع العلم كوسيط
Start-Process powershell -ArgumentList "-NoExit -Command `"Write-Host 'Background process'; while(`$true){Start-Sleep 60}`"" -WindowStyle Hidden
# العلم الحقيقي سيكون في الوسائط
Start-Process powershell -ArgumentList "-NoExit -Command `"`$flag='FLAG{process_forensics_win}'; while(`$true){Start-Sleep 60}`"" -WindowStyle Hidden
أوامر مفيدة:
Get-WmiObject Win32_Process | Select-Object Name, ProcessId, CommandLine
Get-CimInstance Win32_Process | Where-Object { $_.CommandLine -like "*FLAG*" }
التحدي 6: الشبكة والاتصالات (15 نقطة)
الهدف: تحليل الاتصالات الشبكية للعثور على دليل.
التعليمات:
- يستمع خادم على منفذ غير معتاد
- اتصل بالخادم للحصول على العلم
- المنفذ بين 8000 و9000
الإعداد:
# سكربت الخادم لتشغيله قبل CTF
$listener = [System.Net.Sockets.TcpListener]::new([System.Net.IPAddress]::Loopback, 8888)
$listener.Start()
Write-Host "Serveur CTF en ecoute sur port 8888"
while ($true) {
$client = $listener.AcceptTcpClient()
$stream = $client.GetStream()
$writer = [System.IO.StreamWriter]::new($stream)
$writer.WriteLine("FLAG{network_detective}")
$writer.Flush()
$client.Close()
}
أوامر مفيدة:
# العثور على المنافذ المستمعة
Get-NetTCPConnection -State Listen | Where-Object { $_.LocalPort -gt 8000 -and $_.LocalPort -lt 9000 }
# الاتصال
$client = New-Object System.Net.Sockets.TcpClient("127.0.0.1", 8888)
$reader = New-Object System.IO.StreamReader($client.GetStream())
$reader.ReadLine()
تحدي إضافي (10 نقاط)
التحدي 7: مهمة مجدولة
الهدف: العثور على علم مخفي في مهمة مجدولة.
الإعداد:
# إنشاء مهمة مجدولة مع العلم
$action = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c echo FLAG{scheduled_task_investigator}"
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddYears(1)
Register-ScheduledTask -TaskName "CTF_Task" -Action $action -Trigger $trigger -Description "Hidden CTF challenge"
أمر مفيد:
Get-ScheduledTask | Where-Object { $_.TaskName -like "*CTF*" }
(Get-ScheduledTask -TaskName "CTF_Task").Actions
ورقة الإجابة
الاسم: ______________________
التاريخ: ______________________
التحدي 1 (15 نقطة): FLAG{_____________________}
التحدي 2 (15 نقطة): FLAG{_____________________}
التحدي 3 (15 نقطة): FLAG{_____________________}
التحدي 4 (20 نقطة): FLAG{_____________________}
التحدي 5 (20 نقطة): FLAG{_____________________}
التحدي 6 (15 نقطة): FLAG{_____________________}
الإضافي (10 نقاط): FLAG{_____________________}
المجموع: _____ / 110 نقطة
معايير التقييم
| التحدي | النقاط | الصعوبة |
|---|---|---|
| 1. متغيرات البيئة | 15 | سهل |
| 2. السجل | 15 | سهل |
| 3. ADS | 15 | متوسط |
| 4. الخدمات | 20 | متوسط |
| 5. العمليات | 20 | صعب |
| 6. الشبكة | 15 | متوسط |
| 7. إضافي | 10 | صعب |
دليل للمدرس
إعداد الجهاز الافتراضي
# سكربت الإعداد الكامل لـ CTF
# يجب تشغيله كمسؤول قبل البدء
Write-Host "إعداد مسابقة CTF المصغرة..." -ForegroundColor Cyan
# التحدي 1 - متغير البيئة
[Environment]::SetEnvironmentVariable("SECRET_CTF", "FLAG{env_vars_reveal_secrets}", "User")
# التحدي 2 - السجل
New-Item -Path "HKCU:\Software\CoursSE" -Force | Out-Null
Set-ItemProperty -Path "HKCU:\Software\CoursSE" -Name "Flag" -Value "FLAG{registry_hunter_pro}"
# التحدي 3 - ADS
$docPath = [Environment]::GetFolderPath("MyDocuments")
Set-Content "$docPath\readme.txt" -Value "Ceci est un fichier normal de documentation."
Set-Content "$docPath\readme.txt:secret" -Value "FLAG{ads_are_sneaky}" -Stream "secret"
# التحدي 4 - الخدمة (يتطلب صلاحيات المسؤول)
if ((New-Service -Name "SvcCTF" -BinaryPathName "C:\Windows\System32\cmd.exe" `
-DisplayName "Windows CTF Helper" `
-Description "FLAG{service_enumeration_master}" `
-StartupType Manual -ErrorAction SilentlyContinue)) {
Write-Host "تم إنشاء الخدمة" -ForegroundColor Green
}
# التحدي 5 - العمليات
Start-Process powershell -ArgumentList "-WindowStyle Hidden -NoExit -Command `"`$flag='FLAG{process_forensics_win}'; while(`$true){Start-Sleep 60}`""
# التحدي 7 - المهمة المجدولة
$action = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c echo FLAG{scheduled_task_investigator}"
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddYears(1)
Register-ScheduledTask -TaskName "CTF_Task" -Action $action -Trigger $trigger -Description "Hidden CTF" -Force | Out-Null
Write-Host "تم الانتهاء من الإعداد!" -ForegroundColor Green
Write-Host "لا تنسَ تشغيل الخادم الشبكي (التحدي 6) بشكل منفصل."
تشغيل الخادم الشبكي (التحدي 6)
# يجب تشغيله في نافذة منفصلة
$listener = [System.Net.Sockets.TcpListener]::new([System.Net.IPAddress]::Loopback, 8888)
$listener.Start()
Write-Host "الخادم CTF يستمع على المنفذ 8888..."
while ($true) {
$client = $listener.AcceptTcpClient()
$stream = $client.GetStream()
$writer = [System.IO.StreamWriter]::new($stream)
$writer.WriteLine("FLAG{network_detective}")
$writer.Flush()
$client.Close()
Write-Host "تم خدمة العميل."
}
التنظيف بعد CTF
# سكربت التنظيف
[Environment]::SetEnvironmentVariable("SECRET_CTF", $null, "User")
Remove-Item "HKCU:\Software\CoursSE" -Recurse -Force -ErrorAction SilentlyContinue
$docPath = [Environment]::GetFolderPath("MyDocuments")
Remove-Item "$docPath\readme.txt" -Force -ErrorAction SilentlyContinue
Stop-Service "SvcCTF" -ErrorAction SilentlyContinue
sc.exe delete "SvcCTF"
Get-Process powershell | Where-Object { $_.CommandLine -like "*flag=*" } | Stop-Process -Force
Unregister-ScheduledTask -TaskName "CTF_Task" -Confirm:$false -ErrorAction SilentlyContinue
Write-Host "تم الانتهاء من التنظيف." -ForegroundColor Green
الخاتمة
تختبر هذه المسابقة المصغرة CTF إتقانك للمفاهيم الأساسية:
- استكشاف نظام Windows
- استخدام PowerShell
- تحليل جنائي بسيط
- الأمان والكشف
حظًا موفقًا! 🎯
تم تطوير مسابقة CTF المصغرة كجزء من دورة أنظمة التشغيل - الوحدة 11