حملات Brute Force یکی از رایج ترین حملات برای بدست آوردن امکان ورود می باشد و با ارسال و تست تعداد بالایی نام کاربری و رمز عبور بر روی صفحات لاگین وب سایت ها ، صفحه لاگین ایمیل و انواع صفحاتی که برای ورود به حساب کاربری هستند صورت می گیرد و هکر با این روش تمامی عبارت های ممکن را بررسی می کند تا امکان ورود را بدست بیاورد.
آشنایی با این نوع حملات برای تمامی مدیران وب سایت ها و افرادی که دارای رمز عبور و نام کاربری مهم در وبسایتی هستند لازم و ضروری است تا با شناخت این روش ها و نحوه مقابله با آنها وب سایت امن تری داشته باشند. بهمین دلیل در این مقاله به مفهوم Brute Force و راهکارهای جلوگیری از آن می پردازیم.
حمله Brute Force چیست؟
Brute Force یک اصطلاح عمومی برای حملاتی است که هکر ها سعی در یافتن نام کاربری و رمز عبور سایت را دارند. این نوع حمله برای سیستم های مدیریت محتوا (مانند وردپرس و جوملا و …) و سرویس های رایج مانند FTP و SSH شابع است.
راه های بسیاری برای انجام یک حمله Brute Force وجود دارد که رایج ترین روش حملات مبتنی بر دیکشنری (dictionary-based) میباشد. در این روش هکر ها از یک لیست که شامل رمز عبور های رایج یا رمزهایی که در طول سال های قبل با استفاده از آن ها به خیلی از سایت ها نفوذ نموده اند، استفاده کرده و هر رمز را برای نفوذ امتحان می کنند و اینکار را تازمانیکه ترکیب صحیح نام کاربری و رمز عبور سایت را کشف کنند ادامه میدهند. بطور کلی امتحان این ترکیب رمز و نام کاربری ها چند دقیقه بیشتر طول نخواهدکشید.
برای یک هکر، استفاده از صفحه Log IN میتواند یکی از بهترین وسیله ها برای سازمان دهی یک حمله باشد.( /wp-admin یا /wp-login برای وردپرس و یا administrator برای جوملا) پس برای شناسایی آنها و حملات به وب سایت ها، بدون شک استفاده از روش هایی که به مانیتورینگ این صفحات و تلاش های غیر منطقی برای ورود نام کاربری و رمز عبور کمک میکنند، میتواند مفید باشد.
حفاظت در برابر حملات Brute Force
حفاظت در برابر اینگونه حملات بسیار ساده است و با استفاده از رمز عبور های قوی برای کلیه کاربران سایت و کلیه رمزهای بخش مختلف امکانپذیر خواهد بود. با استفاده از رمز های قوی برای کلیه کاربران حمله BruteForce موفقیت آمیز نخواهد بود.
برای تعیین رمز های قوی می توانید از نرم افزار مدیریت پسورد استفاده کنید و با استفاده از این نرم افزارها رمزهای پیچیده و قوی تولید کنید.
اینگونه حملات ممکن است عوارض جانبی ناخواسته مانند مشکل در دسترسی به سایت و استفاده بیش از حد منابع و بالارفتن لود سرور را داشته باشند. حملات Brute Force بدلیل ارسال درخواست های زیاد در یک زمان به سرور باعث بالارفتن لود وب سرور و کندی بارگذاری سایت ها میشوند.
توجه داشته باشید حتی اگر بعنوان مثال کلیه کاربران رمز عبور قوی استفاده کنند اما در این بین یک حساب کاربری موقت یا تست دارای رمز ضعیفی باشد، همین یک اکانت نیز خطرناک خواهد بود. این رمز ممکن است توسط توسعه دهنده سایت یا مسئول بکآپ گیری و یا هر فرد دیگری تعیین شده باشد و ممکن است بصورت آزمایشی تعیین شده و قصد داشته باشد اکانت را حذف کند اما فراموش کرده، اما اثرات این فراموشی خطرناک می باشد.
روشهای عمومی بروتفورس
1-امتحان کردن دستی رمز عبور
در این روش هکر بهصورت دستی نام کاربری و رمز عبور فرم ورود را توسط روش آزمون و خطا بررسی میکند. در این روش با توجه به تنظیمات امنیتی، سایت هکر میتواند تا میزان مجازی برای آزمودن رمز عبور مورد نظر اقدام کند. این روش سادهترین راه برای کشف رمز عبور است که بیشتر به ضعف امنیت رمز عبور انتخابشده بستگی دارد.
2-روش Dictionary
حمله Dictionary را میتوان بهعنوان یک حمله Brute Force هوشمند تعریف کرد. این حمله از رمز عبوری که یک کلمه است و بتوان آن را در یک دیکشنری پیدا کرد استفاده میکند. تنها محدودیت واقعی که حمله Brute Force همیشه با آن مواجه بوده، زمان لازم برای پایان جستوجو و همچنین قدرت محاسباتی است. این روش یکی از معروفترین و پراستفادهترین راهها برای کشف رمز عبور ذخیرهشده در جدول دیتابیس سرور است.
در یک حمله Brute Force عادی، ما هر ترکیب احتمالی از اعداد، حروف و سمبلها را آزمایش میکنیم تا به کلمه عبور واقعی برسیم. در این روش، هکر با در اختیار داشتن میلیونها کاراکتر پیشنهادی برای امتحان در فرم ورود به پنل مدیریت و با استفاده از ابزارهای بروتفورس، به حمله به هدف مورد نظر خود اقدام میکند که یک پروسه زمانبر و طولانی بوده و با قدرت سختافزاری سیستم مخصوصا کارت گرافیک ارتباط کاملا مستقیم دارد. هر چقدرGPU قویتر باشد، روند انجام کار سریعتر است. در واقع هکر مانند یک فرد مسلح به سمت هدف با سرعت بالا شلیک میکند تا هدف مورد نظر آسیبپذیر شود.
حمله دیکشنری فقط در صورتی موفقیتآمیز خواهد بود که رمز عبور یک کلمه حقیقی باشد، مثلا afaghhost در نتیجه این نوع حمله با محدودیتهایی همراه است؛ چراکه اگر کاربر هوشمندی کرده و رمز عبور پیچیده و قوی انتخاب کرده باشد در این صورت کار هکر بسیار سخت و دشوار خواهد بود. این روش در برابر پسوردهای قوی که ترکیبی از کلمات و شمارهها و سمبلها هستند زیاد کارآمد نیست.
Mask Attack-3
درصورتیکه هکر رنج تعداد کاراکترهای رمز عبور را حدس بزند، این روش کارآمدترین راه محسوب میشود؛ چراکه با توجه به طولانی و زمانبر بودن پروسه حمله بروتفورس، کاهش میزان احتمالات باعث سرعتبخشیدن بهطرز چشمگیری به روند کار خواهد شد. همچنین درصورتیکه هکر کاراکترهای مشخصی از رمز عبور را تشخیص دهد، در این روش برای كشف بقيه کاراکترها امتحان خواهد کرد. به عنوان مثال هکر یقین دارد که مقدار ابتدایی رمز afaghhostاست، بنابرین توسط این روش بهدنبال کاراکترهای بعد از afaghhost میگردد. براي مثال، از afaghhost1000 تا afaghhost10000000 و کلیه اعداد در این رنج را توسط ابزار بررسی میکند یا هر نوع رنج و کاراکتری که هکر احتمال آن را بدهد.
Combination-4
هکر در این روش دو دیکشنری جداگانه را همزمان با یکدیگر مورد استفاده قرار میدهد و عبارات هر دیکشنری را با هم ترکیب و بررسی میکند و هر دو عبارت متناظر با یکدیگر ترکیب و مورد آزمایش قرار میگیرند. میزان ترکیب و رنج کاراکتر در این روش کاملا انعطافپذیر بوده و هکر قدرت انتخاب زیادی را دارد.
5-روش hybrid
این روش یکی از جدیدترین و کارآمدترین روشهای هک رمز عبور است که نهتنها عبارات حقیقی و تکی بلکه عبارات ترکیبی مانند اعداد، سمبلها و کاراکترهای ویژه را نیز شامل میشود و از قدرت مانور بیشتری برخوردار است. در واقع بسیاری از کاربران تصور میکنند صرفا با اضافه کردن عدد پس از نام خود، رمز عبور ایمن است، درصورتیکه هکر پس از ناموفق بودن در کشف رمز عبور توسط متد dictionary به روش hybrid یا دورگه روی میآورد که با اضافه کردن رنج اعداد مشخصی که توسط هکر انتخاب میشود و ترکیب علايم و سمبلهای مشخص اقدام به بررسی صحت رمز عبور خواهد کرد.
6-بروت فورس با کارتهای گرافیکی (GPU)
شاید به نظر بیاید که انجام بروت فورس با پردازنده اصلی یا CPU انجام میگیرد و این روش بهینهای است. با این که استفاده از CPU برای کرک کردن برخی از الگوریتمهای رمزگذاری بهینه است اما برای بیشتر الگوریتمها کرک کردن با استفاده از پردازندههای گرافیکی (GPU) بسیار سریع تر و کم هزینه تر خواهد بود.
ما در پردازندههای اصلی تنها چندین هسته داریم که در یک لحظه میتوانند تنها یک حالت را امتحان کنند اما در پردازندههای گرافیکی با صدها و گاهاً هزاران هسته پردازشی داریم که در یک لحظه میتوانند بسیار بسیار بهینه تر و پر سرعت تر از پردازنده اصلی اقدام به کرک کردن کنند. البته این موضوع برای همه الگوریتمهای رمزگذاری صدق نمیکند.
7-بروت فورس برعکس (Reverse)
در این نوع حملات هکر بجای این که مثلاً سراغ یک کاربر خاص در یک سایت برود و رمزهای متعدد را برای آن اکانت تست کند، لیست کاربران را بدست آورده و با انجام یک حمله بروت فورس برعکس با در نظر داشتن یک یا چندین رمز پر استفاده، همه کاربران آن سایت یا گروه خاصی را با آن رمز(ها) امتحان میکند.
این یک روش بسیار موثر برای وقتی است که یک سایت یا سرویس که مخاطبان زیادی دارد بجای یک کاربر خاص، توسط هکر هدف قرار گرفته است. به همین دلیل است که همیشه بهتر است رمزهای غیرقابل حدس زدن و با کاراکترهای بلند بسازیم حتی اگر اکانت ما شناخته شده نباشد.
روشهای مقابله با حملات brute force
با توجه به اینکه حملات بروتفورس وسعت بسیاری داشته و در جاهای متعددی قابل استفاده هستند. ابتدا باید محدوده کار مشخص شود؛ مثلا قرار است از فرم ورود به مدیریت یک سایت جوملایی یا وردپرسی محافظت شود یا از پنل مدیریت هاست یا سرور یا…. اما در این قسمت راهکارهای متفاوتی برای این نوع حمله ذکر خواهد شد:
1- استفاده از کد captcha در کنار فرم ورود به پنل: در حالت عادی یک فرم ورود شامل دو کادر نام کاربری و رمز عبور است، اما با اضافه کردن کادر captcha که یک عبارت مشخص در داخل آن نوشته شده، کاربر باید آن را در کادر پایینتر وارد كند که بهاصطلاح به آن عبارت امنیتی گفته میشود. همچنين میتوان به جای عبارت امنیتی، از سوال امنیتی استفاده کرد که کاربر باید جواب آن را در کادر پایینتر بدهد.
تا زمانی که عبارت یا سوال امنیتی پاسخ داده نشود حتی با صحیح بودن نام کاربری یا رمز عبور، امکان ورود ممکن نیست که اين مساله یک سد امنیتی مهم در مقابل حملات brute force محسوب میشود، چون با توجه به اینکه حملات brute force توسط ربات و نرم افزارها انجام میشوند، بنابراین با ایجاد کد کپچا ربات یا نرمافزار از هوش لازم برای پاسخگویی به کد کپچا برخوردار نیستند؛ چراکه سوالات از نوع انسانی مطرح میشود.
2- بلاک کردن آیپیهای مهاجم: یکی دیگر از اقدامات مهم و موثر برای پنل مدیریت سایت و سرور، بلاک کردن آیپیهایی است که بیش از سه بار رمز عبور را اشتباه وارد میکنند. بر اساس این اقدام، هر آیپی که بیش از حد مجاز اقدام به تست رمز عبور در فرم ورود را انجام دهد توسط ابزارها یا پلاگینهای اختصاصی تا مدت زمان مشخصی بلاک خواهد شد. همچنین در تنظیمات سرورها نیز این امکان وجود دارد تا توسط فایروال سرور آیپیهای مهاجم بلاک شوند.
3- تغییر پورتهای پیشفرض سرور: یکی دیگر از روشهای محافظت در مقابل اینگونه حملات، تغییر پورت پیشفرض برنامهها توسط سرور است. بهعنوان مثال پورت ssh را که بهصورت پیشفرض ۲۲ است، به یک پورت بیکار دیگر تغییر داد؛ چون بر حملات بروتفورس به تعیین پورت نیاز بوده که همیشه پورت پیشفرض مدنظر است. همچنین پورت پیشفرض ورود به پنل مدیریت هاست نیز که مثلا در directadmin ۲۲۲۲ است نیز بهتر است تغییر یابد یا در cpanel که ۲۰۸۳ است نیز در صورت تغییر پورت، کار هکر بسیار سختتر خواهد شد. بهطور کلی تغییر پورتهای پیشفرض در سرور یک سد امنیتی بسیار مناسب برای جلوگیری از حملات بروت فورس به وجود خواهد آورد.
4- ایمنسازی فرم ورود: یکی دیگر از راهکارهای ایمنسازی، اسکریپت فرم ورود است؛ چراکه از فرم ورود به پنل مدیریت سایتها در صورت مشکلات امنیتی و رعایتنکردن اصول برنامهنویسی برای سایت خطرناک و امکان نفوذ را افزایش میدهد.
5- انتخاب نام کاربری مناسب و تغییر مداوم آن: برای انجام حملات بروت فورس فهمیدن نام کاربری الزامی است؛ بنابرین انتخاب نام کاربری مناسب و تعویض مرتب آن میتواند سد امنیتی مناسبی در برابر حملات ایجاد کند.
6- انتخاب رمز عبور مناسب: شاید بتوان گفت مهمترین عامل در جلوگیری از حملات بروتفورس، انتخاب رمز عبور مناسب است که در شمارههای گذشته هفتهنامه بهطور مفصل به آن اشاره شده است، اما بهطور کلی انتخاب رمز عبور بین 15 تا 25 رقم، استفاده از جملات، استفاده نکردن از اسامی معروف، استفاده نکردن از علايم و رمزهای ساده و قابل حدس، ترکیب اعداد و علايم ویژه در رمز، از معيارهای مناسب برای انتخاب رمز عبور ایمن محسوب میشوند.
در پایان باید گفت حملات brute force قربانیان زیادی را تا به امروز گرفته که دلایل متعددی مانند ضعف امنیتی فرمهای ورود، رمز عبور ناامن، پیشفرض بودن پورتها، نام کاربری قابل حدس، استفاده نکردن از افزونههای امنیتی، فقدان تنظیمات بهینه فایروال سرور در آن دخیل بودهاند.
7-محدود نمودن دسترسی به لینک های احراز هویت: درصورتیکه شما از رمز های قوی استفاده کنید، باز هم هکرها لینک های احراز هویت سایت شما را مورد هدف قرار می دهند، آن ها تلاش می کنند اما موفق نمی شوند و اما این تلاش های نافرجام باعث بروز مشکلاتی مثل بالا رفتن لود سرور و کندی سرعت بارگذاری سایت شما خواهد شد.
جهت رفع و جلوگیری از چنین مشکلی توصیه می کنیم در فایل htaccess دسترسی به صفحات لاگین را به آدرس ip محدود کنید، در صورتیکه از ip استاتیک استفاده می کنید، دسترسی را به ip استاتیک و درغیر اینصورت می توانید به محدوده رنج سرویس دهنده اینترنت خود، تعیین نمائید.
بعنوان مثال در صورتیکه از وردپرس استفاده می کنید، تغییرات برای فایل htaccess بصورت زیر خواهد بود:
<Files /wp-login>
order deny,allow
allow from MYIP
allow from MYIP2
deny from all
</Files>
شما می توانید همین تغییر را برای هر URL احراز هویت مربوط به مدیریت محتوا یا سایت خود اعمال نمائید.
8-تایید هویت دو مرحلهای۲ FA : تایید هویت دو مرحلهای لایهی امنیتی مضاعفی را برای حسابهای کاربری آنلاین شما به وجود میآورد و در کاهش میزان احتمال موفقیت این حمله بسیار موثر خواهد بود.
به یاد داشته باشید شما نمی توانید که این تلاش ها را متوقف کنید اما می توانید جلوی موفقیت آمیز بودن این حملات را بگیرید.