🧑‍💻OT Sentinel🧑‍💻
657 subscribers
225 photos
15 videos
22 files
151 links
ICS/OT Security • Critical Infrastructure • Cyber Defense

Python tips & OT tricks
The Good, the Bad & the Industrial Ugly

👨‍💻 بلاگ شخصی درباره امنیت سیستم‌های کنترل صنعتی،
تجربه‌های چند سال کار توی پروژه‌های واقعی،
و نکاتی برای علاقه‌مندان و تازه‌کاره
Download Telegram
آینده امنیت سیستم‌های کنترل دفاعی

قدرت دفاعی آینده نه در تسلیحات، بلکه در کنترل، الگوریتم و داده تعریف می‌شود. دیجیتالی‌شدن و شبکه‌ای‌شدن سامانه‌ها سطح حمله را افزایش داده و تهدیدهای ترکیبی، لایه‌های سایبری، فیزیکی و انسانی را همزمان هدف می‌گیرند. در این فضا، داده، مدل‌سازی و دیجیتال‌توئین به ابزار اصلی پیش‌بینی و تاب‌آوری تبدیل شده‌اند. نفوذ هوش مصنوعی به هسته کنترل، کارایی را افزایش می‌دهد اما ریسک دستکاری و بحران اعتماد را نیز تشدید می‌کند. سامانه‌ای که منطق کنترلی آن آسیب‌پذیر باشد، حتی با پیشرفته‌ترین تجهیزات، به نقطه ضعف راهبردی بدل خواهد شد.
این تصویر نشان می‌دهد که امنیت در صنایع هسته‌ای مستقیماً به منطق سیستم‌های کنترل صنعتی وابسته است، نه صرفاً به حفاظت فیزیکی.
هر فرآیند حیاتی بر پایه تصمیم‌های شرطی و منطقی عمل می‌کند و دستکاری این منطق می‌تواند رفتار کل سامانه را تغییر دهد.
دیجیتالی‌شدن و اتصال‌پذیری ICSها سطح حمله را افزایش داده و تفکیک خطای فنی از حمله هدفمند را دشوار کرده است.
تهدیدها ماهیتی ترکیبی دارند و از هم‌پوشانی حملات سایبری، نفوذ منطقی و آسیب‌پذیری زنجیره تأمین شکل می‌گیرند.
در این فضا، امنیت به معنای حفظ رفتار صحیح سیستم در شرایط بحرانی است، نه صرفاً جلوگیری از نفوذ.
منطق کنترلی، نقطه آغاز پایداری یا فروپاشی عملیات هسته‌ای است.
👌1
آزمایش Aurora در سال ۲۰۰۷ توسط وزارت انرژی آمریکا انجام شد و نشان داد که تخریب فیزیکی تجهیزات صنعتی فقط با فرمان کنترلی ممکن است.
در این آزمایش، یک ژنراتور صنعتی بزرگ بدون هیچ‌گونه خرابکاری فیزیکی هدف قرار گرفت.
مهاجمان صرفاً به سیستم کنترل ژنراتور دسترسی داشتند، نه به خود دستگاه.
هیچ بدافزار پیچیده یا exploit خاصی استفاده نشد.
تنها کاری که انجام شد، ارسال دنباله‌ای دقیق از فرمان‌های قطع و وصل بریکر بود.
این فرمان‌ها با زمان‌بندی میلی‌ثانیه‌ای و کاملاً حساب‌شده ارسال شدند.
نتیجه، ایجاد تنش شدید مکانیکی در شفت ژنراتور بود.
گشتاور ناپایدار باعث لرزش‌های خارج از محدوده‌ی طراحی شد.
سیستم‌های حفاظتی فرصت واکنش نداشتند.
در نهایت ژنراتور به‌صورت فیزیکی آسیب دید و از مدار خارج شد.
این آزمایش ثابت کرد که پروتکل‌های صنعتی می‌توانند خودشان سلاح باشند.
Aurora نشان داد دانش فرایند از کد مخرب مهم‌تر است.
هیچ تغییری در منطق PLC لازم نبود.
اعتماد به «فرمان مجاز» نقطه‌ی شکست اصلی بود.
این اتفاق نگاه امنیتی به زیرساخت‌های حیاتی را برای همیشه تغییر داد.
👍1
۲۶ سپتامبر ۱۹۸۳، سیستم هشدار زودهنگام هسته‌ای شوروی (Oko) یک هشدار با اطمینان بالا از پرتاب موشک بالستیک از آمریکا ثبت کرد. این سامانه مبتنی بر سنسورهای مادون‌قرمز ماهواره‌ای بود و طبق دکترین جنگ سرد، باید ظرف چند دقیقه به زنجیره تصمیم هسته‌ای گزارش می‌شد. استانیسلاو پتروف، افسر شیفت، به‌جای اجرای کور پروتکل، اعتبار سناریوی تهدید را بررسی کرد. حمله‌ای واقعی با تعداد محدود موشک از نظر عملیاتی منطقی نبود و با الگوی حمله شناخته‌شده هم‌خوانی نداشت. از سوی دیگر، سیستم تازه عملیاتی شده بود و احتمال خطای سنسور وجود داشت. پتروف تحت تأثیر Automation Bias قرار نگرفت و نقش Human-in-the-Loop را حفظ کرد. او گزارش را تا دریافت تأیید از رادارهای زمینی به تعویق انداخت. هیچ تأییدی دریافت نشد و مشخص شد هشدار ناشی از خطای تفسیر داده‌های ماهواره‌ای بوده است. این حادثه نشان می‌دهد در سیستم‌های هسته‌ای، دفاعی و صنعتی، False Positive می‌تواند فاجعه‌بارتر از False Negative باشد. امنیت این سامانه‌ها فقط مسئله‌ی دقت الگوریتم نیست، بلکه به معماری تصمیم و جایگاه قضاوت انسانی وابسته است.
👍1
سال‌هاست که در مهندسی کنترل به ما گفته می‌شود اگر یک سیستم پایدار باشد، اگر PID درست تیون شده باشد یا اگر MPC با قیود مناسب طراحی شده باشد، مسئله اساساً حل شده است. این طرز فکر اما روی یک فرض پنهان بنا شده: اینکه محیط صادق است. کنترل کلاسیک در دنیایی خوب کار می‌کند که اغتشاش‌ها تصادفی‌اند، نویزها کور هستند و هیچ عاملی به‌صورت هدفمند علیه سیستم عمل نمی‌کند. به محض خروج از این فضا و ورود به محیط‌های adversarial، رقابتی یا حتی فقط پیچیده و غیرایستا، این فرض فرو می‌ریزد.
در چنین محیط‌هایی اغتشاش نیت دارد، ورودی‌های مزاحم به حالت سیستم وابسته‌اند و محیط به‌مرور از رفتار کنترلر یاد می‌گیرد. PID هیچ مدلی از نیت اغتشاش ندارد؛ فقط به خطا واکنش نشان می‌دهد. MPC آینده را پیش‌بینی می‌کند، اما فقط در چارچوب مدلی که خودش فرض کرده درست است. وقتی مدل کمی غلط باشد، وقتی دینامیک سیستم به‌صورت تطبیقی تغییر کند یا وقتی عامل بیرونی عمداً خارج از افق پیش‌بینی حرکت کند، کنترلر از یک تصمیم‌گیر به یک واکنش‌گر تبدیل می‌شود. در این نقطه سیستم ممکن است هنوز از نظر ریاضی پایدار باشد، اما عملاً دیگر تحت کنترل نیست.
🧑‍💻OT Sentinel🧑‍💻
سال‌هاست که در مهندسی کنترل به ما گفته می‌شود اگر یک سیستم پایدار باشد، اگر PID درست تیون شده باشد یا اگر MPC با قیود مناسب طراحی شده باشد، مسئله اساساً حل شده است. این طرز فکر اما روی یک فرض پنهان بنا شده: اینکه محیط صادق است. کنترل کلاسیک در دنیایی خوب کار…
اینجاست که یک تمایز مهم خودش را نشان می‌دهد؛ تمایزی که معمولاً فقط کسانی درک می‌کنند که سیستم واقعی را زیر فشار دیده‌اند: تفاوت بین stability و resilience. پایداری یعنی اگر سیستم کمی از نقطه تعادل منحرف شود، به آن بازمی‌گردد. تاب‌آوری اما یعنی اگر سیستم مورد حمله قرار گیرد، ساختار رفتارش را تغییر می‌دهد. یک سیستم می‌تواند کاملاً پایدار باشد و در عین حال به‌آرامی دچار افت عملکرد شود، در یک ناحیه امن ولی بی‌فایده قفل شود، یا تحت حمله طوری رفتار کند که تمام معیارهای کلاسیک برقرار بمانند اما مأموریت سیستم عملاً شکست بخورد.
کنترل کلاسیک عاشق تعادل است، اما دنیای واقعی عاشق تعادل نیست؛ دنیای واقعی عاشق بهره‌کشی از الگوهاست. هرجا الگویی ثابت باشد، چیزی پیدا می‌شود که آن را exploit کند. سیستمی که فقط error را کم می‌کند اما فرض می‌کند آینده شبیه گذشته است، در بهترین حالت در برابر محیط‌های هوشمند شکننده است. سیستم resilient سیستمی است که فقط پایدار نمی‌ماند، بلکه یاد می‌گیرد چه زمانی باید رفتار کنترلی خود را تغییر دهد، چه زمانی مدلش را به‌روزرسانی کند و چه زمانی فرضیات اولیه‌اش دیگر معتبر نیستند.
به همین دلیل است که در دنیای واقعی، robust control، adaptive strategies، game-theoretic control و learning-based approaches دیگر ابزار لوکس یا دانشگاهی نیستند؛ شرط بقا هستند. اگر سیستم تو فقط stable است، برای کتاب و شبیه‌سازی خوب است. اما اگر resilient نیست، دیر یا زود در محیطی که علیه تو بازی می‌کند کم می‌آورد؛ حتی اگر همه معادلات روی کاغذ بی‌نقص باشند.
📌 گاهی یک ایمیل، بیش از آن‌چه فکر می‌کنی معنا دارد. سال‌ها تلاش می‌تواند در چند خط خلاصه شود…فردا می‌گویم چرا
🧑‍💻OT Sentinel🧑‍💻 pinned «📌 گاهی یک ایمیل، بیش از آن‌چه فکر می‌کنی معنا دارد. سال‌ها تلاش می‌تواند در چند خط خلاصه شود…فردا می‌گویم چرا»
کنترل صنعتی نسل بعد، شبیه آن چیزی نیست که در بلوک‌دیاگرام‌های کلاسیک می‌بینیم. مسئله دیگر فقط این نیست که ورودی به خروجی برسد و error کم شود. در معماری‌های جدید، فرض اصلی عوض شده است: سیستم دیگر با یک «محیط خنثی» طرف نیست، بلکه با مجموعه‌ای از عامل‌ها، سیاست‌ها و رفتارهای متغیر تعامل می‌کند. به همین دلیل، هسته کنترل از یک حلقه ساده بازخوردی، به یک لایه تصمیم‌گیری چندسطحی تبدیل می‌شود؛ جایی که مشاهده، پیش‌بینی و اقدام هم‌زمان و تطبیقی انجام می‌شوند.

