Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-47981 — # سكربت تقييم PowerShell سكربت تقييم PowerShell يفحص أنظمة Windows بحثًا عن CVE-2025-47981 (تجاوز سعة الكومة في SPNEGO NEGOEX) من خلال التحقق من إصدار النواة، ومفتاح التسجيل PKU2U، والمنافذ المكشوفة لـ SPNEGO. يوفر خطوات المعالجة وإرشادات الكشف. | Kitploit
أدوات/GitHubGitHub/hkenzokimura/cve-2025-47981
ماسحات الثغرات الأمنيةتدقيق التكوينأمن الشبكاتالتعلم والتعليمالاستجابة للحوادث
GitHubhkenzokimura/cve-2025-47981

CVE-2025-47981

# سكربت تقييم PowerShell سكربت تقييم PowerShell يفحص أنظمة Windows بحثًا عن CVE-2025-47981 (تجاوز سعة الكومة في SPNEGO NEGOEX) من خلال التحقق من إصدار النواة، ومفتاح التسجيل PKU2U، والمنافذ المكشوفة لـ SPNEGO. يوفر خطوات المعالجة وإرشادات الكشف.

عرض المستودع
منذ 15س 16دلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

🔵 CVE-2025-47981 — سكربت تقييم ثغرة Windows SPNEGO NEGOEX

النوع: تقييم الثغرات — فحص اكتشاف / التحقق من الامتثال CVE: CVE-2025-47981 CVSS: 9.8 حرج (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) CWE: CWE-122 — تجاوز سعة المخزن المؤقت في الكومة (Heap-based Buffer Overflow) الاسم المستعار: "SPNEGO Nightmare" / "Windows Authentication Wormable RCE" التصحيح: KB5062560 | تحديثات يوليو 2025 Patch Tuesday

سكربت PowerShell للتقييم يتحقق مما إذا كان نظام Windows عرضة لثغرة CVE-2025-47981 — تجاوز سعة المخزن المؤقت في الكومة في آلية SPNEGO Extended Negotiation (NEGOEX) التي تسمح بتنفيذ التعليمات البرمجية عن بُعد دون مصادقة. لا ينفذ استغلالًا — فقط يقيم التعرض وحالة التصحيح.

تم التطوير بواسطة: HKK


$ cat ./vulnerability_summary.txt

CVE-2025-47981 هو تجاوز سعة المخزن المؤقت في الكومة في بروتوكول NEGOEX — الطبقة الداخلية الموسعة لآلية مصادقة SPNEGO في Windows. تسمح الثغرة للمهاجمين غير المصادق عليهم بتنفيذ تعليمات برمجية عشوائية عن بُعد، مما قد يؤدي إلى السيطرة الكاملة على النظام.

وصف المحللون الثغرة بأنها تمتلك "الخصائص غير المحظوظة لتصبح مشكلة كبيرة"، مع إمكانية الانتشار الذاتي (wormable) — قادرة على الانتشار تلقائيًا بين الأنظمة الضعيفة دون تفاعل المستخدم.

تؤثر الثغرة على Windows 10 (الإصدار 1607 فما فوق) وجميع إصدارات Windows Server من 2008 R2 حتى Server 2025، بما في ذلك متغيرات Server Core — أكثر من 33 تكوينًا مختلفًا من Windows وServer مؤكد أنها ضعيفة على معماريات x64 وx86 وARM64.


$ cat ./technical_background.txt

ما هو SPNEGO ولماذا هو في النواة؟

SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) هو طبقة مصافحة المصادقة التي يستخدمها Windows قبل كل جلسة مصادقة. غالبًا ما تحتاج التطبيقات إلى مصادقة دون تثبيت بروتوكول — يمكن لـ Windows استخدام Kerberos في بيئة، وNTLM في أخرى، أو آلية مصادقة موسعة في نموذج ثقة مختلف. SPNEGO هو آلية التفاوض التي تقرر بروتوكول المصادقة الذي سيتم استخدامه.

root@kitploit:~
Cliente                          Servidor
  │                                │
  │──── SPNEGO Negotiation ────────►│
  │     MechTypeList:               │
  │     [Kerberos, NTLM, NEGOEX]    │
  │                                │
  │◄─── Selected Mechanism ─────────│
  │                                │
  │──── Auth Exchange ─────────────►│  ← overflow هنا في NEGOEX

