Renting GPUs to Crack Password Hashes

خالد المريخي
15/9/2022


مقدمة

عند الحاجة للقيام بتخمين كلمات المرور لفك قيمة الـ Hash باستخدام أدوات مثل Hashcat، في العادة تقوم باستخدام أحد أجهزتك الشخصية أو أحد الخوادم المتوفرة. ولكن، لكي تقوم بتخمين كلمات المرور بسرعة عالية، يجب أن تستخدم كروت شاشة قوية (GPUs)، وأسعار كروت الشاشة هذه تكون غالية الثمن وقد لايمكن للكل شراؤها. أحد الحلول هو القيام باستئجار هذا الكروت فترة مؤقتة وقت احتياجها بدون الحاجة الى دفع مبالغ طائلة. في هذه المدونة، سنتطرق الى تجربة استئجار كروت شاشة قوية (مثل GeForce RTX3090) للقيام بتخمين قيمة الـ Hash باستخدام أداة Hashcat على منهجية الـ Distributed Password Cracking.



ماهي منهجية الـ Distributed Password Cracking ؟

منهجية الـ Distributed Password Cracking تعني أنه يمكنك القيام بتوصيل أكثر من جهاز لبعضها للتشغيل أداة Hashcat للقيام بتخمين قيم الـ Hash. ينتج عن هذا سرعة عالية في القيام بتخمين كلمات المرور، ويمكنك فك قيمة أي Hash مكون من 8 خانات في ثواني باستخدام هذه المنهجية. كلما زاد عدد الأجهزة المستخدمة للقيام بفك قيمة الـ Hash، كلما كانت السرعة أعلى.



أدوات تستخدم منهجية الـ Distributed Password Cracking

يوجد العديد من الأدوات التي تدعم هذه المنهجية، أغلب هذه الأدوات تستخدم أداة Hashcat كأساس لها. أحد هذا الأدوات هي أداة Hashtopolis، والتي سنقوم باستخدامها في هذا الشرح مع القيام باستئجار أجهزة بكروت شاشة قوية.



تنويه: يمكنك اتباع هذه الخطوات أيضاً اذا كنت تملك أجهزة بكروت شاشة قوية، وذلك بتخطي خطوة استئجار كروت الشاشة.

أداة Hashtopolis

التالي هو شرح لأداة Hashtopolis من موقع الصفحة على Github:

Hashtopolis is a multi-platform client-server tool for distributing hashcat tasks to multiple computers. The main goals for Hashtopolis's development are portability, robustness, multi-user support, and multiple groups management. The application has two parts:

  • Agent: Python client, easily customizable to suit any need.
  • Server: several PHP/CSS files operating on two endpoints: an Admin GUI and an Agent Connection Point
لتثبيت Hashtopolis server، يمكنك اتباع الخطوات الموجودة في هذه الصفحة.



بعد الانتهاء من التثبيت، يمكنك الوصول الى صفحة الـ server على منفذ 80:
كما ذكرنا أعلاه، أداة Hashtopolis لها جزئين: server و agent. الـ server يقوم بالتحكم بالـ agents ومهامهم. سنقوم بتنزيل الـ agents على الأجهزة التي تحتوي على كروت شاشة قوية لتقوم بالاتصال بالـ server.


بالنسبة للـ Server، قمنا بتنزيله على أحد الأجهزة على اتسضافة DigitalOcean. أما بالنسبة للـ agents، فيحتاج تنزيلها على أجهزة تملك كروت شاشة قوية لاستخدام Hashcat بقوته الكاملة.


أين يمكننا استئجار أجهزة بكروت شاشة قوية؟

يوجد العديد من الاستضافات التي توفر أجهزة بمعالجات كروت شاشة قوية، مثل Amazon و Vast.ai. سنقوم باستخدام Vast.ai كونه أسهل وأقل تكلفة.



كما في الأسفل من موقع Vast.ai، يمكنك القيام باستئجار أجهزة متخلفة القوة، بناء على المواصفات التي تحتاجها (كلما زادت قوة
المواصفات، كلما زادت قيمة إيجار الجهاز):
استئجار الأجهزة وتثبيت الـ Agents

في البداية، سنقوم باستئجار بعض الأجهزة التي تملك كروت شاشة قوية لتنزيل الـ agents عليها. ولكن قبل هذه الخطوة، لنقوم بأتمتة هذه الخطوة بما أننا سنقوم بتنزيل الـ agent على أكثر من جهاز.

