هش کردن رمز عبور (تبدیل یکطرفهی رمز به یک رشتهی بهظاهر تصادفی) پایهی امنیت ذخیرهسازی رمز عبور در هر سیستم مدرن است. ولی یک سوال مهم مطرح است: یک هش خاص، در برابر یک مهاجم با سختافزار قدرتمند، واقعاً چقدر مقاوم است؟ hashcat سریعترین و پرکاربردترین ابزار متنباز برای پاسخ دادن دقیق به همین سوال است — با استفاده از قدرت پردازشی موازی کارت گرافیک (GPU) بهجای CPU.
توجه مهم: این آموزش فقط باید روی هشها و سیستمهای خودتان یا در یک محیط آزمایشگاهی/آموزشی مجاز اجرا شود — مثل حسابهای شخصی خودتان یا یک قرارداد تست نفوذ رسمی که دسترسی به هشها را پوشش میدهد. تلاش برای شکستن رمز عبور یا هش هر سیستمی که مجوز صریح ندارید، جرم است.
نصب hashcat
sudo apt install hashcat
قدم اول: بررسی سرعت سختافزار خودتان
hashcat -b
این دستور یک Benchmark اجرا میکند و نشان میدهد کارت گرافیک شما روی الگوریتمهای هش مختلف (MD5، SHA256، NTLM و غیره) چند هش در ثانیه میتواند امتحان کند — عددی که مستقیماً نشان میدهد یک GPU متوسط امروزی چقدر سریعتر از یک CPU در این کار عمل میکند.
قدم دوم: ساخت یک هش نمونه برای تمرین
قبل از هر چیز، بهجای استفاده از هش واقعی کسی، یک هش تمرینی از یک رمز ساختگی بسازید تا کاملاً ایمن و قانونی تمرین کنید:
echo -n "Test1234" | sha256sum
خروجی این دستور را در یک فایل بهنام hash.txt ذخیره کنید.
قدم سوم: حملهی دیکشنری (Dictionary Attack)
hashcat -m 1400 -a 0 hash.txt wordlist.txt
-m 1400 نوع الگوریتم هش را مشخص میکند (در اینجا SHA256؛ برای MD5 عدد ۰، برای NTLM عدد ۱۰۰۰ استفاده میشود). -a 0 یعنی حالت حمله، Dictionary Attack است — یعنی هر کلمه از یک فایل Wordlist را امتحان میکند. اگر رمز شما داخل همان فهرست کلمات باشد، در چند ثانیه پیدا میشود.
قدم چهارم: حملهی Mask (حدس هوشمند بر پایهی الگو)
hashcat -m 1400 -a 3 hash.txt ?u?l?l?l?l?l?l?d
-a 3 یعنی حالت Mask Attack — بهجای امتحان کلمات از یک فهرست، الگوی رمز را مشخص میکنید (اینجا: یک حرف بزرگ، شش حرف کوچک، یک عدد). این روش برای وقتی مفید است که یک ایدهی تقریبی از ساختار رمز دارید — دقیقاً همان چیزی که بسیاری از رمزهای «قابلپیشبینی» انسانی (مثل Ali1234) در برابرش آسیبپذیرند.
قدم پنجم: ترکیب Wordlist با قوانین (Rule-Based Attack)
hashcat -m 1400 -a 0 hash.txt wordlist.txt -r rules/best64.rule
قوانین (Rules) به hashcat میگویند روی هر کلمهی فهرست، تغییرات رایج انسانی را هم امتحان کند — مثل اضافه کردن یک عدد به انتها، تبدیل حرف اول به بزرگ، یا جایگزینی حروف با کاراکترهای مشابه (مثل a به @). این دقیقاً همان الگوهایی است که اکثر کاربران واقعی برای «قویتر کردن» رمزشان استفاده میکنند، و همان الگوهایی که این حمله دقیقاً هدف میگیرد.
خواندن نتیجه
اگر hashcat رمز را پیدا کند، آن را در انتهای خط، کنار خودِ هش، نمایش میدهد. برای دیدن دوبارهی نتایج قبلی بدون اجرای مجدد:
hashcat -m 1400 hash.txt --show
چرا این تمرین برای یک مدیر سیستم مفید است؟
بسیاری از سازمانها هرگز نمیدانند رمزهای کاربرانشان واقعاً چقدر ضعیف است، تا وقتی یک نشت داده اتفاق بیفتد. یک مدیر سیستم آگاه میتواند (با مجوز رسمی و روی هشهای خودِ سازمان) دورهای همین تست را اجرا کند تا رمزهای ضعیف را قبل از یک مهاجم واقعی شناسایی و اصلاح کند — دقیقاً همان رویکرد پیشگیرانهای که در دورههای امنیت من تدریس میشود.
وبلاگ