NEGOEX هو آلية التوسعة داخل SPNEGO — تسمح بتفاوض مصادقات PKU2U (نظير إلى نظير) وآليات مخصصة أخرى. تقع الثغرة في الدالة ntoskrnl!SpnegoHandleExtended، التي تعالج هياكل SPNEGO_TOKEN كبيرة الحجم مرسلة في أجزاء متعددة، مما يسبب تجاوزًا في كومة النواة.

لماذا يضخم PKU2U المخاطر؟

الخطر مرتفع في الأنظمة التي تكون فيها سياسة المجموعة "Network security: Allow PKU2U authentication requests to this computer to use online identities" مفعلة. هذا الإعداد، المفعل افتراضيًا في العديد من توزيعات Windows، يوسع سطح هجوم NEGOEX من خلال السماح بمصادقة نظير إلى نظير التي تنشط مسار التعليمات البرمجية الضعيف في NEGOEX على نقاط النهاية التي لن تعرضه بطريقة أخرى.


$ cat ./architecture.txt

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────────┐
│            CVE-2025-47981 ASSESSMENT SCRIPT — FLOW                      │
│                                                                         │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 1: Windows Version                                        │  │
│  │  Get-CimInstance Win32_OperatingSystem → .Version               │  │
│  │  السياق: يحدد البنية الدقيقة للربط مع التصحيح                    │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 2: ntoskrnl.exe Version                                   │  │
│  │  Get-Item C:\Windows\System32\ntoskrnl.exe                      │  │
│  │  المقارنة: المثبت < 10.0.14393.8246 → ضعيف                       │  │
│  │  المقارنة: المثبت ≥ 10.0.14393.8246 → تم تطبيق KB5062560         │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 3: PKU2U Registry Key                                     │  │
│  │  HKLM:\SYSTEM\...\Lsa\pku2u\AllowOnlineID                      │  │
│  │  1 → PKU2U مفعل → سطح هجوم موسع                                │  │
│  │  0 → PKU2U معطل → ناقل PKU2U مخفف                              │  │
│  │  غير موجود → التكوين الافتراضي (يُقيَّم عبر GPO)                │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 4: منافذ SPNEGO المكشوفة                                  │  │
│  │  Get-NetTCPConnection → 135, 445, 5985, 3389, 80, 443, 25      │  │
│  │  كل منفذ مفتوح = ناقل تسليم للاستغلال                            │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│                    Format-Table -AutoSize                               │
│                    (مخرجات قابلة للقراءة لتقرير اختبار الاختراق)        │
└─────────────────────────────────────────────────────────────────────────┘

$ cat ./design_decisions.md

1. التحقق من الإصدار عبر ntoskrnl.exe

root@kitploit:~
$kernelPath = [System.IO.Path]::Combine($env:SystemRoot, "System32\ntoskrnl.exe")
$requiredVersion = "10.0.14393.8246"

$installedVersion = (Get-Item $kernelPath).VersionInfo.FileVersion

if ([version]$installedVersion -lt [version]$requiredVersion) {
    "ضعيف - التصحيح مفقود ($missingKB)"
}

لماذا ntoskrnl.exe وليس Get-HotFix؟

Get-HotFix يسرد التحديثات المثبتة، لكن له قيود معروفة:

  • لا يكتشف التحديثات المطبقة عبر DISM أو Windows Update في الوضع الصامت
  • قد يعرض تحديثات تمت إزالتها كموجودة في بعض السيناريوهات
  • لا يعكس الحالة الفعلية للملف الثنائي قيد التشغيل

التحقق من إصدار ntoskrnl.exe مباشرة أكثر موثوقية — الملف لا يتلقى الإصدار المُصحح إلا عندما يتم تطبيق التحديث بشكل فعلي وإعادة تشغيل النظام. النظام الذي لديه تحديث معلق لإعادة التشغيل سيظل لديه الإصدار القديم من النواة في الذاكرة.

