الأساسياتأساسي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 BinPowerShell — الأداة الأقوى على 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 بواجهة حية.
ممارسة
- افتح PowerShell على Windows VM، نفّذ كل أمر فوق.
- حمّل Sysinternals Suite، شغّل Autoruns، انظر كم مكان يبدأ منه شيء.
- في Event Viewer، ابحث عن آخر event 4624 — ستراك أنت.
- ادرس Get-Help — مكافئ man: Get-Help Get-Process -Examples.