منبع اصلی نوشتار زیر در این لینک قرار دارد

روشهای مقابله با حمله MITM در لینوکس قسمت دوم

در بخش اول با حمله MITM و یک از روشهای این حمله آشنا شدیم. در این قسمت با یکی دیگر از انواع حمله MITM آشنا می‌شویم.

تغییر DNS و حمله MITM:

قبل از آشنایی با این نوع حمله و روش‌های مقابله اجازه دهید با DNS آشنا شویم:

DNS و یا (Domain Name System) با ترجمه پارسی (سامانه نام دامنه) روشی برای تبدیل آدرس سایت (URL) به آدرس آی‌پی است. بطور خلاصه مرورگر شما برای ابتدا آدرس سایت را به دی‌ان‌اس‌سرور  مشخص شده ارسال میکند و این دی‌ان‌اس پس از پرس‌وجو آدرس آی‌پی سایت مورد نظر شما را به مرورگر برمی‌گرداند و مرورگر این آدرس آی‌پی را باز میکند.

دی‌ان‌اس در لایه کاربرد (از مدل OSI) کار می‌کندو کلاینت برای ارتباط با سرور ابتدا درخواست را از پورت ۵۲ UDP به سرور دی‌ان‌اس ارسال می‌کند وسرور پس از جستجوی پایگاه داده و درخواست از سایر دی‌ان‌اس‌ها نتیجه را مجددا از طریق UDP به دخواست‌کننده می‌فرستد. در صورتی که طول بسته از ۵۱۲ بایت بییشتر باشد سرور به جای UDP جواب را به TCP ارسال میکند. 

از آنجا که سرعت در DNS از اهمیت بالایی برخوردار است، سرور DNS و کلاینت درخواست و پاسخ‌ها را از طریق UDP و نه TCP ارسال میکنند.

از آنجا که ارتباطات در DNS به رمز نیست امکان تغییر پاسخ وجود دارد.

روشهای هک دی‌ان‌اس به شرح زیر است:

  • سرور دی‌ان‌اس (عموما سرور دی‌ان‌اس ISP و خدمات دهنده) می‌تواند در جواب درخواست شما آدرس دیگری را بفرستد.
  • هکر می‌تواند با روشهایی مانند آلوده سازی کش ARP و یا روشهای دیگر خود را به عنوان روتر و یا سوئیچ جا بزند و درخواست‌های دی‌ان‌اس شما را با اطلاعات نادرست جایگزین کند.
  • هکر می‌تواند خود را به عنوان سرور دی‌ان‌اس جا بزند و درخواست‌های شما را با اطلاعات نادرست جواب دهد.

در هر یک از روشهای بالا هکر در جواب درخواست شما یک آدرس آی‌پی نادرست را برای شما ارسال می‌کند. هکر در این آدرس‌آی‌پی یک سیستم شنود را پیاده سازی کرده است که اطلاعات شما را سرقت میکند.

روشهای مقابله با هک تغییر DNS و حمله MITM در لینوکس: 

سیستم و شبکه خود را در برابر حمله مسموم‌سازی کش ARP ایمن کنید: یکی از روشهای تغییر دی‌ان‌اس استفاده از روش آلوده کردن جدول ARP است بنابراین سعی کند از حمله ARP جلوگیری کنید.

از دی‌ان‌اس‌های امن استفاده کنید:  به گوگل بیشتر اعتماد دارید یا به سرویس‌دهنده (ISP) تان!؟ شرکت‌های خدمات دهنده اینترنت عموما کاربران را تشویق به استفاده از سرور دی‌ان‌اس خود می‌کنند! اگر به سرویس‌دهنده خود اعتما دارید از DNS آی‌اس‌پی‌تان استفاده کنید در غیر اینصورت از DNS عمومی گوگل در آدرس 8.8.8.8 و یا 8.8.4.4 استفاده کنید.

DNS گوگل علاوه بر امنیت بیشتر (به باور من) سرعت بالاتری در آپدیت رکورد‌های DNS دارد در نتیجه تغییرات در سایتها زودتر اعمال می‌شود.

استفاده از DNSSEC: در بالا گفتیم که دی‌ان‌اس (به دلیل نیاز به سرعت بالا) از روش های رمز‌نگاری استفاده نمیکند. اما ناامن بودن ارسال اطلاعات در بستر ناامن و لزوم ایجاد یک سیستم دی‌ان‌اس امن باعث ابداع DNSSEC شد.

DNSSEC و یا (Domain Name System Security Extensions) با ترجمه فارسی (ضمیمه‌های امنیتی سامانه نام دامنه) روشی است برای امن کردن DNS در صورت استفاده از DNSSEC شما اطمینان حاصل میکنید که سرور‌دی‌ان‌اسی که برای شما جواب فرستاده همان دی‌ان‌اس‌سرور مورد نظر شماست.