تحويل [version]: يقارن PowerShell السلاسل النصية معجميًا افتراضيًا — "10.0.14393.8246" -lt "10.0.14393.800" سيكون $false (خطأ). التحويل إلى [version] يضمن مقارنة رقمية صحيحة لكل ثمانية (octet).

[System.IO.Path]::Combine($env:SystemRoot, ...): يستخدم SystemRoot بدلاً من C:\Windows المثبت — قابل للنقل للأنظمة المثبتة على محركات أقراص مختلفة.


2. إصدار المرجع 10.0.14393.8246

root@kitploit:~
10.0.14393.xxxx  →  Windows 10 الإصدار 1607 / Windows Server 2016
         │
         └─ 8246 = البنية مع تطبيق KB5062560

لماذا هذه البنية تحديدًا؟

Windows Server 2016 (البنية الأساسية 14393) هو أحد أكثر البيئات حرجًا للتصحيح — مستخدم على نطاق واسع في وحدات التحكم بالمجال (DCs) وخوادم الملفات والخدمات الداخلية للشركات. الإصدار 8246 يتوافق مع بنية النواة بعد تطبيق KB5062560 (يوليو 2025).

بالنسبة لأنظمة التشغيل الأخرى، رقم البنية الأدنى المطلوب مختلف — يمكن توسيع السكربت بجدول إصدارات لكل نظام تشغيل.


3. سجل PKU2U — AllowOnlineID

root@kitploit:~
$regPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\pku2u"
$regName = "AllowOnlineID"

ماذا يتحكم هذا المفتاح؟

تؤثر الثغرة بشكل أساسي على الأنظمة التي تكون فيها سياسة المجموعة "Allow PKU2U authentication requests to this computer to use online identities" مفعلة افتراضيًا، وهذا هو الحال لـ Windows 10 الإصدار 1607 فما فوق.

مفتاح AllowOnlineID هو تمثيل السجل لتلك السياسة. عند تفعيله (= 1)، يقبل النظام مصادقات PKU2U — مما ينشط مسار التعليمات البرمجية في NEGOEX الذي يحتوي على التجاوز.

القيمةالحالةالخطر
1PKU2U مفعلمرتفع — ناقل NEGOEX نشط
0PKU2U معطلمنخفض — الناقل مخفف (التصحيح ما زال ضروريًا)
غير موجودإعداد النظام الافتراضييعتمد على GPO — تحقق عبر gpresult /r

-ErrorAction SilentlyContinue: قد لا يكون المفتاح موجودًا في جميع الأنظمة — يعالج السكربت الغياب بأمان دون توليد خطأ.


4. منافذ SPNEGO — سطح الهجوم

root@kitploit:~
$ports = @(135, 445, 5985, 3389, 80, 443, 25)

يمكن للمهاجمين استغلال الثغرة عن بُعد دون مصادقة عن طريق إرسال حزم ضارة إلى الخدمات الضعيفة مثل SMB (المنفذ 445/TCP)، وRDP (المنفذ 3389/TCP)، وHTTP/S (المنفذان 80، 443/TCP)، وSMTP (المنفذ 25/TCP) التي تستخدم مصادقة SPNEGO.

المنفذالبروتوكولSPNEGO يُستخدم لـ
135RPC Endpoint Mapperتفاوض مصادقة RPC
445SMBمصادقة مشاركات الملفات، الأنابيب المسماة
5985WinRM (HTTP)PowerShell عن بُعد، الإدارة
3389RDPمصادقة سطح المكتب البعيد
80HTTPمصادقة Windows في IIS (Negotiate)
443HTTPSمصادقة Windows في IIS عبر TLS
25SMTPExchange Extended Protection

Get-NetTCPConnection -LocalPort $port يتحقق مما إذا كان المنفذ في حالة LISTEN على النظام المحلي — كل منفذ مفتوح يمثل ناقل تسليم مستقل للاستغلال.


$ cat ./mitre_mapping.yml

root@kitploit:~
# منظور المهاجم (ما يكتشفه/يمنعه السكربت)

tactic: Initial Access
  - T1190   # Exploit Public-Facing Application
            # RCE عبر تجاوز كومة SPNEGO دون مصادقة
            # الناقل: أي منفذ مع مصادقة Negotiate (445, 5985, 3389...)

tactic: Execution
  - T1203   # Exploitation for Client Execution
            # تجاوز الكومة في ntoskrnl!SpnegoHandleExtended
            # التحكم في RIP/EIP عبر إفساد كومة النواة

tactic: Lateral Movement
  - T1210   # Exploitation of Remote Services
            # قابل للانتشار الذاتي: يستغل مضيفين آخرين عبر SMB/RPC دون بيانات اعتماد

  - T1550.002 # Pass-the-Hash
              # بعد RCE: وصول SYSTEM يسمح باستخراج تجزئات LSASS

tactic: Privilege Escalation
  - T1068   # Exploitation for Privilege Escalation
            # تجاوز المخزن المؤقت في سياق النواة → ring 0 فوري

# منظور المدافع (ما ينفذه سكربت التقييم)

tactic: Discovery (Blue Team)
  - T1082   # System Information Discovery
            # جمع إصدار نظام التشغيل و ntoskrnl.exe لتقييم التصحيح

  - T1012   # Query Registry
            # التحقق من HKLM:\...\pku2u\AllowOnlineID

  - T1049   # System Network Connections Discovery
            # Get-NetTCPConnection لرسم خريطة منافذ SPNEGO المكشوفة

$ cat ./detection_opportunities.md

اكتشاف محاولة الاستغلال

root@kitploit:~
# شذوذ مصادقة NEGOEX — حزم SPNEGO كبيرة الحجم
# المصدر: سجل أحداث أمان Windows / ETW

EventID: 4625 (Logon Failure) مع SubStatus 0xC000006D
  + المصدر: مضيفون خارجيون
  + التكرار: مرتفع (محاولات فحص/استغلال)
  + TargetUserName: ANONYMOUS LOGON أو فارغ

# بديل: Sysmon Event 3 (Network Connection)
EventID: 3
الشرط:
  DestinationPort: 445 أو 5985 أو 135
  Initiated: false (اتصال وارد)
  Image: System أو lsass.exe
root@kitploit:~
# انهيار النواة بعد استغلال فاشل
# المصدر: سجل أحداث Windows → System

EventID: 1001 (BugCheck)
  BugCheckCode: 0x00000050 (PAGE_FAULT_IN_NONPAGED_AREA)
  أو
  BugCheckCode: 0x0000007E (SYSTEM_THREAD_EXCEPTION_NOT_HANDLED)
  السياق: انهيار في ntoskrnl.exe → محاولة استغلال محتملة

اكتشاف على مستوى الشبكة

root@kitploit:~
# Snort/Suricata — رمز SPNEGO كبير الحجم (مفاهيمي)
alert tcp any any -> $HOME_NET [445,5985,3389] (
  msg:"CVE-2025-47981 SPNEGO NEGOEX oversized token";
  content:"|60|";           # علامة OID الخاصة بـ SPNEGO
  content:"|a0|";           # علامة MechTypeList
  dsize:>4096;              # الرموز الشرعية نادرًا ما تتجاوز 4KB
  threshold:type both, track by_src, count 3, seconds 10;
  sid:2025479810;
)

$ cat ./remediation.md

root@kitploit:~
الأولوية: حرجة — تصحيح فوري (CVSS 9.8، قابل للانتشار الذاتي)

1. التصحيح (الإجراء الرئيسي):
   Windows Update → KB5062560 (تحديثات يوليو 2025 Patch Tuesday)
   WSUS: الموافقة على KB5062560 لجميع أنظمة Windows 10 1607+
   إعادة التشغيل بعد التصحيح — لا يتم استبدال ntoskrnl.exe إلا بعد إعادة التشغيل

2. التحقق بعد التصحيح:
   تشغيل هذا السكربت مرة أخرى
   النتيجة المتوقعة:
     ntoskrnl.exe Installed Version: 10.0.14393.8246 (أو أعلى)
     Vulnerability Result: آمن - تم تطبيق التصحيح

3. التخفيف المؤقت (إذا كان التصحيح الفوري غير ممكن):
   تعطيل PKU2U عبر سياسة المجموعة:
     Computer Configuration → Windows Settings → Security Settings →
     Local Policies → Security Options →
     "Network security: Allow PKU2U authentication requests..." → DISABLED
   
   أو عبر السجل:
     Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\pku2u"
       -Name AllowOnlineID -Value 0