در این معماری‌ها، کنترلر فقط state سیستم را نمی‌بیند؛ بلکه سعی می‌کند الگوی رفتار محیط را تخمین بزند. داده صرفاً برای کاهش خطا استفاده نمی‌شود، بلکه برای تشخیص تغییر رژیم رفتاری به‌کار می‌رود. به‌جای یک مدل ثابت، مجموعه‌ای از فرضیات فعال داریم که دائماً وزن‌دهی و بازتنظیم می‌شوند. کنترل دیگر یک قانون نیست، بلکه یک policy است؛ چیزی بین control theory، decision theory و learning. این سیستم‌ها طوری طراحی می‌شوند که بپذیرند مدل همیشه ناقص است و به‌جای جنگیدن با این واقعیت، با آن زندگی کنند.
🧑‍💻OT Sentinel🧑‍💻
کنترل صنعتی نسل بعد، شبیه آن چیزی نیست که در بلوک‌دیاگرام‌های کلاسیک می‌بینیم. مسئله دیگر فقط این نیست که ورودی به خروجی برسد و error کم شود. در معماری‌های جدید، فرض اصلی عوض شده است: سیستم دیگر با یک «محیط خنثی» طرف نیست، بلکه با مجموعه‌ای از عامل‌ها، سیاست‌ها…
مشکل اینجاست که کنترل کلاسیک اساساً چیزهایی را نمی‌بیند که برای این فضا حیاتی‌اند. یکی از بزرگ‌ترین blind spotها، تفاوت بین anomaly و attack است. از دید کلاسیک، هر دو «انحراف از رفتار نرمال» هستند. اما در دنیای واقعی این دو زمین تا آسمان فرق دارند. anomaly معمولاً تصادفی، بدون حافظه و بدون هدف است. attack اما رفتاری است، سازگار می‌شود، تست می‌کند و واکنش سیستم را وارد مدل ذهنی خودش می‌کند. چیزی که امروز شبیه نویز است، فردا تبدیل به استراتژی می‌شود.

