کشف گذرواژه

در رمزنگاری و امنیت رایانه ای، کشف رمز عبور (به انگلیسی: Password Cracking) همان فرایند بازیابی رمز عبور از داده‌های رایانه ای که توسط سیستم‌های رایانه ای ذخیره یا منتقل شده‌اند می‌باشد. یکی از رویکردهای رایج در رمزنگاری حدس رمز عبور برای دفعات متعددوچک کردن آن با کلید واژه ساخته شده توسط تابع در همسازی می‌باشد.
هدف از شکستن رمز عبور ممکن است برای کمک به کاربری باشد که رمز عبور خود را فراموش کرده و خواهان بازیابی آن می‌باشد. (با نصب یک رمز عبور کاملاً جدید که خطر امنیتی کمتری دارد) برای جلوگیری ازدستیابی غیرمجاز به یک سیستم به عنوان یک اقدام پیشگیرانه که توسط مدیران سیستم system administrator در بررسی کلمات رمز عبور صورت می‌گیرد.

زمان مورد نیاز برای جستجوی رمز عبور

زمان شکستن رمز عبور به قدرت رمز عبور که همان آنتروپی رمز عبور می‌باشد ونحوه ذخیره رمز عبور بستگی دارد. اکثر روش‌های شکستن رمز عبور نیاز به برنامه‌های کامپیوتری برای تولید بسیاری از کلمات عبوری نامزد برای چک کردن با کلیدواژه ساخته شده توسط هش مورد نظر دارد و تا زمانی که برنامه موفق به یافتن رمز عبور شود هر کلیدواژه کاندید برای رمز عبور راامتحان می‌کند.
روش‌های رایج شکستن رمز عبور مانند: روش جدول رنگین کمان(Rainbow Table) , استخراج از فرهنگ لغت (Dictionary Attack) , حمله اجباری(Brute_force) , بررسی الگوهای رایج کدگذاری , جایگزینی لیست کلمات و غیره برای کاهش دفعات آزمایش مورد نظر قبل ازشروع به استفاده ازالگوریتم کرک رمز عبور توسط سورس کد کشف پسورد صورت می‌گیرد.
هرچه قدر قدرت رمز عبور (تعداد بیت‌های پسورد) بیشتر باشد تعداد کلید واژه‌های کاندید افزایش می‌یابد و امکان استخراج پسورد توسط هکرها کاهش می‌یابد.
توانایی شکستن رمز عبوربا استفاده ازالگوریتم‌های کرک پسورد وابسته به تعداد بیت‌های احتمالی رمز عبور دارد.
اگر کلیدواژه ساخته شده توسط تابع در همسازی در دسترس هکر باشد می‌تواند میلیاردها یا ترلیون بار در ثانیه حتی به صورت افلاین حمله خود را صورت دهد.
تعداد و مدت زمان این حملات تا یافتن پسورد مورد نظر بستگی به محدودیت‌های اعمال شده بر روی الگوریتم هش نرم‌افزار کرک پسورد دارد.
با توجه به نوع الگوریتم نرم‌افزار عدم پذیرش پسوردهای کاندید و قفل کردن رمز عبور توسط برنامه اغلب بستگی به تأخیر در زمان وارد کردن رمز عبور CAPTCHAS و تعداد پسوردهای وارد شده نادرست به سیستم دارد.
روش مناسب دیگری که امکان حدس زدن رمز عبور را سرعت می‌بخشد استفاده از رمز عبور نهفته یا Cryptographic key می‌باشد.
در چنین مواردی یک هکر به سرعت می‌تواند در صورت درست بودن رمز عبورحدس زده شده داده‌های رمزگشایی شده کاربر را با پسورد جدیدمجداد قفل کند.
قدرت یک رمز عبور بستگی زیادی به عملکرد الگوریتم تابع هش استفاده شده برای تولید رمز عبور دارد.
در عمل رمزگذاری توابع هشی همانند bcrypt که در مدیریت حریم شخصی یک کاربر بسیار بهتر از توابعی از قبیل MD5 و SHA عمل می‌کند.
براساس قواعد NIST پسوردهای انتخابی یک کاربر می‌تواند هشت کاراکتری به صورت ترکیبی از اعداد، نمادها یا گذر واژه‌های معمول انتخاب شده ویا موارد موجود در فرهنگ لغت‌های فیلتر شده در الگوریتم کد باشد وتاحدود ۳۰ بیت برسد.
اگر چندین تابع هش برای بازگردانی هش تولیدشده به رمز اولیه وجود داشته باشد پسورد مورد نظر در عرض چند ثانیه رمزگشایی می‌شود.
اگر چندین رایانه شخصی به‌طور هم‌زمان شروع به حمله برای شکستن یک رمز عبورکنند توانایی کرک پسورد به میزان قابل توجهی بیشتر از انجام این عمل توسط botnet می‌شود.
پردازنده‌های گرافیکی می‌توانند در مقایسه با رایانه‌های معمولی ۵۰ تا ۱۰۰ برابر سرعت کرک پسورد را افزایش دهند.
با وجودتوانایی‌های بالای پردازش گرهای کامپیوترهای دسکتاپ در تسریع رمزنگاری امادر مقایسه با دستگاه‌هایی که با اهداف رمزنگاری ساخته شده‌اند بسیار آهسته‌تر عمل می‌کنند.
در سال ۱۹۹۸ بنیاد Electeronic frontier foundation در مقایسه با اهداف معمول CPUهایک ابزار رمزنگاری را با استفاده از مدارهای ASIC ایجاد کرد.
دستگاه‌های Deep crack یک کلید DES پنجاه وشش بیتی را در عرض ۵۶ ساعت کرک کرده وبه‌طور میانگین ۹۰ میلیارد کلید واژه را آزمایش می‌کنند.

