حملات و امنیت در پروتکل مسیریابی OSPF

OSPF یا Open Shortest Path First پروتکلی قدرتمند و بسیار پیچیده است که می توان در مقابل پروتکل سیسکو EIGRP دانست. پروتکل‌های مسیریابی مبتنی بر IP، به دو دسته کلی تقسیم می‌گردند:

  1.  Interior Gateway  Protocols (IGPs)
  2. Exterior  Gateway  Protocols  (EGPs)

OSPF بصورت خیلی گسترده ای در بین پروتکل های IGP مورد استفاده قرار گرفته است که شرح کامل پروتکل در RFC2328 پرداخته شده است. در این مقاله قصد بر شرح این پروتکل نداریم و پیش زمینه مقاله آشنایی با مباحث CCNA و CNNP می باشد. بحث برروی حملات متمرکز شده است ولی با این حال نمی توان تمامی حملات و حالت های مختلف آن را شرح داد و بررسی نمود، بنابراین مروری کلی برروی چند حمله خواهیم داشت.

تامین امنیت در پروتکل های مسیریابی شامل Authenticity و Integrity پیام های پروتکل است. Authenticity بدین معنی است که هویت ارسال کننده اطلاعات تضمین شود و Integrity نیز بدین معنی است که اطلاعات ارسال شده و دریافت شده یکسان باشند. برای تایید صحت و درست بودن اطلاعات مسیریابی دریافت شده ما می توانیم تهدید ها را بطور کلی به دو نوع External , Internal تقسیم نماییم. مفهوم Internal/Insider روترهایی خواهند بود که مورد اعتماد شبکه هستند و بعنوان یک روتر در شبکه پذیرفته شده است و همچنین در روند تبادل اطلاعات شرکت می کند در مقابل این تعریف؛ روترهای External/Outsider روترهایی می باشند که Internal نیستند و به تازگی می خواهند وارد Routing Domain  گرددند.

تهدید های External:
تهدید های External معمولا توسط خارج از ناحیه انجام می شود بعنوان مثال نفوذگری که به لینک ارتباطی بین روترها دسترسی پیدا می کند. یک مزاحم می تواند حذف،ایجاد و Replay و حتی ایجاد پکت های جعلی را داشته باشد که این امر می تواند باعث شود تا روتر خارجی و مزاحم بعنوان یک روتر داخلی تلقی گردد و در انتقال و ارتباط بین همسایگان قرار گیرد.

برای مقابله با این نوع تهدید می توان از انجام تنظیماتی چون Authentication استفاده نمود. بدین صورت که تمام روتر درون ناحیه و معتبر، بین خود کلید رمزی را به اشتراک می گذارند که توسط آن می توانند روترهای مشروع و قابل قبول را شناسایی نمایند. پروتکل OSPF مستلزم خواهد بود تا تمامی تبادلات را Authenticate نماید. Authenticate در OSPF دو گونه است، البته حالت پیش فرض Null Authentication را درنظر نگرفته ایم (چون Authenticate یی انجام نمی شود):
1-    یک پسورد بصورت Plain-text مورد استفاده قرار می گیرد که با Eavesdropping می توان آن را بدست آورد.
2-    Authenticate نمودن بصورت رمزنگاری است، از حالت قبلی بهتر و دارای امنیت بیشتری می باشد، بدین صورت که یک پسوردی بصورت رمزنگاری شده با استفاده از MD5 مورد استفاده قرار می گیرد، که شاید در فرصتی دیگر به نحوه کرک نمودن این گونه احراز هویت بپردازیم. این شیوه Authenticate توسط Fred Baker  و Ran Atkinson ایجاد شده است.

تهدیدهای Internal:
برای اینگونه حملات می توانیم روتری را در Routing Domain درنظر بگیریم که نفوذگر به آن نفوذ نموده و اختیارکامل آن را در دست دارد. همانطور که می دانید در OSPF از Cryptographic Authentication استفاده می شود که احرازهویت روترها را انجام می دهد اما نمی تواند اطلاعات نادرست را تشخیص دهد. این نوع روش Authentication یک نوع رمزنگاری متقارن  است. هرچند که پیشنهاداتی برای استفاده از الگوریتم های رمزنگاری نامتقارن  داده شده است اما تعداد کسانی که مقدار بار محاسباتی الگوریتم های نامتقارن این طرح را پذیرفته اند معدود است و نتوانسته رضایت عموم را از آن خود کند. گاها افراد خطرات LSA و بررسی صحت و درستی آن را در برابر یک روتر معیوب (که مورد نفوذ واقع شده است) کم اثر می دانند. یک روتر درواقع دارای دو نقش متمایز از هم را برعهده دارد، یک تولید LSA ها و دو اینکه کار حمل و نقل  LSA دیگر روترها را برعهده دارد.

