در دنیای امنیت سایبری، رمزهای عبور خط مقدم دفاعی ما هستند. اما همانطور که مدافعان برای تقویت این خط تلاش می‌کنند، مهاجمان نیز به دنبال کشف و نفوذ به آن هستند. در این میان، ابزارهای تخصصی شکستن رمز عبور مانند Hashcat و John the Ripper نقش حیاتی ایفا می‌کنند، چه در دست هکرهای کلاه سیاه و چه در دست متخصصان امنیت برای تست نفوذ و ارزیابی مقاومت سیستم‌ها. این مقاله به بررسی چیستی، کاربردها و نحوه عملکرد این دو ابزار قدرتمند به همراه مثال‌های کاربردی می‌پردازد.
کینگتو - آموزش برنامه نویسی تخصصصی - دات نت - سی شارپ - بانک اطلاعاتی و امنیت

هک پسورد: چیستی Hashcat و John the Ripper

44 بازدید 0 نظر ۱۴۰۴/۰۵/۰۲

رمز عبور چیست و چرا شکستن آن اهمیت دارد؟

رمز عبور رشته‌ای از کاراکترها است که برای تأیید هویت یک کاربر در یک سیستم یا سرویس استفاده می‌شود. در حالت ایده‌آل، رمزهای عبور باید پیچیده، منحصر به فرد و غیرقابل حدس زدن باشند. با این حال، در عمل، بسیاری از کاربران از رمزهای عبور ساده یا تکراری استفاده می‌کنند که آن‌ها را در برابر حملات آسیب‌پذیر می‌سازد.

شکستن رمز عبور به معنای بازیابی رمز عبور اصلی از یک مقدار هش شده (hash) یا تلاش برای حدس زدن آن است. این فرآیند از دیدگاه امنیتی به دو دلیل اهمیت دارد:

  • تست نفوذ (Penetration Testing): متخصصان امنیت از این ابزارها برای ارزیابی مقاومت رمزهای عبور در سیستم‌های خود استفاده می‌کنند. این کار به شناسایی رمزهای عبور ضعیف و تقویت سیاست‌های امنیتی کمک می‌کند.

  • بازیابی دسترسی (Access Recovery): در مواردی که رمز عبور فراموش شده یا از بین رفته است، می‌توان از این ابزارها برای بازیابی دسترسی به یک سیستم یا فایل استفاده کرد.

 

هش (Hash) چیست و چه ارتباطی با رمز عبور دارد؟

 

قبل از ورود به جزئیات Hashcat و John the Ripper، درک مفهوم هش ضروری است. تابع هش (Hash Function) یک الگوریتم ریاضی یک‌طرفه است که هر ورودی با هر طولی را به یک خروجی با طول ثابت تبدیل می‌کند. به این خروجی، مقدار هش (Hash Value) یا به سادگی هش گفته می‌شود.

ویژگی‌های کلیدی توابع هش در زمینه رمز عبور عبارتند از:

  • یک‌طرفه بودن: از مقدار هش نمی‌توان به راحتی به ورودی اصلی رسید.

  • تعیین‌کننده بودن: هر بار که یک ورودی خاص را به تابع هش می‌دهید، همیشه همان مقدار هش را تولید می‌کند.

  • مقاومت در برابر تصادم (Collision Resistance): پیدا کردن دو ورودی متفاوت که یک مقدار هش یکسان تولید کنند، بسیار دشوار است. (البته، برخی توابع هش قدیمی‌تر مانند MD5 و SHA-1 در برابر تصادم آسیب‌پذیر هستند).

هنگامی که شما یک رمز عبور را تنظیم می‌کنید، سیستم آن را به صورت مستقیم ذخیره نمی‌کند. در عوض، رمز عبور شما از طریق یک تابع هش عبور کرده و مقدار هش آن ذخیره می‌شود. هنگام ورود، رمز عبور وارد شده توسط شما نیز هش شده و با هش ذخیره شده مقایسه می‌شود. اگر هش‌ها مطابقت داشته باشند، احراز هویت با موفقیت انجام می‌شود.

