کیوان
کیوان
خواندن ۸ دقیقه·۵ سال پیش

تشریح آسیب پذیری تجهیزات کنترل صنعتی RockWell

RockWell Company
RockWell Company

چندین ماه پیش روی یک پروژه ای کار میکردم که درخصوص امنیت تجهیزات کنترل صنعتی کمپانی RockWell بود و در نهایت گزارشی از اون پروژه تهیه کرده بودم. اکنون قصد دارم گزارش را در این مقاله نشر بدهم چرا که خالی از لطف نیست و امیدوارم عزیزانی که علاقه مند هستند براشون مفید واقع بشه.


آشنایی کوتاه با کمپانی RockWell :

اطلاعات کوتاهی درباره کمپانی RockWell به شرح زیر است :

که از ویکی پدیا نیز میتوانید در مورد این کمپانی اطلاعاتی بدست آورید :

https://en.wikipedia.org/wiki/Rockwell_Automation


شرح کلی آسیب پذیری :

این بررسی امنیتی روی ۳ مدل از تجهیزات کنترل صنعتی این کمپانی صورت گرفته است که به شرح زیر هستند :

1769-L23E-QBFC1 1769-L32E 1769-L23E-QB1

آسیب پذیری که این ۳ مدل از تجهیزات کنترل صنعتی RockWell از آن رنج میبرند مربوط به دسته آسیب پذیری های Local And Remote بوده و این توانایی را به شخص نفوذگر میدهد تا اقدام به Reset کردن تجهیزات دارای آسیب پذیری نماید.این تجهیزات ساخت کمپانی RockWell بیشتر در صنایع آب و برق و گاز به منظور اتوماسیون صنعتی مورد استفاده قرار میگیرند و تا جاییکه من دستگاه های آسیب پذیر را مورد بررسی قرار داده بودم این تجهیزات دارای آسیب پذیری در ایران مورد استفاده قرار نمیگیرند.این احتمال وجود دارد که مدل های دیگر از تجهیزات این کمپانی دارای اینچنین آسیب پذیری باشند و روشن شدن این موضوع نیاز به بررسی مدل های مختلف این تجهیزات دارد.این آسیب پذیری امنیتی میتواند بصورت برنامه ریزی شده نیز عملیاتی شود. بعنوان مثال میتوان برای این آسیب پذیری Auto Exploiter تولید کرد که روی تجهیزات آسیب پذیر بصورت اتوماتیک در یک بازه زمانی مشخص حملات خود را مبنی بر Reset کردن آن اتوماسیون انجام دهد و انجام اینکار بصورت مداوم باعث از کار افتادن اتوماسیون خواهد شد.نکته قابل توجه درباره این آسیب پذیری آن است که این آسیب پذیری نیازی به دسترسی بصورت تحت وب به اتوماسیون آسیب پذیر را نداشته و صرفا حمله از طریق پورت مربوط به این تجهیزات یعنی در واقع از طریق پورت 44818 انجام میگیرد و این پورت یک شماره پورت UDP بوده و مختص این تجهیزات میباشد.اما در صورتیکه هدف مقابل دارای دسترسی از طریق Web نیز داشته باشد در اینصورت این امکان فراهم میشود که لحظه Uptime سرور مقابل قابل رویت باشد.در زمان بررسی و انجام این پروژه نمونه ای از این اهداف مربوط به این آسیب پذیری مربوط به دانشگاه KanSas آمریکا بود که با این آسیب پذیری امکان Reset اتوماسیون مورد استفاده در آنجا فراهم میشده است. آسیب پذیری باتوجه به اینکه با زندگی بشر ارتباط مستقیم دارد بنابراین امکان برطرف شدن این آسیب پذیری بیشتر بوده و در حال حاضر نیز است.


حمله و عمل Exploitation چگونه اتفاق میفتد؟

در این قسمت قصد دارم به این موضوع بپردازم که چگونه این حمله روی یک سیستم اتفاق میفتد و سیستم مقابل میتواند اکسپلویت شود؟

بعنوان مثال آدرس آیپی 129.130.21.141 بعنوان هدف ما در این تست نفوذ جهت نتیجه گیری کلی است و همچنین قابل ذکر است که این آدرس یکی از سرورهای دانشگاه KanSas میباشد. در زمانی که روی این پروژه کار میکردم گزارش را بر مبنای همین سرور از دانشگاه Kansas تهیه میکردم بنابراین در این مقاله نیز روی این سرور توضیحات لازم را مطرح خواهیم کرد. برای انجام تست نفوذ و نتیجه گیری درمورد آن قبل از هرچیزی این موضوع بسیار روشن و واضح است که هر سرویسی در سمت سرور از یک Port Number استفاده میکند و سرویس میتواند دارای آسیب پذیری باشد که معمولا با Upgrade این مشکل برطرف میشود. به منظور اکسپلویت هدف مقابل اولین قدم دریافت اطلاعاتی درخصوص پورت های فعال هدف مقابل است که خروجی را خواهیم داشت :

اما همانطور که قابل مشاهده است خروجی من بسیار ناچیز و نتیجه مطلوبی را نیز دربر ندارد و طبق این نتیجه گیری Service Scanning متوجه میشویم که سرور مقابل تقریبا تمام سرویس های خود را بصورت ریموت در فایروال Filter کرده و در حقیقت غیرقابل استفاده است و تنها ارتباط تحت وب از طریق پورت شماره 80 و پروتکل HTTP ممکن است.برای تست نفوذ این تجهیزات کمپانی RockWell پروتکلی که ما دنبالش هستیم بصورت Undetected در مرحله اول وجود دارد و برای ما در خروجی نمایش داده نمیشود. اینبار فقط پورت مربوط به این تجهیزات را که 44818 است اسکن میکنیم که خروجی به صورت زیر است :

همانطور که مشاهده میکنید نتیجه مثبتی دریافت کردم و مشخص میکند که پورت و سرویسی که به دنبال آن هستیم در سرور فعال میباشد.باتوجه به اینکه سرویس هایی نظیر ftp , ssh روی سرور وجود دارند اما بدلیل اینکه بصورت Remote برای ما فیلتر شده اند بنابراین قابل استفاده نیستند. تا اینجای کار ما توانستیم اطلاعاتی درخصوص سرویس مورد نظر روی هدف مان بدست آوریم. در گام بعدی برای کسب یکسری اطلاعات دیگر میتوانیم از پورت ۸۰ استفاده کرده و بصورت تحت وب پنل اتوماسیون را مشاهده کنیم.

در این قسمت یکسری اطلاعات قابل مشاهده است بعنوان مثال مدل سیستم اتوماسیون که درحال حاضر سرویس میدهد قابل مشاهده است. با این مشخصات اگر سیستم هدف ما اکسپلویت شد متوجه میشویم که تمامی تجهیزات مرتبط با این مدل قابل اکسپلویت شدن هستند مگر آنکه آسیب پذیری آنها برطرف شده باشد و یا یکسری اقدامات Spoofed Info روی تجهیزات انجام شده باشد.همچنین قابل مشاهده است که Uptime سیستم مربوط به چند روز (یا حتی چند ماه) قبل میباشد.نکته مهمی در اینجا مطرح میشود در صورتیکه هدف ما از طریق تحت وب قابل دسترسی نباشد از چه روشی میتوان مدل مربوط به اتوماسیون را تشخیص داد؟ در این صورت میتوان از موتور Shodan استفاده کرد که بعنوان مثال برای این هدف ما خروجی به شرح زیر است :

فریمورک Msfconsole یک اکسپلویتی تحت عنوان multi_cip_command دارد که قابل پیاده سازی روی این مدل تجهیزات آسیب پذیر میباشد و میتوان از آن اکسپلویت در راستای پیاده سازی حمله روی این تجهیزات استفاده کرد.این اکسپلویت به زبان Ruby نوشته شده است و در محیط فریمورک msf قابل بهره برداری میباشد. برای مورد هدف قرار دادن یک آدرس با این فایل اکسپلویت ۳ گزینه برای اینکار نیاز است تا تنظیم شود :

همانطور که مشاهده میکنید آپشنی وجود دارد برای تعیین IP Addr سیستم مقابل و آپشنی وجود دارد برای تعیین Port Num سیستم مقابل و همچنین آپشن ATTACK نیز وجود دارد که نوع حمله را مشخص میکند. حملاتی که تحت این آسیب پذیری قابل انجام هستند :

StopCPU CrashCPU CrashEther ResetEther

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

نکته : آدرس آیپی موجود در اسکرین شات مربوط به KanSas نیست اما بررسی های بالا مربوط به Kansas بوده است.

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

اکنون با چک کردن وضعیت Uptime میتوان متوجه شد که اکسپلویت با موفقیت انجام شده است.

چگونه حملات به تجهیزات آسیب پذیر را بصورت مداوم و پشت سرهم انجام دهیم‌؟

برای انجام اینکار ما نیاز داریم که ابزاری برای این منظور کدنویسی کنیم.این ابزار میتواند با اهداف مختلف و با توجه به نیازهای ما کدنویسی شود. من به منظور تست و آزمایش یک ابزار ساده با Bash کدنویسی کردم که این ابزار در هر ۱۰ ثانیه اقدام به اجرای این اکسپلویت میکند و باعث میشود هدف مقابل ما در هر ۱۰ ثانیه یکبار Reset شود بنابراین اینکار باعث میشود وضعیت اتوماسیون هدف مقابل تقریبا از کار بیفتد و کارکرد آن مختل شود.

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

تجهیزات بسیاری از این مدل های مذکور دارای آسیب پذیری هستند که از طریق Shodan قابل دستیابی می باشند.

نکته : یک ویدیو دمو از انجام این حمله روی یک سرور به آدرس آیپی 166.130.4.33 قرار میدهم که میتوانید مشاهده کنید. قابل ذکر است ویدیو دمویی که مربوط به انجام این حمله روی سرور KanSas داشتم متاسفانه در حال حاضر در دسترس نیست وگرنه همان را در اینجا قرار میدادم.

امیدوارم مفید واقع شده باشد.






مهندس امنیت شبکه
شاید از این پست‌ها خوشتان بیاید