الـ agent سيتم تثبيته على الأجهزة التي تمتلك كروت شاشة قوية، ثم سنقوم بتوفير الـ URL للـ API المذكور في أعلى الصفحة، وسنقوم بإنشاء الـ voucher. بشكل افتراضي، كل agent يتطلب vouncer، ولكن هذا المتطلب غير مثالي لحالتنا:
لكن، يوجد خيار بتغيير هذه الخاصية للقيام باستخدام نفس الـ voucher على أكثر من agent. للقيام بذلك، اضغط على Config ثم Server. بعد ذلك، قم باختيار خاصية استخدام الـ voucher على أكثر من مرة:
الأن، قم بتسجيل الدخول في Vast.ai والتأكد من توفر رصيد كافي للقيام باستئجار أجهزة.

اضغط على "EDIT IMAGE & CONFIG...":
قم باختيار نوع الـ Docker Image من الخيارات، او استخدم اي Docker تدعم Docker pull (قمنا باختيار nvidia/opencl):
اختر النسخة:
بعد ذلك، قم بكتابة كود الأتمتة (auto-start script) حتى يمكن للـ agent الاتصال بالـ server بشكل تلقائي:
الأجهزة بالاسفل هي التي قمنا باستئجارها:
الآن يمكننا الدخول على الـ server (مستضاف على DigitalOcean)، ثم نجد الـ agents (متسضافة على Vast.ai) قامت بالاتصال:
لنفترض أننا استحوذنا على هذا الـ NTLM hash (BBF915C52E88C1B8D004FA04607C0E46)، وسياسة متطلبات كلمة المرور تطلب 8 خانات على الأقل. الهدف أن نقوم بـ Brute-force وتجربة جميع احتماليات كلمات المرور التي بطول 8 خانات (متضمنا أحرف صغيرة، أحرف كبيرة، أرقام، ورموز).



لنقم بإنشاء قائمة Hashlist، والتي تتضمن نوع الـ Hash والـ Hash المراد فكه. قم باختيار Lists ثم Hashlist:
اختر اسم للـ Hashlist، ثم اختر نوع الـ Hashtype وأضف الـ Hash المراد فكه، أو يمكنك القيام برفع ملف يحتوي على أكثر من Hash:
بعد ذلك، اذهب الى Tasks ثم اختر New Task:
هنا، نقوم باختيار اسم الـ Task والـ Hashlist التي قمنا بانشائها بالإضافة الى أمر Hashcat. نريد القيم بعملية Brute-force (تجربة كل الاحتماليات)، ولكن يمكنك اختيار خيارات أخرى مثل Wordlists، rules، أو أي خيار آخر. يمكنك أيضا رفع الملف أولا في خيار رفع الملفات. ,يمكنك اختيار Priority اذا كان هناك أكثر من Task.
قم باختيار الـ Task التي قمت بانشائها:
أنزل للأسفل حتى تصل الى Assigned agents:
الآن الـ Task انتهت، وقيمة الـ Hash تم فكها بنجاح. كما موضح بالأسفل، احتاجت العملية حدود 4 دقائق فقط لتخمين كلمة المرور الصحيحة بعد محاولة أكثر من 360 مليار كلمة مرور (360,000,000,000+). الآن، قمنا بمعرفة الرقم السري للـ NTLM hash

BBF915C52E88C1B8D004FA04607C0E46 وهو Kh@lid88.
قمنا أيضاً بتجربة أخرى بقيمة Hash متخلفة:
أيضا التجربة الثانية كانت ناجحة، وقمنا بتخمين كلمة المرور الصحيحة أثناء تقريباً 4 دقائق فقط أيضا. الفرق بين المحاولة الأولى والثانية أن القيمة الثانية كانت تمتلك أجهزة أكثر للقيام بفك قيمة الـ Hash. الأولى استطاعت الحصول على كلمة المرور الصحيحة بعد محاولة 49% من الاحتماليات، قيمة الـHash الثانية وجدت بعد محاولة 70% من الاحتماليات. التكلفة المالية كانت 5 دولارات فقط لكل المحاولتين.

خاتمة
غطت هذه المدونة كيفية استخدام أداة Hashtopolis مع استئجار أجهزة بكروت شاشة قوية من Vast.ai والقيام بتخمين قيمة الـ Hash لكلمات المرور من طول خانة واحدة الى طول 8 خانات بتكلفة بضع دولارات فقط. استخدام منهجية Distributed Password Cracking أدت الى تسريع عملية التخمين لكلمة المرور ونجحت في اكتشاف كلمة المرور في خلال 4 دقائق فقط لكلمة مرور من طول 8 خانات

لمشاركة هذه المدونة
تابعنا
طور مهاراتك من خلال متابعة آخر منشورات فريقنا
مدونات آخرى