امیرحسین تنگسیری نژاد
مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

بررسی حمله BGP Hijacking و نحوه جلوگیری از آن

نکته:‌ پیش‌نیاز این مقاله آشنایی نسبتا خوبی با پروتکل BGP می‌باشد در این صورت ممکن است مفاهیم استفاده شده در مقاله را متوجه نشوید

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

بیاید بحث‌مان را با یک سوال شروع کنیم؛ آیا BGP امن است؟! 
در جواب به این سوال می‌بایستی گفت خیر، پروتکل BGP امن نیست این پروتکل در تمام مسیر های موجود که داده ها می‌توانند طی کنند بهترین مسیر یا انتخاب می‌سازد، به مرور حملات مختلفی و اشکالات زیادی در آن به وجود آمده هست

بررسی حمله BGP Hijacking

این حمله زمانی رخ می‌دهد که مهاجمان بتوانند به طور مخرب به Traffic های اینترنت دست بیابند، اینکار با استفاده از تزریق آدرس های IP و Prefix های(به اصطلاح Prefix Injection) آن در داخل جدول Routing موجب مسیریابی نادرست Traffic ها به سمت دیگری می‌شوند(به سمت فرد مهاجم برای مثال). در این حمله فرد مهاجم توانایی پیاده سازی یک حمله MITM در سطح WAN را پیدا خواهد کرد. این حمله زمانی رخ می‌دهد که دو AS دو آدرس IP به همراه Prefix Length های یکسان را تبلیغ می‌کنند و از این رو BGP برای انتخاب بهترین مسیر، مسیری را انتخاب می‌سازد که AS Path آن کمتر باشد. حمله BGP Hijacking بر روی بستر شرکت ها و سرویس های مختلف و بزرگ دنیا پیاده سازی شده است برای مثال در روز یک‌شنبه 24 فوریه سال 2008 این حمله بر روی YouTube به علت پیکربندی های نادرست از سمت ISP پیاده سازی شد و این بستر را دچار اختلال کرد

بررسی حمله BGP Hijacking و نحوه جلوگیری از آن
 

برای درک بهتر حمله BGP Hijacking به مثال تصویر زیر توجه کنید که ماشین ها از مسیر اصلی اتوبان خارج شده و به سمت مسیر فرعی دیگری هدایت می‌شوند، دقیقا حمله BGP Hijacking به همین شکل است که Route هارا از مسیر اصلی خود خارج و به سمت یک مسیر نادرست هدایت کند

بررسی حمله BGP Hijacking و نحوه جلوگیری از آن

جلوگیری از حمله BGP Hijacking 

این حمله به همسایه های خود و شبکه های به هم پیوسته اعتماد زیادی دارد و تقریبا جلوگیری از این حمله یک کار غیرممکن می‌باشد. اما گذشته از این حرفا روش های برای جلوگیری از حمله وجود دارد؛ برای مثال یکی از این روش ها استفاده از IP Prefix Filtering می‌باشد
برای مثال در Filtering زیر ما فقد AS های محلی خود را به سمت ISP هدایت می‌سازیم

ip as-path access-list 1 permit ^$

router bgp 64502
neighbor 100.100.100.1 filter-list 1 out

در سمت مشتری AS 64502 تعریف شده است و در سمت ISP این AS برابر با 64500 می‌باشد. ما میتوانیم محدودیت را در سمت ISP بر این قرار بگذاریم که از سمت آدرس 100.100.100.1 فقد AS 64502 اجازه عبور داشته باشد

ip as-path access-list 1 permit ^64502$

router bgp 64500
neighbor 100.100.100.2 filter-list 1 in

برای جلوگیری از Flooding به سمت BGP می‌توانیم محدودیت بر روی حداکثر Prefix را قرار دهیم به این منظور که چه میزان Prefix از سمت مقابل ارسال شود و درصورت ارسال بیش‌از حد تعیین شده جلسه ایجاد شده به حالت idle برود

router bgp 64502
neighbor 100.100.100.1 maximum-prefix number

اگر در سمت مشتری نیازی به استفاده از Default-Route نباشد می‌بایست Sequence آن را از حالت پیش‌فرض(10) تقییر دهد

ip prefix-list filter_default_route seq 10 deny 0.0.0.0/0
ip prefix-list filter_default_route seq 20 permit 0.0.0.0/0 le 32

router bgp 64502
neighbor 100.100.100.1 prefix-list filter_default_route  in

علاوه بر راهکار های بالا می‌توانید از ابزار های Open-Source مختلف برای کشف این حملات استفاده کنید یکی از ابزار های موفق در این زمینه Artemis می باشد.

نویسنده: امیرحسین تنگسیری نژاد


امیرحسین تنگسیری نژاد
امیرحسین تنگسیری نژاد

مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

متخصص امنیت اطلاعات و کارشناس شکار تهدیدات بانک ملی ایران ، دارای مدارک مختلف از Splunk و AWS و Fortinet و Huawei حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider می‌باشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند PenTest و SoC فعالیت داشته و دارم. سابقه همکاری با بعضی سازمان های در قالب پروژه و... را داشته ام الان به عنوان تحلیلگر امنیت سایبری در زیرساخت بانک ملی مشغول به کار هستم. لینکداین: https://www.linkedin.com/in/amirhoseintangsirinezhad/

نظرات