کنترل کلاسیک به سیگنال نگاه می‌کند، نه به نیت پشت سیگنال. به مقدار انحراف حساس است، نه به ساختار آن. اگر حمله آهسته، تدریجی و در محدوده مجاز اتفاق بیفتد، از دید بسیاری از سیستم‌های پایدار کاملاً قابل‌قبول است. سیستم stable می‌ماند، constraintها نقض نمی‌شوند، اما رفتار کلی به‌سمتی می‌رود که طراح هرگز قصدش را نداشته است. این همان جایی است که سیستم «درست کار می‌کند» و هم‌زمان شکست می‌خورد.

کنترل نسل بعد دقیقاً روی همین نقاط کور بنا می‌شود. به‌جای سؤال «آیا سیستم پایدار است؟» سؤال این است: «آیا رفتاری که می‌بینم با آنچه انتظار دارم هم‌راستاست؟» این سیستم‌ها به‌دنبال تشخیص intent هستند، نه صرفاً deviation. تغییر الگوی تصمیم‌گیری، تغییر هم‌بستگی سیگنال‌ها، یا تغییر رابطه بین state و disturbance برایشان مهم‌تر از اندازه لحظه‌ای خطاست. در این نگاه، attack یک anomaly بزرگ‌تر نیست؛ یک پدیده کیفی متفاوت است.

به همین دلیل است که کنترل صنعتی آینده کمتر شبیه یک کنترلر تمیز و بیشتر شبیه یک موجود زنده طراحی می‌شود: مشاهده می‌کند، حدس می‌زند، اشتباه می‌کند، خودش را اصلاح می‌کند و مهم‌تر از همه، فرض نمی‌کند محیط همیشه همان محیط دیروز است. این چیزی نیست که در کتاب‌های کلاسیک به تو یاد بدهند، اما چیزی است که در دنیای واقعی، سیستم‌ها را زنده نگه می‌دارد
یک نقص امنیتی جدی در فریم‌ور UEFI برخی مادربوردهای تولیدکنندگان بزرگ موجب شده است که مکانیزم‌های محافظتی حافظه در مراحل اولیه بوت به‌طور کامل فعال نشوند. این ضعف به مهاجم اجازه می‌دهد پیش از بارگذاری سیستم‌عامل و فعال‌شدن کنترل‌های امنیتی، به حافظه سیستم دسترسی مستقیم پیدا کند.
در صورت دسترسی فیزیکی، مهاجم می‌تواند با اتصال یک سخت‌افزار مخرب از طریق رابط‌هایی مانند PCIe، حمله‌ای مبتنی بر Direct Memory Access (DMA) اجرا کند. از آنجا که این نفوذ در مرحله پیش از بوت رخ می‌دهد، ابزارهای امنیتی سیستم‌عامل، Secure Boot و مکانیزم‌های نظارتی عملاً بی‌اثر خواهند بود.
امکان دستکاری یا تزریق کد پیش از راه‌اندازی سیستم
دسترسی به داده‌های حساس و کلیدهای رمزنگاری ذخیره‌شده در حافظه
تضعیف اعتماد به زنجیره بوت و زیرساخت‌های پایه سیستم
اقدامات پیشنهادی
به‌روزرسانی فوری BIOS/UEFI به نسخه‌های اصلاح‌شده
فعال‌سازی و بازبینی تنظیمات امنیتی مانند Secure Boot و IOMMU
اعمال کنترل‌های سخت‌گیرانه برای جلوگیری از دسترسی فیزیکی غیرمجاز
2