مثال:

فرض کنید رمز عبور شما "MySecretPass123" است. اگر از تابع هش SHA-256 استفاده شود، ممکن است خروجی زیر را داشته باشید:

a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7

حالا اگر مهاجم به پایگاه داده‌ای که این هش را ذخیره کرده، دسترسی پیدا کند، نمی‌تواند به راحتی رمز عبور اصلی را از آن استخراج کند. ابزارهایی مانند Hashcat و John the Ripper تلاش می‌کنند تا با حدس زدن رمزهای عبور احتمالی و هش کردن آن‌ها، مقدار هش تولید شده را با هش دزدیده شده مقایسه کنند.


 

Hashcat: سلطان سرعت و تنوع

 

Hashcat یک ابزار قدرتمند و فوق‌العاده سریع برای شکستن رمز عبور است که از پردازنده‌های گرافیکی (GPUs) برای تسریع فرآیند استفاده می‌کند. این ویژگی به آن امکان می‌دهد تا در مقایسه با پردازنده‌های مرکزی (CPUs) که John the Ripper در آن‌ها برتری دارد، میلیون‌ها یا حتی میلیاردها حدس در ثانیه را پردازش کند. Hashcat از طیف گسترده‌ای از الگوریتم‌های هش پشتیبانی می‌کند، از جمله MD5، SHA-1، SHA-256، SHA-512، LM، NTLM و بسیاری دیگر.

 

کاربردهای Hashcat:

 

  • کرک هش‌های رمز عبور: از فایل‌های هش مختلف مانند NTLM (ویندوز)، SHA (یونیکس)، MySQL، Kerberos و غیره.

  • حملات دیکشنری (Dictionary Attacks): استفاده از لیست کلمات از پیش تعریف شده (دیکشنری) برای حدس زدن رمز عبور.

  • حملات Brute-Force (Brute-Force Attacks): تلاش سیستماتیک برای تمام ترکیبات ممکن از کاراکترها.

  • حملات Rule-Based (Rule-Based Attacks): استفاده از قوانین خاص (مانند افزودن اعداد یا کاراکترهای خاص) برای تغییر کلمات دیکشنری و افزایش احتمال موفقیت.

  • حملات Hybrid (Hybrid Attacks): ترکیبی از حملات دیکشنری و Brute-Force یا Rule-Based.

  • کرک WPA/WPA2 Handshakes: شکستن رمز عبور شبکه‌های وایرلس امن.

  • کرک PGP و TrueCrypt: شکستن رمزگذاری فایل‌ها و دیسک‌ها.

 

نحوه عملکرد Hashcat:

 

Hashcat برای شکستن هش‌ها از چندین حالت حمله بهره می‌برد:

  • حالت 0 (Straight): حمله دیکشنری ساده.

  • حالت 1 (Combinator): ترکیب دو فایل دیکشنری.

  • حالت 3 (Brute-Force): حمله Brute-Force بر اساس مجموعه کاراکترهای مشخص شده.

  • حالت 6 (Hybrid Dict + Mask): ترکیب دیکشنری با ماسک (مثلاً "password" + چهار رقم).

  • حالت 7 (Hybrid Mask + Dict): ترکیب ماسک با دیکشنری (مثلاً چهار رقم + "password").

  • حالت 9 (Association): حمله مبتنی بر قوانین.

 

مثال کاربردی با Hashcat:

 

فرض کنید یک فایل به نام hashes.txt دارید که شامل یک هش NTLM است: aad3b435b51404eeaad3b435b51404ee:d85ad78997c653d9f0f9b691d17d52b9 (این یک هش LM و NTLM برای رمز عبور "password" است).

جهت مشاهده ی فرمت های hashcat اینجا کلیک کنید: https://hashcat.net/wiki/doku.php?id=example_hashes

برای کرک این هش با استفاده از حمله دیکشنری و فایل wordlist.txt:

