روابط عمومی شرکت ایدکو (توزیعکنندهی محصولات کسپرسکی در ایران)؛ ما همه در زندگی روزمره به شکلی با اینترنت اشیا و خانههای هوشمند سروکار داریم؛ از اسپیکرهای هوشمند گرفته تا حسگرهایی که پمپهای آب را کنترل میکنند. این خدمات برای ما ساده به نظر میرسند، اما در پشت صحنه، مجموعهای از دستگاهها و پروتکلهای مختلف با هم کار میکنند تا چنین تجربهای ممکن شود.
یکی از این پروتکلها Zigbee است؛ پروتکل بیسیم کممصرفی که بر پایه استاندارد IEEE 802.15.4 طراحی شده و به دستگاههای هوشمند اجازه میدهد با یکدیگر ارتباط برقرار کنند. این پروتکل در خانههای هوشمند بسیار رایج است، اما در محیطهای صنعتی هم استفاده میشود؛ جایی که صدها یا حتی هزاران حسگر باید بهصورت هماهنگ یک فرآیند را پشتیبانی کنند.
راهنماهای زیادی در اینترنت برای ارزیابی امنیت Zigbee وجود دارد، اما بیشتر آنها روی سناریوهای خانگی تمرکز دارند. در نتیجه،Zigbee مورد استفاده در محیطهای صنعتی که معمولاً دسترسی عمومی ندارد، کمتر مورد توجه قرار گرفته است. در این مقاله، بهصورت گامبهگام به بررسی ارزیابیهای امنیتی Zigbee میپردازم. ابتدا مفاهیم پایه پروتکل و سطح حملهای که معمولاً در پیادهسازیها دیده میشود را توضیح میدهم. سپس سراغ دو سناریوی حمله واقعی که ممکن است در محیطهای صنعتی رخ دهد میرویم و به مشکلات رایجی که در ارزیابیها دیده میشود اشاره خواهیم کرد. در پایان نیز راهکارهای عملی برای کاهش ریسک و برطرف کردن این ضعفها ارائه میشود. با ما همراه بمانید.
زیگبی چیست؟
Zigbee یک پروتکل ارتباط بیسیم است که برای کاربردهای کممصرف در شبکههای حسگر بیسیم طراحی شده است. این پروتکل بر پایه استاندارد IEEE 802.15.4 ساخته شده و برای ارتباط کوتاهبرد و کممصرف مناسب است. زیگبی از شبکههای مش پشتیبانی میکند، به این معنی که دستگاهها میتوانند از طریق یکدیگر به هم متصل شوند و برد شبکه را افزایش دهند. این پروتکل روی فرکانس 2.4 گیگاهرتز کار میکند و در خانههای هوشمند، اتوماسیون صنعتی، مانیتورینگ انرژی و بسیاری کاربردهای دیگر استفاده میشود.
ممکن است این سؤال پیش بیاید که وقتی وای فای همه جا وجود دارد، چرا به Zigbee نیاز است؟ پاسخ به نوع کاربرد بستگی دارد. در بیشتر خانهها، وای فای برای اتصال دستگاهها کافی است. اما تصور کنید یک حسگر باتریخور دارید که به برق خانه متصل نیست. اگر این حسگر ازوای فای استفاده کند، باتری آن خیلی سریع خالی میشود – شاید تنها در چند روز – چونوای فای مصرف انرژی بالایی دارد. در مقابل، Zigbee امکان عملکرد ماهها یا حتی سالها بدون نیاز به تعویض باتری را فراهم میکند. حال یک مثال شدیدتر را در نظر بگیرید: شما باید حسگرهایی را در یک منطقه پرتابش رادیواکتیو قرار دهید که انسانها نمیتوانند وارد شوند. حسگرها را از هلیکوپتر رها میکنید و آنها باید ماهها بدون تعویض باتری کار کنند. در این شرایط، مصرف انرژی بالاترین اولویت است. وای فای جواب نمیدهد، اما Zigbee دقیقاً برای چنین سناریوهایی طراحی شده است. همچنین اگر منطقه بسیار بزرگ باشد و هزاران متر مربع را پوشش دهد و هزاران حسگر نیاز باشد، Zigbee مزیت بزرگی دارد: این پروتکل میتواند هزاران گره را در یک شبکه مش پشتیبانی کند، در حالی که وای فای معمولاً محدود به چند صد گره است. دلایل و جزئیات بیشتری هم وجود دارد، اما اینها اصلیترین دلایلی هستند که Zigbee برای شبکههای بزرگ و کممصرف حسگرها ترجیح داده میشود.
Zigbee و IEEE 802.15.4 هر دو استانداردهایی برای ارتباطات بیسیم هستند، اما تفاوت اصلی آنها در لایههایی است که پشتیبانی میکنند. IEEE 802.15.4 فقط لایههای فیزیکی و کنترل دسترسی به رسانه را تعریف میکند که نشان میدهد دستگاهها چگونه دادهها را ارسال و دریافت میکنند. Zigbee در باند فرکانسی ۲.۴ گیگاهرتز کار میکند که همان باندی است که وایفای و بلوتوث هم از آن استفاده میکنند. این باند شامل ۱۶ کانال است که هرکدام ۲ مگاهرتز پهنای باند دارند و بین هر دو کانال ۵ مگاهرتز فاصله است. به دلیل استفاده مشترک از این فرکانس، ممکن است شبکههای Zigbee با تداخل وایفای یا بلوتوث مواجه شوند. با این حال، مصرف انرژی پایین Zigbee و قابلیت انتخاب هوشمند کانال کمک میکند تا این تداخلها تا حد زیادی کاهش یابند.
دستگاهها و ساختار شبکه
در Zigbee سه نوع اصلی دستگاه وجود دارد که هر کدام نقش متفاوتی در شبکه ایفا میکنند.
- Zigbee coordinator
Coordinator مغز شبکه Zigbee محسوب میشود. هر شبکه Zigbee فقط یک coordinator دارد و شبکه همیشه توسط آن راهاندازی میشود. این دستگاه دارای آدرس ثابت 0x0000 است و وظایف اصلی زیر را بر عهده دارد:
-
راهاندازی و مدیریت شبکهZigbee
-
انتخاب کانال ارتباطی
-
اختصاص آدرس به سایر دستگاهها
-
ذخیره اطلاعات شبکه
انتخاب شناسه شبکهکه یک شناسه دو بایتی است و برای شناسایی یکتای شبکه استفاده میشود. تنظیم شناسه شبکه گسترده که یک مقدار ۸ بایتی است و معمولاً نام شبکه را نشان میدهد. همچنین، هماهنگکنندهمیتواند دستگاههای وابستهای داشته باشد که شامل روتر Zigbee یا دستگاه انتهایی Zigbee میشوند.
Zigbee router
عملکردی مشابه روتر در شبکههای معمولی دارد. دادهها را بین دستگاهها منتقل میکند، برد شبکه را افزایش میدهد و میتواند دستگاههای فرزند بپذیرد که اغلب end device هستند. روترها نقش کلیدی در ایجاد شبکههای مش بزرگ دارند، چون ارتباط بین گرههای دور از هم را از طریق چندین مسیر ممکن میکنند.
Zigbee end device
اند دیوایس، سادهترین و کممصرفترین نوع دستگاه Zigbee است که فقط با دستگاههای والد خود ارتباط دارد و بیشتر وقتش را در حالت خواب میگذراند. نمونههایی مانند حسگرها، ریموتها و کلیدها از آن هستند. این دستگاهها معمولاً دستگاه فرزند ندارند، مگر اینکه همزمان بهعنوان روتر و دستگاه انتهایی تنظیم شده باشند.
دستگاههای Zigbee دو نوع آدرس دارند:
- آدرس کوتاه ۲ بایتی که مشابه آدرسهای IP است.
- آدرس توسعهیافته ۸ بایتی که مشابه آدرسهای MAC است.
این آدرسها میتوانند هم در لایه MAC و هم در لایه شبکه استفاده شوند.
راهاندازی زیگبی
Zigbee سطح حملههای متعددی دارد؛ از حملات رادیویی سطح پایین گرفته تا fuzzing پروتکل. اما در این مطلب تمرکز اصلی روی حملات لایه کاربرد است. برای شفافتر شدن مفاهیم، سناریوی تست عمداً ساده طراحی شده و شامل دو مسیر حمله مشخص است.
در این سناریو، یک دستگاه هماهنگکننده زیگبی به دستگاهی متصل است که همزمان نقش دستگاه انتهایی و روتر را دارد. این هماهنگکننده علاوه بر زیگبی، ارتباطاتی مانند اترنت، بلوتوث، وایفای و LTE نیز دارد. در سمت دیگر، دستگاه انتهایی یک رله دارد که از طریق زیگبی میتوان آن را روشن یا خاموش کرد. این رله میتواند با رویدادهایی از دیگر رابطها مانند بلوتوث یا اترنت نیز فعال شود. هدف ما این است که فقط از طریق زیگبی، کنترل رله را به دست بگیریم و وضعیت آن را تغییر دهیم. چون سایر رابطها مانند اترنت و بلوتوث خارج از محدوده بررسی ما هستند، حمله باید از طریق آسیبپذیری در ارتباط زیگبی صورت گیرد.
برای این تحقیق، دو روش حمله را بررسی میکنیم:
تزریق بسته جعلی: ارسال فرمانهای جعلی به دستگاه انتهایی بهجای هماهنگکننده، با هدف کنترل رله.
جعل هماهنگکننده: جعل خود بهعنوان هماهنگکننده اصلی برای فریب دستگاه انتهایی و وادار کردن آن به اتصال به هماهنگکننده تحت کنترل مهاجم، سپس کنترل مستقیم رله.
تزریق بسته جعلی
در این سناریو فرض میکنیم شبکه زیگبی از قبل فعال است و هر دو گره هماهنگکننده و دستگاه انتهایی بهطور عادی کار میکنند. هماهنگکننده علاوه بر زیگبی، رابطهای دیگری مانند اترنت هم دارد و از این رابطها برای کنترل رله استفاده میشود. برای مثال، فرمانی از طریق اترنت دریافت میشود و هماهنگکننده دستور زیگبی به دستگاه انتهایی میفرستد تا رله را روشن یا خاموش کند. هدف ما این است که بدون استفاده از این رابطها و فقط از طریق زیگبی، با ارسال بستههایی که شبیه بستههای معتبر هستند، رله را کنترل کنیم.
شنود
اولین قدم در ارزیابی ارتباطات بیسیم، شنود ترافیک است تا ببینیم دستگاهها چگونه با هم ارتباط برقرار میکنند. برای زیگبی، یکی از ابزارهای ساده و رایج، دانگل USB مدل nRF52840 از شرکت Nordic Semiconductor است. با نصب نرمافزار رسمی nRF Sniffer برای 802.15.4، این دانگل میتواند در حالت شنود کامل کار و تمام ترافیک زیگبی را ضبط کند. این دادهها را میتوان در Wireshark باز کرده و فریمها را بررسی کرد.
پیدا کردن کانال فعال
زیگبی روی یکی از ۱۶ کانال مشخص کار میکند، بنابراین ابزار شنود باید روی همان کانالی تنظیم شود که شبکه از آن استفاده میکند. یکی از راههای ساده برای پیدا کردن کانال درست این است که کانالها را بهصورت دستی تغییر دهیم و ببینیم روی کدام کانال ترافیک زیگبی دیده میشود. هر زمان ترافیک ظاهر شد، یعنی کانال درست پیدا شده است. در ابزار بررسی بستهها، بستهها فقط بهصورت داده یا فرمان نمایش داده میشوند و جزئیات دقیق آنها مشخص نیست. دلیل این موضوع رمزنگاری بودن ترافیک است.
با این حال، حتی وقتی دادهها رمز شدهاند، اطلاعات ابتدایی بستهها همچنان قابل مشاهده است؛ مثل آدرس فرستنده و گیرنده، شناسه شبکه، آدرسهای کوتاه و توسعهیافته و اطلاعات کنترلی فریم. اما محتوای اصلی فرمانها، مانند دستور روشن یا خاموش کردن رله، رمز میشود و بدون داشتن کلید قابل خواندن نیست. با وجود این، همین اطلاعات ظاهری هم برای تحلیل ارتباط کافی است.
رمزگشایی
زیگبی از مدلها و کلیدهای مختلفی برای رمزنگاری استفاده میکند. برای سادهسازی موضوع، در این بررسی حالتی را در نظر میگیریم که تنها دو دستگاه در شبکه حضور دارند: یک هماهنگکننده و یک دستگاه که همزمان نقش دستگاه انتهایی و روتر را دارد. در چنین شرایطی معمولاً فقط از رمزنگاری در سطح شبکه استفاده میشود، در حالی که در شبکههای بزرگتر و پیچیدهتر ممکن است چند نوع رمزنگاری بهطور همزمان فعال باشد.
در رمزنگاری شبکه، بیشتر ترافیکی که شنود میشود با یک کلید مشترک شبکه رمز میشود. این کلید یک کلید متقارن ۱۲۸ بیتی است که بین همه دستگاههای شبکه مشترک است و از پیامهای شبکه مانند مسیریابی و پیامهای عمومی محافظت میکند. چون همه روترهای مسیر این کلید را دارند، این نوع رمزنگاری انتهابهانتها محسوب نمیشود.
برای محافظت از دادههای کاربردی، زیگبی میتواند از دو روش استفاده کند. در روش اول، دادههای کاربردی در سطح شبکه و بهصورت مرحلهبهمرحله رمز میشوند، بهطوری که هر روتر در مسیر قادر به رمزگشایی آنهاست. این روش امنیت بالایی ندارد و برای دادههای حساس مناسب نیست. در روش دوم، از رمزنگاری انتهابهانتها استفاده میشود که در آن یک کلید اختصاصی فقط بین دو دستگاه مشخص، مانند هماهنگکننده و دستگاه انتهایی، به اشتراک گذاشته میشود و محتوای کاربردی بهطور کامل محافظت میگردد.
از آنجا که کلید شبکه امکان خواندن یا جعل بخش بزرگی از ترافیک را فراهم میکند، باید کاملاً تصادفی و بهخوبی محافظت شود. افشای این کلید بهمعنای به خطر افتادن کل شبکه است.
وقتی یک دستگاه جدید به شبکه اضافه میشود، هماهنگکننده که نقش مرکز اعتماد را دارد، کلید شبکه را از طریق یک پیام ویژه برای آن ارسال میکند. این پیام با استفاده از کلید پیوند محافظت میشود تا کلید شبکه بهصورت آشکار در شبکه منتقل نشود. کلید پیوند هویت دستگاه جدید را تأیید میکند و امنیت فرایند اتصال را تضمین میکند.
کلیدهای پیوند معمولاً یا از قبل روی دستگاهها تنظیم شدهاند یا هنگام راهاندازی از طریق یک فرایند تولید کلید ایجاد میشوند. یکی از مشکلات قدیمی زیگبی استفاده از یک کلید پیشفرض و سراسری بود که بسیاری از تولیدکنندگان آن را روی دستگاهها فعال باقی گذاشتند. این موضوع باعث میشد هر فردی که این کلید را بداند بتواند دستگاه جدید به شبکه اضافه کند و حتی کلید شبکه را به دست آورد.
در نسخههای جدیدتر زیگبی، بهویژه از نسخههای جدید به بعد، از یک کد نصب اختصاصی استفاده میشود که معمولاً روی بدنه یا برچسب دستگاه درج شده است. این کد برای تولید یک کلید پیوند منحصربهفرد به کار میرود و مشکل کلیدهای مشترک و ثابت را تا حد زیادی حل میکند. با این حال، هنوز هم در بررسیهای عملی دستگاههایی دیده میشوند که از کلیدهای پیشفرض یا ثابت استفاده میکنند و به همین دلیل آسیبپذیر هستند.
اگر یک دستگاه قبلاً به شبکه متصل شده باشد و با کلید شبکه ارتباط برقرار کند، برای رمزگشایی ترافیک دو راه کلی وجود دارد: یا کلید شبکه به دست آید که عملاً بسیار دشوار است، یا دستگاه مجبور شود دوباره به شبکه متصل شود تا پیام ارسال کلید ضبط شود. البته این پیام هم با کلید پیوند محافظت میشود، بنابراین داشتن این کلید همچنان ضروری است.
برای بهدست آوردن کلیدها معمولاً از روشهایی مانند استفاده از کلیدهای پیشفرض، شناسایی سازنده دستگاه، بررسی اطلاعات سختافزاری یا حتی دسترسی فیزیکی به دستگاه استفاده میشود. در صورت دسترسی فیزیکی، میتوان نرمافزار داخلی دستگاه را استخراج و کلیدهای ذخیرهشده را پیدا کرد.
پس از بهدست آوردن کلیدها، فرایند رمزگشایی ساده است. کافی است فایل ترافیک ضبطشده باز شود و کلیدها به تنظیمات مربوط اضافه شوند. در این حالت، محتوای رمزگشاییشده، از جمله فرمانهای کاربردی مانند روشن و خاموش کردن رله، بهصورت واضح قابل مشاهده خواهد بود.
انتخاب ابزار
حالا که امکان خواندن و حتی رمزگشایی ترافیک زیگبی فراهم شده، به ابزاری نیاز داریم که بتواند بستهها را در ارتباط بین هماهنگکننده و دستگاه انتهایی ارسال کند. برای ساده و عملی بودن کار، از ابزارهای ارزان و در دسترس استفاده میشود. در این سناریو از یک دانگل USB استفاده میکنیم که هم برای شنود و هم برای ارسال بستههای زیگبی و ارتباطات مبتنی بر استاندارد ۸۰۲.۱۵.۴ مناسب است.
ساخت بسته
بعد از آماده شدن برای تزریق بسته، سؤال اصلی این است که چه پیامی باید ارسال شود. برای کنترل رله، کافی است همان فرمانی ارسال شود که هماهنگکننده در حالت عادی میفرستد. سادهترین راه برای پیدا کردن این فرمان، شنود ترافیک و بررسی پیامهاست. اما در بسیاری از موارد، ابزارهای تحلیل نمیتوانند محتوای کاربردی را بهدرستی نمایش دهند، چون ساختار پیامها استاندارد نیست.
برای فهم ترافیک کاربردی زیگبی، باید سه مفهوم اصلی را شناخت:
- پروفایل که رفتار دستگاهها را در یک کاربرد مشخص تعریف میکند
- کلاستر که مجموعهای از فرمانها برای یک عملکرد خاص است
- اندپوینت که مانند یک درگاه منطقی روی دستگاه عمل میکند
در کاربردهای خانگی معمولاً ساختارها مشخص و قابل تشخیص هستند، اما در محیطهای صنعتی، تولیدکنندگان اغلب از ساختارهای اختصاصی استفاده میکنند. به همین دلیل، پیامها بهراحتی قابل تفسیر نیستند.
برای پیدا کردن فرمان درست در این شرایط، حمله در دو مرحله انجام میشود.
مرحله غیرفعال
در این مرحله، ترافیک زمانی شنود میشود که سیستم بهطور عادی کار میکند. مثلاً رله از طریق رابطهای دیگر فعال میشود و پیامهای زیگبی مربوط به آن ضبط میگردد. اگر امکان رمزگشایی وجود داشته باشد، میتوان پیامهای مربوط به روشن و خاموش شدن رله را استخراج و از آنها برای ساخت بسته جعلی استفاده کرد.
مرحله فعال
بعد از شناسایی پیامهای معتبر، نوبت به ساخت بسته جعلی میرسد. اگر مکانیزم جلوگیری از بازپخش وجود نداشته باشد، میتوان همان پیام را دوباره ارسال کرد. اما در بیشتر موارد لازم است شمارندههای امنیتی و کاربردی شناسایی و مقدار آنها بهدرستی افزایش داده شود.
زیگبی علاوه بر شمارندههای کاربردی، از یک شمارنده فریم در بخش امنیتی بسته استفاده میکند تا از ارسال دوباره بستههای قدیمی جلوگیری شود. بنابراین این مقدار هم باید بهروز شود. در عمل، این مرحله شامل شنود یک بسته معتبر، استخراج شمارندهها، افزایش آنها، ساخت بسته جدید با مقادیر درست در لایههای شبکه و کاربرد، رمزنگاری با کلید صحیح و در نهایت ارسال بستهای است که برای گیرنده کاملاً معتبر به نظر برسد. اگر همه مراحل درست انجام شوند، میتوان ارتباط زیگبی را در اختیار گرفت و فقط از طریق همین ارتباط، رله را روشن و خاموش کرد. یکی از روشهای مهم این کار، جا زدن خود بهجای هماهنگکننده و وادار کردن دستگاه انتهایی به ترک شبکه اصلی و اتصال به یک شبکه جعلی است.
در این روش، مهاجم با ارسال پیامهای جعلی و ایجاد اختلال در شناسه شبکه، باعث میشود دستگاه انتهایی از شبکه جدا شود. سپس تلاش میکند خود را بهعنوان هماهنگکننده اصلی معرفی کند تا دستگاه به شبکه جعلی متصل شود. در این انتخاب، عواملی مانند شناسه شبکه گسترده، رفتار پروتکل و قدرت سیگنال مؤثر هستند. اجرای این حمله ساده نیست، چون ارتباط زیگبی به زمانبندی دقیق و پاسخهای سریع وابسته است. ابزارهای ساده معمولاً دقت کافی ندارند و اتصال ناپایدار میشود. به همین دلیل، بخشی از رفتار زیگبی باید مستقیماً روی نرمافزار داخلی دانگل پیادهسازی شود. با این کار، امکان فریب دستگاه انتهایی فراهم میشود و پس از اتصال، مهاجم میتواند کنترل کامل دستگاه، از جمله روشن و خاموش کردن رله را در دست بگیرد.
نتیجهگیری
این بررسی نشان میدهد که استفاده از پروفایلهای اختصاصی در محیطهای صنعتی، ارزیابی امنیت را پیچیده میکند و ابزارهای آماده معمولاً پاسخگو نیستند. همچنین، یک پیکربندی نادرست Zigbee میتواند به تصاحب کامل شبکه منجر شود. برای افزایش امنیت، باید از قابلیتهای امنیتی نسخههای جدید Zigbee استفاده کرد، از کلیدهای منحصربهفرد مبتنی بر«کد نصب»استفاده کرد، از کلیدهای پیشفرض وهاردکدشده اجتناب کرد و رمزنگاری انتهابهانتها در لایه کاربرد را بهعنوان یک لایه امنیتی اضافی در نظر گرفت.
کسپرسکی آنلاین (ایدکو)
کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز میشناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.