| # | Mode |
|---|---|
| 0 | Straight |
| 1 | Combination |
| 3 | Brute-force |
| 6 | Hybrid Wordlist + Mask |
| 7 | Hybrid Mask + Wordlist |
يُعرف وضع الهجوم هذا أيضًا باسم "هجوم القاموس". ليس هناك الكثير ليقوله ، بالنظر إلى القاموس ، فإن hashcat سيقرأ محتوى القاموس سطرًا بسطر ، ويحسب قيمة التجزئة لكل سطر ، ويقارنها بقيمة التجزئة المستهدفة.
مثال:
hashcat -a 0 -m 400 example400.hash example.dict
أخبرني بايدو أن المجموعة هي اسم يعني: "الجمع ؛ الاتحاد ؛ مزيج كلمة المرور ؛ الملابس الداخلية". وضع الهجوم هذا بسيط جدًا في الواقع ، وهو الجمع بين محتويات قاموسين لكلمات المرور. يتطلب استخدام وضع الهجوم هذا تحديد قاموسين لكلمات المرور. لنفترض أن لدينا قاموسين لكلمات المرور dict1.txt و dict2.txt ، ومحتوياتهما هي:
الصيد كيتي قوس قزح
و
باريس rock
ثم الأمر:
hashcat -m 0 -a 1 hash.txt dict1.txt dict2.txt
القاموس الذي حاولت فعلا هو:
huntingparis هنتنغروك كيتي باريس كيتي روك قوس قزح باريس rainbowrock
الكلمات الموجودة في dict1.txt على اليسار والكلمات الموجودة في dict2.txt على اليمين ، بإجمالي 3×2=6.
المعلمات المتعلقة بهذا النمط هي:
-j, --rule-left -k, --rule-right
-j تعمل القاعدة بعد اليسار ، والقاعدة بعد -k تعمل على اليمين ، مثل إضافة المعلمة -j '$- '، ثم القاموس الذي تمت تجربته فعليًا هو:
hunting-paris صخرة الصيد كيتي باريس كيتي روك قوس المطر باريس rain-bowrock
أضف المعلمة -j '^!', ثم القاموس الفعلي الذي تمت تجربته هو:
! الصيد باريس ! هنتنغروك ! كيتي باريس ! كيتي روك ! قوس قزح باريس ! rainbowrock
يضيف المعلمة -k '^>'، ثم القاموس الفعلي الذي تمت تجربته هو:
hunting>paris صيد>صخرة كيتي>باريس كيتي>روك مطر>بوباريس rain>bowrock
ما هي القاعدة ؟ استخدام "$" و"^" مشابه للتعبيرات العادية ، فهل هي عادية ؟ في الواقع ، لا ، يتم تنفيذ قواعد hashcat بنفسك ، وهي جزء كبير آخر من المحتوى. للحصول على التفاصيل ، راجع Rule-based Attack
لتجربة مجموعة أحرف معينة مجموعات مختلفة. وفقًا لويكي hashcat الرسمي ، فإن هذه الطريقة قديمة وتم استبدالها بالهجوم القناعي في جميع الاتجاهات ، لذلك لن يتم إجراء أي بحث
هذه طريقة هجوم جديدة نسبيًا ، على سبيل المثال:
hashcat -A 3 -m 0 md5.hash ؟ ل ؟ ل ؟ ل ؟ ل ؟ l
على الرغم من أنه وفقًا لجدول "أوضاع الهجوم"، فإن -A 3 يتوافق مع القوة الغاشمة ، ولكن في الواقع ، يستخدم -A 3 هجومًا قناعيًا. يمكن اعتبار هجوم القناع بمثابة قوة وحشية متقدمة. يتم استخدام المعلمة
-m لتحديد نوع وظيفة التجزئة ، ويتم تخزين قيمة md5 في ملف md5.hash. المفتاح هو السلسلة الأخيرة "? l? l? l? l? l? l? l" ، وتسمى هذه السلسلة قناعًا.
القناع عبارة عن سلسلة تتكون من عدة عناصر نائبة. "?l" عبارة عن عنصر نائب ، حيث "?" هي كلمة رئيسية تستخدم لتعديل "l" اللاحقة. تمثل "?l" معًا مجموعة من الأحرف. بالإضافة إلى "?l"، يمكنك أيضًا وجود "?u"، "?d"، "?h"، "?h"، "?s"، "?a" و"?b"، والتي تمثل مجموعة الأحرف كما هو موضح في الجدول أدناه.
| ? | مجموعة الأحرف |
|---|---|
| l | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| u | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| d | 0123456789 |
| H | 0123456789abcdef |
| H | 0123456789abcdef |
| s | ! "#$%&'()*+,-./:;<=>?@[\]^_`~{|} |
| a | ؟ ل ؟ أنت ؟ د ؟ s |
| b | 0 – 0xff |
بهذه الطريقة ، نفهم ، "?l ?l" يعادل في الواقع قاموس كلمة المرور:
aaaaa اااااااب ... zzzzz
بنفس الطريقة ، "?l?u?d" يعادل قاموس كلمة المرور:
aA0 aA1 ... با 0 ... zZ9
مجموعة الأحرف في الجدول أعلاه مدمجة في hashcat ، يمكننا أيضًا تحديد مجموعة الأحرف بأنفسنا:
--custom-charset1=مجموعة الأحرف 1 --custom-charset2=مجموعة الأحرف 2 --custom-charset3=مجموعة الأحرف 3 --custom-charset4=مجموعة الأحرف 4
المعلمة –custom-charsetN يمكن اختصارها بـ -N ، على سبيل المثال –custom-charset1 يمكن اختصارها بـ -1. يتم تحديد مجموعة الأحرف المحددة باستخدام -N في القناع كعنصر نائب "?N"، مثل:
-1 abc123 ? 1? 1? 1
يعادل قاموس كلمة المرور:
aaa أب ... aa3 ... بعد 333
-N ، بالإضافة إلى سلسلة تمثل مجموعة الأحرف ، يمكن أن يكون أيضًا ملفًا ينتهي بـ .hcchr ، ويتم تخزين مجموعة الأحرف في الملف. يأتي hashcat مع العديد من ملفات .hcchr الموجودة في مجموعات الأحرف/الدليل الخاص بحزمة التثبيت.
مجموعة الأحرف التي تمثلها العنصر النائب "؟ ؟" هي "؟" نفسها. بالإضافة إلى ذلك ، عندما يتم استخدام الأحرف الأخرى كعناصر نائبة ، فإنها تمثل الحرف نفسه ، على سبيل المثال ، "?lwerner?d" يعادل قاموس كلمة المرور:
awerner0 أويرنر 1 ... zwerner9
مع المعرفة المذكورة أعلاه ، من السهل فهم القناع. يتكون القناع من عدة عناصر نائبة ، كل عنصر نائب عبارة عن مجموعة من الأحرف ، والقناع عبارة عن مجموعة من مجموعات أحرف العناصر النائبة. عدد العناصر النائبة يساوي طول كلمة المرور. ما هي فوائد مثل هذا التصميم مقارنة بمجرد إعطاء مجموعة من الأحرف وطول كلمة المرور ؟
لنفترض أننا نعرف أن كلمة مرور شخص ما تحتوي على 7 أرقام ، الرقم الأول هو حرف كبير ، والأرقام الثلاثة التالية هي حرف صغير ، والأرقام الثلاثة الأخيرة هي أرقام. إذا كان التكسير العنيف التقليدي ، فإنه يتطلب مجموعات الأحرف A-Z و A-Z و 0-9 ، بإجمالي 62 حرفًا ، ويجب تجربتها بحد أقصى 62^7=3 521 614 606 208 مرة ، وهو مستوى التريليون. عند استخدام القناع لوصف كلمة المرور هذه ، فهي "\u\l\l\l\d\d\d"، وهو أمر سهل الحساب. هناك إجمالي (26^4)×(10^3)=456 976 000 احتمال ، وهو 100 مليون مستوى ، وهو أقل بمقدار 4 أوامر من الطريقة السابقة.
لنأخذ خطوة إلى الوراء ، حتى لو لم نكن نعرف توزيع كلمات المرور ، فمن السهل محاكاة تأثير التكسير العنيف التقليدي باستخدام القناع.
المشكلة الآن هي أن القناع ثابت ، وكم عدد العناصر النائبة المكتوبة ميتة ، وماذا يجب أن نفعل إذا لم نعرف طول كلمة المرور ؟ لا بأس أن كلمة المرور طويلة جدًا ، إذا كانت كلمة مرور شخص ما تحتوي على 3 أرقام فقط ولدينا 4 عناصر نائبة ولا يمكننا حلها مهما حدث ، ألن تكون خسارة كبيرة ؟ هل يجب أن نبدأ من 1 ونكتب الأقنعة بكل أطوال ؟ كم هو مزعج.
هناك حلان ، أحدهما هو استخدام ملف القناع ، وكتابة أقنعة متعددة في ملف واحد ، ثم تحديد هذا الملف في سطر الأوامر. لاحظ أن ملف القناع يجب أن ينتهي بـ .hcmask.
على سبيل المثال ، محتوى test.hcmask هو:
؟ ل ? ل ؟ ل ? ل ؟ ل ؟ ل ? ل ؟ ل ؟ ل ؟ l
ثم استخدم الملف بالأمر التالي:
hashcat -m 0 -a 3 --show md5.hash test.hcmask
الحل الآخر هو إضافة المعلمة –increment ، والتي تخبر hashcat ، وفقًا للقناع الذي قدمناه ، حاول بدءًا من عنصر نائب ، ثم حاول اثنين أو ثلاثة حتى الطول الذي قدمناه. على سبيل المثال ، نكتب هذا العنصر النائب "abc" ، ثم نحسب قيمة md5 للسلسلة التالية:
a:0cc175b9c0f1b6a831c399e269772661 ب:92eb5ffee6ae2fec3ad71c777531578f c:4a8a08f09d37b73795649038408b5f33 ab:187ef4436122d1cc2f40dc2b92f0eba0 ac:e2075474294983e013ee4dd2201c7a73 ba:07159c47ee1b19ae4fb9c40d480856c4 قبل الميلاد:5360af35bde9ebd8f01f492dc059593c ca:5435c69ed3bcc5b2e4d580e393e373d3 cb:d0d7fdb6977b26929fb68c6083c0b439 abc:900150983cd24fb0d6963f7d28e17f72 abc:900150983cd24fb0d6963f7d28e17f72 bac:79ec16df80b57696a03bb364410061f3 bca:b64eab8ce39e013604e243089c687e4f cba: 3944b025c9ca7eec3154b44666ae04a0 cab:16ecfd64586ec6c1ab212762c2c38a90
قبل ":" تأتي السلسلة الأصلية لحساب قيمة التجزئة ، وبعد ":" تأتي قيمة hasn المحسوبة. احفظ المحتوى أعلاه في الملف md5.hash ، ثم قم بتشغيل الأمر التالي:
hashcat -m 0 -a 3 --show --username md5.hash abc
أضف المعلمة –username لأن كل قيمة تجزئة لدينا لها سلسلة أصلية قبل هذه المعلمة ، ستظهر hashcat أنه لم يتم العثور على قيمة التجزئة الصحيحة. بإضافة هذه المعلمة ، سيعتقد hashcat أن السلسلة الموجودة قبل قيمة التجزئة هي اسم المستخدم لقيمة التجزئة ، بحيث يمكن تحميل قيمة التجزئة بنجاح.
نتيجة التشغيل هي حل تجزئة واحدة فقط:
900150983cd24fb0d6963f7d28e17f72:abc
الآن أضف المعلمة –increment ، قم بتشغيلها مرة أخرى:
hashcat -m 0 -a 3 --show --increment --username md5.hash abc
هذه المرة ، تم حل تجزئتين أخريين:
0cc175b9c0f1b6a831c399e269772661:a 187ef4436122d1cc2f40dc2b92f0eba0:ab
مرئي ، - الزيادة لعبت دورًا. ولكن في الوقت نفسه ، نعلم أيضًا أنه مع هذه المعلمة ، سيحاول hashcat فقط A و ab و abc بالترتيب ، ولن يقوم بترتيب ودمج العناصر النائبة بشكل غير ترتيبي لتجربة الاحتمالات المختلفة.
الهجوم الهجين مشابه لهجوم Combinator. يجمع هجوم Combinator بين قاموسين ، بينما يجمع الهجوم الهجين بين قاموس وقناع.
لنفترض أن لدينا بالفعل قاموس example.dict الذي يقول كما يلي:
مرحبًا werner
ثم الأمر:
hashcat -m 0 -a 6 md5.hash example.dict ؟ د ؟ d
يعادل مجرد استخدام القاموس:
مرحبًا 00 مرحبا 01 ... مرحبا 99 فيرنر 00 فيرنر 01 ... werener99
ثم الأمر:
hashcat -m 0 -a 7 md5.hash ؟ د ؟ dexample.dict
يعادل مجرد استخدام القاموس:
00 مرحبًا 01 مرحبا ... 99 مرحبا 00 فيرنر 01 فيرنر ... 99 ويرنر