مقال: هجوم Pass the Hash وكيفية تنفيذه للحصول على CMD Shell
جميعنا قد سمعنا عن مصطلح Cracking Password وهي محاولة كسر الهاش وتحويله إلى PlainText، وبالطبع يوجد أكثر من طريقة لفعل ذلك وأكثر من منهجية وأداة للتعامل مع محاولة كسر الهاش. ولكن ما سأتحدث عنه اليوم هو أمر مختلف، فسأتحدث عن هجوم يطلق عليه Pass The Hash وكاختصار PTH وبالرغم من أن الهجوم معروف منذ عام 1997 تقريبًا إلا أنه حتى الآن ما زال ممكنًا تنفيذه.
ما هو هجوم الـPass the Hash؟
فكرة هذا الهجوم هي أنه تمكنك كمهاجم من أن تقوم بعملية تسجيل الدخول لهدف بعيد باستخدام اسم مستخدم والهاش الخاص بهذا المستخدم وفي هذه الحالة الهاش سيكون من نوع NTLM/LM وهو الهاش الذي تستخدمه إصدارات ويندوز.
لماذا الهجوم ممكنًا في الويندوز؟
هذا لأن خوارزمية التشفير الخاصة بالويندوز سواء كانت LM أو NTLM لا تستخدم تقنية الـSALT وبالتالي فالهاشات الخاصة بها تكون ثابتة أثناء الـSessions الخاصة بعمليات تسجيل الدخول.
كجزء إضافي دعنا نتحدث عن تاريخ خوارزمية الويندوز:
يقوم نظام التشغيل الخاص بالويندوز بتسجيل الهاشات الخاصة بالمستخدمين داخل ملف يسمى SAM وهي اختصار لـSecurity Accounts Manager. ولحماية هذا الملف يقوم نظام التشغيل باستخدام ملف أخر لتشفير ملف الـSAM بشكل جزئي ويسمى هذا الملف بـSYS. يمكنك أن تجد كلا الملفين في المسار التالي داخل نظام التشغيل ويندوز:
c://windows/system32/config
كحماية أخيرة لهذين الملفين يقوم الويندوز كيرنل (نواة نظام التشغيل ويندوز) بقفل هذين الملفين لتمنع أي وصول لهم أو حتى محاولة نسخهم أو التعامل معهم طالما نظام التشغيل يعمل. بالطبع يمكن تخطي هذه الحماية بعدة طرق سأذكر بعضها لاحقًا في المقال.
دعنا الآن نعود للخوارزمية التي كانت تستخدمها أنظمة وندوز بداية من Windows NT-Based حتى Windows 2003 وبالطبع يشمل ذلك ويندوز XP. تلك الخوارزمية كان يطلق عليها LM وهي اختصار لـLan Manager وكانت مبنية على خوارزمية التشفير DES وكان لهذه الخوارزمية أكثر من نقطة ضعف وهي كالتالي:
فلنفترض أن عندي باسورد بهذا الشكل: iSecur1@y123456Test
الباسورد السابق مكون من 19 خانة سواء كان ذلك رموز أو أرقام أو حروف كبيرة أو حروف صغيرة. إذن ما الذي تقوم به خوارزمية LM لإضعاف هذا الباسورد:
- خوارزمية LM لا تقبل أي باسورد مكون من عدد أكبر من 14، وهذا معناه أنها ستقوم بحذف كل ما يقع بعد الخانة رقم 14 في الباسورد وهذا يعني أنه بعد تنفيذ هذه الخطوة سيتم تغيير الباسورد الخاص بي ليصبح بهذا الشكل:
iSecur1@y12345
يوجد سؤال مهم هنا، ماذا لو كان الباسورد الخاص بي أقل من 14 خانة، في هذه الحالة تقوم الخوارزمية بإكمال عدد الخانات من خلال ما يسمى بالـNull Byte.
- كخطوة ثانية تقوم بها هذه الخوارزمية فهي تقوم بتحويل كل الحروف الموجودة في الباسورد الخاص بك إلى حروف كبيرة ومعنى ذلك أن الخوارزمية لا تدعم الـCase Sensitive وبعد تنفيذ هذه الخطوة يتحول الباسورد الخاص بنا ليصبح بهذا الشكل:
ISECUR1@Y12345
- كخطوة أخيرة تقوم بهذا هذه الخوارزمية فهي تقوم بقسمة الباسورد إلى قسمين ليكون كل قسم مكون من 7 خانات وبعدها تتم عملية التشفير، وهذا يعني أنك ستتعامل مع الهاش من خلال أي برنامج لكسر الهاشات بسهولة تامة طالما أنت تعلم أن الباسورد مكون من 7 خانات بالإضافة إلى أن الهاش مكون من حروف كبيرة فقط.
بهذا نرى أن هذه الخوارزمية ضعيفة جدًا وتقوم بإضعاف أي باسورد مهما كنت تستخدم فيه رموز أو أرقام أو حروف كبيرة أو صغيرة أو حتى كان عدد خاناته 20.
بالطبع بداية من ويندوز Vista فقد تم تعطيل خوارزمية LM وتم استخدام خوارزمية NTLM بدلاً من ذلك وهذه الخوارزمية ليس بها أيًا من نقاط الضعف التي كانت موجودة في خوارزمية LM إلا أنها ما زالت لا تستخدم SALT لذلك يكون هجوم PTH ممكنًا. الجدير بالذكر هنا أن خوارزمية NTLM مبنية على خوارزمية التشفير MD4.
لن أتطرق لكيفية الحصول على الهاشات من داخل ملف الـSAM بشكل موسع ولكني سأذكر بعض الطرق، كما قلت سابقًا في المقال فأن نواة الويندوز تقوم بقفل الملفين سواء ملف SAM أو ملف SYS وذلك طالما الويندوز يعمل، يمكن تخطي ذلك والحصول على نسخة من الملفين من خلال عدة طرق منها:
- الدخول بنسخة Live خاصة بأي توزيعة Linux وبعدها عمل Mount للـC مثلاً إن كان هذا هو الـPartition الذي موجود فيه نظام التشغيل ويندوز وبعدها قم بأخذ نسخة من ملف SAM وSYS بكل سهولة.
- أن تقوم باستخدام إحدى الأدوات التي تستخدم مبدأ In Memory Attacks في هجماتها، فهذه الأدوات تقوم بحقن أكواد داخل الـLocal Security Authority Subsystem وذلك لتقوم باستخراج الهاشات بدون أي عناء وبدون حتى أن تحتاج إلى الدخول من اللينكس ولكن المشكلة الوحيدة هنا أنك لتفعل ذلك يجب أن تكون لديك صلاحيات أدمن على النظام.
دعنا نرى الآن هاش قمت باستخراجه من ويندوز 7 من خلال إحدى هجمات الـIn Memory وهو كما موضح في الصورة التالية:
المستخدم السابق اسمه Win7 وهذا الهاش الخاص به، وكما قلت فالـLM غير مفعلة بشكل افتراضي في ويندوز 7 فنجد أن القسم الأول مكتوب No Password، أما القسم الثاني فهو الهاش الخاص بخوارزمية NTLM.
لكي يعمل هجوم PTH يجب أن أقوم بحذف جزئية الـNo Password وسأستبدلها بهاش LM فارغ وسيكون بهذا الشكل:
aad3b435b51404eeaad3b435b51404ee
الهاش السابق إن قمنا بكسره سنجد أنه فارغ ولكني وضعته فقط لكي يعمل الهجوم.
الخطوة التالية هي أن نقوم بعمل Variable جديد داخل الكالي وإضافة الهاش الخاص بالمستخدم Win7 لكي يتم تمريره بعد ذلك للنظام المستهدف.
الهاش السابق هو الذي سأقوم بوضعه في متغير جديد، بالطبع الجزء الأول من الهاش هو الهاش الفارغ والجزء الثاني هو الذي قمت باستخراجه من داخل الويندوز.
دعنا الآن نرى كيف سنقوم بوضعه داخل متغير جديد داخل الكالي، وليكن المتغير الجديد باسم SMBHASH:
بهذه الطريقة سنقوم متغير جديد باسم SMBHASH وتم إضافته للمتغيرات داخل توزيعة كالي، وللتأكد من ذلك يمكنك كتابة أمر export داخل الترمنال وستجد أن المتغير الجديد تم إضافته.
كخطوة أخيرة لنجاح الهجوم سأقوم باستخدام أداة موجودة داخل نظام الكالي تسمى pth-winexe وذلك لمحاولة تمرير الهاش والحصول على CMD Shell وسيكون الأمر بهذه الطريقة:
كما نرى في الصورة السابقة، فقد نجحت في الحصول على CMD Shell ببساطة جدًا من خلال هجوم PTH، كل ما قمت بعمله هو أنني استهدفت مستخدم محدد وهو في هذه الحالة Win7 وبعدها قمت بوضع عنوان الآي بي الخاص بالهدف وهو في هذه الحالة 192.168.56.101.
بهذا نكون انتهينا من مقال اليوم، أتمنى أن تكونوا قد استفدتم وإن شاء الله نلتقي في مقالات أخرى شيقة.
baraka alaho fiik akahi omar
إن شاء الله تكون قد استفدت من المقال يا عزيزي 🙂
درس رائع جدا.. مبدع كالعادة وننتظر الجديد الشيق والمفيد..
شرح جميل اخي بارك الله فيك لدي سؤال
كيف تمكنت من الحصول على نسخة من ملفات SAM وSYS
يعني هل انت كنت متخرق النظام سابقا وقمت بتنفيذ هذا الهجوم ؟
دروس موقعكم احترافية لا أجدها حتى في المواقع الاجنبية
لو سمحت تعدل أول سطر في المقال، لأنه مافيه شي اسمه كسر الهاش وتحويله الى PLAINTEXT ، لأن كل خوارزميات الهاش تمتاز بخاصية الاتجاه الواحد one-way function.