الأساسياتأساسي60mL00

أساسيات Windows لمختصي الأمن

Registry، PowerShell، الخدمات، Active Directory المبدئي

#Windows#PowerShell#Registry#AD#Beginner

لماذا Windows لمختصي الأمن

Windows يشغّل ~75% من حواسيب المؤسسات و معظم الـ Active Directory في العالم. كل APT تقريباً تستهدف Windows في مرحلة من الهجوم. فهم Windows من الداخل = نصف معركة الـ red و blue team.

الهدف
فهم: Registry، PowerShell كأداة قوية، الخدمات والعمليات، أحداث الـ logs، و فكرة Active Directory المبدئية.

هيكل النظام

text
C:\
├── Windows\         ← نظام التشغيل
│   ├── System32\    ← ملفات حيوية، DLLs، executables (cmd, powershell)
│   └── SysWOW64\    ← 32-bit على نظام 64-bit
├── Program Files\   ← برامج مثبتة (64-bit)
├── Program Files (x86)\  ← برامج 32-bit
├── Users\           ← مجلدات المستخدمين
│   └── alice\
│       ├── AppData\Local\        ← بيانات تطبيق (Cache, history)
│       ├── AppData\Roaming\      ← تتنقّل مع المستخدم في AD
│       └── Documents\
├── ProgramData\     ← بيانات مشتركة (مرئي مخفياً)
└── Recycle Bin

PowerShell — الأداة الأقوى على Windows

PowerShell ليس "cmd أحدث". هو لغة برمجة كاملة مع وصول لـ .NET. كل أداة pentest تقريباً على Windows مكتوبة بـ PowerShell.

$ Get-ChildItem C:\\Users # ls المعادل
$ Get-Process # العمليات
$ Get-Service # الخدمات
$ Get-LocalUser # المستخدمون المحليون
$ Get-NetTCPConnection # المنافذ المفتوحة
$ # تنفيذ أمر عن بُعد (يحتاج WinRM):
$ Invoke-Command -ComputerName PC1 -ScriptBlock { whoami }
$ # تنزيل ملف:
$ Invoke-WebRequest http://10.10.10.5/file.zip -OutFile C:\\Temp\\f.zip
$ # اكتشف policy تنفيذ السكربتات:
$ Get-ExecutionPolicy
$ # تجاوز للجلسة الحالية فقط:
$ Set-ExecutionPolicy Bypass -Scope Process

Registry — قاعدة بيانات الإعدادات

Registry هو حيث Windows يخزّن كل إعداد. مفهومه:

text
HKEY_LOCAL_MACHINE (HKLM)   ← إعدادات النظام كله
  └── SOFTWARE
  └── SYSTEM
  └── SECURITY (مقفل افتراضياً)
HKEY_CURRENT_USER (HKCU)    ← إعدادات المستخدم الحالي
HKEY_CLASSES_ROOT (HKCR)    ← ربط الملفات بالبرامج
HKEY_USERS (HKU)            ← كل المستخدمين
$ # قراءة قيمة:
$ Get-ItemProperty 'HKLM:\\Software\\Microsoft\\Windows NT\\CurrentVersion' | Select ProductName
$ # مفاتيح مهمة في الأمن:
$ # 1) Run keys — استمرار للبرامج:
$ Get-ItemProperty 'HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run'
$ Get-ItemProperty 'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run'
$ # 2) UAC settings:
$ Get-ItemProperty 'HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System'
لماذا Run keys مهمة
أكثر مكان يضع فيه malware نفسه ليعمل عند بدء التشغيل. Sysinternals Autoruns أداة الذهب لاستعراض كل أماكن الاستمرار دفعة واحدة.

العمليات والخدمات

$ tasklist # كل العمليات
$ tasklist /svc # العمليات + الخدمات داخلها
$ taskkill /F /PID 1234 # اقتل عملية
$ # الخدمات:
$ sc query # كل الخدمات
$ sc qc spooler # تفاصيل خدمة
$ Get-Service spooler # PowerShell
$ Stop-Service spooler # أوقف
$ # ابحث عن عمليات بأسماء غير معروفة:
$ Get-Process | Where-Object { $_.Path -notlike 'C:\\Windows\\*' -and $_.Path -notlike 'C:\\Program Files*' }

حسابات ومستخدمون

