هجوم PMKID

pmkid / pm — التقاط PMKID وكسره

يلتقط قيمة PMKID من إطار EAPOL M1 واحد ويكسر كلمة مرور WPA2 اختياريًّا على الجهاز. لا يتطلّب عميلًا.

الوضع الافتراضي لـ pm نشِط (بلا عميل): ينتحل عنوان MAC لعميل ويرسل لنقطة الوصول طلب مصادقة مفتوحة + طلب ارتباط، فتردّ نقطة الوصول فورًا بإطار M1 يحمل الـ PMKID — دون انتظار عميل حقيقي. أضِف passive لمسحٍ صامت لا يُرسِل شيئًا، ينتظر فقط ارتباط عميل حقيقي.

CMD> pm <index|bssid> [channel]           ← نشِط (يُجبِر ظهور الـ PMKID)
CMD> pm passive <index|bssid> [channel]   ← صامت، بلا إرسال
CMD> pm 2
CMD> pm AA:BB:CC:DD:EE:FF 6
CMD> pm passive 2
الوضع الأمر يُرسِل؟ يحتاج عميلًا حقيقيًّا؟
نشِط (افتراضي) pm <idx> نعم (مصادقة + ارتباط) لا — يُجبِر M1 عند الطلب
سلبي pm passive <idx> لا نعم — ينتظر ارتباط عميل

كيف يعمل PMKID

تُضمّن نقطة الوصول قيمة PMKID في كل إطار EAPOL M1 ترسله للعملاء المرتبطين:

PMKID = HMAC-SHA1-128(PMK, "PMK Name" || AP_MAC || STA_MAC)

ولأن قيمة PMKID مشتقّة مباشرةً من الـ PMK (المشتقّ بدوره من كلمة المرور)، فإن كسرها يتطلّب إطار M1 واحدًا فقط — بلا M2، وبلا إلغاء مصادقة، وبلا حاجة لتفاعل أي عميل.


الخطوة الأولى — الالتقاط

CMD> sw          ← المسح أوّلًا لبناء الفهرس
CMD> pm 2        ← استهداف نقطة الوصول بالفهرس 2

في الوضع النشِط الافتراضي، ينتحل العنقاء الارتباط بنقطة الوصول ليُجبِرها على إرسال M1 فورًا (يعيد المحاولة كل 800 مِلّي ثانية حتى الالتقاط). وفي الوضع السلبي يكتفي بالإنصات وترسل نقطة الوصول M1 كلّما ارتبط أي عميل طبيعيًّا. وعند العثور على PMKID في بيانات المفتاح (Key Data) تعرض الشاشة:

[PMKID CAPTURED!]
A1B2C3D4E5F6A7B8   ← معاينة أوّل 8 بايتات
[c] crack   [q] stop

ملاحظة: لا تُضمّن كل نقاط الوصول قيمة PMKID KDE في M1. فإن رأيت M1 seen — no PMKID in Key Data، فتلك النقطة لا تُضمّن PMKID — استخدم ws بدلًا منه. (نقاط الوصول البرمجية مثل hostapd تُسقِط PMKID عمدًا في وضع PSK؛ ومعظم راوترات المستهلك تُضمّنه.)


الخطوة الثانية — الكسر

اضغط c بعد الالتقاط لبدء الكسر على الجهاز.

يحسب العنقاء PBKDF2-SHA1(passphrase, SSID, 4096) → PMK → HMAC-SHA1-128("PMK Name"||AP||STA) ويقارنه بالـ PMKID الملتقَط.

مصدر قائمة الكلمات المسار السلوك
قائمة كلمات SD /apps/pmkid/wordlist.txt تُجرَّب أوّلًا، بلا حدّ للحجم
القائمة المدمجة (مضمّنة) 101 كلمة مرور WPA شائعة، كخيار احتياطي

تُحفَظ النتائج في /apps/pmkid/cracked.csv مع وسم PMKID لتمييزها عن كسر المصافحات.


الكسر دون اتصال باستخدام hashcat

اسحب ملف PCAP من بطاقة SD وحوّله:

hcxpcapngtool -o hash.hc22000 /apps/pmkid/AA-BB-CC-DD-EE-FF.cap
hashcat -m 22000 hash.hc22000 wordlist.txt

المفاتيح

المفتاح الإجراء
c بدء الكسر (بعد التقاط PMKID)
q إيقاف الالتقاط أو الكسر

الملفات

المسار المحتوى
/apps/pmkid/<BSSID>.cap ملف 802.11 PCAP خام (libpcap، النوع 105)
/apps/pmkid/cracked.csv كلمات مرور PMKID المكسورة
/apps/pmkid/wordlist.txt قائمة كلمات مخصّصة (كلمة في كل سطر، 8 أحرف فأكثر)

مقارنة بـ WPA Sniff (ws)

  pm (PMKID) ws (المصافحة)
الأُطُر المطلوبة M1 فقط M1 + M2
الحاجة لعميل لا نعم (أو إلغاء مصادقة للإجبار)
إرسال إلغاء مصادقة لا نعم، كل 4 ثوانٍ
دعم الراوتر نحو 80% من الراوترات الحديثة شامل
التخفّي أعلى أدنى