در ادامه با ما باشید تا با حملات بروت فورس بیشتر آشنا شوید.
پیش از توضیح دادن حملات بروت فورس که خود نوعی از حملات کرکینگ است، ابتدا توضیح مختصری درباره حملات کرکینگ بدهیم. در حملات کرکینگ (Cracking) هکر با استفاده از ابزارهای مخصوص در تلاش برای یافتن مقدار اولیه یک عبارت رمزگذاری شده و یا پیدا کردن یک مقدار حساس مثلاً رمز عبوری است که حتی عبارت رمزگذاری شده آن را هم در دست ندارد.
حملات کرکینگ اغلب از الگوی خاصی پیروی نکرده و با بررسی همه احتمالات موجود و یا مقادیری که احتمال صحیح بودن آنها بیشتر است، انجام میپذیرد از این رو حملات کرکینگ را به بخشهای مختلفی تقسیم کرده اند. دو مورد از مهترین اینها حملات دیکشنری (Dictionary) و حملات بروت فورس (Brute Force) است.
اگر علاقه مند به مباحث هک و امنیت باشید حتماً حملات بروت فورس (که بعضیها به آن بروث فورس هم میگویند) برایتان آشناست. بروت فورس نوعی از حملات کرکینگ است که هکر در آن از ابزاری استفاده میکند تا با بررسی همه احتمالات موجود، موفق به یافتن مقدار پیش از رمزگذاری شده یا مقدار حساسی مانند رمز عبور یک سایت شود. چون در حملات بروت فورس همه احتمالات بررسی میشود، این نوع کرکینگ برای عباراتی با اندازه بیش از ۵-۶ کاراکتر (برای کامپیوترهای عادی) پرهزینه و بی ارزش خواهد بود.
بگذارید مثالی بزنیم تا برایتان مشخص کنیم چقدر این فرایند میتواند برای هکر پرهزینه باشد:
مثلاً هکر Handshake یک شبکه وای فای که از امنیت WPA یا WPA2 استفاده میکند را بدست آورده است. حال که در هندشیک هکر مقدار رمزگذاری شده رمز شبکه WiFi را در دست دارد، اقدام به بروت فورس کردن آن در سیستم خود یا یک سیستم قدرتمند مانن VPSها ویا سرورهای اختصاصی میکند.
چون هکر مقدار رمزگذاری شده را در دست دارد، به این نوع حمله، بروت فورس آفلاین گفته میشود. روش کار هکر به این صورت خواهد بود که ابتدا اقدام به بررسی همه احتمالات و ترکیبهای موجود ۸ رقمی میکند. چون حداقل تعداد کاراکتر رمز وای فای باید ۸ کاراکتر باشد. در حمله بروت فورس هکر کاراکترها را مشخص کرده سپس اقدام به کرک کردن آن مقدار رمزگذاری شده میکند. برای مثال از عبارت ۰۰۰۰۰۰۰۰ شروع کرده و بعد ۰۰۰۰۰۰۰۱ و ۰۰۰۰۰۰۱۱ و ... و ۹۹۹۹۹۹۹۸ و ۹۹۹۹۹۹۹۹ را امتحان میکند حال که ترکیبات فقط عددی ۸ رقمی تمام شده سراغ ترکیبات حروفی میرود. مثلاً از aaaaaaaa شروع کرده و تا zzzzzzzz ادامه میدهد. رمزها بصورت اسکی هستند پس ممکن است حروف بزرگتر هم استفاده شوند پس اینبار شروع به کرک کردن حروف بزرگ از AAAAAAAA تا ZZZZZZZZ میکند. حال ممکن است رمز وای فای ترکیبی از حروف کوچک، بزرگ و اعداد باشد! و حتی یک رمز قویتر، از کاراکترهای مخصوص مانند @ هم استفاده شود.
در هربار رمزگذاری کردن یک عبارت، مقدار رمزگذاری شده جدید با مقدار رمزگذاری شده در هندشیک شبکه وای فای مقایسه میشود. هر گار که هر دو مقدار یکی بود، یعنی رمز وای فای همان است اما اگر مقادیر یکی نباشند، سراغ ترکیب بعدی میرود.
نکته: هکرها برای کرک کردن رمزهای وای فای معمولاً از روش دیکشنری استفاده میکنند. اگر از این روش نتیجه ای نگرفتند، سراغ روش بروت فورس با کاراکترهای ساده مثلاً ۰ تا ۹ میروند. این مثال فقط برای این است که درک کنیم یک حمله بروت فورس چگونه انجام میگیرد.
همانطور که خودتان هم حدس زده اید کرک کردن چنین رمزهای ۸ رقمی که ۹۶ کاراکتر مختلف میتواند داشته باشد آسان و سریع نخواهد بود. کرک چنین رمزهایی ممکن است از یک ثانیه تا صدها قرن به طول بینجامد! با این که امکان یافتن رمز اصلی در بروت فورس ۱۰۰% است اما به قدری از منابع کامپیوترها استفاده خواهد شد و به قدری زمان خواهد برد که برای چنین رمزهایی باید بیخیال بروت فورس شویم.
حملات بروت فورس اما برای رمزهایی که فقط از اعداد یا کاراکترهای کمی استفاده شده باشد بسیار موثر خواهد بود. مثلاً یک رمز ۸ رقمی که از اعداد ۰-۹ استفاده شده است میتواند در کمتر از یک روز با یک کامپیوتر عادی کرک شود. به علاوه این متد برای رمزهایی با طول حدود ۵ و کمتر نیز بسیار مقرون به صرفه و کاربردی خواهد بود. مثلا اگر یک رمز ۵ کاراکتر با همه ۹۶ کاراکتر ممکن وجود داشته باشد، میتواند در کمتر از ۱۰ روز کرک شود.
شاید به نظر بیاید که انجام بروت فورس با پردازنده اصلی یا CPU انجام میگیرد و این روش بهینهای است. با این که استفاده از CPU برای کرک کردن برخی از الگوریتمهای رمزگذاری بهینه است اما برای بیشتر الگوریتمها کرک کردن با استفاده از پردازندههای گرافیکی (GPU) بسیار سریع تر و کم هزینه تر خواهد بود.
ما در پردازندههای اصلی تنها چندین هسته داریم که در یک لحظه میتوانند تنها یک حالت را امتحان کنند اما در پردازندههای گرافیکی با صدها و گاهاً هزاران هسته پردازشی داریم که در یک لحظه میتوانند بسیار بسیار بهینه تر و پر سرعت تر از پردازنده اصلی اقدام به کرک کردن کنند. البته این موضوع برای همه الگوریتمهای رمزگذاری صدق نمیکند.
در این نوع حملات هکر بجای این که مثلاً سراغ یک کاربر خاص در یک سایت برود و رمزهای متعدد را برای آن اکانت تست کند، لیست کاربران را بدست آورده و با انجام یک حمله بروت فورس برعکس با در نظر داشتن یک یا چندین رمز پر استفاده، همه کاربران آن سایت یا گروه خاصی را با آن رمز(ها) امتحان میکند.
این یک روش بسیار موثر برای وقتی است که یک سایت یا سرویس که مخاطبان زیادی دارد بجای یک کاربر خاص، توسط هکر هدف قرار گرفته است. به همین دلیل است که همیشه بهتر است رمزهای غیرقابل حدس زدن و با کاراکترهای بلند بسازیم حتی اگر اکانت ما شناخته شده نباشد.