hashcat -m 1000 -a 0 hashes.txt wordlist.txt

توضیح دستور:

  • -m 1000: نوع هش را به عنوان NTLM مشخص می‌کند (برای هر نوع هش یک کد مخصوص وجود دارد که باید در مستندات Hashcat بررسی شود).

  • -a 0: نوع حمله را به عنوان "Straight" (حمله دیکشنری) مشخص می‌کند.

  • hashes.txt: فایل حاوی هش(ها) که می‌خواهید کرک کنید.

  • wordlist.txt: مسیر فایل دیکشنری.

پس از اجرای دستور، Hashcat شروع به پردازش می‌کند و اگر رمز عبور در دیکشنری باشد، آن را نمایش می‌دهد.


 

John the Ripper: سوئیچ‌چاقوی همه‌کاره کرکینگ

 

John the Ripper (JtR) یکی دیگر از ابزارهای بسیار محبوب و قدرتمند برای شکستن رمز عبور است. در حالی که Hashcat در سرعت خام با GPU برتری دارد، John the Ripper به دلیل تطبیق‌پذیری بالا، پشتیبانی از سیستم‌عامل‌های مختلف، و توانایی تشخیص خودکار نوع هش، به عنوان "سوئیچ‌چاقوی همه‌کاره" در زمینه کرکینگ شناخته می‌شود. JtR بیشتر بر روی CPU کار می‌کند، اگرچه نسخه‌هایی با پشتیبانی از GPU نیز در دسترس هستند.

 

کاربردهای John the Ripper:

 

  • کرک هش‌های رمز عبور: مانند Hashcat، JtR نیز از طیف وسیعی از هش‌ها پشتیبانی می‌کند، از جمله Unix crypt، Kerberos، LM، NTLM، و بسیاری دیگر.

  • تشخیص خودکار نوع هش: JtR توانایی شناسایی خودکار نوع هش ورودی را دارد که کار را برای کاربر ساده‌تر می‌کند.

  • حملات دیکشنری: استفاده از لیست کلمات برای حدس زدن رمز عبور.

  • حملات Single Crack: تلاش برای کرک رمز عبور با استفاده از اطلاعات موجود در فایل‌های پسورد (مانند نام کاربری).

  • حملات Brute-Force: تولید و تست تمام ترکیبات ممکن.

  • حملات Rule-Based: استفاده از قوانین برای تغییر کلمات دیکشنری و ایجاد کلمات جدید.

  • پشتیبانی از فرمت‌های مختلف ورودی: می‌تواند فایل‌های پسورد از سیستم‌عامل‌های مختلف (مانند /etc/shadow در لینوکس) را مستقیماً پردازش کند.

 

نحوه عملکرد John the Ripper:

 

JtR نیز مانند Hashcat از روش‌های مختلفی برای شکستن رمز عبور استفاده می‌کند:

  • Wordlist Mode: حمله دیکشنری.

  • Single Crack Mode: تلاش برای کرک رمز عبور با استفاده از نام کاربری و دیگر اطلاعات مرتبط.

  • Incremental Mode: حالت Brute-Force که به تدریج طول و پیچیدگی رمز عبور را افزایش می‌دهد.

  • External Mode: استفاده از اسکریپت‌های خارجی برای تولید رمزهای عبور.

 

مثال کاربردی با John the Ripper:

 

فرض کنید یک فایل به نام passwd.txt دارید که شامل یک خط از فایل /etc/shadow لینوکس است:

user:$6$rounds=5000$saltsalt$h9pQ6.Gv.F3t4o5m6n7l8k9j0i1h2g3f4e5d6c7b8a9z0y1x2w3v4u5t6s7r8q9p0:$1$somesalt$ABCDEF0123456789/

برای کرک این هش با استفاده از حمله دیکشنری و فایل wordlist.txt:

Bash

 

john --wordlist=wordlist.txt passwd.txt

