وظيفة التجزئة هي مصطلح عام لنوع من الوظائف. مدخلات هذا النوع من الوظائف هي بيانات ثنائية تعسفية ، والمخرجات هي بيانات ثنائية ذات طول ثابت. يتميز هذا النوع من الوظائف بالخصائص التالية:
أحادية الاتجاه: من السهل والسريع الحصول على المخرجات من حساب المدخلات ، ولكن من غير الممكن رياضياً استنتاج المدخلات من المخرجات
قيود التصادم: من الصعب للغاية العثور على مدخلين مختلفين لهما نفس المخرجات
يمكن تسمية الوظائف التي تلبي هذه الخصائص بوظيفة التجزئة. يتم استخدام بيانات معينة كمدخل لوظيفة التجزئة ، ويتم حساب الإخراج ، ومن المعتاد تسمية هذا الإخراج بقيمة التجزئة للبيانات. تتمثل إحدى الوظائف الرئيسية لوظيفة التجزئة
في تخزين كلمة المرور بشكل آمن ، فهي لا تحفظ كلمة المرور مباشرة (أي أنها لا تخزن كلمة مرور النص العادي)، ولكنها تحفظ قيمة التجزئة لكلمة المرور أثناء التحقق ، تحتاج فقط إلى حساب كلمة المرور المدخلة مرة أخرى ، ويمكن مقارنة قيمة التجزئة لكلمة المرور المحفوظة بقيمة التجزئة لمعرفة ما إذا كانت كلمة المرور صحيحة. نظرًا للطبيعة أحادية الاتجاه وقيود الاصطدام لوظيفة التجزئة ، حتى لو حصل المهاجم على قيمة التجزئة لكلمة المرور ، فمن الصعب معرفة كلمة المرور نفسها.
حصل المهاجم على قيمة التجزئة لكلمة المرور ، هل حقا لا توجد طريقة لمعرفة كلمة المرور نفسها ؟ بالطبع لا. على الرغم من أنه من غير الممكن رياضيًا حساب كلمة المرور مباشرة من قيمة التجزئة لكلمة المرور ، إلا أننا نعلم أن وظيفة التجزئة بسيطة وسريعة لحساب المخرجات من الإدخال. في أسوأ الأحوال ، يمكنك تجربتها. كلمات المرور التي قد يضعها البشر هي فقط تلك ، جربوها واحدة تلو الأخرى ، ولا يزال بإمكانك تجربتها إذا كنت محظوظًا. تسمى عملية المحاولة المستمرة للحصول على المدخلات المقابلة لقيمة التجزئة بالتفجير.
بناءً على هذه الفكرة ، ظهرت hashcat ، ويقال إن hashcat ولدت لإثبات أن تفجير hash أمر بسيط للغاية. تدعي hashcat أنها أسرع أداة تفجير تجزئة في العالم ، بل إنها تدعم وحدة معالجة الرسومات و FGPA ، إذا كان لديك أي منها.
hashcat ليس سريعًا فحسب ، بل يدعم أيضًا أكثر من مائتي وظيفة تجزئة بشكل احترافي ، باستخدام الأمر:
hashcat --help
يمكنك رؤية قائمة بجميع وظائف التجزئة المدعومة من قبل hashcat ، هناك الكثير منها ولن أقوم بنشرها هنا.
يتم تثبيت hashcat افتراضيًا في Kali ويمكن استخدامه مباشرة. ولكن تم تثبيت Kali الخاص بي في VirtualBox ، وأشعر دائمًا أن الآلة الافتراضية أبطأ ، لذلك أريد استخدام hashcat في المضيف الفعلي. انتقل أولاً إلى الموقع الرسمي لـ hashchat لتنزيل hashcat. حتى الآن ، أحدث إصدار هو الإصدار 3.5.0 ، الذي تم إصداره في 2017.04.05. من تاريخ التحديث ، يمكن ملاحظة أن hashchat مليء بالحيوية. لتجنب مشكلة الترجمة ، يمكنك تنزيل الحزمة الثنائية مباشرة ، وهي 2.7 ميجا فقط ، وهي صغيرة جدًا مقارنة بالألعاب التي تكلف عشرات جيجابايت.
بعد اكتمال التنزيل ، قم بفك ضغط hashcat وسترى:
هي ملفات قابلة للتنفيذ في linux و windows تحت 32 بت و 64 بت ، ما عليك سوى اختيار أحدها وفقًا لحالة جهاز الكمبيوتر الخاص بك. اخترت hashcat64.bin ، من أجل الجمال ، أضف سطرًا في ملف ~/.bashrc:
alias hashcat='مسار hashcat64.bin '
بعد الحفظ ، أعد فتح المحطة الافتراضية لجعل ملف ~/.bashrc ساري المفعول ، وبهذه الطريقة ، أينما كنت ، يمكنك إدخال أمر hashcat مباشرة دون تبديل الدليل أو إدخال "64.bin" القبيح ، كما هو موضح في الصورة أدناه.
حسنًا ، يمكنك الآن البدء في استخدام hashcat لتفجير التجزئة المختلفة.
يجب أن يكون md5 أحد أشهر وظائف التجزئة المستخدمة على نطاق واسع. أولاً ، استخدم بايثون لإنشاء العديد من قيم md5 للتفجير. الكود هو كما يلي:
import hashlib كلمات المرور = ['123123', 'bond007', 'xxxxxx', '*H@&(NT*@BR#^'] لـ كلمة المرور في كلمات المرور: md5 = hashlib.md5() md5.update(كلمة المرور) print md5.hexdigest()
يقوم الكود أعلاه بحساب قيم التجزئة لأربع سلاسل على التوالي ، ونتيجة الإخراج هي:
4297f44b13955235245b2497399d7a93 cbdb7e2b1ed566ceb796af2df07205a3 dad3a37aa9d50688b5157698acfd7aee d77db958c179bbffae04b2b908b75c26
احفظ نتيجة الإخراج في الملف md5.hash ، مع قيمة hahs واحدة لكل سطر. ثم استخدم hashcat لتفجير قيم التجزئة هذه. الأمر هو كما يلي:
hashcat -w 3 -a 0 -m 0 --remove -o md5.out md5.hash wordlist.dic
المعلمة-w تستخدم لتحديد وضع العمل ، وهناك أربعة أنواع ، كما هو موضح في الجدول أدناه:
| N | الأداء | وقت التشغيل | استهلاك الطاقة | تأثير سطح المكتب |
|---|---|---|---|---|
| 1 | Low | 2 ms | Low | Minimal |
| 2 | Default | 12 ms | Economic | Noticeable |
| 3 | High | 96 ms | High | Unresponsive |
| 4 | Nightmare | 480 ms | Insane | Headless |
يتم استخدام المعلمة -a لتحديد وضع الهجوم ، ومعنى 0 هو مباشر ومستمر ، أي أنه يتم تفجيره باستخدام قاموس كلمة المرور ، وهناك خمس قيم لـ -a ، كما هو موضح في الجدول أدناه:
| N | وضع |
|---|---|
| 0 | مستقيم |
| 1 | مجموعة |
| 3 | Brute-force |
| 6 | Hybrid Wordlist + Mask |
| 7 | Hybrid Mask + Wordlist |
-m يستخدم لتحديد التجزئة المراد تفجيرها وظيفة التجزئة للقيمة ، 0 تعني أن وظيفة التجزئة هي md5 ، والقيم الأخرى موضحة في الجدول التالي:
| N | Name | Category |
|---|---|---|
| 0 | MD5 | Raw Hash |
| 300 | MySQL4.1/MySQL5 | خادم قاعدة البيانات |
| 1000 | NTLM | أنظمة التشغيل |
| 1800 | sha512crypt $6$, SHA512 (Unix) | أنظمة التشغيل |
| 2611 | vBulletin < v3.8.5 | Forums, CMS, E-Commerce, Frameworks |
هذا الجدول طويل جدًا ، سأعرض فقط بعض وظائف التجزئة المشاركة في هذه المقالة هنا ، ويمكنك رؤيتها جميعًا باستخدام المعلمة – المساعدة.
المعلمة – إزالة تعني أنه إذا تم تفجير قيمة تجزئة معينة بنجاح ، تتم إزالة القيمة من md5.hash.
المعلمة -o متبوعة باسم ملف يشير إلى المكان الذي يتم فيه حفظ نتائج التفجير. المعلمتان الأخيرتان من
هما md5. التجزئة وقائمة الكلمات. dic هما قيمة التجزئة وقاموس كلمة المرور المراد تفجيرهما على التوالي. قيمة التجزئة وقاموس كلمة المرور كلاهما واحد في كل سطر. تم حساب المحتوى الموجود في md5.hash بواسطة Python. إذا لم يكن لديك قاموس كلمة مرور مناسب في متناول اليد ، فيمكنك استخدام الأمر:
wget -O wordlist.dic https://samsclass.info/123/proj10/500_passwords.txt
下载一个。现在完事具备,按下回车,结果华丽地报错:(
clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHR
ربما يكون هناك بيئة تشغيل مفقودة ، ثم قم بتثبيتها. لقد قمت بتثبيت هذه الأشياء في المجموع:
sudo apt-get install gcc make p7zip-full git lsb-core wget http://registrationcenter-download.intel.com/akdlm/irc_nas/9019/opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz tar -xvf opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz قرص مضغوط opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25 sudo ./install.sh
إذا كانت سرعة الشبكة جيدة ، فستكون آمنة في وقت قصير. يبلغ الأمر الأول عن خطأ:
/sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 is not a symbolic link /sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 is not a symbolic link
ولكن يبدو أنه لا يؤثر على أي شيء ، فقط تجاهله. بعد تثبيتها ، اضغط على Enter مرة أخرى لتشغيل الأمر الذي أبلغ عن الخطأ في الأصل ، ووجدت أنه لم يتم الإبلاغ عن خطأ آخر ، وتم الانتهاء من التنفيذ في لمح البصر. بعد تنفيذ الأمر ، تحقق من محتويات الملفين md5.hash و md5.out ، ووجدت أنه لم يتبق سوى تجزئة واحدة في md5.hash ، وقد تم نقل التجزئة الثلاثة التي تم تفجيرها بنجاح إلى الملف md5.out هناك ثلاث قيم تجزئة وقيمتها الأصلية ، كما هو موضح في الشكل أدناه:
يتم حفظ قيمة التجزئة لكلمة مرور تسجيل الدخول إلى Windows في ملف SAM ، SAM هو اختصار "مدير حساب الأمان". عادة ، يقع في
C:\Windows\system32\config\SAM
ملف SAM محمي بواسطة Windows ولا يمكن قراءته مباشرة ويتطلب مساعدة أدوات مثل SAMInside. ابحث عن جهاز افتراضي لنظام التشغيل Windows 7 ، وقم بإنشاء مستخدم مسؤول جديد يسمى hashcat ، وقم بتعيين كلمة مرور ، ثم قم بتنزيل وفك ضغط SAMInside في نظام التشغيل Windows 7 وتشغيله بامتيازات المسؤول ، ثم انقر فوق File-> Import Local Users vis Scheduler ، كما هو موضح في الشكل أدناه: قد يكون SAMInside "غير مستجيب" بعد
، ولكن لا يهم ، انتظر بصبر لبضع ثوانٍ ، ويرقى SAMInside إلى مستوى التوقعات ويقرأ التجزئة التي نريدها ، كما هو موضح في الشكل أدناه:
حدد المستخدم "hashcat" الذي نريد تفجير كلمة المرور الخاصة به ، واضغط على Ctrl+5 لنسخ NT-hash ، ثم عد إلى Ubuntu حيث تم تثبيت hashcat ، استخدم الأمر التالي لحفظ قيمة التجزئة المنسوخة في الملف win7.hash:
echo 356ceae0c89fb6b6bhashcat -w 3 -a 0 -m 1000 --remove -o win7.out win7.hash wordlist.dicتم الانتهاء من التنفيذ بعد لحظة ، وتحقق من ملف win7.out ووجد أن التفجير كان ناجحًا ، وكلمة مرور تسجيل الدخول للمستخدم hashcat هي rush2112:
werner@Yasser:~/hashcat$ cat win7.out 356ceae0c89fb65ed6d6aa7a445c4ce5:rush2112كيفية الحصول على ملف SAM ، يرجى الرجوع إلى "كيفية تصدير سلسلة تجزئة Windows 1". فيما يلي سجل لعملية قراءة ملف SAM في الجهاز الظاهري Windows 7.
إذا كان جهازًا فعليًا ، فاستخدم Win PE لبدء تشغيل الجهاز واقرأ ملف SAM الموجود على القرص. جهازي هو جهاز افتراضي ، يمكنك قراءة الملفات الموجودة على القرص الافتراضي عن طريق تثبيت ملف القرص الافتراضي في نظام الملفات. الجهاز الظاهري الذي أستخدمه هو VirtualBox ، ويمكن القيام بذلك باستخدام الأمر vdfuse. إذا لم يكن لديك vdfuse ، فأنت بحاجة إلى تثبيت virtualbox-fuse أولاً:
sudo apt-get install virtualbox-fuseيمكنك أيضًا تنزيل حزمة تثبيت virtualbox-fuse بنفسك.
بعد اكتمال التثبيت ، سيكون لديك أمر vdfuse ، ويمكنك بدء تعيين القرص الافتراضي وتركيبه:
mkdir -p ~/vmdisk sudo vdfuse -t vmdk -f Win7Pro32.vmdk ~/vmdisk/بعد تنفيذ هذه الخطوة ، انظر إلى دليل ~/vmdisk ، الذي يحتوي على ثلاثة ملفات: EntireDisk و Partition1 و Partition2 ، قم بإنشاء دليل جديد:
mkdir -p ~/vmdisk_en mkdir -p ~/vmdisk_1 mkdir -p ~/vmdisk_2استخدم الأمر mount لتركيب الملفات الثلاثة EntireDisk و Partition1 و Partition2 على التوالي:
sudo mount ~/vmdisk/EntireDisk ~/vmdisk_en sudo mount ~/vmdisk/Partition1 ~/vmdisk_1 sudo mount ~/vmdisk/Partition2 ~/vmdisk_2وجدت أن تركيب القرص بالكامل فشل ، والمحتوى الموجود في القسم 1 ليس ما أردته ، والملف الموجود في الجهاز الظاهري Windows 7 في القسم 2 هو بالضبط ما أردته. انسخ ملف SAM الهدف الخاص بنا من vmdisk_fs:
cp ~/vmdisk_2/Windows/System32/config/SAM ./بالمناسبة ، انسخ ملف النظام أيضًا:
cp ~/vmdisk_2/Windows/System32/config/SYSTEM ./عرض محتوى ملف SAM ، كما هو موضح في الشكل أدناه ، ليس ملفًا نصيًا عاديًا ، بل هو بالفعل نمط Windows ،
حسنًا ، على الرغم من فتح ملف SAM بنجاح ، إلا أننا ما زلنا لا نحصل على التجزئة ، ماذا يجب أن نفعل بعد ذلك ؟ لا يمكنك تحليل محتويات ملف SAM إلا بمساعدة الأدوات. أدخل كل من ملف sam وملف النظام إلى Kali وقم بتشغيل الأمر:
samdump2 -o sam.hash SYSTEM samثم تحقق من sam.hash ، ويمكنك أيضًا رؤية قيمة التجزئة لكلمة مرور تسجيل الدخول لكل مستخدم. كل سطر في ملف sam.hash هو مستخدم ، وتنسيق كل سطر هو:
اسم المستخدم: RID: LM-hash value: NTLM-hash valueلاحظ أن هذا التنسيق هو تنسيق إخراج أمر samdump2 ، وليس "تنسيق كلمة مرور التجزئة تحت Windows".
3. تفجير تجزئة كلمة مرور تسجيل الدخول إلى linux
أولاً ، يجب أن يكون لديك جهاز كمبيوتر يعمل بنظام linux ، وهذا أمر سهل القول ، والجهاز الظاهري يكفي. بعد ذلك ، قم بتشغيل الأمر التالي لإضافة مستخدم جديد وتعيين كلمة مرور لأغراض التفجير:
sudo adduser justforfun
يتم تخزين قيمة التجزئة لكلمة مرور تسجيل الدخول للمستخدم في linux في الملف /etc/shadow (ملاحظة: ليس /etc/passwd). استخدم الأمر التالي لعرض قيمة التجزئة لكلمة مرور تسجيل الدخول للمستخدم الجديد:
test@test-VirtualBox:~$ sudo tail -n 1 /etc/shadow justforfun:$6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0:17373:0:99999:7:::
يستخدم الأمر الذيل لقراءة الأسطر القليلة الأخيرة من الملف. الافتراضي هو 10 أسطر. استخدم المعلمة -n لتحديد عدد الأسطر. المستخدم الذي أنشأناه للتو موجود بشكل طبيعي في السطر الأخير ، لذلك استخدم tail -n 1 لقراءته. نتيجة القراءة هي بيانات مقسمة بـ ":". الجزء الأول هو اسم المستخدم "justforfun"، والجزء الثاني هو قيمة التجزئة لكلمة المرور. لا داعي للقلق بشأن الأجزاء الأخرى في هذه المقالة. نركز على الجزء الثاني.
يشير "$6$" الذي يبدأ بـإلى أن نوع وظيفة التجزئة المستخدمة هو SHA-512. بالإضافة إلى "$6$"، في linux ، يشير "$1$" إلى MD5 ، و"$2a$" إلى Blowfish ، و"$2y$" يشير إلى Blowfish (المعالجة الصحيحة للأحرف 8 بت)، "$5$" يشير إلى SHA-256 ، انظر ويكيبيديا: passwd للحصول على التفاصيل. بالإضافة إلى ذلك ، يوضح الملف /etc/login.defs أيضًا خوارزمية التجزئة.
الجزء "0fokwg59" الذي يبدأ من "$6$" حتى قبل "$" التالي هو ملح (SALT). ما هو الملح ؟ يعرف Baidu أن إجابة CNB2009 على السؤال " ما هي قيمة ملح md5 " بسيطة وسهلة الفهم:
هي ببساطة طريقة لجعل نفس كلمة المرور لها قيم تجزئة مختلفة ، وهذا يعني التملح. MD5 نفسه لا رجعة فيه ، ولكن هناك حاليًا العديد من قواعد البيانات على الإنترنت التي تدعم الاستعلام المضاد. إذا تم تسريب قاعدة بيانات كلمة مرور المستخدم عن طريق الخطأ ، فيمكن للمتسلل الحصول على كلمة مرور المستخدم من خلال الاستعلام المضاد ، أو الحصول على رموز التجزئة التي تظهر بشكل متكرر في قاعدة البيانات (أي يستخدمها الكثير من الأشخاص) لإجراء اختراق عنيف (لأنها عادةً ما تكون كلمة مرور ضعيفة). قيمة الملح هي قيمة عشوائية إضافية تمت إضافتها أثناء عملية تجزئة كلمة المرور. على سبيل المثال ، معرفي هو 123456 وكلمة المرور هي 123456. عندما يتم تخزينه في قاعدة البيانات ، يمكنني إجراء تجزئة على السلسلة "123456/123456/ بهذه الطريقة ، عندما تكون هناك كلمة مرور غبية أخرى هي 123456 ، لا يزال من الممكن إنشاء قيم تجزئة مختلفة ويمكن التحقق منها بنجاح. في هذا الوقت ، يتم استخدام معرفي كقيمة ملح لإجراء تجزئة معقدة لكلمة المرور. إذن. . دور قيمة الملح هو تقليل الخسائر الناجمة عن تسرب قاعدة البيانات. إذا كان RP الخاص بك جيدًا جدًا وخمنت بشكل صحيح أن كلمة المرور الخاصة بي هي 123456 ، فلا أستطيع إيقافك
هذه الإجابة مخصصة لـ md5 ، وينطبق الشيء نفسه على وظائف التجزئة الأخرى. الجزء بعد الملح هو قيمة التجزئة. الآن انسخ الجزء الثاني بالكامل إلى الملف linux.hash ، يجب أن يكون محتوى linux.hash هو:
$6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0ثم استخدم الأمر التالي لتفجير كلمة مرور تسجيل الدخول إلى linux:
hashcat -w 3 -a 0 -m 1800 --remove -o linux.out linux.hash wordlist.dicبعد لحظات اكتمل التفجير شاهد النتائج:
werner@Yasser:~/hashcat$ cat linux.out $6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0:4321يمكن ملاحظة أن التفجير كان ناجحًا.
4. تفجير كلمة مرور تسجيل الدخول إلى Mysql hash
أولاً ، يجب أن يكون لديك Mysql. لقد حدث أن يكون لدي في جهازي الافتراضي. تعرف Baidu أن قيمة التجزئة لكلمة مرور تسجيل الدخول Mysql محفوظة في الملف user.MYD. أين هو الملف user.MYD ؟ لا أعرف أيضًا ، فقط ابحث عنه:
test@test-VirtualBox:~$ sudo find / -name user.MYD /var/lib/mysql/mysql/user.MYDتم العثور عليه في /var/lib/mysql/mysql/user.MYD ، عرض محتوى الملف:
sudo cat /var/lib/mysql/mysql/user.MYD
ليس ملفًا نصيًا عاديًا ، لا يهم كثيرًا ، ولا يزال من الممكن أن نرى أن قيمة التجزئة لكلمة مرور تسجيل الدخول لجذر المستخدم هي:
6B825255FB466413D6B1B724644E23428C94BBCBاحفظ هذه القيمة في الملف mysql.hash واستخدم الأمر التالي لتفجير تجزئة كلمة مرور تسجيل الدخول mysql:
{}
بعد لحظات ، تم الانتهاء من التفجير ، شاهد النتائج:
werner@Yasser:~/hashcat$ cat mysql.out 6b825255fb466413d6b1b724644e23428c94bbcb:viperيمكن ملاحظة أن التفجير كان ناجحًا.
5. تفجير ديسكوز! كلمة سر المنتدى
Discuz! إنه برنامج منتدى php معروف في الصين ويستخدم على نطاق واسع. الآن دعونا نفجر Discuz! قيمة التجزئة لكلمة مرور المستخدم. أولاً ، علينا أن نجد قيمة التجزئة ، أين يمكنني العثور عليها ؟ من Discuz ، بالطبع! في قاعدة البيانات.
يمكن مناقشتها! أين قاعدة البيانات ؟ هكذا قمت بحلها ، قم بتنزيل أحدث إصدار من Discuz من موقعه الرسمي! الكود المصدر ، قم بتشغيل التثبيت ، وستحصل على Discuz! قاعدة بيانات
Discuz! اسم قاعدة البيانات الافتراضي هو ultrax ، ويحتفظ جدول pre_ucenter_members بقيمة التجزئة لكلمة مرور تسجيل الدخول. "pre_" هي البادئة الافتراضية ويمكن تغييرها أثناء التثبيت. لن يتغير "ucenter_members". استخدم عبارة sql التالية للاستعلام عن قيمة التجزئة لكلمة مرور تسجيل الدخول:
select password,salt from pre_ucenter_members;
![]()
احفظ قيمة التجزئة وقيمة الملح في الملف:
echo 69bcba126b93c6f397983629a0f70553: c13fd9 > discuz.hashقيمة التجزئة وقيمة الملح في نفس الصف ، مقسمة بواسطة ":". أخيرًا ، استخدم الأمر التالي لتفجير كلمة مرور تسجيل الدخول Discuz hash:
hashcat -w 3 -a 0 -m 2611 --remove -o discuz.out discuz.hash wordlist.dicبعد لحظات ، تم الانتهاء من التفجير ، شاهد النتائج:
werner@Yasser:~/hashcat$ cat discuz.out 69bcba126b93c6f397983629a0f70553:c13fd9:winterيمكن ملاحظة أن التفجير كان ناجحًا.
6. اختبار القاموس الكبير
حتى الآن ، نستخدم قاموسًا صغيرًا يحتوي على 500 كلمة فقط ، ويستغرق الأمر لحظة واحدة فقط في كل مرة لتفجير التجزئة المختلفة بنجاح ، أليس من الغريب ؟ وذلك لأنني قمت عمدًا بتعيين كلمة مرور ضعيفة في القاموس لممارسة استخدام hashcat ، وإلا فلن يجعل الناس يشعرون بالسوء إذا لم يتم الكشف عنها. من المستحيل الحصول على مثل هذا الحظ الجيد في الممارسة العملية. دعونا نحسب بشكل عرضي قيمة md5 لكلمة مرور أقل ضعفًا ، ونفجرها باستخدام قاموس كبير ، ونجرب حظنا من ناحية ، ونرى مدى سرعة hashcat من ناحية أخرى.
احسب قيمة md5 أولاً:
import hashlib md5 = hashlib.md5() md5.update("werner123456!!!") print md5.hexdigest()الإخراج هو:
b17133f9abff287ed0546c1af2b171f7ثم حدد قاموس بحجم 10.5 جيجا يحتوي على 940 مليون كلمة مرور وابدأ التفجير:
hashcat -w 3 -a 0 -m 0 --remove -o big.out b17133f9abff287ed0546c1af2b171f7 big.dicلاحظ أنه عندما يكون هناك قيمة تجزئة واحدة فقط ، يمكنك كتابتها مباشرة في معلمات سطر الأوامر بدلاً من حفظها في ملف. بدأ التفجير قبل الذهاب إلى النوم ، واستيقظت في اليوم التالي لرؤية النتائج ووجدت:
بدأ: Wed Jul 26 22:55:27 2017 توقف: Wed Jul 26 23:02:28 2017اتضح أنه استغرق 7 دقائق فقط! اعتقدت أن الأمر سيستغرق 7 ساعات ، وهو أسرع بـ 60 مرة مما كنت أتوقع! من المؤسف أن قيمة التجزئة لم تكسر بنجاح ، ويبدو أن "werner123456!!!" ليست موجودة في قاموس كلمة المرور. يبدو أنني بحاجة إلى إعداد قاموس كلمات مرور بحجم 100 جيجا ، ولكن من غير المناسب حفظ ونقل مثل هذا القاموس الكبير ، ألا توجد طريقة أخرى ؟ بالطبع ، هل تتذكر وضع الهجوم ؟ لقد استخدمنا وضع "Straight" ، بعد ذلك ، دعونا ندرس العديد من الأوضاع الأخرى.
7. ملخص
استخدم hashcat لتفجير التجزئة. الخطوة الأولى هي العثور على التجزئة الصحيحة. تحتوي الأنظمة المختلفة والبرامج المختلفة على مواقع مختلفة لتخزين التجزئة ، لذلك تحتاج إلى العثور على التجزئة بدقة القيمة ؛ والثاني هو الحكم بشكل صحيح على نوع التجزئة ، وتحديد ما إذا كان hashcat يدعم هذا النوع من التجزئة ، واختيار المعلمة الصحيحة -m ، وإلا فمن المستحيل تقريبًا النجاح ؛ والثالث هو أن قاموس كلمة المرور أفضل ، فما إذا كان من الممكن تفجيره بنجاح في النهاية يعتمد على القاموس. على الرغم من أن قاموس كلمة المرور ليس أكبر كلما كان ذلك أفضل ، إلا أنه لا يزال من الأفضل دائمًا أن يكون أكبر. تشتهر hashcat أيضًا بسرعتها. القواميس الكبيرة ليست مشكلة بالنسبة لـ hashcat. إليك قاموس أفضل: أبواب التسرب السابقة + مجموعة قاموس كلمات المرور الضعيفة شائعة الاستخدام. 7Z، كلمة مرور فك الضغط هي: anywlan. بالإضافة إلى ذلك ، إذا قمت بجمع الكثير من القواميس الصغيرة ، فيمكنك دمج القواميس الصغيرة وفرزها وإزالة تكرارها للحصول على قاموس كبير لتسهيل تفجير hashcat. إذا كان القاموس الصغير في نفس الدليل ، فيمكنك القيام بذلك باستخدام أمر واحد:
cat * | sort | uniq > Merge.dicماذا لو تم تنظيم القاموس الصغير حسب الفئة وتوزيعه في دليل متعدد الطبقات ؟ من الواضح أن استخدام أمر cat فقط لا يكفي ، ولكنه في الواقع يتطلب أمرًا واحدًا فقط. بافتراض أن جميع القواميس الصغيرة مخزنة في الدليل MyDictionary ، يمكن كتابة الأمر على النحو التالي:
find ./MyDictionary -type f -exec cat {} \; | sort | uniq > Merge.dic