شناسایی و شکستن انواع هش ها
روش های شناسایی و کرک کردن انواع هش ها
اعداد هگزا دسیمال عبادتند از 0،1،2،3،4،5،6،7،8،9 و a،b،c،d،e،f که هر عدد هگزا دسیمال ۴ بیت است. برای مثال رشته “a26fe” که شامل ۵ عدد هگزادسیمال میباشد نشان دهنده ۴*۵=۲۰ بیت میباشد.
حال رشته “۵۱۸۷۹۴۲d399d4ed244068db70a11319e” را در نظر بگیرید که شامل ۳۲ عدد هگزادسیمال میباشد پس ۳۲*۴=۱۲۸ بیت میباشد. از این رو میتوان از روی یک هش تعداد بیت های ان را محاسبه کرد. حالا در لیست زیر انواع هش ها به همراه چند بیتی بودن انها را مشاهده میکنید:
Name Length
MD2 ۱۲۸ bits
MD4 ۱۲۸ bits
MD5 ۱۲۸ bits
MD6 Up to 512 bits
RIPEMD-128 ۱۲۸ bits
RIPEMD-160 ۱۶۰ bits
RIPEMD-320 ۳۲۰ bits
SHA-1 ۱۶۰ bits
SHA-224 ۲۲۴ bits
SHA-256 ۲۵۶ bits
SHA-384 ۳۸۴ bits
SHA-512 ۵۱۲ bits
SHA-3 (originally known as Keccak) arbitrary
Tiger ۱۹۲ bits
Whirlpool ۵۱۲ bits
بنابراین طول بیت هدف ما ۱۲۸ بیت است و طبق جدول بالا، می توان هر یک از این ۴ هش را داشته باشد:
(MD2 (Designed in 1989
(MD4 (Designed in 1990
(MD5 (Designed in 1991
(RIPEMD-128 (Designed in 2004
همانطور که می بینید، MD5 جدیدترین هش ۱۲۸ بیتی در رده MD است، بنابراین درحال حاظر هیچ کس از MD2 و MD4 استفاده نمیکند. بنابراین می توان حدس زد که بیشتر هش ها یک MD5 یا یک RIPEMD-128 است. حالا شاید سوال باشد که کدام برنامه این هش را تولید کرده است؟ من این هش را از یک پایگاه داده MySQL در هنگام انجام حمله SQL Injection به دست اوردم
در حال حاضر شاید برای تازه کارها تشخیص نوع هش کمی سخت باشد اما من می دانم که سیستم مدیریت پایگاه داده MySQL معمولا کلمه عبور را به عنوان هش MD5 ذخیره می کند همچنین ویندوز با استفاده از الگوریتم هش NTLM، لینوکس از MD5، SHA-256 یا SHA-512، Blowfish و غیره استفاده می کند و ماریا DBMS از MD5 یا SHA-1 استفاده می کند.
شناسایی نوع هش ها
بنابراین میتوان نتیجه گرفت که با دیدن طول هش، میتوان نوع آن را تشخیص داد. شما میتوانید از وبسایت های انلاین تشخیص هش نیز استفاده کنید. یا اگر به صورت دقیق تر میخواهید، میتوانید از ابزار قوی “Hash-identifier” استفاده کنید.
کاربران لینوکس می توانند ابزار Hash-identifier را از طریق دستور زیر در ترمینال نصب کنند (این ابزار به صورت پیشفرض در لینوکس های مخصوص تست نفوذ مانند توزیع پروت و کالی لینوکس وجود دارد.)
apt-get install hash-identifier
همچنین اگر از سیستم ویندوزی استفاده میکنید، میتوانید آن را از گیت هاب دانلود و نصب کنید.
بعد از اجرا این ابزار، از شما میخواهد که هش خود را وارد کنید. بعد از وارد کردن هش، نوع hash را برای شما نشان میدهد که نتیجه های بسیار خوبی را میتوان به دست اورد.
کرک کردن انواع هش ها
اگر بخواهم یکی از ابزارهای مورد علاقه ام را در این زمینه برای شما معرفی کنم قطعا این ابزار Findmyhash میباشد.
البته روش های راحت تری هم وجود دارد مانند وبسایت های crackstation.net و hashkiller.co.uk که دارای پایگاه داده ای بزرگ از هش ها هستند و شما می توانید چک کنید که آیا هش های تارگت شما در پایگاه داده این وبسایت ها وجود دارند یا خیر.
![شناسایی و کرک انواع هش ها شناسایی و کرک انواع هش ها](https://zoomtar.ir/wp-content/uploads/2023/04/hash.kaliboys-1024x473.png)
FindMyHash یک اسکریپت پایتون است که هشهای هدف خود را میگیرد و ۴۰ سایت مختلف را برای crack کردن هش ها بررسی می کند. بنابراین فقط کافی است که شما هش خود را ارسال کنید و بجای چک کردن تک تک این سایت ها، به صورت یکجا همه انها را بررسی کنید.
آیا هشها در برابر حملات با استفاده از ترکیبی از این روشها کاملاً ایمن هستند؟
استفاده از ترکیبی از روشهای امنیتی برای جلوگیری از کرک کردن هشها، برای افزایش امنیت هشها بسیار مفید است. با این حال، باید توجه داشت که هیچ روش امنیتی به طور کامل از حملات کرک هشها جلوگیری نمیکند. به عنوان مثال، حملات با استفاده از تکنیکهای Brute Force و Dictionary Attack همچنان میتوانند به صورت موفقیتآمیزی انجام شوند، اگر پسوردها ضعیف باشند.
بهترین راه برای جلوگیری از حملات کرک هشها، انتخاب روشهایی است که بهترین امنیت را فراهم کنند و با استفاده از ترکیبی از این روشها، امکان کرک شدن هشها را به حداقل برسانند. همچنین، استفاده از پسوردهای قوی و پیچیده و تغییر آنها به صورت دورهای، نیز به افزایش امنیت هشها کمک میکند.
نصب ابزار FindMyHash در لینوکس
برای نصب این ابزار میتوایند از دستور زیر استفاده کنید:
apt-get install findmyhash
همچین برای دانلود این ابزار میتوانید از لینک github استفاده کنید.
دستور اجرای این ابزار به صورت زیر میباشد:
<findmyhash <algorithm> -h <hash
برای مثال هش “۸۲۷ccb0eea8a706c4c34a16891f84e7b” را در نظر بگیرید. که میخواهیم توسط این ابزار کرک کنیم.
findmyhash MD5 -h 827ccb0eea8a706c4c34a16891f84e7b
همچنین میتوانید از دستور زیر استفاده کنید:
findmyhash MD5 -h 827ccb0eea8a706c4c34a16891f84e7b -g
که ارگمان -g گوگل را نشان می دهد. بنابراین اگر این ۴۰ وب سایت در شکست هش شما ناموق بود، FindMyHash آخرین تلاش را با جستجو هش در Google انجام می دهد.
ابزار FindMyHash از هش های زیر پشتیبانی میکند:
MD4 – RFC 1320
MD5 – RFC 1321
(SHA1 – RFC 3174 (FIPS 180-3
(SHA224 – RFC 3874 (FIPS 180-3
SHA256 – FIPS 180-3
SHA384 – FIPS 180-3
SHA512 – FIPS 180-3
RMD160 – RFC 2857
GOST – RFC 5831
WHIRLPOOL – ISO/IEC 10118-3:2004
LM – Microsoft Windows hash
NTLM – Microsoft Windows hash
MYSQL – MySQL 3, 4, 5 hash
CISCO7 – Cisco IOS type 7 encrypted passwords
JUNIPER – Juniper Networks $9$ encrypted passwords
LDAP_MD5 – MD5 Base64 encoded
LDAP_SHA1 – SHA1 Base64 encoded
توجه: FindMyhash تنها از وب سایت هایی استفاده می کند که اجازه انجام این کار را می دهند. بنابراین شما باید سایت هایی مانند Crackstation را نیز امتحان کنید زیرا آنها در FindMyHash گنجانده نشده اند.
آیا تغییر دادن پسوردها به صورت دورهای میتواند به افزایش امنیت کمک کند؟
بله، تغییر دادن پسوردها به صورت دورهای میتواند به افزایش امنیت کمک کند. این امر به دلیل این است که با تغییر دادن پسورد، احتمال اینکه یک حمله کرک شده بتواند از همان پسورد برای ورود به سیستم استفاده کند، به شدت کاهش مییابد.
به طور معمول، توصیه میشود که پسوردها به صورت دورهای تغییر داده شوند، به طوری که پسوردهای جدید قویتر و پیچیدهتر باشند. بهترین روش برای اینکه کاربران پسوردهای قوی و پیچیده انتخاب کنند، این است که از آنها بخواهید که از یک رمز عبور تصادفی استفاده کنند و از آنها بخواهید که پسورد جدید را به صورت دورهای تغییر دهند.
به هر حال، تغییر دادن پسوردها تنها یکی از روشهایی است که برای افزایش امنیت سیستم میتوان استفاده کرد و باید با ترکیبی از روشهای دیگر، همچون استفاده از الگوریتمهای پیچیده برای تولید هشهای امنتر، احراز هویت دو مرحلهای و سولتینگ هشها، امنیت سیستم را تقویت کرد.
چه روشهای دیگری برای افزایش امنیت سیستم وجود دارد؟
برای افزایش امنیت سیستم، میتوان از روشهای زیادی استفاده کرد. در زیر به برخی از این روشها اشاره میکنم:
1. الگوریتمهای پیچیده برای تولید هشهای امنتر: با استفاده از الگوریتمهای پیچیده و امن، میتوان هشهایی با طول بلندتر و مقاومت بیشتری در برابر حملات کرک تولید کرد.
2. استفاده از الگوریتمهای رمزنگاری قوی: استفاده از الگوریتمهای رمزنگاری قوی، مانند AES و RSA، میتواند در امنیت سیستم تأثیرگذار باشد.
3. احراز هویت دو مرحلهای: با استفاده از احراز هویت دو مرحلهای، مانند ارسال کد تأییدیه به تلفن همراه کاربر، میتوان از هک شدن حساب کاربری جلوگیری کرد.
4. سولتینگ هشها: با استفاده از روش سولتینگ، میتوان از حملات با تکنیکهای Rainbow Table جلوگیری کرد.
5. محدود کردن تلاشهای ورود: با محدود کردن تعداد تلاشهای ورود ناموفق، به سیستم، میتوان از حملات با تکنیکهای Brute Force و Dictionary Attack جلوگیری کرد.
6. بهروزرسانی سیستم: بهروزرسانی سیستم و نرمافزارها به طور دورهای، میتواند از ثبات و امنیت سیستم پشتیبانی کند.
7. آموزش کاربران: آموزش کاربران در مورد روشهای امنیتی و مدیریت رمز عبور قوی، میتواند به افزایش امنیت سیستم کمک کند.
8. کنترل دسترسی: با کنترل دقیق دسترسی کاربران به منابع سیستم، میتوان از حملات داخلی جلوگیری کرد.
به طور کلی، استفاده از ترکیبی از این روشها میتواند به افزایش امنیت سیستم کمک کند و بهترین راه برای اینکه سیستم امن باشد، این است که بهصورت دورهای و مداوم اقدامات امنیتی لازم را انجام دهید.