توضیح دستور:

  • --wordlist=wordlist.txt: مسیر فایل دیکشنری را مشخص می‌کند.

  • passwd.txt: فایل حاوی هش(ها) که می‌خواهید کرک کنید.

John the Ripper به طور خودکار نوع هش (در اینجا SHA-512 crypt) را تشخیص داده و شروع به تلاش برای کرک آن می‌کند. اگر رمز عبور پیدا شود، JtR آن را نمایش می‌دهد. برای مشاهده رمزهای عبور کرک شده در هر زمان:

Bash

 

john --show passwd.txt

 

مقایسه Hashcat و John the Ripper:

 

ویژگی Hashcat John the Ripper
سرعت برتری قابل توجه با استفاده از GPU بیشتر متمرکز بر CPU، نسخه GPU هم دارد
پشتیبانی هش بسیار گسترده و تخصصی بسیار گسترده و عمومی
کاربری نیاز به درک بیشتر از انواع هش و سوییچ‌ها کاربرپسندتر، تشخیص خودکار هش
تطبیق‌پذیری تخصصی‌تر در حملات پیشرفته عمومی‌تر، پشتیبانی از فرمت‌های ورودی مختلف
پلتفرم ویندوز، لینوکس، macOS (با درایورهای مناسب) ویندوز، لینوکس، macOS و یونیکس
بهترین برای کرک هش‌های با سرعت بالا، حملات GPU-intensive کرک عمومی، تست نفوذ، تشخیص هش خودکار

 

ملاحظات اخلاقی و امنیتی:

 

استفاده از ابزارهایی مانند Hashcat و John the Ripper می‌تواند بسیار قدرتمند باشد و مانند هر ابزار قدرتمند دیگری، می‌تواند برای اهداف خوب یا بد مورد استفاده قرار گیرد.

  • استفاده مجاز و قانونی: این ابزارها باید فقط با اجازه صریح و کتبی مالک سیستم یا شبکه مورد استفاده قرار گیرند. استفاده بدون مجوز ممکن است عواقب قانونی جدی به دنبال داشته باشد.

  • تست نفوذ و امنیت: استفاده اصلی و اخلاقی این ابزارها در زمینه تست نفوذ و افزایش امنیت سیستم‌ها است. متخصصان امنیت از آن‌ها برای شناسایی نقاط ضعف در سیاست‌های رمز عبور و آموزش کاربران استفاده می‌کنند.

  • تقویت رمزهای عبور: آگاهی از نحوه عملکرد این ابزارها به کاربران و مدیران سیستم کمک می‌کند تا رمزهای عبور قوی‌تر و سیاست‌های امنیتی بهتری را اتخاذ کنند. استفاده از رمزهای عبور طولانی، پیچیده، و منحصر به فرد برای هر سرویس، همراه با فعال‌سازی احراز هویت دو مرحله‌ای (MFA)، از بهترین راه‌ها برای دفاع در برابر حملات کرکینگ است.

 

نتیجه‌گیری:

 

Hashcat و John the Ripper دو سنگ‌بنای اساسی در جعبه ابزار هر متخصص امنیت سایبری هستند. در حالی که Hashcat با تکیه بر قدرت GPU خود، در سرعت خام و کرک حجم عظیمی از هش‌ها برتری دارد، John the Ripper با انعطاف‌پذیری، تشخیص خودکار هش، و کاربرد آسان‌تر، به عنوان یک ابزار همه‌کاره و قابل اعتماد شناخته می‌شود. درک نحوه عملکرد این ابزارها نه تنها برای مهاجمان بلکه برای مدافعان نیز حیاتی است تا بتوانند دفاعی قوی‌تر در برابر تهدیدات سایبری ایجاد کنند. با پیشرفت تکنولوژی و پیچیده‌تر شدن حملات، اهمیت این ابزارها و دانش استفاده صحیح از آن‌ها بیش از پیش مشهود خواهد بود.

 

 
 
لینک استاندارد شده: RktV0n

0 نظر

    هنوز نظری برای این مقاله ثبت نشده است.