اما DNSSEC متاسفانه مشکلات فراوانی دارد و هنوز در مرحله تست به سر می‌برد. درصد کمی از  دامنه‌ها با DNSSEC سازگارند و تنها شرکت ارائه کننده DNSSEC شرکت  comcast  است که این شرکت نیز خدمات دی‌ان‌اس عمومی را فقط برای کاربران خود در اختیار قرار داده است. بنابراین استفاده از DNSSEC همیشه مفید نیست.

برای استفاده از DNSSEC باید بسته dnssec-tools را در توزیع لینوکس خود نصب کنید.

استفاده از DNSCurve: در این روش با استفاده از رمز‌نگاری elliptic-curve درخواست‌ها و جواب‌های دی‌ان‌اس را به مرز در می‌آوریم. پروژه DNSCURVE با هدف به رمز در‌اوردن تمام ترافیک در اینترنت ایجاد شده. برای استفاده باید برنامه DNSCurve cache را با استفاده از این راهنما نصب کنید.

از ‌DNS استفاده نکنید: یکی دیگر از راه‌های افزایش امنیت افزودن آدرس آی‌پی سایت‌های پر استفاده و حساس شما در فایل /etc/hosts به صورت زیر است.

IP-address-1 hostname-1

IP-address-2 hostname-2

IP-address-3 hostname-3

لینوکس ابتدا فایل /etchists را برای وجود URl جستجو می‌کند چنانچه نام دامنه وجود داشت آن را به مرورگر می‌فرستد در غیر اینصورت به سراغ DNS می‌رود. چنانچه از این روش استفاده کنید علاوه بر افزایش امنیت به دلیل عدم استفاده از DNS  سرعت دستیابی به سایت را افزایش می‌دهید.

محتویات فایل /etc/hists میتواند به شکل زیر باشد.

 

127.0.0.1        localhost.localdomain localhost

209.85.148.147       google.com

72.30.2.43               yahoo.com

69.63.181.12             facebook.com

 

اما این روش همیشه جوابگو نیست. این روش فقط برای آدرس‌های بصورت google.com جوابگوست و دامنه mail.google.com از DNS درخواست خواهد شد. از طرفی امکان افزودن تمام زیر‌دامنه‌های یک سایت بصورت دستی وجود ندارد. راه‌حل استفاده از این اسکریپت پایتون کوچک است. فایل hosts را ویرایش کنید و به جای google.com از *.googld.com استفاده کنید. 

 

127.0.0.1        localhost.localdomain localhost

209.85.148.147       *.google.com

72.30.2.43               *.yahoo.com

69.63.181.12             *.facebook.com

 

اسکریپت را با پارامتر‌های زیر اجرا کنید و تنظیمات DNS خود را ۱۲۷.۰.۰.۱ تنظیم کنید. (برای اجرای خودکار این اسکریپت در هر بار راه‌اندازی سیستم پارامتر زیر را به فایل /etc/rc.d/rc.local بیفزایید.)

$ sudo python dnsproxy.py -s 8.8.8.8

توجه کنید که ۸.۸.۸.۸ آی‌پی دی‌ان‌اس گوگل است و به جای این دی‌ان‌اس میوانید از هر دی‌ان‌اس امن دیگر استفاده کنید.

ترافیک خود (و درخواست‌های DNS  خود را) از پراکسی و یا مجاری امن عبور دهید:   برنامه proxychanes تمام ترافیک و درخواست‌ها و جواب‌های دی‌ان‌اس را از یک ترافیک امن عبور می‌دهد و در نتیجه هکر نمی‌تواند تغییری در جواب‌های DNS ایجاد کند.

همچینی استفاده از شبکه خصوصی مجازی (با تنظیمات مناسب و امن و مطمئن)  نیز به عنوان یک راه‌حل امن توصیه می‌شود. چنانچه ترافیک شما از شبکه خصوصی مجازی عبور کند هکر امکان تغییر در بسته‌ها را ندارد.

فرمان‌ها و ابزار‌های کنترل و بررسی DNS:

فرمان dnstop: با استفاده از دستور dnstop میتوان تعداد درخواست‌های DNS یک دیوایس شبکه خاص را مشاهده کرد.

[mahdi@mahdi /]$ sudo dnstop em1

ابزار dsniff: از این ابزار می‌توان برای کنترل، شنود و تغییر DNS استفاده کرد.

یک برای استفاده از dnsspoof فایل /etc/dnsspoof.conf را ویرایش می‌کنیم و تغییراتی که در شبکه باید اعمال شود را در این فایل وارد می‌کنیم.

## Calomel.org – /etc/dnsspoof.conf 

10.10.10.1      google.com

127.0.0.1       yahoo.com

لطفا فسمت اول را در اینجا بخوانید.

ادامه دارد …



برچسب ها : , , , , ,