در دنیای سایبری و دیجیتال امروزی باید مراقب رمزها، پین کدها، کلیدهای خصوصی کیف پول رمزارز خود و سایر اطلاعات حیاتی مهم هویتی یا مالی خود باشیم زیرا کلاهبرداران اینترنتی یا همان هَکِرها همیشه سعی در حمله به سمت این قبیل اطلاعات دارند. اما اگر متخصص نرمافزار نیستید (و اکثر ما نیستیم) ممکن است مشخص نباشد که در مورد چه نوع حملاتی صحبت میکنیم. پس بیایید دقیق تر نگاه کنیم تا متوجه شویم:
حمله کانال جانبی (Side-channel attack): یک “شَزِم” برای مصرف انرژی
وقتی آهنگی در رادیو پخش میشود، شزم (اپ موبایلی برای تشخیص نام آهنگی که میشنوید Shazam) میتواند به آن گوش دهد و به شما بگوید در حال حاضر چه آهنگی در حال پخش است. برای انجام این کار، Shazam سعی میکند در کتابخانهای از آهنگها جستجو و نهایتا یک مطابقت پیدا کند. با ابزارهای مناسب، میتوانید به همان اندازه به مصرف انرژی دستگاههای مختلف گوش دهید و دادههای کلیدی را از آن استخراج کنید!
فرض کنید یک مهاجم به کامپیوتر یا گوشی موبایل یا کیف پول سختافزاریِ رمزارزهای شما دسترسی فیزیکی دارد. در این حالت، مهاجم میتواند مصرف انرژی دستگاه را اندازهگیری کنند و درست مانند کاری که اپلیکیشنِ شزم Shazam با صدا انجام میدهد، الگوی مصرف انرژی را با یک پایگاه داده مخصوص مطابقت دهد. این در نهایت به شنونده (مهاجم) اجازه میدهد تا رمز دستگاه شما را بشکند.
این یک شکل خاص از حمله کانال جانبی است، اما چندین نوع دیگر وجود دارد.
نرمافزارها و ساخت افزارهای امنیتی به طور خاصی با اقدامات متقابل پیچیدهای اقدام به پنهان کردن تشعشعات الکترومغناطیسی و مصرف انرژی میکنند و از دستگاه شما در برابر کسانی که میخواهند به آن گوش دهند و از آن به عنوان یک بردار حمله استفاده کنند محافظت میکند. (در امنیت سایبری، بردار حمله مسیری است که یک هکر برای سوء استفاده از آسیبپذیریهای امنیتی طی میکند.)
حملات خطا (Fault attacks): اعمال تغییرات در مدار در حین کار
حمله خطا، عملی است که باعث ایجاد اختلال در مدار در حین کار میشود. این باعث بروز خطا در یک دستگاه یا ماشین میشود که میتواند منجر به یادگیری بیشتر در مورد عملکرد آن شود یا حتی یک رفتار متفاوت و معیوب را تحمیل کند. چنین رفتاری میتواند شامل پرش از مراحل یک فرآیند یا ارائه یک خروجی اشتباه باشد. همه اینها هدف یک حمله خطا است.
نرمافزارها و ساخت افزارهای امنیتی برای جلوگیری از موفقیت این نوع حملات، اقدامات محافظتی درون خود ندارد که امکان تشخیص کارآمد خطا و واکنشهای امنیتی مناسب را فراهم میکنند.
حملات نرمافزاری (Software attacks): یاد گرفتن اینکه چه چیزی باعث تیک زدن دستگاه میشود
هدف حملات نرمافزاری افشا، تغییر، غیرفعال کردن، تخریب یا سرقت اطلاعات است. حملات نرمافزاری را میتوان به انواع مختلفی از حملات تقسیم کرد که همه سعی میکنند رفتارهای غیرمنتظرۀ ناشی از موزد هدف قرار دادن نرمافزار را پیدا کنند. این رفتارهای غیرمنتظره در نرمافزار توسط وارد کردن اطلاعات نامتعارف انجام میپذیرد و در واقع میتوانند آسیب پذیریها یا اطلاعات حساس را نمایان سازند.
با بازی کردن با ورودیها، میتوانید درباره نحوه برنامهریزی نرمافزار دستگاه در برابر واکنش به ورودیهای نادرست، اطلاعات بیشتری کسب کنید. این درک از نرمافزار میتواند منجر به کشف نقاط ضعف آن شود. با این حال، نرمافزارها میتوانند با به کارگیری یک سیستم بسیار ساده که از رابطهای بسیار کمی استفاده میکند، سطح حمله را به شدت کاهش دهند.
حمله بروت فورس (Brute Force Attacks)
حمله Brute Force تلاشی برای شکستن رمز عبور، یافتن نام کاربری، یافتن یک صفحه وب پنهان یا یافتن کلید مورد استفاده برای رمزگذاری پیام با استفاده از یک روش آزمون و خطا و بررسی تمام حالات ممکن است. این روش به میزان زیادی از امیدواری نیز نیاز دارد تا در نهایت رمز عبور را بهدرستی حدس زده شود. Brute force حملهای قدیمی اما همچنان محبوب و موثر است.
روشهای انجام حملهٔ Brute Force
یکی از کاربردهای حمله Brute Force انجام دادن کرک است. کرک یا Cracking عنوان عملیاتی است که معمولن مهاجم برای به دست آوردن رمز عبور یا نام کاربری جهت وارد شدن به یک سرور، سایت، سرویس و … انجام میدهد. در این نوع حملات مهاجم با استفاده از الگوهایی که در اختیار دارد ابزارهایی را استفاده میکند تا بتواند فهرستی از کاربران یا رمزهای موجود را روی سرور مدنظر تست کند. با این کار مهاجم در نهایت میتواند نام کاربری یا رمز عبور سرور، سایت و … را به دست آورد.
حملات Cracking خود دارای انواع مختلفی هستند و عملکرد و الگوی خاصی را نمیتوان برای آنها در نظر گرفت. ولی با توجه به استفادهٔ کاربران از پسوردهای تکراری، فهرستی از پسوردها، نامکاربریها و … وجود دارد که در اصطلاح به آن دیکشنری گفته میشود و رایجترین روش برای انجام حملهٔ Cracking است.
در دیکشنریها برای پسوردهایی که کاربرد بیشتری میان کاربران دارند، الگوهای خاصی تعریف میشود. برای نمونه 123456 پسوردی است که اولین و بیشترین استفاده در دیکشنری پسورد را دارد. دیکشنری در واقع فهرستی از رمز عبورهای رایج یا رمزهایی است که مهاجمان در طول سالهای قبل با استفاده از آنها به خیلی از سایتها نفوذ کردهاند. مهاجم هر رمز در دیکشنری را برای نفوذ امتحان میکند و این کار را تا زمانی که ترکیب صحیح نام کاربری و رمز عبور سایت را کشف کند، ادامه میدهد.
همچنین در نوع دیگری از حملات cracking، مهاجمان فهرستی از پسوردها یا نام کاربریهایی دارند که در اصطلاح به آنها Combo گفته میشود. معمولن این Comboها بعد از تست بهوسیلهٔ ابزارهای کرک، روی سایتها یا سرویسهای مقصد، رتبه نیز میگیرند.
یکی دیگر از روشهای انجام Brute Force شکستن رمزعبور با نرمافزارهایی است که برای این کار تولید شدهاند. این نرمافزارها برای سرویس مقصد ایجاد میشوند و با توجه به الگوریتمهای آماده، نوع سیستم و موارد مرتبط، رمزهای عبور تصادفی ایجاد میکنند. در حملات Brute Force، مهاجمان الگوهای خود و همچنین بازههای خطاگیری و قفل شدن را در نرمافزار مورد استفاده تنظیم و فیلترینگهای خود را نسبت به سرویس مقصد آنقدر محدود میکنند تا مدتزمان دریافت نتیجه را به حداقل برسانند.
برای نمونه مهاجم وقتی که قصد نفوذ به یک سرور لینوکس را دارد، میداند که امکان استفاده از کاراکتر ^ یا % وجود ندارد یا بسیار کم است، پس فیلترهای اعمال شده برای ایجاد نامکاربری را از این مقادیر خالی میکند تا نتایج را در زمان سریعتری دریافت کند.
روشهای جلوگیری از حملات Brute Force
تقریبن میتوان گفت روشی برای مقابلهٔ کامل با این نوع حملات وجود ندارد اما، میتوان بهگونهای احتمال یافتن پسورد در این حملات را به حداقل رساند. برخی از این روشها به شرح زیر هستند:
رمزهایعبور قویِ انتخاب کنید. بزرگترین هدیهای که میتوانید به مهاجمان بدهید رمزهایعبور یکسان برای تمامی سرورها، اکانتها و … است! از این اقدام بهجد اجتناب کنید. برای رمزگذاری روی تمام نرمافزارها، سرورها، بخش مدیریت سایتها و … از پسورد Full Complex و طولانی استفاده کنید. رمزها باید شامل حروف بزرگ و کوچک و اعداد و کاراکترهای خاص باشند.
از کلمات معنیدار و قابل حدس در رمزهای عبور استفاده کنید.
از الگوریتمهای رمزگذاری پیچیده مانند SHA-512 استفاده کنید، از الگوریتمهای رمزگذاری قدیمی یا ضعیف استفاده نکنید. استفاده کردن از الگوریتمهای پیچیده و جدید بهطور چشمگیری سرعت حملات Brute force را کاهش میدهد.
رمزهای عبور خود را در نرمافزارهای مخصوص این کار نگهداری کنید. به این ترتیب هم رمزهای پیچیدهٔ خود را فراموش نمیکنید و هم بهراحتی به آنها دسترسی خواهید داشت. در ضمن امنیت این نرمافزارها در برابر اینگونه حملات نیز بسیار بیشتر است.
اطلاعات رمزگذاری شدهٔ خود را در یک جای امن نگه دارید که مهاجمان به آن دسترسی نداشته باشند.
رمزهای عبور مشترک سرور خود را در سایتهایی که ثبتنام میکنید، وارد نکنید. یکی دیگر از بزرگترین مشکلاتی که که مهاجم با کمک آن میتواند بدون نیاز به Brute Force سرور شما را هک کند، پسورد مشترک و ورود آنها در سایتهای غیرمعتبر است.
مواردی که میتوانند جلوی حملات Brute Force روی وبسایتها را بگیرند، کمی سادهتر هستند و کاربر با اندکی تغییر، بهسادگی میتواند حداقل الگوهای راحت را برای مهاجم حذف کند. برای نمونه تمام کاربران آماتور و مهاجمان، میدانند که صفحه ورودی پیشفرض قسمت ادمین، برای سیستم مدیریت wordpress و ورود اعضای آن، آدرس
/wp-admin.php و wp-login.php است. پس اولین قدم برای جلوگیری از حملات مهاجمان، تغییر صفحات پیشفرض و یا ایجاد محدودیت برای دسترسی به این صفحه است. برای نمونه صفحات مدیریتی حساس برای سیستم خود را میتوانید محدود به IP کنید. با این روش امکان تست پسورد برای قسمت مدیریت بهوسیلهٔ مهاجمان کمتر وجود دارد. در سرورها نیز با تغییر پورتهای پیشفرض سرور میتوانید جلوی این حملات را بگیرید. برای نمونه پورت پیشفرض ورود با ssh پورت شماره 22 است و میتوان آن را به پورت بازی دیگر تغییر داد. در سرورهای ویندوزی نیز بیشترین کرکها روی پورت پیشفرض Remote Desktop با شماره 3389 انجام میشوند. اگر از این سرویس استفاده میکنید، پورت پیشفرض Remote Desktop را حتمن تغییر دهید.