راحتی در یادآوری و سختی در حدس زدن

رمز عبورهایی که یاداوری آن‌ها دشوار به نظر می‌آید ممکن است امنیت یک سیستم را کاهش دهد. زیرا ممکن است کاربر نیاز به به نوشتن رمز عبور پیدا کند ویااز طریق روش‌های نامناسب ان راذخیره سازی کند. همچنین امکان نیاز به بازنشانی مجدد ویا استفاده مکرر از یک رمز عبور وجود دارد.
استفاده از حروف کوچک وبزرگ ویا عباراتی که به صورت ترکیب ارقام وحروف وجود داردویا تغییر رمز عبور به صورت ماهانه باعث می‌شود خطر لو رفتن واستخراج رمز عبور توسط هکرها کاهش و در مقابل امکان فراموش شدن ان توسط کاربر وکاهش سیستم امنیتی پسورد افزایش یابد.
در روش به کار گرفته شده برای افزایش امنیت گذرواژه توسط Jeef yan او وهمکارانش متوجه شدندکه براساس یک تفکر عبارات گذر واژه و پسورد به همان اندازه قابل یا آوری هستند که اولین حروف آن‌ها قابل یاداوری باشد وهمان اندازه سخت هستند که در صورتی که کلمات وحروف رمز عبور به صورت تصادفی ایجاد شوند.
ازجمله روش‌های کارامد پیشنهاد شده توسط آن‌ها عبارتند از:به‌کارگیری ترکیبی از دوواژه غیر مرتبط، داشتن الگوریتم شخصی طراحی شده برای تولیدیک عبارت مبهم می‌باشد.
قابل به ذکر است که کرک شدن یک رمز عبور ۷ کلمه ای تقریباً ۱۲۸ بار سخت تراز زمانی است که یکی از حروف ان حذف شده باشد.
تحقیقات صورت گرفته در یک مقاله در سال۲۰۱۵ توسط یکی از اساتید دانشگاه carnegie mellon نشان می‌دهد که مردم معمولاً برای انتخاب یک رمز عبور از الگوهایی با ساختار ویژه شناخته شده‌استفاده می‌کنند که در نتیجه رمز عبور مورد نظر براساس احتمالات به مراتب راحت‌تر شکسته خواهد شد.

