| # | موڈ |
|---|---|
| 0 | سیدھا |
| 1 | مجموعہ |
| 3 | Brute-force |
| 6 | ہائبرڈ ورڈ لسٹ + ماسک |
| 7 | ہائبرڈ ماسک + ورڈ لسٹ |
اس حملے کے موڈ کو "ڈکشنری اٹیک" بھی کہا جاتا ہے۔ کہنے کے لئے کچھ بھی نہیں ہے ، صرف ایک لغت دی گئی ہے ، hashcat لغت کے مواد کو لائن کی طرف سے پڑھتا ہے ، ہر لائن کی ہیش قدر کا حساب لگاتا ہے ، اور ہدف ہیش قدر کے ساتھ موازنہ کرتا ہے.
مثال:
hashcat -a 0 -m 400 example400.hash example.dict
Baidu نے مجھے بتایا کہ مجموعہ ایک اسم ہے ، جس کا مطلب ہے: "مجموعہ ؛ مجموعہ ؛ پاس ورڈ کا مجموعہ ؛ جمپ سوٹ انڈرویئر"۔ یہ حملے کا موڈ اصل میں بہت آسان ہے ، یہ دو پاس ورڈ لغات کے مواد کو یکجا کرنا ہے۔ اس حملے کے موڈ کا استعمال کرتے ہوئے دو پاس ورڈ لغات کی وضاحت کرنے کی ضرورت ہے. فرض کریں کہ ہمارے پاس دو پاس ورڈ لغات dict1.txt اور dict2.txt ہیں ، جن کے مواد یہ ہیں:
شکار کٹی قوس قزح
اور
پیرس راک
پھر کمانڈ:
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 '$-'، پھر اصل لغت کی کوشش کی گئی ہے:
شکار-پیرس ہنٹنگ راک کٹی پیرس کٹی راک بارش-بو پیرس rain-bowrock
پیرامیٹر شامل کریں -j '^!'، اصل لغت کی کوشش کی گئی ہے:
! ہنٹنگپیرس ! ہنٹنگ راک ! کٹی پیرس ! kittyrock ! رینبوپیرس ! rainbowrock
پیرامیٹر -k '^>' شامل کریں ، پھر اصل لغت کی کوشش کی گئی ہے:
شکار>پیرس شکار>راک کٹی>پیرس کٹی>راک بارش>بوپیرس rain>bowrock
یہ اصول کیا ہے ؟ "$" اور "^" کا استعمال باقاعدہ اظہار کی طرح ہے ، تو کیا وہ باقاعدہ ہیں ؟ درحقیقت ، ہیش کیٹ کے قواعد خود نافذ کیے جاتے ہیں ، جو کہ تفصیلات کے لیے ، Rule-based Attack
کو آزمائیں۔ مختلف امتزاج دیئے گئے کریکٹر سیٹ۔ hashcat کی آفیشل ویکی کے مطابق ، یہ طریقہ فرسودہ ہے اور اس کی جگہ ماسک اٹیک نے لے لی ہے ، اس لیے کوئی تحقیق نہیں کی جائے گی
یہ ایک نسبتاً نیا حملہ ہے۔ طریقہ ، مثال مندرجہ ذیل ہے:
hashcat -a 3 -m 0 MD5.hash ؟ ایل ؟ ایل ؟ ایل ؟ ایل ؟ l
اگرچہ "اٹیک موڈز" ٹیبل کے مطابق ، -a 3 Brute-force سے مساوی ہے ، درحقیقت ، -a 3 ماسک اٹیک استعمال کرتا ہے۔ ماسک اٹیک کو اعلی درجے کی وحشیانہ طاقت کے طور پر دیکھا جا سکتا ہے۔
-m پیرامیٹر کا استعمال ہیش فنکشن کی قسم ، MD5 کی وضاحت کرنے کے لیے کیا جاتا ہے۔ MD5 قدر ہیش فائل میں محفوظ ہے۔ کلید آخری تار ہے "؟ l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l?l
ایک ماسک ایک سٹرنگ ہے جو کئی پلیس ہولڈرز پر مشتمل ہے۔ "?l" ایک پلیس ہولڈر ہے ، جہاں "?" ایک مطلوبہ لفظ ہے ، جس کا استعمال بعد کے "l" میں ترمیم کرنے کے لیے کیا جاتا ہے ، "?l" کے علاوہ ، یہ بھی ہو سکتا ہے۔ "?u"، "?d"، "?h"، "?h"، "?s"، "?a" اور "?b"، جس کی نمائندگی کردہ حروف کا مجموعہ نیچے دیے گئے جدول میں دکھایا گیا ہے۔
| ؟ | Charset |
|---|---|
| l | abcdefghijklmnopqrstuvwxyz |
| u | abcdefghijklmnopqrstuvwxyz |
| d | 0123456789 |
| H | 0123456789abcdef |
| H | 0123456789ABCDEF |
| s | ! "#$%&'()*+,-./:;<=>?@[\]^_`~{|} |
| a | ؟ ایل ؟ آپ ؟ ڈی ؟ s |
| b | 0 – 0xff |
اس طرح ، ہم سمجھتے ہیں ، "?l?l?l?l?l" دراصل پاس ورڈ لغت کے برابر ہے:
aaaaa aaaab ... zzzzz
اسی طرح ، "?l?u?d" پاس ورڈ لغت کے برابر ہے:
aA0 aA1 ... bA0 ... zZ9
مندرجہ بالا ٹیبل میں کریکٹر سیٹ ہیش کیٹ میں بلٹ ان ہے ، ہم خود کریکٹر سیٹ کی وضاحت بھی کر سکتے ہیں:
--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 aab ... aa3 ... 333
-N کریکٹر سیٹ کی نمائندگی کرنے والی سٹرنگ کے علاوہ ، یہ .hcchr پر ختم ہونے والی فائل بھی ہو سکتی ہے ، جہاں کریکٹر سیٹ محفوظ ہوتا ہے۔ hashcat بہت سی .hcchr فائلوں کے ساتھ آتا ہے ، جو انسٹالیشن پیکج کی charsets/ڈائرکٹری میں ہے۔
پلیس ہولڈر "??" کی نمائندگی کردہ حروف کا مجموعہ خود "?" ہے۔ اس کے علاوہ ، جب باقی حروف کو پلیس ہولڈرز کے طور پر استعمال کیا جاتا ہے ، تو وہ خود کردار کی نمائندگی کرتے ہیں ، مثال کے طور پر ، "?lwerner?d" پاس ورڈ لغت کے برابر ہے:
awerner0 awerner1 ... zwerner9
مندرجہ بالا علم کے ساتھ ، ماسک کو سمجھنا آسان ہے۔ ایک ماسک کئی پلیس ہولڈرز پر مشتمل ہوتا ہے ، ہر پلیس ہولڈر کریکٹر سیٹ ہے ، اور ماسک پلیس ہولڈر کریکٹر سیٹ کا مجموعہ ہے۔ پلیس ہولڈرز کی تعداد پاس ورڈ کی لمبائی کے برابر ہے۔ صرف کردار سیٹ اور پاس ورڈ کی لمبائی دینے کے مقابلے میں اس طرح کے ڈیزائن کے فوائد کیا ہیں ؟
فرض کریں کہ ہم جانتے ہیں کہ کسی کے پاس ورڈ میں کل 7 ہندسے ہیں ، پہلا ہندسہ بڑے حروف ہیں ، اگلے 3 ہندسے چھوٹے حروف ہیں ، اور آخری 3 ہندسے نمبر ہیں۔ اگر یہ روایتی فورس کریکنگ ہے ، تو اس کے لیے کریکٹر سیٹ 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 کے ساتھ ختم ہونے کی ضرورت ہے.
جیسے ٹیسٹ۔ hcmask کا مواد یہ ہے:
؟ ایل ؟ ایل ؟ ایل ؟ ایل ؟ ایل ؟ ایل ؟ ایل ؟ ایل ؟ ایل ؟ l
پھر فائل کو درج ذیل کمانڈ کے ساتھ استعمال کریں:
hashcat -m 0 -a 3 --show MD5.hash test.hcmask
ایک اور حل یہ ہے کہ پیرامیٹر -increment کو شامل کیا جائے ، جو hashcat کو بتاتا ہے کہ ہم نے جو ماسک دیا ہے اس پر عمل کریں ، ایک پلیس ہولڈر سے شروع کریں ، اور پھر دو ، تین کی کوشش کریں ، جب تک کہ ہم لمبائی نہ دیں۔ مثال کے طور پر ، ہم اس پلیس ہولڈر "abc" لکھتے ہیں ، اور پھر مندرجہ ذیل تار کی MD5 قدر کا حساب لگاتے ہیں:
A:0cc175b9c0f1b6a831c399e269772661 b:92eb5ffee6ae2fec3ad71c777531578f c:4a8a08f09d37b73795649038408b5f33 ab:187ef4436122d1cc2f40dc2b92f0eba0 ac:e2075474294983e013ee4dd2201c7a73 ba:07159c47ee1b19ae4fb9c40d480856c4 bc: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 کی کوشش کرے گا ، اور مختلف امکانات کی کوشش کرنے کے لیے جگہ ہولڈرز کو ترتیب اور یکجا نہیں کرے گا۔
ہائبرڈ اٹیک کمبینیٹر اٹیک سے ملتا جلتا ہے ، جبکہ ہائبرڈ اٹیک ایک لغت اور ایک ماسک کو ملاتا ہے۔
فرض کریں کہ ہمارے پاس پہلے سے ہی لغت کی مثال ہے۔ dict ، مندرجہ ذیل ہے:
ہیلو werner
پھر کمانڈ:
hashcat -m 0 -a 6 MD5.hash example.dict ؟ ڈی ؟ d
صرف لغت کا استعمال کرنے کے برابر ہے:
ہیلو00 ہیلو 01 ... ہیلو 99 werner00 ورنر 01 ... werener99
پھر کمانڈ:
hashcat -m 0 -a 7 MD5.hash ؟ ڈی ؟ dexample.dict
صرف لغت کا استعمال کرنے کے برابر ہے:
00hello 01 ہیلو ... 99 ہیلو 00 ورنر 01 ورنر ... 99werener