اولین تهدیدی که در این نوع مورد بررسی قرار می دهیم تغییر و یا حذف اطلاعات روترهای دیگر است.

تغییر داده ها:
اگر نمونه جدیدی از LSA ها دریافت گردد فیلدهای Sequence Number, Age, Checksum مقایسه می شوند که آیا این LSA جدید است یا نه؟ دو حالت ممکن است رخ دهد. حالت اول بسته دریافتی رها می گردد، بعنوان مثال ممکن است بسته قدیمی باشد. و در حالت دوم بسته پذیرفته می شود، در LSDB قرار می گیرد و Flood خواهد شد. خوب معلوم می شود که در حالت اول تهدیدی وجود ندارد و در حالت دوم بنابر موقعیت توپولوژیکی، روتر مورد تهدید خواهد بود.
اولین تصور ما این است که روترنفوذگر در دامنه مسیریابی است ولی توانایی پارتیشن نمودن شبکه را ندارد، خوب حذف نمودن پیام ها یک تهدید محسوب نمی شود زیرا Flooding قابل اعتمادی در شبکه وجود دارد و همچنین اگر روترنفوذگر در پیامی تغییراتی ایجاد نماید و بازهم توسط Flooding در Routing Domain بالاخره پیام به صاحب LSA خواهد رسید که در این صورت ؛ LSA تغییر یافته را تشخیص می دهد و با ایجاد نسخه جدیداز LSA ، نمونه نامعتبر و تغییر یافته را Flush می کند.
حال روترنفوذگر را در نظر می گیریم که می تواند Area هایمان را Partition  نماید، یعنی روترنفوذگر (مربع رنگ تیره) تنها مسیر بین دو ناحیه است. همانطور که در تصویر زیر هم می توان دید :

Partition Network

Partition Network

Area به دوگروه از روترهای سالم و مشروع تقسیم شده است و می تواند براحتی برروی تمام ارتباطات بین دو روتر نظارت داشته باشد. یکی از تهدید هایی که در این تصویر و مثال مشهود است این می باشد که LSA های هر طرف را به سمت دیگر انتقال ندهد و باعث ایزوله شدن دوناحیه گردد.
اگر یک LSA تغییریافته را در همان ناحیه که روتر تولید کننده LSA وجود دارد انتشار دهیم، روتر تولید کننده LSA متوجه تغییر در داده ارسالی خود خواهد شد. اگر نفوذگر در بدترین وخطرناکترین حالت حمله را انجام دهد براحتی می تواند برروی پیام های دوبخش کنترل داشته باشد ودرهنگام انتقال تحریف نماید.

ایجاد اطلاعات جعلی:
اساسا مشکل است که خود پروتکل ها از خودشان در برابر اطلاعات جعلی ایجاد شده توسط روتر معیوب  محافظت نماید. بعنوان مثال عمل رمزنگاری ، نمی تواند یک روتر سالم را دربرابر اطلاعات نادرست محافظت نماید. اما خوشبختانه طبیعت و ذات پروتکل OSPF بر این است که در برابر برخی حملات Insider محافظت می کند.
ابتدا اینکه مسیریابی در هر منطقه مستقل است، و اطلاعات بدخواهانه و یا ناقص عملیات مسیریابی را در دیگر نواحی تحت تاثیر قرار نمی گذارد. دوم اینکه درصورت وجود اطلاعات تکراری پروتکل متوجه خواهد شد(توسط Sequence Number) .

برای نفوذ بصورت Insider نفوذگر می تواند بصورت Remote به روترها حمله شود،  چند نمونه آسیب پذیری که منتشر شده است مانند CVE-2010-0581,CVE-2010-0580, CVE-2009-2865که در CVE-2010-0581 نفوذگر می تواند کدهای خود را با یک پکت SIP اجرا نماید و یا باگ جدیدی که اخیرا در روترهای با چیپست Broadcom توسط تیم DefenseCode  یافت شده است که اجازه می دهد یک نفوذگر بدون انجام احرازهویت کدهای خود را در سطح root اجرا نماید.

حملات ارائه شده توسط تیمJiNao :
این تیم 4 حمله را معرفی نمود که اساسا می توان گفت از نوع حملات تکذیب سرویس است. در زیر با این چهار حمله بیشتر آشنا خواهیم شد که چگونه از مکانیزم Fight Back برای اجرای حملات سود برده اند در واقع حملات  JiNao برروی هدر بسته های LSA صورت می گیرد که تصویر از ساختار این هدر را در زیر می بینید:

