تدابير امنيتي در IPv6
(قسمت اول)
درك بهتر پروتكل IPv6 و ترافيك شبكه هنگام كار با ميزبانهاي اين پروتكل
منبع: ماهنامه هكينگ، سپتامبر 2010 ترجمه: محمد ناصح
چنانكه اغلب ما اطلاع داريم، در حال حاضر از نگارش چهارم پروتكل IP براي آدرسدهي در اينترنت استفاده ميشود. همچنين ميدانيم كه به دليل عدم توانايي اين نگارش از پروتكل IP در تأمين آدرسهاي موردنياز، نگارش ششم آن نيز معرفي شده است. پروتكل IPv4 به همراه ابزارهايي مانند NAT/PAT، پراكسيها، گيتويها و... هنوزهم در صحنه حضور دارد، اما پيچيدگي شبكهها هرروز افزايش مييابد و اين واقعيت بهطور معمول به افزايش دشواري فرآيند اشكالزدايي منجر ميشود. پروتكل IPv6 مشكل فضاي آدرسها را برطرف ميكند، گيتويها درخواستهاي كمتري را دريافت ميكنند و پيچيدگيهاي امنيتي بازنشاني اتصالات end-to-end كاهش مييابد. هدف اين مقاله كمك به خواننده براي درك بهتر پروتكل IPv6 و ترافيك شبكه در هنگام كار با ميزبانهاي اين پروتكل است. همچنين مطالب اين مقاله هنگام تحليل رفتاربدافزارها نيز كاربرد دارد (در قسمت «پشتيباني سيستمعاملها» علاوهبر بررسي نحوه پشتيباني سيستمعاملهاي مختلف از IPv6 بهطورخاص به اين موضوع پرداخته شده است). اغلب پلتفرمها و سيستمعاملها از IPv6 پشتيباني ميكنند و در صورت فعال نبودن اين قابليت با اجراي يك دستور ساده ميتوان آن را فعال كرد.
معرفي
تاكنون بستههاي ترميمي IPv6 براي بدافزارهاي متعددي ارائهشدهاند. روباتهاي IRC مانند Eggdrop (محبوبترين روبات اپنسورس IRC در جهان) بهگونهاي تطبيقيافتهاند كه سايتهاي IRC مبتنيبر IPv6 را بهعنوان سايتهاي كنترلي مورد استفاده قرار دهند. به اين ترتيب، يك بدافزار به منظور برقراري يك تونل ارتباطي براي عبور از ساختارهاي امنيتي مختص به IPv4 ميتواند IPv6 را روي IPv4 فعال كند. در سپتامبر سال 2005 يك جاسوسافزار موسوم به Rbot.AXS شناسايي شد. اين بدافزار از IRC مبتني برIPv6 (سرنامIPv6 Internet Relay Chat) به عنوان درپشتي استفاده ميكرد. چنين بدافزاري ميتواند خود را نصب كرده و پس از فعالسازي IPv6 روي ميزبان يك در پشتي باز كند و از طريق يك تونل IPv6 با يك سرور IPv6 IRC ارتباط برقرار كند. به عنوان يك مثال ديگر ميتوان به حمله IIS ISAPI Overflow اشاره كرد كه توسط كرم Code Red به كار گرفته شد. در اين مورد حمله مبتنيبر IPv4 در ترافيك شبكه IPv6 جاسازي شده بود. با توجه به اين كه مؤسسه IANA تاريخ اتمام آدرسهاي آزاد IPv4 را چهارم مي سال 2011 پيشبيني كرده است (IPv4 Exhaustion Counter (English) | INTEC Inc.). اين پرسش مطرح ميشود كه آيا بايد درباره IPv6 هوشيار باشيم؟ البته پاسخ مثبت است، اما از ديدگاه امنيتي كدام جنبه فناوري IPv6 از اهميت بيشتري برخوردار است؟ اگر سيستمهاي شما IPv6 را اجرا ميكنند، به دليل اجراي آن در شبكه بايد به عنوان بخشي از تدابير امنيتي از نقاطضعف مختص اين پروتكل آگاه باشيد؛ اگر شبكه شما از IPv6 استفاده نميكند، بهتر است پروتكل را غيرفعال كنيد، زيرا در غير اينصورت زمينه اجراي حملههاي امنيتي را براي مهاجمان فراهم كردهايد. با جستوجوي عبارت زير در گوگل اطلاعات مفيدي را درباره نقاط ضعف شناسايي شده IPv6 به دست ميآوريد:
site:securityfocus.com inurl:bid ipv6
IPv4 در برابر IPv6
كاملاً به جا است كه ابتدا درباره هِدِرهاي IP صحبت كنيم. اگر مايل هستيد ترافيك IPv6 را شناسايي و رفتار آن را تحليل كنيد، به ياد داشته باشيد كه هِدِر IPv4 (بسته به تنظيمات IP) بين بيست تا شصت بايت طول دارد، در حالي كه هِدِر IPv6 داراي طول ثابت چهل بايت است. تمام گزينهها به هِدِرهاي ضميمه منتقل شدهاند؛ در واقع بايت شماره 9 از هِدِر IPv4 كه با نام IP Protocol شناخته ميشود، در IPv6 با عنوان Next Header ارائه شده است. هدر IPv6 حاوي فهرست انطباقي checksum نيست. پروتكل IPv6 داراي سه نوع آدرس unicast، anycast و multicast است. به همين دليل، آدرسهاي مربوط به انتشار آدرسها حذف شدهاند. يك آدرس IPv6 متشكل از 128 بيت است، در حالي كه آدرسهاي IPv4 از 32 بيت تشكيل شدهاند. آدرسهاي IPv6 در هشت گروه شانزده بيتي مرتب شدهاند كه توسط كاراكتر “ : “ از يكديگر مجزا ميشوند و هرگروه شانزده بيتي توسط چهار رقم در مبناي شانزده نمايش داده ميشود. با وجود اين، امكان تلخيص آدرس با روشهاي مختلف فراهم شده است. به عنوان مثال، گروههاي پيدرپي مقادير صفر را ميتوان با يك جفت " :" نشان داد، اما تنها يك بار امكان انجام اين كار وجود دارد. بنابراين، يك آدرس مجاز IPv6 به صورت زير است:
mascalzone@mymac $ ifconfig en0 | grep inet
inet6 fe80::21b:63ff:fe96:7353%en0 prefixlen 64 scopeid 0x4
inet 10.10.225.198 netmask 0xfffffc00 broadcast 10.10.227.255
توجه كنيد كه آدرس كامل 128 بيتي بهصورت زير است:
fe80: 0000:0000:0000:021b:63ff:fe96:7353
نخستين بخش آدرس IPv6 كه به صورت (شانزده بيت ماسك شبكه) شانزده بيت، دو بايت، شانزده بيت نمايش داده ميشود، به طور معمول طبقه و دامنه آدرس را مشخص ميكند:
- عبارت fe80::/16 پيشوند پيوندهاي محلي بوده و بيانگر اين است كه آدرس تنها در حيطه محلي يك پيوند مشخص اعتبار دارد.
- از from 2000::/16 تا 3fff::/16 به آدرسهاي جهاني قابل مسيريابي تخصيص يافته است.
- آدرس 2001::/16 به نقل و انتقال اينترنتي IPv6 تخصيص يافته است.
- آدرس 3ffe::/16 درحال حاضر به بستر آزمايشي 6Bone اختصاص يافته است.
- آدرس 2002::/16 براي تونلهاي خودكارSIT 6 به 4 به كار گرفته شده است.
- آدرسهاي موجود در بازه 2001:0DB8::/32 در كتابهاي فني، مقالهها و محتواي آموزشي مورد استفاده قرار ميگيرد و به منظور اجتناب از سردرگم شدن كاربران و بروز اشتباه در آدرسدهي، هرگز از آدرسهاي اين محدوده در اينترنت عمومي استفاده نميشود.
علاوهبر موارد مذكور مجموعهاي از آدرسهاي ويژه IPv6 به شرح زير وجود دارند:
- آدرس بازگشتي IPv6 (كه در IPv4 به صورت 127.0.0.1 بود) بهصورت ::1. نمايش داده ميشود.
- كاراكترهاي :: به معناي عدم تخصيص آدرس بوده و از آنها ميتوان براي تعيين هر آدرسي استفاده كرد.
- آدرسهاي مربوط به تونل پويا و خودكار IPv6 روي IPv4 كه بهصورت آدرسهاي سازگار با IPv4 طراحي شدهاند و امكان ارسال اطلاعات را با استفاده از IPv6 روي شبكههاي IPv4 بهگونهاي شفاف فراهم ميكنند. به عنوان مثال اين آدرسها بهصورت ::192.168.1.1 نمايش داده ميشوند (دنباله چهار بايت آخر يك آدرس IPv6 را مانند آدرسهاي IPv4 ميتوان بهصورت اعشاري و در قالب كلي x:x:x:x:x:x:y.y.y.y نوشت كه در آن كاراكترهاي x نشاندهنده 6 گروه بالارتبه از ارقام مبناي 16 و كاراكترهاي y نشاندهنده ارقام اعشاري مربوط به چهار گروه پايينرتبه هشتتايي از آدرسIPv4 است).
- آدرسهاي مورداستفاده براي نمايش خودكار آدرسهاي IPv4 روي IPv6 كه امكان فعاليت ميزبانهاي اختصاصي IPv4 را روي شبكههاي IPv6 فراهم ميكنند. اين آدرسها بهصورت آدرسهاي نگاشت شده IPv4 طراحي شدهاند و بهصورت ::FFFF: نمايش داده ميشوند.
- پيشوندهاي خاص IPv6 كه در جدول 1 فهرست آنها را مشاهده ميكنيد.
انتظار ميرود خواننده با نحوه ايجاد يك آدرس IPv4 (بهصورت ايستا يا با استفاده از يك سرور DHCP) آشنا باشد. در IPv6 روشهاي متعددي براي ايجاد آدرس IP وجود دارد. به مانند IPv4 روش ايستاي توليد آدرسها هنوزهم وجود دارد و با عنوان Manual شناخته ميشود. در اين شيوه مدير شبكه آدرس طولاني IPv6 را بهصورت دستي وارد ميكند؛ در واقع ديگر نميتوان بهسادگي آدرسهاي IP را بهخاطر سپرد و به همين دليل ويژگي جديد Auto Configuration معرفيشد. ساير روشهاي ايجاد يك آدرس IP نيز شامل Autonomous ،Semi Autonomous ،Stateless Server و Stateful Server ميشوند. شيوه Autonomous امكان ايجاد يك آدرس IP را بدون نياز به تعامل با ساير سيستمها فراهم ميكند. در اين شيوه آدرس IP بهصورت خودبهخودي تخصيص مييابد (پيشوند محلي پيوند fe8:: مانند آدرس پيكربندي خودكار در IPv4 است كه به صورت 169.254.0.0 بود). در ادامه پيوند بين آدرس IPv6 كه بهصورت خودبهخودي تخصيصيافته و آدرس MAC مربوط به كارت شبكه را مورد بررسي قرار ميدهيم.
شيوه Autonomous (بهدليل احتمال تداخل آدرسها) امكان فعاليت سيستم را خارج از شبكه محلي فراهم نميكند. بنابراين، براي اتصال به اينترنت و مسيريابي مناسب، شيوه Semi Autonomous معرفي شد؛ در اين شيوه سيستم آدرسها را با تركيب اطلاعات خارجي مانند اطلاعات دريافتي از روتر (پيشوند 2000:: مربوط به شناسايي روتر) ايجاد ميكند. چنانكه گفته شد، دو شيوه ديگر آدرسدهي نيز با عنوان Stateless Server و Stateful Server (با پيشوند 2000: شناخته ميشوند. در اين شيوهها سرور DHCP آدرس IP را تأمين ميكند؛ در شيوه Stateful وضعيت آدرس نيز تثبيت ميشود، اما در شيوه Statetless اين آدرسها حفظ نميشوند.
::/0 مسير پيشفرض
::/128 تخصيص نيافته
::1/128 Loopback
::/96 سازگار با IPv4
::FFFF:0:0/96 نگاشت IPv4
2001::/32 Teredo
2001B8::/32 مستندسازي
2002::/16 6to4
FC00::/7 منحصربه فرد محلي
FC00::/7 آدرس محلي پيوند
FC00::/7 آدرس محلي سايت
FF00::/8 Multicast پيشوندهاي اختصاصي IPv6
علاوهبر آدرس محلي پيوند، نوع ديگري از آدرس موسوم به آدرس محلي سايت وجود دارد. ميزبانهاي IPv6 هنگام اتصال به يك شبكه مسيريابي شده IPv6 با استفاده از پيغام شناسايي روتر ICMPv6 كه به آدرس multicast تمام روترها (جدول 2) ارسال ميشود ميتوانند بهطور خودكار پيكربندي شوند. به اين ترتيب، اگر روتري با پيكربندي IPv6 موجود باشد، با ارسال يك بسته اطلاعاتي حاوي پارامترهاي پيكربندي لايه شبكه، به درخواست مذكور پاسخ ميگويد و در نتيجه يك آدرس محلي سايت ايجاد ميشود. يك ميزبان ميتواند از يك سرور DHCPv6 براي تحصيل يك آدرس محلي سايت بهره بگيرد. همچنين ميتوان آن را به ترتيب مذكور در بالا بهصورت دستي پيكربندي كرد.
بهطور خلاصه، قابليتهاي اوليه سطح 2 پروتكل IPv6 شامل موارد زير است:
- پروتكل Neighbor Discovery
پروتكل ICMPv6 امكان استفاده ميزبانها و روترها را از IPv6 براي گزارش خطاها و ارسال پيغامهاي وضعيت فراهم ميكند. مكانيزم MLD (سرنام Multicast Listener Discovery) براي شناسايي گيرندگان multicast روي پيوند مستقيم كاربرد دارد. مكانيزم MLD مجموعهاي از پيغامهاي سهتايي ICMPv6 را مورد استفاده قرار ميدهد و جايگزين پروتكلIGMP (سرنام Internet Group Management Protocol) در IPv4 شده است. پروتكل Neighbor Discovery نيز بهمنظور مديريت ارتباطات گرهبهگره روي يك پيوند بهكار گرفته ميشود. اين پروتكل مجموعهاي از پيغامهاي پنجتايي ICMPv6 را مورد استفاده قرارميدهند و در اصل جايگزين Address Resolution Protocol در IPv4 شده است.
قالب EUI-64
بهمنظور توليد يك آدرس منحصر بهفرد IPv6 پيشوند fe80:: در آدرسهاي محلي پيوند با يك آدرس MAC با قالب EUI-64 ادامه مييابد. اين الگوريتم از آدرس MAC كارت شبكه بهمنظور توليد چنين آدرسي بهره ميگيرد. بهعنوان نمونه به آدرس IPv6 زير توجه كنيد:
mascalzone@mymac $ ifconfig en0 | grep inet
inet6 fe80::21b:63ff:fe96:7353%en0 prefixlen 64 scopeid 0x4
inet 10.10.225.198 netmask 0xfffffc00 broadcast 10.10.227.255
mascalzone@mymac $ ifconfig en0 | grep ether
ether 00:1b:63:96:73:53
FF01::1 تمام گرههاي محلي گره
FF02::1 تمام گرههاي محلي پيوند
FF02::1 تمام گرههاي محلي سايت
FF02::1 تمام روترهاي محلي گره
FF02::2 تمام روترهاي محلي پيوند
FF02::2 تمام روترهاي محلي سايت
برخي از آدرسهاي مورد استفاده IPv6
در ادامه نحوه عملكرد الگوريتم را تشريح ميكنيم:
ابتدا آدرس MAC به دو قسمت 00:1b:63 و 96:73:53 تقسيم ميشود، سپس عبارت ff:fe در بين اين دوقسمت قرار ميگيرد:
00:1b:63:FF:FE:96:73:53
پس از آن بيت شماره 7 در نيمه دوم آدرس بهصورت زير معكوس ميشود:
00:1b:63:FF:FE:96:73:53
(00 = 0000 0000 -> 0000 0010 = 02)
در نتيجه آدرس 02:1b:63:FF:FE:96:73:53 بهدست ميآيد. اكنون ارتباط آدرس IPv6 و MAC كاملاً مشهود است:
fe80::21b:63ff:fe96:7353
در آدرس فوق عبارت inet6 به IPv6 مربوط بوده و عبارت %en0 به دليل پيادهسازي KAME براي تخصيص آدرس IPv6 روي رابط en0 مربوط به يك سيستمعامل OS X مكينتاش بهوجود آمده است. مؤسسه IETF به دليل ملاحظات حريم خصوصي، اعلام كرده ميتوان يك آدرس را با استفاده از EUI تصادفي بهگونهاي انتخاب كرد كه هرگز با يك EUI با پيكربندي خودكار تداخل نكند. بنابراين، مديران شبكه براي اجتناب از ردگيري و Mapping يا نگاشت EUI ميتوانند از بهكارگيري EUI-64 با پيكربندي خودكار اجتناب كنند.
تونلها
بهمنظور كاهش پيچيدگي فرآيند انتقال به شبكههاي IPv6، از قابليتهاي تعاملي بين IPv4 و IPv6 استفاده ميشود. ميزبانهاي IPv4 ميتوانند از روش پيادهسازي دوگانه IP استفاده كنند. پروتكل IPv6 از آدرسهاي سازگاربا IPv4 پشتيبانيميكند. اين كار بهاسطه بهرهگيري از آدرسهاي اختصاصي IPv6 كه آدرسهاي IPv4 در آنها تعبيه شدهاند، انجام ميپذيرد. تونلسازي كه از اين پس مركز توجه تحليلگران خواهد بود، نقش مهمي را در انتشار بدافزارها خواهد داشت. مكانيزمهاي تعاملي بين شبكهاي عبارتند از:
- مكانيزم Encapsulation (tunneling)
- مكانيزمهاي Simple Internet Transition (SIT) (RFC1933)
- مكانيزم Teredo (UDP port 3544).
- مكانيزم Teredo امكان اتصال IPv6 بين گرههاي IPv6 و IPv4 را كه توسط يك يا چند NAT از يكديگر جداشدهاند، فراهم ميكند.
(به عنوان مثال، در سيستمهاي مايكروسافت، مكانيزم Teredo براي ويستا، Xp با Service Pack 2 و بالاتر و ويندوز سرور 2008)
- مكانيزم Dual-Stack Transition Strategy
- پروتكل Intra-Site Automatic Tunnel Addressing Protocol (ISATAP) (RFC 4214) گرههاي Dual-Stack از پروتكل ISATAP براي شناسايي خودكار روترهاي IPv6 و بستههاي اطلاعاتي مربوط به تونلهاي IPv6 روي يك زيرساخت IPv4 بهرهميبرند. پروتكل ISATAP يك مكانيزم ساده براي نصب خودكار IPV6 در شبكههاي سازماني، سلولي و ارائهكنندگان خدمات اينترنت مبتني بر IPv4 است.
پيادهسازي دوگانه IP روي ميزبانها تكنيكي براي پشتيباني كامل از هردو پروتكل IPv4 و IPv6 است. پيادهسازي IPv6 روي IPv4 شامل تونلهاي نقطهبهنقطه است كه دراثر كپسولهشدن بستههاي اطلاعاتي IPv6 در هدرهاي IPv4 ساختهميشوند و از آنها براي انتقال اطلاعات در شبكه IPv4 استفاده ميشود. آدرس نقطهپاياني تونل IPv4 توسط اطلاعات پيكربندي موجود در گره كپسولهكننده اطلاعات شناسايي ميشود. تونلها ممكن است يكسويه يا دو سويه (پيوندهاي مجازي نقطه بهنقطه) باشند؛ ويژگي تونلسازي خودكار در پيادهسازي پروتكل IPv6 روي IPv4 مكانيزمي براي استفاده از آدرسهاي سازگاربا IPv4 بهمنظور تونلسازي خودكار بستههاي اطلاعاتي IPv6 روي شبكههاي IPv4 است.
آدرس نقطه انتهايي تونل IPv4 از طريق آدرس IPv4 تعبيه شده در آدرس مقصد بسته اطلاعاتي IPv6 كه با IPv4 سازگار است، شناسايي ميشود. در پايان نيز تونلسازي IPv6 روي IPv4 قرار دارد كه در آن آدرس نقطهپاياني تونل IPv4 با استفاده از پروتكل Neighbor Discovery شناسايي ميشود. در اين شيوه برخلاف تونلسازي پيكربندي شده، نيازي به پيكربندي آدرسها نيست و برخلاف تونلسازي خودكار، از آدرسهاي سازگار با IPv4 استفاده نميشود (در چنين سناريويي شبكه IPv4 از انتشار چندگانه (multicast) پشتيباني ميكند).
علاقه مندی ها (بوک مارک ها)