آشنایی با شیوه رمزگذاری Salting وHashing

این متدها روش‌های رایج برای رمز گذاری کلمات عبوری برای کاهش خطر استخراج رمز عبور به وسیله هکر هادر پایگاه‌های دادهای بزرگ می‌باشد.
اگر این پایگاه‌های داده‌ای بدون دقت وملاحظه ذخیره شوند تبدیل به دیتابیس‌های بسیار آسیب‌پذیر شده داده‌های موجود در آن‌ها به سادگی قابل استخراج می‌گردد.
این روش‌ها تضمین می‌کند که حتی اگر یک هکر بتواند یک پایگاه داده‌ای را به دست بگیرد به سادگی قادر نخواهد بود کدهای قرار داده شده بر روی داده‌ها را در هم شکسته و به دیتاها دسترسی پیدا کند.
Salting: به فراینداضافه کردن یک رشته از کاراکترها به یک رمز عبور گفته می‌شود. به عنوان مثال یک کلمه رمز عبور مثل woodi به woodi3ab9
تبدیل می‌شود.
Hashing: فرایند رمزگذاری بر روی پسورد Salt شده توسط یه تابع درهمسازی گفته می‌شود؛ بنابراین woodi3ab9 به 39e19b234 تبدیل می‌شود.
ازجمله برنامه‌های محبوب در این زمینه SHA_1 , MD5 ,SHA_384 ,SHA_512 می‌باشد.

راه‌های پیشگیری

بهترین روش برای جلوگیری از کرک شدن پسورد این است که راهکاری برای جلوگیری از به دست آوردن هش یک پسورد توسط هکرها پیدا کنیم.
به عنوان مثال در سیستم عامل یونیکس رمزهای عبور در فایل‌های پنهان /etc/passwd ذخیره شده‌اند که فقط برای برنامه‌های در حال اجرایی که در سیستم عامل از امتیاز بیشتری در حوزه امنیتی برخوردارند قابل دسترسی می‌باشد.
این روش امنیتی باعث می‌شودتا به دست آوردن هش یک پسورد از طریق یک کاربر مخرب (هکر) برای دفعات اولیه حمله به مراتب سخت‌تر باشد.
با این وجود بسیاری از مجموعه‌های هش رمز عبور با وجود چنین محافظت امنیتی توسط هکرها سرقت شده‌اند.
یک رویکرد قوی دیگر ترکیب کلید مخفی یک سایت با هش یک رمز عبور می‌باشد. این کار مانع از دستیابی سریع به رمز عبور می‌شود.
رویکرد سوم این است که از توابع مشتق کلید استفاده کنیدکه سرعت حدس رمز عبور را کاهش می‌دهند.
متأسفانه بسیاری از پروتکل‌های شبکه‌های معمولی کلمات رمز عبور را به صورت واضح ارسال ویا از طرح‌های چالشی ضعیف استفاده می‌کنند.
Unfortunately, many common Network Protocols transmit passwords in cleartext or use weak challenge/response schemes.
سیستم‌های مدرن یونیکس (Crypt function Hash) رمزعبورهای مبتنی بر DES را با روش‌های قوی تری مانند bcrypt و scrypt جایگزین کرده‌اند.
بسیاری از هش‌های ذخیره شده برای رمز عبور مانند MD5 وخانواده SHA برای محاسبات سریع و اجرای کارآمد در سخت‌افزارها طراحی شده‌اند. در نتیجه، آن‌ها در جلوگیری از هک رمز عبور، به ویژه با روش‌هایی مانند جداول رنگین کمان بی اثر هستند.
بااستفاده از الگوریتم‌های کشش کلیدی مانند PBKDF2 برای ایجاد هش‌های رمزنگاری می‌توان به میزان قابل توجهی توانایی تست کردن رمزهای عبور را توسط یک کاربر مخرب کاهش داد.

شکستن پسورد به صورت دستی