LS Advertisement Header

LS Advertisement Header

  • MaxAge: فیلد Age هرگز بیشتر از مقدار MaxAge نخواهد شد. LSA هایی که سن  آنها برابر با MaxAge است، هرگز در محاسبات Routing Table مورد استفاده قرار نمی گیرند. هنگامی که سن یک LSA به MaxAge می رسد، روتر باید سعی کند که LSA را از Routing Domain خارج وFlush کند ؛ این امر باFlood  کردن MaxAge LSA انجام می شود .با MaxAge کردن سن یک LSA بدون تغییر LS Sequence Number ، و سپسFlood  کردن آن ، می توان یک LSA  را از Routing Domain به راحتیFlush  کرد که در اصطلاح Premature Aging می گوییم. حداکثر عمر یک بسته LSA یک ساعت است. حال نفوذگر بسته ای با حداکثر مقدار برای فیلد MaxAge ارسال می کند.حال مکانیزم Fight Back عمل می کند و بسته ارسالی درست را ارسال می کند. نفوذگر به طور مرتب این عمل را تکرار نموده و Fight Back هم کار خود را انجام می دهد. انجام این عمل بطور مکرر باعث ایجاد حملات DOS خواهد شد. فیلد Age در LSA که در تصویر بالا می بینید، اگر به مقدار MaxAge برسد، آن LSA توسط مکانیزم ارسال Flooding از تمامی روتر ها در دامنه مسیریابی حذف خواهد شد. هر نوع حمله از این آسیب پذیری باعث ایجاد Flood های غیرضروری و همچنین Refresh شدن LSDB ها خواهد شد. روترهایی که کپی از این LSA در LSDB خود نداشته باشند نمی توانند در امر Flush کردن LSA شرکت کنند، این کمک می کند تا Fight Back در صاحب LSA فعال گردد.
  • Sequence++: نفوذگر می تواند بسته LSA مقدار متریک آن را تغییر می دهد سپس با Sequence بالاتر ارسال می کند، مکانیزم Fight Back در روتر صاحب LSA فعال می شود و LSA خود را ارسال می کند. نفوذگر بدین ترتیب بطور مکرر بسته ای با شماره Sequence بالاتر ارسال می کند که بدین صورت باعث ناپایدار شدن شبکه و به تدریج انجام حملات DOS خواهد شد.
  • Max Sequence: در OSPF ورژن 2 فیلدی به نام Sequence Number وجود دارد که یک عدد 32بیتی علامتدار  است و برای تشخیص LSA های تکراری مورد استفاده قرار می گیرد. هنگامی که روتر LSA ای دریافت می کند با نمونه LSA های موجود مقایسه می کند و اگر جدیدتر باشد آن را نگه می دارد. پایین ترین مقدار که می توان برای شماره ترتیب در نظر گرفت 0x800000001 است و حداکثر و یا بالاترین مقدار 0x7FFFFFFF خواهد بود. مقدار 0x80000000 رزرو شده و غیرقابل استفاده است. هنگامی که LSA جدید ایجاد می شود عدد درون این فیلد نیز یک واحد افزایش می یابد و هر LSA شماره مخصوص خودش را دارد. زمانی که مقدار فیلد Sequence Number می خواهد افزایش یابد ابتدا چک خواهد شد که اگر مقدار به حداکثر خود یعنی 0x7FFFFFFF رسیده است؛ برای ایجاد LSA جدید یعنی همان مقدار ابتدا 0x80000001 بایستی LSA موجود از دامنه مسیریابی Flush کند، در غیر اینصورت اگر LSA جدید را ایجادکرده و ارسال نماید، بسته های ایجاد شده نادیده گرفته خواهند شد زیرا درحال حاضر بالاترین مقدار در دامنه مسیریابی موجود است و بسته تازه ایجاد شده دارای کمترین مقدار است. هرچند روتری به این مقدار نمی رسد زیرا نمی تواند زودتر از MinLSInterval  که مقدارش 5ثانیه است، LSA تولید کند و مدت زمانی که باید طی شود تا این مقدار Sequence Number تمام شود و به حداکثربرسد؛ حداقل  5*(2^31) طول می کشد یعنی حدودا 340 سال تا مقدار LSA به انتها برسد! وقتی روتری بسته ای از خودش را بالا Seq# بالا دریافت می کند که ابتدا بایستی بسته قبلی را از دامنه مسیریابی Flush نماید و بعد LSA جدید را ایجاد نماید اما این تیم مواردی را پیدا نموده اند که روتر ابتدا عمل Flush را انجام نمی دهد.
  • Bogus LSA: این حمله به باگی در پیاده سازی GateD اشاره دارد. در این حمله نیاز است تا بطور کامل GateD متوقف شده تا LSA مخرب از بین برود و دوباره شروع بکار کند.