$ whoami # من أنا
$ whoami /priv # صلاحياتي
$ whoami /groups # مجموعاتي
$ net user # كل المستخدمين المحليين
$ net user alice # تفاصيل مستخدم
$ net localgroup Administrators # أعضاء Administrators
$ # هل أنا في AD؟
$ echo %USERDOMAIN% # اسم النطاق (أو اسم الجهاز إذا غير منضم)
$ nltest /domain_trusts # نطاقات موثوقة

الشبكة على Windows

$ ipconfig /all # كل الإعدادات
$ netstat -ano # المنافذ + PID المالك
$ arp -a # ARP cache
$ route print # جدول التوجيه
$ # DNS:
$ nslookup example.com
$ Resolve-DnsName example.com # PowerShell
$ # اتصالات SMB:
$ net use # مشاركات أنا متصل بها
$ net view \\\\10.10.10.5 # مشاركات على جهاز بعيد

مقدمة في Active Directory

AD = خدمة directory مركزية تدير المستخدمين، الحواسيب، الصلاحيات في شبكة المؤسسة. مفاهيم رئيسية:

  • Domain — مجموعة من الموارد تتشارك قاعدة بيانات (مثل corp.local).
  • Domain Controller (DC) — الخادم الذي يحمل قاعدة البيانات.
  • OU (Organizational Unit) — مجلد منطقي لتنظيم.
  • GPO (Group Policy Object) — سياسات تُطبق آلياً.
  • Kerberos — بروتوكول المصادقة الافتراضي.
  • NTLM — البروتوكول القديم، ما زال يُستخدم. مصدر كثير من الهجمات.
$ # على جهاز منضم لـ AD:
$ Get-ADUser -Identity alice # تفاصيل مستخدم (يحتاج RSAT)
$ Get-ADComputer -Filter * # كل الحواسيب
$ Get-ADGroup 'Domain Admins' -Properties Members
$ # بدون RSAT — فقط أوامر الـ net:
$ net user /domain alice
$ net group 'Domain Admins' /domain

السجلات (Event Logs)

Windows يسجل كل شيء في Event Viewer. كل event له ID — حفظ بعض IDs المهمة يفرّق المهاجم عن المدافع الجاد:

text
Security log:
  4624  ← تسجيل دخول ناجح
  4625  ← تسجيل دخول فاشل
  4672  ← تسجيل دخول بصلاحيات خاصة
  4688  ← عملية جديدة بدأت
  4720  ← مستخدم جديد أُنشئ
  4732  ← عضو جديد أُضيف لمجموعة محلية
  4768/4769  ← Kerberos TGT/TGS

System log:
  7045  ← خدمة جديدة ثُبّتت (مهم — كثير من الـ malware)
  7036  ← خدمة بدأت/توقفت

PowerShell logs (إذا فُعّلت):
  4103/4104  ← تنفيذ سكربت / module logging
$ # اقرأ آخر 10 محاولات دخول فاشلة:
$ Get-WinEvent -LogName Security -FilterXPath "*[System[EventID=4625]]" -MaxEvents 10
$ # آخر الخدمات الجديدة:
$ Get-WinEvent -LogName System -FilterXPath "*[System[EventID=7045]]" -MaxEvents 5

أدوات Sysinternals — يجب أن تعرفها

Process Explorer
بديل Task Manager بآلاف المرات. يُظهر شجرة العمليات، الـ DLLs، التواقيع.
Autoruns
يستعرض كل مكان استمرار محتمل (~250 موقع). أهم أداة للـ DFIR.
Sysmon
يسجل أحداث تفصيلية (process create، DNS، ملفات). أساس detection الناضج.
Procmon
يلتقط كل I/O — أفضل أداة لمعرفة "ما يفعله البرنامج فعلاً".
PsExec
تنفيذ أوامر عن بُعد — أداة شرعية يساء استخدامها كثيراً.
TCPView
netstat بواجهة حية.

ممارسة

  1. افتح PowerShell على Windows VM، نفّذ كل أمر فوق.
  2. حمّل Sysinternals Suite، شغّل Autoruns، انظر كم مكان يبدأ منه شيء.
  3. في Event Viewer، ابحث عن آخر event 4624 — ستراك أنت.
  4. ادرس Get-Help — مكافئ man: Get-Help Get-Process -Examples.