شکستن پسورد به صورت دستی نیازمند تلاش برای لاگین با پسوردهای مختلف است. به این منظور هکر مراحل زیر را پیگیری می‌کند:
پیداکردن یک یوزر اکانت مناسب (مثلاً اکانت administrator یا اکانت Guest)
ایجاد یک لیست از پسوردهای ممکن
رتبه‌بندی پسوردها بر اساس اولویت
تست کردن هر پسورد
ادامه این پروسه تا پیدا کردن یک پسورد موفق
یک هکر همچنین می‌تواند یک فایل اسکریپت را ایجاد کند تا هر پسورد موجود در لیست را تست کند. با این حال این شیوه هنوز یک متد دستی محسوب می‌شود و زمان بر است و معمولاً مؤثر نیست. یک راه مؤثرتر کرکینگ دستیابی به فایل پسورد در یک سیستم است. بیشتر سیستم‌ها یک پسورد را در سیستم به صورت هش شده (رمزنگاری یک طرفه) ذخیره می‌کنند.
در طی پروسه لاگین پسوردی که توسط کاربر وارد می‌شود، توسط همان الگوریتم هش می‌شود و سپس با پسوردهای هش شده در داخل فایل SAM ذخیره شده بر روی سیستم مقایسه می‌شود. هکر می‌تواند به جای حدس پسورد یا تلاش برای شناسایی پسورد سعی کند که به الگوریتم هش شده بر روی سرور دسترسی پیدا کند. اگر این پروسه با موفقیت همراه شود سپس هکر می‌تواند پسوردهای ذخیره شده را رمزگشایی کند.
یادداشت: پسوردها در فایل (Security Accounts Manager (SAM در سیستم ویندوز و در فایل Password Shadow در سیستم لینوکس ذخیره‌سازی می‌شود.

کرک کردن رمز عبور به روش GPU

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

روش Brute Force Password Cracking

اصطلاح brute force password cracking با عنوان brute force attack نیز به‌کار می‌رود. Brute force password cracking فرایندی است که از آن برای حدس کلمات عبور استفاده می‌شود. در این فرایند نرم‌افزار یا ابزار ترکیب‌های متعددی از کلمات عبور ایجاد می‌کند. اساساً نرم‌افزار از تکنیک آزمون و خطا به منظور بدست آوردن اطلاعات رمزعبور سیستم استفاده می‌کند.
brute force attack معمولاً زمانی که هیچ شانسی برای سوءاستفاده از نقاط ضعف سیستم رمزگذاری توسط هکرها یا توسط کارشناسان تجزیه و تحلیل به منظور تست امنیت شبکه، مورد استفاده قرار می‌گیرد. این روش برای پسوردهایی با طول کوتاه بسیار سریع و کاربردی است اما برای پسوردهای طولانی معمولاً از روش dictionary attack استفاده می‌شود.
زمان مورد استفاده توسط نرم‌افزار brute force password cracking برای کرک کلمات عبور معمولاً به سرعت سیستم و اینترنت بستگی دارد.

John the Ripper: ابزار مولتی پلتفرم برای کرک پسورد

John the Ripper، نرم‌افزاری رایگان با قابلیت اجرا روی پلتفرم‌های مختلف است که از آن برای کرک رمزعبور استفاده می‌شود. این نرم‌افزار ترکیب‌های مختلفی از پسوردهای کرک شده را در قالب یک بسته جمع‌آوری کرده و به همین دلیل این نرم‌افزار، یک نرم‌افزار مولتی پلتفرم است.
این نرم‌افزار برای کرک رمزهای عبور ضعیف در سیستم عامل یونیکس، مورد استفاده قرار می‌گیرد اما می‌توان از آن برای کرک پسورد سیستم‌عامل‌های لینوکس، مک و ویندوز نیز استفاده کرد. می‌توانیم از این نرم‌افزار برای کرک رمزهای عبور مختلف مانند رمز عبور رشته‌های هش که معمولاً در نسخه‌های مختلف یونیکس استفاده می‌شود، استفاده کرد. این رشته‌ها شامل DES، رشتهٔ هش LM در ویندوزهای NT/2000/XP/2003، MD5 و AFS هستند.