انتقل إلى المحتوى الرئيسي

خدمات Windows

مقدمة​

خدمات Windows هي برامج تعمل في الخلفية، بشكل مستقل عن جلسات المستخدم. توفر وظائف أساسية للنظام.

خصائص الخدمات​

الاختلافات مع التطبيقات​

الخاصيةالتطبيقالخدمة
الواجهةعادةً رسوميةبدون واجهة (أو محدودة)
الجلسةمرتبطة بمستخدممستقلة
بدء التشغيليدوي بواسطة المستخدمتلقائي عند الإقلاع
التنفيذأثناء الجلسةمستمر في الخلفية

أنواع بدء التشغيل​

النوعالوصف
تلقائييبدأ عند إقلاع النظام
تلقائي (مؤجل)يبدأ بعد الإقلاع، مع تأخير
يدوييبدأ فقط عند الطلب
معطللا يمكن أن يبدأ

حسابات الخدمة​

الحسابالامتيازاتالاستخدام
LocalSystemكامل (مسؤول)خدمات النظام الحرجة
LocalServiceمحدود، محلي فقطخدمات قليلة الامتيازات
NetworkServiceمحدود، وصول للشبكةخدمات تحتاج إلى الشبكة
حساب المستخدمحسب الحسابخدمات مخصصة

الإدارة عبر الواجهة الرسومية​

Services.msc​

Win+R > services.msc

المعلومات المتاحة:

  • اسم ووصف الخدمة
  • الحالة (قيد التشغيل، متوقف)
  • نوع بدء التشغيل
  • حساب التنفيذ

مدير المهام​

علامة التبويب الخدمات لعرض سريع.


الإدارة عبر PowerShell​

عرض الخدمات​

# جميع الخدمات
Get-Service

# الخدمات قيد التشغيل
Get-Service | Where-Object {$_.Status -eq "Running"}

# البحث حسب الاسم
Get-Service -Name "*update*"

# مع تفاصيل WMI
Get-WmiObject Win32_Service | Select-Object Name, DisplayName, State, StartMode, PathName

بدء/إيقاف الخدمات​

# بدء
Start-Service -Name "NomService"

# إيقاف
Stop-Service -Name "NomService"

# إعادة تشغيل
Restart-Service -Name "NomService"

# مع تأكيد
Stop-Service -Name "Spooler" -Confirm

تعديل نوع بدء التشغيل​

# تحويل إلى تلقائي
Set-Service -Name "NomService" -StartupType Automatic

# تعطيل
Set-Service -Name "NomService" -StartupType Disabled

إنشاء خدمة​

# إنشاء خدمة جديدة
New-Service -Name "MonService" `
-BinaryPathName "C:\chemin\vers\programme.exe" `
-DisplayName "Mon Service Personnalise" `
-Description "Description du service" `
-StartupType Manual

# حذف (عبر sc.exe)
sc.exe delete "MonService"

الإدارة عبر CMD​

أمر SC (التحكم في الخدمة)​

:: عرض الخدمات
sc query

:: حالة خدمة
sc query "NomService"

:: بدء
sc start "NomService"

:: إيقاف
sc stop "NomService"

:: تكوين بدء التشغيل
sc config "NomService" start= auto
sc config "NomService" start= disabled

:: إنشاء خدمة
sc create "MonService" binPath= "C:\chemin\programme.exe"

:: حذف
sc delete "MonService"

أمر NET​

:: بدء
net start "NomService"

:: إيقاف
net stop "NomService"

خدمات النظام الهامة​

الخدمات الحرجة​

الخدمةالاسم القصيرالدور
Windows Updatewuauservالتحديثات
Windows DefenderWinDefendمكافحة الفيروسات
Remote Procedure CallRpcSsالاتصال بالنظام
DCOM Server Process LauncherDcomLaunchتفعيل DCOM
Windows Event LogEventLogالتسجيل
Task SchedulerScheduleالمهام المجدولة
Print SpoolerSpoolerالطباعة

خدمات الشبكة​

الخدمةالاسم القصيرالدور
DHCP ClientDhcpتكوين IP تلقائي
DNS ClientDnscacheحل الأسماء
Windows Firewallmpssvcجدار الحماية
Remote Desktop ServicesTermServiceسطح المكتب البعيد
ServerLanmanServerمشاركة الملفات
WorkstationLanmanWorkstationالوصول إلى المشاركات

أمان الخدمات​

المخاطر​

  1. خدمات ضعيفة:

    • ملفات تنفيذية قابلة للتعديل
    • أذونات واسعة جدًا
    • حسابات ذات امتيازات عالية
  2. ناقلات الهجوم:

    • استبدال الملف التنفيذي
    • اختطاف DLL
    • مسار خدمة غير مقتبس

التحقق من الأمان​

# التحقق من المسارات غير المقتبسة
Get-WmiObject Win32_Service | Where-Object {
$_.PathName -notmatch '^"' -and
$_.PathName -match ' '
} | Select-Object Name, PathName

# التحقق من أذونات الملفات التنفيذية
Get-WmiObject Win32_Service | ForEach-Object {
$path = $_.PathName -replace '"', '' -replace ' .*', ''
if (Test-Path $path) {
Get-Acl $path | Select-Object @{N='Service';E={$_.Name}}, Path, Owner
}
}

تعزيز الأمان​

  1. مبدأ أقل امتياز:

    • استخدام LocalService أو NetworkService بدلاً من LocalSystem
    • إنشاء حسابات خدمة مخصصة
  2. حماية الملفات التنفيذية:

    • أذونات مقيدة على الملفات التنفيذية
    • مسارات بين علامات الاقتباس
  3. تعطيل الخدمات غير الضرورية:

    • Remote Registry
    • Print Spooler (إذا لم يكن هناك طباعة)
    • Telnet (قديم)

تبعيات الخدمات​

فهم التبعيات​

قد تعتمد خدمة على خدمات أخرى لتعمل.

# عرض تبعيات خدمة
Get-Service -Name "NomService" -DependentServices

# الخدمات التي تعتمد عليها هذه الخدمة
Get-Service -Name "NomService" -RequiredServices

مثال: Print Spooler​

Print Spooler
├── يعتمد على: Remote Procedure Call (RPC)
└── خدمات تابعة: (غالبًا لا يوجد)

تسجيل الخدمات​

سجل الأحداث​

# الأحداث المتعلقة بالخدمات
Get-WinEvent -FilterHashtable @{
LogName = 'System'
ProviderName = 'Service Control Manager'
} -MaxEvents 20 | Format-Table TimeCreated, Message -Wrap

معرفات الأحداث الهامة​

معرف الحدثالوصف
7000لم يتمكن الخدمة من البدء
7001تعتمد الخدمة على خدمة لم تبدأ
7009انتهاء المهلة عند البدء
7034انتهت الخدمة بشكل غير متوقع
7035تم إرسال طلب بدء/إيقاف
7036بدأت الخدمة أو توقفت

تمارين​

  1. قم بإدراج جميع الخدمات قيد التشغيل على نظامك
  2. حدد الخدمات التي تعمل تحت LocalSystem
  3. ابحث عن الخدمات ذات المسارات غير المقتبسة
  4. أنشئ خدمة اختبار واحذفها

المراجع​