بصورت کلی سه حمله اول مدنظر خواهد بود. با توجه به حملاتی که تیم JiNao ارائه داده است افرادی هم ایده و نظراتی برای طراحی یک سیستم IDS باتوجه به این حملات، ارائه داده اند و همچنین مقالات گوناگونی با محتوای JiNao IDS را انتشار داده اند.

استفاده از RIP برای تحریف مسیر OSPF :
روترهای مسیریابی را می توان طوری تنظیم کرد که اطلاعات روتینگ بین IGPها Redistribute گردد (مانند RIP,OSPF) یا بین IGP  و EGP  (مانند RIP,BGP). بنابراین با این امکان می توان نفوذگر را قادر سازیم تا با استفاده از پروتکل های نا امن(مانند RIP) مسیرهای اشتباهی را در OSPF  یا  BGP را Advertise نماید و امنیت طبیعی خودشان را دور بزند!!!!

حملات و سناریوهای مختلفی برروی این پروتکل می توان انجام داد ولی در این پست هدف بر آشنایی با امنیت در Routing Protocol ها و چند حمله شناخته شده و ارائه شده است. اگر تمایل دارین که حمله نوین و منحصربفرد خودتون رو داشته باشین میتونید 244 صفحه RFC رو بخونین، لازم به ذکر هستش که این حملات مربوط به OSPF v2 است.

موفق و پیروز باشید.

AHA

قطره ای از دریای بیکران IT

More Posts

8 thoughts on “حملات و امنیت در پروتکل مسیریابی OSPF”

  1. ممنون پست خوبی بود، اگر یک سناریو عملی پیاده کنید و یا ابزارهایی که خودتون استفاده میکنید رو هم معرفی کنید جالبتره میشه.
    موفق باشید

    1. شما چطور بسته ها رو ایجاد و ارسال می کنید؟

      در پست حمله بر LSDB ها نمونه حمله بصورت عملی برروی OSPF شرح داده شده است که سورس این حمله هم تاپیک وجود دارد و هم میتوانید از این آدرس دانلود کنید :

      https://github.com/HamiD-Rezaei/OSPF-Attack

  2. سلام. مفید بود و همچنین متن روانی بود. آیا شما اطلاعات بیشتری در زمینه دو حمله جدیدی که ارایه شده دارید؟
    حملات Remote False Adjacency و LSA بدلی
    با تشکر

    1. سلام، ممنون .

      در مورد Remote False Adjacency :
      در RFC که در مورد OSPF v2 بحث می شود، در بخش 10.8 مراحل تبادل پکت های DataBase Description و Adjacencyشدن را شرح میدهد. .بامطالعه این بخش به دو مفهوم Master/Slave مواجه میشویم.برای این حالت روتری که ابتدا اطلاعات را ارسال میکند مشخص می شود. یعنی روتر Master می تواند بطور کامل Adjacency شود بدون اینکه پیامی را ازسمت Slave ببیند.
      بدین معنی است این مفهوم که نفوذگر می تواند با ارسال پیام های جعلی OSPF یک روتر Remote را با یک روتر فانتوم در شبکه داخلی قربانیAdjacency نماید

      در مورد LSA بدلی که گفتید :
      بنابر RFC 2328 بخش 13.1 دو LSA را می توان یکسان در نظر گرفت در صورتیکه سه فیلد از LSA برابر باشند. این سه فیلد Sequence Number, Checksum, Age می باشد. درواقع می توان دو LSA را یکسان در نظر گرفت اگر اختلاف مقدار فیلد Age این دو پکت حداکثر 15 دقیقه باشد حتی اگر لینک Advertise و یا محتوای LSA متفاوت باشد. هنگامیکه بدل یک LSA را ایجاد و ارسال میکنیم روترها آن را به عنوان یک نمونه تکراری در نظر می گیرند و نادیده خواهند گرفت. برای رفع این مشکل نفوذگر بایستی LSA بعدی که قرار است ایجاد وارسال شود را حدس بزند و خودش آن را تولید کند وارسال نماید. بنابراین قربانی را وادار میکند تا LSA معتبر بعدی را ایجاد نماید، این عمل توسط مکانیزم Fight Backصورت می پذیرد که بعد از فعال شدنLSA معتبر بعدی را ارسال خواهد کرد.این اسلاید [+] رو ببینید تا روند اجرای عملی این حمله رو دستتون بیاد چطوریه

      اگر پایه و اساس حمله رو بفهمید سناریو و مستند سازی حمله کار راحتتری میشه براتون

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *