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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
gdid-reversal — تحليل هندسي عكسي لمعرف الجهاز العالمي (GDID) من مايكروسوفت، يكشف عن إنشائه كمعرف جهاز PUID مخصص من الخادم MSA، وتخزينه في السجل، ونقله عبر منصة الأجهزة المتصلة، مع منهجية تحقيق قابلة للتكرار. | Kitploit
أدوات/GitHubGitHub/smtimesiwndr/gdid-reversal
الهندسة العكسيةالتحقيق الجنائي الرقميالخصوصيةالتعلم والتعليم
GitHubsmtimesiwndr/gdid-reversal

gdid-reversal

تحليل هندسي عكسي لمعرف الجهاز العالمي (GDID) من مايكروسوفت، يكشف عن إنشائه كمعرف جهاز PUID مخصص من الخادم MSA، وتخزينه في السجل، ونقله عبر منصة الأجهزة المتصلة، مع منهجية تحقيق قابلة للتكرار.

عرض المستودع
706427منذ 2 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

شرح كامل لـ GDID ويندوز

Global Device Identifier معكوس هندسيًا بالكامل

Primary source Platform Symbols Method Claims

كيف يتم إنشاء وتخزين وإرسال "Global Device Identifier" من مايكروسوفت، بصمة ويندوز الثابتة المذكورة في شكوى Scattered Spider في يوليو 2026.


TL;DR

[!NOTE] ما هو مذكور أدناه صحيح، لكنه يفتقد بعض المعلومات. بغض النظر عن تسجيل الدخول بحساب MSA، سيكون لديك GDID. لم أدرك ذلك وقت النشر لكني بحثت فيه. لدى CDP مسار جهاز مجهول يستخدم إذا لم يتم ربط أي حساب MSA. النظام الأساسي لا يزال صحيحًا من الناحية الواقعية لكنه يفتقد بعض الأشياء.

  • GDID عنصر تتبع حقيقي. يظهر في الشكوى الجنائية الفيدرالية الأمريكية (الولايات المتحدة ضد بيتر ستوكس، N.D. Ill.، يوليو 2026) كـ Global Device Identifier g:6755467234350028.
  • هو "Device PUID" لحساب Microsoft. معرف PUID فريد بطول 64 بت يتم تعيينه لتثبيت ويندوز عند تسجيله بحساب Microsoft، ويكتب في رسم الجهاز كـ g:<رقم عشري>.
  • الادعاءات خاطئة. هو ليس "128 بت" وليس "مولدًا من الأرقام التسلسلية." سجل المحكمة نفسه يقول أن إعادة التثبيت تنتج GDID جديدًا، مما يستبعد أنه مشتق من تسلسلات الأجهزة مثل GPU الخاص بك.
  • المكدس، من الأسفل للأعلى: wlidsvc (خدمة حساب Microsoft) تزود الجهاز بـ login.live.com وتستعيد Device PUID -> تخزنه في السجل -> Connected Devices Platform (cdp.dll / CDPSvc) تقرأه وتسجله في رسم Device Directory Service (DDS) -> Delivery Optimization تبلغ عنه كـ UCDOStatus.GlobalDeviceId الموثق.
  • كل هذا تم إعادة إنتاجه على جهاز ويندوز 11 (26200) حي مع رموز عامة. يمكنك العثور على GDID الخاص بك في قراءة واحدة للسجل (§7).

[!NOTE] وضع العلامات الثقة. كل ادعاء موسوم حتى تتمكن من تقييمه بنفسك: [COURT] حقيقة مصدر أساسي، [OBSERVED] أعيد إنتاجه حيًا على جهاز الاختبار الخاص بي، [STATIC] مثبت من الملفات الثنائية وPDBs ويندوز العامة، `[ASSESSED]] استنتاج قوي من الأدلة.


المحتويات

  1. الخلفية: ما قالته المحكمة بالفعل
  2. تفنيد الخرافات الفيروسية
  3. أين يظهر GDID: Delivery Optimization
  4. من يمتلكه: Connected Devices Platform إلى DDS
  5. كيف يحصل عليه CDP: يستهلك، لا يحسب
  6. السكّة: MSA Device PUID (wlidsvc)
  7. ابحث عن GDID الخاص بك
  8. تقليل التعرض
  9. المنهجية (قابلة للتكرار)
  10. القيود والتنبيهات الصادقة

1. الخلفية: ما قالته المحكمة بالفعل

في 1 يوليو 2026، كشفت وزارة العدل الأمريكية عن شكوى جنائية ضد بيتر ستوكس، عضو مزعوم في Scattered Spider (المعروف أيضًا باسم Octo Tempest / UNC3944 / 0ktapus). يصف الإفادة كيف ساعدت مايكروسوفت مكتب التحقيقات الفيدرالي في نسب النشاط إلى جهاز.

[!IMPORTANT] [COURT] من الشكوى اللاحقة (¶25، ص.34)، نصًا:

"تم إعداد حساب ngrok عبر Global Device Identifier g:6755467234350028 ('GDID'). وفقًا لممثل مايكروسوفت، فإن Global Device Identifier في نظام ويندوز هو معرف ثابت على مستوى الجهاز مصمم لتحديد تثبيت نظام تشغيل ويندوز بشكل فريد على جهاز... GDID هو معرف فريد عالميًا مرتبط بتثبيت ويندوز على جهاز. يظل GDID ثابتًا عبر تحديثات نظام تشغيل ويندوز على الجهاز، ولكن إعادة تثبيت ويندوز... سترتبط بـ GDID فريد جديد."

يضيف حاشية أن مستخدم مايكروسوفت الواحد يمكن أن يكون لديه عدة GDIDs. ثم يربط الإفادة تاريخ IP للـ GDID والتصفح (مثل empirehotelnyc.com، رابط تسجيل Growtopia/Ubisoft) بحسابات المشتبه به التي كان مسجلاً فيها.

شيئان هنا يحملان بقية هذا الشرح:

  1. القيمة هي g: بالإضافة إلى عدد صحيح عشري (g:6755467234350028). في النظام الست عشري هذا 0x0018000FC8CB93CC، أي رقم بطول 64 بت.
  2. إعادة التثبيت تعطي GDID جديدًا. لذلك لا يمكن أن يكون مجرد دالة للأجهزة الثابتة.

2. تفنيد الخرافات الفيروسية

الملخص على وسائل التواصل الاجتماعي ادعى أن GDID هو "معرف 128 بت يتم إنشاؤه من الأرقام التسلسلية عند التثبيت." كلا النصفين خاطئان:

الادعاء (وسائل التواصل الاجتماعي)الواقع (المصدر الأساسي)
"128 بت"القيمة في الشكوى هي g:6755467234350028، رقم عشري يناسب 64 بت (0x0018000FC8CB93CC).
"مولد من الأرقام التسلسلية عند التثبيت"الشكوى تقول أن . القيمة المشتقة من تسلسلات ثابتة ستعود كما هي بعد إعادة التثبيت، وليس التغيير.

[!NOTE] بعد المزيد من عكس هندسة CDP. قدمت بعض المعلومات الخاطئة. استخدام حساب محلي لا يمنع GDID. لدى CDP مسار جهاز مجهول يتم اتخاذه إذا لم يكن هناك حساب Microsoft. ضع هذا في الاعتبار عند القراءة.


3. أين يظهر GDID: Delivery Optimization

[STATIC] وثائق Azure Monitor العامة لمايكروسوفت تحدد عمود GlobalDeviceId في جدول UCDOStatus (Update Compliance / Delivery Optimization):

GlobalDeviceId (سلسلة): "معرف الجهاز العالمي لمايكروسوفت. هذا معرف يستخدم داخليًا بواسطة مايكروسوفت."

يقع بجوار LastCensusSeenTime وISP وCity وCountry، لذا فهو معرف جهاز مرتبط بالموقع الجغرافي وIP. هذا هو المكان الوحيد الذي تسميه مايكروسوفت القيمة في الوثائق العامة. لكن Delivery Optimization تبلغ عنها فقط. من المهم أنها لا تمتلكها. اتبعها عكس التيار وستصل إلى Connected Devices Platform.


4. من يمتلكه: Connected Devices Platform إلى DDS

[STATIC] C:\Windows\System32\cdp.dll (Connected Devices Platform، خدمات CDPSvc + CDPUserSvc) تحتوي على رمز GlobalDeviceId ونظام تسجيل كامل لـ Device Directory Service:

root@kitploit:~
ddsregistrationclient.cpp   ddsregistrationmanager.cpp   ddsregistrationinfo.cpp
DdsRegistrationClient   RegisterUserDevicesObserver   DdsRegistrationInfoProviderForCDP
endpoints: dds.microsoft.com  fd.dds.microsoft.com  aad.cs.dds.microsoft.com  cdpcs.access.microsoft.com
device-id format string: "g:%s"

DDS = Device Directory Service، رسم هوية الأجهزة المتعددة لمايكروسوفت (الواجهة الخلفية وراء Phone Link، الحافظة السحابية، "Continue on PC"، Nearby Share). CDP هو عميل ويندوز الذي يسجل التثبيت في هذا الرسم، حيث يتم مفتاحه كـ g:<عدد عشري>.

4.1 تم التقاطه حيًا

[OBSERVED] إجبار تسجيل جديد (إعادة تشغيل CDPSvc مع مسح حالته المحلية) والتقاط موفري ETW الخاصين بـ CDP أنتج المصافحة الكاملة:

root@kitploit:~
DdsClient::RegisterUserDeviceAsync()   RegistrationReason: Startup   Account Type: MSA
DDSClient: Registration response received. HTTP status code: 200
OnRegisterUserDeviceComplete
GetDeviceIdAndTicketActivity -> deviceid: 0018XXXXXXXXXXXX

هذا deviceid، المكتوب كـ g:<عدد عشري>، يطابق بنية القيمة في الشكوى:

كلاهما قيم 64 بت في نفس فئة الكلمة العليا 0x0018 (مساحة اسم Device PUID، انظر §6). البادئة g: هي فقط ذلك العدد الصحيح بالنظام العشري.


5. كيف يحصل عليه CDP: يستهلك، لا يحسب

[STATIC] مع PDB العام (cdp.pdb)، مسار معرف الجهاز في cdp.dll هو مجرد طلب وانتظار ضد مكدس الهوية. لا يحسب CDP المعرف بنفسه أبدًا:

root@kitploit:~
flowchart TD
    A["GetStableDeviceIdFromProvider<br/>0x0A3140"] --> B["provider.GetStableDeviceIdAsync<br/>(vtable +0x48)"]
    B --> C["OneCoreAccountProvider::<br/>GetStableDeviceIdAsync 0x0C8370"]
    C --> D["IWebAccountBackedAccountProvider<br/>(MSA / AAD identity COM)"]
    D --> E["OnGetStableDeviceIdCompleted<br/>(const char* deviceId) 0x06CEA0"]
    E -->|"assign() string, signal flag"| A

الاستدعاء الذي يستقبله يجعله واضحًا. يظهر المعرف كـ سلسلة ويتم تخزينه فقط:

root@kitploit:~
; OnGetStableDeviceIdCompleted
mov  rbp, r9                 ; r9 = device-id STRING handed in by the identity provider
lea  rcx, [rsi+0xD8]         ; CDP member field
mov  rdx, rbp
call assign@basic_string     ; store it, no computation, no serials
call Set@CdpWaitableFlag      ; unblock the waiter

خلاصة القول: يتم سك GDID أسفل CDP، في مكدس هوية ويندوز، ويتم تسليمه إلى CDP كسلسلة غير شفافة. هذا يشير إلى خدمة حساب Microsoft.


6. السكّة: MSA Device PUID (wlidsvc)

[STATIC] C:\Windows\System32\wlidsvc.dll، خدمة Microsoft Account / Passport (Windows Live ID)، هي الملف الثنائي الوحيد للهوية الذي يحتوي على GlobalDeviceId الحرفي، ويحتوي على آلية توفير الجهاز الكاملة:

root@kitploit:~
CDeviceIdentityBase::CreateNewDeviceIdentity / Provision / BindDeviceToHardware / GetDeviceCert
DeviceAssociateRequest      (Passport PPCRL SOAP -> login.live.com)
<ps:DevicePUID> ... </ps:DevicePUID>
DeviceIdStore::LogToRegistry
BCryptGenRandom / CCryptRandom::GenRandom     (device KEY, not the id)

المعرف هو Device PUID (معرف فريد لجواز السفر)، معرف MSA بطول 64 بت. BCryptGenRandom الموجود هناك يصنع مفتاح مصادقة الجهاز الذي يقوم BindDeviceToHardware بتثبيته على الجهاز، وليس PUID.

6.1 يتم تعيينه من الخادم

[STATIC] يقوم العميل بسحب PUID من استجابة SOAP للخادم، مع مسار XPath في جسم الاستجابة:

root@kitploit:~
/S:Envelope/S:Body/ps:DeviceUpdatePropertiesResponse/HWPUIDFlipped

CAssociateDeviceRequest::ParseResponseBody والطرق ذات الصلة ParseResponse تقرأ عُقد XML الاستجابة إلى BSTRs. لذا فإن التدفق هو: يقوم العميل بتوفير الجهاز -> login.live.com يعين ويعيد Device PUID -> يقوم العميل بتخزينه. هذا هو بالضبط سبب أن إعادة التثبيت تنتج GDID جديدًا (توفير جديد، PUID جديد من الخادم)، ولماذا هو ليس تجزئة للأجهزة.

6.2 يتم حفظه بنص واضح

[OBSERVED] مخزن هوية حساب Microsoft يحتفظ بالقيمة مباشرة في السجل، في خلية المستخدم الخاصة بك:

root@kitploit:~
HKCU\SOFTWARE\Microsoft\IdentityCRL\ExtendedProperties
    LID = 0018XXXXXXXXXXXX

HKCU\SOFTWARE\Microsoft\IdentityCRL\Immersive\production\Token\{...}
    DeviceId = 0018XXXXXXXXXXXX

بايت ببايت نفس القيمة التي سجلها CDP في DDS حيًا. PUID حساب المستخدم الخاص بك هو رقم مختلف مخزن في مكان آخر كـ puid = 0003... (مثل 00034002XXXXXXXX). هناك أيضًا مفتاح تخزين مؤقت لـ HKLM مسمى باسم PUID (HKLM\SOFTWARE\Microsoft\IdentityCRL\NegativeCache\<PUID>_<userSID>)، لكن هذا خاص بـ SYSTEM فقط، لذا تقرأ القيمة من HKCU.

[!NOTE] البادئة تخبرك ما هو. PUIDs المستخدم هي فئة 0003، جهاز PUIDs هي فئة 0018. GDID المحكمة (0018000FC8CB93CC) في مساحة 0018 لـ Device PUID، مثل جهازي.

6.3 يصادق على نقاط النهاية للرسم البياني

[OBSERVED] ذاكرة التخزين المؤقت لرمز MSA (HKLM\SOFTWARE\Microsoft\IdentityCRL\NegativeCache\...) تحتوي على رموز جهاز مخصصة تمامًا لنقاط النهاية التي يستخدمها CDP:

root@kitploit:~
scope=service::dds.microsoft.com::MBI_SSL_TOKEN_BROKER
scope=service::activity.windows.com::MBI_SSL_SA_TOKEN_BROKER

لذا فإن خدمة حساب Microsoft تسلم بيانات اعتماد الجهاز التي تصادق على تسجيل DDS وتحميلات النشاط التي تحمل GDID.

6.4 السلسلة الكاملة

root@kitploit:~
flowchart TD
    subgraph MSA["طبقة هوية MSA: wlidsvc.dll"]
        A1["توفير الجهاز مع login.live.com<br/>(Passport PPCRL SOAP)"] --> A2["الخادم يعين Device PUID<br/>&lt;ps:DevicePUID&gt; / HWPUIDFlipped"]
        A2 --> A3["تخزين DeviceId / LID = PUID<br/>HKLM\...\IdentityStore"]
        A3 --> A4["إصدار رموز جهاز لـ<br/>dds.microsoft.com و activity.windows.com"]
    end
    subgraph CDP["عميل الرسم البياني للجهاز: cdp.dll / CDPSvc"]
        B1["GetStableDeviceId -> يستقبل سلسلة PUID"] --> B2["RegisterUserDeviceAsync -> DDS<br/>OBSERVED: HTTP 200"]
    end
    subgraph SRV["خادم: Device Directory Service"]
        C1["مفاتيح g:PUID لحساب MSA،<br/>النشاط وتاريخ IP"]
    end
    subgraph REP["الإبلاغ"]
        D1["Delivery Optimization -><br/>UCDOStatus.GlobalDeviceId"]
    end
    A4 --> B1
    B2 --> C1
    C1 --> D1

كل ما تثبته الشكوى على "GDID"، ثابت لكل تثبيت، يبقى بعد التحديثات، جديد عند إعادة التثبيت، مرتبط بحساب Microsoft، قابل للتتبع عبر IPs والتصفح، كل هذا ينتج عن كونه Device PUID لـ MSA معين من الخادم يسجله CDP في رسم الجهاز.


7. ابحث عن GDID الخاص بك

[OBSERVED] على جهاز مسجل الدخول إلى حساب Microsoft، قراءة سجل واحدة من خلية المستخدم الخاصة بك، لا حاجة لصلاحيات المسؤول:

root@kitploit:~
(Get-ItemProperty 'HKCU:\SOFTWARE\Microsoft\IdentityCRL\ExtendedProperties').LID

سيعطيك هذا Device PUID الخاص بك كـ 16 رقمًا سداسيًا عشريًا (مثل 0018XXXXXXXXXXXX). لرؤيته بالشكل g:<عدد عشري> كما يظهر في جانب الخادم:

root@kitploit:~
$hex = (Get-ItemProperty 'HKCU:\SOFTWARE\Microsoft\IdentityCRL\ExtendedProperties').LID
"g:$([Convert]::ToUInt64($hex,16))"

إذا كان ExtendedProperties\LID فارغًا على جهازك، نفس القيمة موجودة ضمن HKCU\SOFTWARE\Microsoft\IdentityCRL\Immersive\production\Token\{...}\DeviceId.

[!WARNING] لا تنشر قيمتك الخاصة. Device PUID الخاص بك، MSA CID الخاص بك (0003...)، وSID المستخدم الخاص بك كلها تزيل إخفاء هويتك. قم بتنقيحها في أي شرح عام. القيمة الوحيدة الآمنة للاقتباس هي قيمة المحكمة، لأنها عامة بالفعل.


8. تقليل التعرض

GDID موجود لأن جهازك مسجل في رسم جهاز حساب Microsoft و Connected Devices Platform يبقيه متزامن. لتقليله:

  • قم بتعطيل Connected Devices Platform (CDPSvc، CDPUserSvc) وأوقف تشغيل Activity History (الإعدادات، الخصوصية، سجل النشاط) لوقف مزامنة الرسم وتحميلات النشاط.
  • حذف %LOCALAPPDATA%\ConnectedDevicesPlatform يمسح فقط حالة CDP المحلية. PUID يعود مباشرة من مخزن الهوية، لذا هذا وحده لن ينجح.
  • إعادة التثبيت تعطيك GDID جديدًا (الشكوى تقول ذلك)، لكنه يرتبط بـ GDID جديد بمجرد تسجيله مرة أخرى.

9. المنهجية (قابلة للتكرار)

كل هذا جاء من جهاز ويندوز 11 قياسي (build 26200).

  • التقاط حي: موفري ETW لتسجيل التتبع TraceLogging لـ CDP (Microsoft.Windows.CDP.*) عبر logman أثناء إجبار تسجيل CDPSvc جديد، تم فك تشفيرها باستخدام tracerpt.
  • السجل وذاكرة التخزين المؤقت للرموز: IdentityStore و IdentityCRL تحت HKLM\SOFTWARE\Microsoft.

ETW والتحليل الثابت هو ما نجح بالفعل. الوكيل سيضيع وقتك فقط.

الملحق: GUIDs موفري ETW لـ CDP (انقر للتوسيع)

تم حسابها باستخدام تجزئة اسم EventSource (SHA1 لمساحة الاسم بالإضافة إلى اسم الموفر بأحرف كبيرة UTF-16BE). تحقق منها مقابل القيمة المعروفة لـ System.Runtime 49592c0f-5a05-516d-aa4b-a64e02026c89:

root@kitploit:~
Microsoft.Windows.CDP.Core                    {7762de0c-b0a6-571a-68d3-c018bf009496}
Microsoft.Windows.CDP.Core.Error              {a1ea5efc-402e-5285-3898-22a5acce1b76}
Microsoft.Windows.CDP.CDS                     {dfa6e32a-095f-5f57-d025-0887d33507a1}
Microsoft.Windows.CDP.Aggr                    {bc1826c8-369c-5b0b-4cd1-3c6ae5bfe2e7}
Microsoft.Windows.CDP.AFS                     {5fe36556-c4cd-509a-8c3e-2a547ea568ae}
Microsoft.Windows.CDP.OnecoreAccountProvider  {4ee5bf9a-3e8f-540b-8bfb-12457a2854b6}
Microsoft.Windows.CDP                          {9f4cc6dc-1bab-5772-0c71-a89954718d66}
الملحق: الملفات الثنائية والرموز الرئيسية (انقر للتوسيع)

[!NOTE] NullZeroX على تويتر أخبرني أن GDID يتم إرساله أيضًا بغض النظر عن تسجيل الدخول بحساب Microsoft على جهازك. لست متأكدًا من مدى صحة ذلك، لكن يجدر أخذه في الاعتبار.


تحليل مباشر. التصحيحات مرحب بها. شكرًا أيضًا لـ claude للمساعدة في هذا الشرح والرسوم البيانية :3

تنزيل الأداة
إعادة التثبيت تنتج GDID جديدًا
القيمةسداسي عشري (64 بت)بادئة الفئة
جهازي (منقح)g:XXXXXXXXXXXXXXXX0x0018XXXXXXXXXXXX0018
معروض المحكمةg:67554672343500280x0018000FC8CB93CC0018
الملف الثنائيالدورالرموز البارزة
wlidsvc.dllخدمة Microsoft Account / Passport، تسك Device PUIDCDeviceIdentityBase::CreateNewDeviceIdentity, CAssociateDeviceRequest::ParseResponseBody, DeviceIdStore::LogToRegistry
cdp.dllConnected Devices Platform، تسجل PUID في DDSDdsRegistrationClient, GetStableDeviceIdFromProvider (0x0A3140), OnGetStableDeviceIdCompleted (0x06CEA0)
dosvc.dll / DOتبلغ عن المعرف كـ UCDOStatus.GlobalDeviceIdغير متاح

السجل: HKLM\SOFTWARE\Microsoft\IdentityStore (DeviceId و LID)، HKLM\SOFTWARE\Microsoft\IdentityCRL\NegativeCache (نطاقات الرموز).