-
December 19th, 2009, 23:52
#1
عضو انجمن
DNS Rebinding
چند وقتیه که توجه جامعه بینالمللی امنیت اطلاعات به حمله به شدت خطرناک و عملی DNS Rebinding بیشتر شده. بیم اون میره که آشنایی بیشتر افراد با این حمله افسار گسیخته کلیت شبکه جهانی رو زیر سوال ببره -که البته هدف ما هم هست، در ادامه توضیح میدم – از این رو آشنایی و مقابله با این حمله خیلی بحث مهمیه. در ادامه ابتدا کمی مقدمه چینی میکنم و پس از آن حمله رو توضیح میدم و در نهایت روشهای مقابله با اون رو.
پروتکل و زیرساختی در اینترنت و شبکه به صورت کلی وجود داره که برای تبدیل نام به آدرس آی پی استفاده میشه، فرآیندی که با نام Name Lookup شناخته میشه. به عنوان مثال آدرس www.etebaran.com به آدرس آیپی ۲۱۳٫۱۷۵٫۲۲۱٫۱۳۶ تبدیل میشه. آدرس آیپی مکانیزمی مانند شماره تلفنه که یک کامپیوتر خاص روی شبکه رو معرفی میکنه و نسخه جاری آن از چهار عدد یک بایتی که با نقطه از هم جدا میشن تشکیل شده. با استفاده از این آدرس میشه به کامپیوترها روی شبکه متصل شد و با آنها کار کرد. زیر ساخت DNS که پروتکل و سرور اینکار است (Domain Name Server) در اینترنت و اکثر شبکهها وجود داره. DNS یک ساختار درختی داره و شما در ویندوز و لینوکس میتونین در کنسول با دستور nslookup www.yahoo.com آدرس یاهو و یا هر سایتی که میخواین رو بدست بیارین.
روش کار یک DNS به این صورته که درخواست تبدیل نام به آدرس رو دریافت میکنه و بعدش یک سری اطلاعات خروجی میده. این اطلاعات دو نوع کلی دارند، یکی نوع A که در ازای یک نام، یک آدرس آیپی میده و شما میتونین متصل بشین. یکی دیگه نوع CNAME که یک آدرس دیگه میده و دوباره باید اونرو Name Lookup کنید اینقدر اینکار رو ادامه بدین تا A بگیرین و بتونین به مقصد متصل بشین. این فرآیند به صورت خودکار توسط کاوشگر اینترنت شما انجام میشه، وقتی مثلا در فایرفاکس یا اینترنت اکسپلورر آدرس www.gmail.com رو وارد میکنید، خودش جستجوی نام میکنه و سپس به آیپی سرور وصل میشه و اطلاعات شمارو میگیره.
هر فرآیند جستجوی نام، ممکنه با چند پاسخ روبرو بشه. یعنی یک یا چند A به همراه یک یا چند CNAME همزمان داده بشه که معمولا برای سرورهای بزرگ اینطوریه. اونوقت شما خودتون (یا برنامه) میتونه یکی رو انتخاب کنه و به اون متصل شه تا فشار و ترافیک روی یک سرور متمرکز نشه. همچنین اکثر این پاسخها یک TTL دارند (Time To Live) که مشخص میکنه این پاسخ چند ثانیه اعتبار داره. خاصیت استفاده از TTL در اونه که یک DNS سرور با استفاده از اون میتونه ترافیک رو تنظیم کنه، یعنی اگه دید یک سرور شلوغه دیگه شماره اونرو نده و زمان زنده بودن رو مثلا ۵ ثانیه بده، یعنی کاربر اگر ۵ ثانیه دیگه دوباره خواست بره این سایت، دوباره باید جستجوی نام کنه و در این دفعه آدرس یک سرور دیگرو میده که ترافیک بالا نره (تمام این آدرس ها مال سرورهای مختلفیه که مثلا همه سایت یاهو رو کپی دارن) . اما اگه زودتر از ۵ ثانیه خواست بره لازم نیست.
یک بحث مهمی در امنیت وب وجود داره که تقریبا مهمترین اصل امنیت وب هست، به اسم Same Origin Policy. یعنی اگر یک سایتی رو از آدرس www.etebaran.com گرفتین، صفحهای که توی کاوشگر شما باز شده فقط اجازه داره با سایت www.etebaran.com ارتباط دوطرفه برقرار کنه. یعنی اگر فلش یا جاوااسکریپت روش باشه فقط میتونه با همون سایت کار کنه. مثلا اگر سایت جیمیل رو باز کنید، فقط میتونه محتوای سایت جیمیل رو بخونه. این اقدام امنیتی از این نظره که اگر یک اسکریپت مخربی روی یک سایتی بود و شما به هر طریقی اون رو آوردین روی کاوشگرتون، این اسکریپت نتونه اطلاعات یک سایت رو برداره و به سایت نفوذگر ارسال کنه و مجبور باشه با همون سایتی که روشه تعامل کنه.
حمله DNS Rebinding به این صورته که نفوذگر یک DNS راه میندازه یا میخره (که بسیار هم ارزونه) و مثلا سایت خودش که badguy.com هست رو آدرسش رو داخل این سرور قرار میده و سایت مخاطب یعنی goodguy.com رو هم آدرسشو توی همون DNS قرار میده. وقتی یک نفر میره badguy.com وصل میشه به آدرس واقعی سایت badguy.com واقعی. ولی دفعه دوم وقتی یک درخواست از اون صفحه برای badguy.com میاد، این DNS که دست نفوذگر هست، ایندفعه پاسخ دوم یعنی آدرس goodguy.com رو میده، و چون اسمی که درخواست شده همون badguy.com بوده (فقط آدرس مال یک سایت دیگه بوده!) Same Origin Policy هم نقض نمیشه، در حالی که عملا داره نقض میشه.
با این روش کارهای متعددی میشه کرد که تو دو دسته جای میگیرن. یکی اسکن کردن شبکههای محلی و داخلی و دومی جمع کردن زامبی. Zombie یعنی کامپیوتری که هک شده و ناخودآگاه کاربرش کار نفوذگر رو انجام میده. برای بسیاری از کارهای نفوذ احتیاج به زامبی هست. مثلا فرض کنید یک نفوذگر میخواد سایت etebaran.com رو بیاره پایین و هرکار میکنه موفق نمیشه. کافیه یک تبلیغ بفرسته روی facebook.com به سایت badguy.com و یک اسکریپت مخرب قرار بده که کاربرهارو زامبی کنه. بعد هرکی میره اونتو زامبی میشه. بعد از یک مدت مثلا ۱۰۰۰ تا زامبی جمع میکنه و همه اونها رو یکهو منتقل میکنه برن به etebaran.com و سایت میترکه!
برای جلوگیری از DNS Rebinding برو بچه های استنفورد یک مقاله خیلی جامع و خوب نوشتن ولی خیلی خوب و جامع نیست. روشی که من پیشنهاد کردم و دارم مقالشو آماده میکنم برای جلوگیری از این حمله بی خطر و بسیار خطرناک، اینه که سیستمهایی درست شن به صورت اتوماتیک قسمت قابل توجهی از اینترنت رو به این بیماری دچار کنن تا سرور ها و سیستمهای روی اینترنت راه حل های بروبچ استنفورد و مارو عملی کنن و گوش بدن! وگرنه تا خطری تهدیدشون نکنه اصلا سراغش نمیرن!
نظر شما چیه؟
منبع: DNS Rebinding ، حملهای به شدت عملی و خطرناک!
-
تعداد تشکر ها ازMohsen به دلیل پست مفید
-
December 19th, 2009 23:52
# ADS