🧑‍💻OT Sentinel🧑‍💻
658 subscribers
224 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/OT) طوری طراحی شده‌اند که پایدار، قابل پیش‌بینی و ایمن باشند، اما همین ویژگی‌ها آن‌ها را به هدفی ایده‌آل برای عملیات‌های پنهان تبدیل می‌کند. در این فضا، دشمن به‌دنبال انفجار یا خاموشی کامل نیست؛ بلکه به‌دنبال تغییرات کوچک، تدریجی و منطقی است که در ظاهر طبیعی به‌نظر می‌رسند اما در نهایت، کل ساختار را از درون فرسوده می‌کنند.

واقعیت این است که معماری شبکه‌های صنعتی در صنایع حساس، ذاتاً شبکه‌ای و چندلایه است. PLCها، HMIها، ایستگاه‌های مهندسی، شبکه‌های مانیتورینگ، پیمانکاران نگهداری، لینک‌های دسترسی از راه دور و حتی سیستم‌های IT متصل به OT، همگی در یک زنجیره به‌هم‌پیوسته قرار دارند. امنیت این زنجیره نه با «قوی‌ترین حلقه»، بلکه با ضعیف‌ترین اتصال پنهان تعریف می‌شود. در بسیاری از موارد، نفوذ نه از هسته اصلی تأسیسات، بلکه از یک دسترسی جانبی، یک پیمانکار فرعی یا یک مسیر ارتباطی به‌ظاهر کم‌اهمیت آغاز می‌شود؛ مسیری که از نظر فنی مجاز است، اما از نظر امنیتی، کنترل‌شده نیست.
در چنین حملاتی، هدف اصلی تخریب فیزیکی مستقیم نیست، بلکه دستکاری در منطق فرآیند است. تغییر جزئی در آستانه‌های کنترلی، تأخیرهای میلی‌ثانیه‌ای در ارسال فرمان‌ها، تحریف داده‌های سنسورها یا هم‌زمان‌سازی غلط بین اجزای سیستم، می‌تواند به حوادثی منجر شود که در گزارش‌ها به‌عنوان «خطای اپراتور»، «فرسودگی تجهیزات» یا «نقص فنی» ثبت می‌شوند. این همان نقطه‌ای است که حمله موفق می‌شود؛ زمانی که سیستم امنیتی حتی متوجه نمی‌شود با یک عملیات هدفمند مواجه بوده است.

عامل انسانی در این میان، نه یک تهدید فرعی، بلکه مرکز ثقل امنیت OT است. اپراتورها، مهندسان کنترل، تکنسین‌های تعمیر، و نیروهای IT که به محیط صنعتی دسترسی دارند، همگی بخشی از سطح حمله هستند؛ نه به‌دلیل ضعف فردی، بلکه به‌دلیل اعتماد ساختاری. بسیاری از شبکه‌های صنعتی بر پایه اعتماد ضمنی بنا شده‌اند: «این کاربر سال‌هاست اینجاست»، «این سیستم همیشه همین‌طور کار کرده»، «این تغییر منطقی به‌نظر می‌رسد». عملیات‌های پیشرفته دقیقاً روی همین اعتماد سرمایه‌گذاری می‌کنند.
از سوی دیگر، جنگ در صنایع حیاتی فقط در سطح تجهیزات اتفاق نمی‌افتد؛ بلکه در سطح تفسیر داده‌ها و روایت حوادث جریان دارد. لاگ‌ها، آلارم‌ها و گزارش‌ها همیشه حقیقت را نمی‌گویند؛ آن‌ها آن چیزی را نشان می‌دهند که سیستم تشخیص داده است، نه لزوماً آنچه واقعاً رخ داده. اگر تیم‌های فنی و امنیتی، دید فرآیندمحور نداشته باشند و صرفاً به شاخص‌های کلاسیک IT تکیه کنند، حمله می‌تواند در پوشش «وضعیت نرمال» پنهان بماند. در این حالت، شکست امنیتی نه در لحظه نفوذ، بلکه در لحظه تحلیل اشتباه اتفاق می‌افتد.

پیامد این وضعیت برای صنایع هسته‌ای و دفاعی روشن است: امنیت دیگر با دیوار آتش، آنتی‌ویروس یا تفکیک شبکه به‌تنهایی تأمین نمی‌شود. تشخیص زودهنگام، درک عمیق از رفتار فرآیند، و هم‌زمان‌سازی امنیت انسان، ماشین و منطق کنترل شرط بقاست. تهدید واقعی لزوماً از بیرون مرزها یا از اینترنت عمومی نمی‌آید؛ گاهی از همان جایی می‌آید که بیشترین اطمینان به آن وجود دارد.

در جنگ امروز، هر کشوری که نتواند تغییرات کوچک را قبل از تبدیل‌شدن به بحران تشخیص دهد، امنیت تأسیسات حیاتی خود را نه با یک ضربه بزرگ، بلکه با مجموعه‌ای از خطاهای «به‌ظاهر طبیعی» از دست خواهد داد.

— امیر رضوانی | نوشته ۲۵ ادر ماه ۱۴۰۴
آینده امنیت سیستم‌های کنترل دفاعی

قدرت دفاعی آینده نه در تسلیحات، بلکه در کنترل، الگوریتم و داده تعریف می‌شود. دیجیتالی‌شدن و شبکه‌ای‌شدن سامانه‌ها سطح حمله را افزایش داده و تهدیدهای ترکیبی، لایه‌های سایبری، فیزیکی و انسانی را همزمان هدف می‌گیرند. در این فضا، داده، مدل‌سازی و دیجیتال‌توئین به ابزار اصلی پیش‌بینی و تاب‌آوری تبدیل شده‌اند. نفوذ هوش مصنوعی به هسته کنترل، کارایی را افزایش می‌دهد اما ریسک دستکاری و بحران اعتماد را نیز تشدید می‌کند. سامانه‌ای که منطق کنترلی آن آسیب‌پذیر باشد، حتی با پیشرفته‌ترین تجهیزات، به نقطه ضعف راهبردی بدل خواهد شد.
این تصویر نشان می‌دهد که امنیت در صنایع هسته‌ای مستقیماً به منطق سیستم‌های کنترل صنعتی وابسته است، نه صرفاً به حفاظت فیزیکی.
هر فرآیند حیاتی بر پایه تصمیم‌های شرطی و منطقی عمل می‌کند و دستکاری این منطق می‌تواند رفتار کل سامانه را تغییر دهد.
دیجیتالی‌شدن و اتصال‌پذیری 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 بزرگ‌تر نیست؛ یک پدیده کیفی متفاوت است.

به همین دلیل است که کنترل صنعتی آینده کمتر شبیه یک کنترلر تمیز و بیشتر شبیه یک موجود زنده طراحی می‌شود: مشاهده می‌کند، حدس می‌زند، اشتباه می‌کند، خودش را اصلاح می‌کند و مهم‌تر از همه، فرض نمی‌کند محیط همیشه همان محیط دیروز است. این چیزی نیست که در کتاب‌های کلاسیک به تو یاد بدهند، اما چیزی است که در دنیای واقعی، سیستم‌ها را زنده نگه می‌دارد