4. حظر الشبكة (دفاع متعمق):
   جدار الحماية: تقييد الاتصالات الواردة على 135، 445، 5985 للمضيفين المصرح لهم
   عزل وحدات التحكم بالمجال والخوادم الحرجة في شبكات VLAN مع قوائم تحكم وصول صارمة

5. أولوية خاصة — وحدات التحكم بالمجال (DCs):
   تعرض DCs جميع المنافذ المدرجة (RPC، SMB، LDAP)
   قابل للانتشار الذاتي + DC مخترق = اختراق كامل لمجال AD
   تصحيح DCs في أول نافذة متاحة

$ cat ./usage.sh

root@kitploit:~
# تشغيل سكربت التقييم (لا يتطلب صلاحيات مسؤول للقراءة الأساسية،
# لكن بعض فحوصات السجل قد تتطلب رفع الصلاحيات)
powershell.exe -ExecutionPolicy Bypass -File cve_2025_47981_check.ps1
root@kitploit:~
# المخرجات المتوقعة على نظام ضعيف:
Name                              Value
----                              -----
ntoskrnl.exe Installed Version    10.0.14393.7906
ntoskrnl.exe Required Version     10.0.14393.8246
PKU2U AllowOnlineID               1
منافذ SPNEGO المفتوحة             {135, 445, 5985, 3389}
Vulnerability Result              ضعيف - التصحيح مفقود (KB5062560)
Windows Version                   10.0.14393.7906

# المخرجات المتوقعة على نظام مُصحح:
Vulnerability Result              آمن - تم تطبيق التصحيح
PKU2U AllowOnlineID               0

$ cat ./affected_versions.txt

root@kitploit:~
المتأثرة (33+ تكوينًا):
  Windows 10:      1607، 1809، 21H2، 22H2
  Windows 11:      22H2، 23H2، 24H2
  Windows Server:  2008 R2، 2012، 2012 R2، 2016، 2019، 2022، 2025
  المعماريات:      x64، x86، ARM64
  Server Core:     نعم (جميع الإصدارات أعلاه)

عامل الخطر المرتفع:
  سياسة PKU2U GPO مفعلة (الافتراضي في Win10 1607+)
  المنافذ 135/445/5985 قابلة للوصول من شبكات خارجية أو غير موثوقة

التصحيح:
  KB5062560  →  تحديثات يوليو 2025 Patch Tuesday
  ntoskrnl.exe الأدنى → 10.0.14393.8246 (Windows Server 2016)
  تحقق من البنيات المحددة لكل إصدار في: msrc.microsoft.com

$ cat ./lessons_learned.txt

root@kitploit:~
[+] مقارنة [version] بدلاً من السلسلة النصية تمنع النتائج السلبية الخاطئة في مقارنات البنيات
[+] ntoskrnl.exe هو المصدر الأساسي للحقيقة لحالة التصحيح — أكثر موثوقية من Get-HotFix
[+] PKU2U AllowOnlineID هو مضخم الخطر — الأنظمة التي لا تحتوي عليه لديها سطح هجوم مخفض
[+] Get-NetTCPConnection يرسم بسرعة سطح الهجوم المكشوف محليًا
[+] Format-Table -AutoSize يولد مخرجات جاهزة للنسخ في تقرير اختبار الاختراق
[-] يتحقق السكربت فقط من Windows Server 2016 (14393) — تمديده لبنيات أخرى ضروري
[-] لا يتحقق من حالة GPO عبر gpresult — قد يختلف السجل عن السياسة الفعلية
[-] لا يختبر الاتصال عن بُعد — فقط يتحقق مما إذا كانت المنافذ مفتوحة محليًا
[-] لا توجد مخرجات JSON/CSV — صعوبة التكامل في خطوط أنابيب الامتثال الآلية
[→] التحسينات: جدول إصدارات لكل نظام تشغيل، مخرجات JSON، فحص عن بُعد عبر Invoke-Command،
    التكامل مع Qualys/Tenable لربط الثغرات

CVE Assessment · CVSS 9.8 · Wormable · July 2025 Patch Tuesday · Detection only · No exploit

تنزيل الأداة