سادگی زیباست...

بررسی انواع معماری های سیستم عامل و برنامه های سیستمی و روشهای توسعه آنها

سادگی زیباست...

بررسی انواع معماری های سیستم عامل و برنامه های سیستمی و روشهای توسعه آنها

سادگی زیباست...

۵ مطلب با کلمه‌ی کلیدی «امنیت سیستم» ثبت شده است

البته اصلی این عنوان رو روزنامه (فکر کنم) واشنگتن پست برای انفجار آریان 5 استفاده شده بود.

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

در شب 25 ماه فوریه سال 1991، یه سیستم پاتریوت تو عربسات سعودی نتونست یه موشک اسکات رو ردیابی بکنه و موشک بعد از اصابت باعث کشته شدن 28 نظامی آمریکایی و زخمی شدن 98 نفر شد.

با بررسی که انجام شد، مشخص شد که مشکل از سیستم رادار پاتریوت بود.

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

توی عملیات حفاظ صحرا، چند تا از این سکوهای پرتاپ پاتریوت توی نقاط حساس عربستان و اسرائیل کار کذاشته شده بود تا در مقابل موشک های اسکات عراق بتونه مقابله بکنه.

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

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

مشکل نرم افزاری

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

الگوریتم محاسبه مکان فرود موشک نیازمند سرعت موشک و زمان ها به صورت اعداد حقیقی هست. کامپیوتر سیستم پاتریوت به صورت رجیسترهای 24 بیتی بود. تو این سیستم زمان به صورت یک دهم ثانیه حساب میشه (deci=1/10). تو باینری 1/10 یه عدد اعشاری نامتناهی هست. برای حالت دابل عدد زیر میشه


0x3FB999999999999A = 00111111 10111001 10011001 10011001
10011001 10011001 10011001 10011010

این عدد بالا برای حالت دابل هست، برای 24 بیت تعداد این ارقام اعشار کمتر هم میشه. این میزان خطا با ادامه کار سیستم تو مدت زمان جمع شده و بیشتر میشه. این خطا تاثیر مستقیم تو نتیجه نهایی داره.

زمان طراحی سیستم موشک پاتریوت برای مقابله با موشک های کروز شوروی سابق بود که سرعت اونا 2 ماخ بود و این سیستم روزی چند ساعت فعال بود. تو جریان جنگ خلیج موشک های اسکات سرعت 5 ماخ داشتن و نیروی ارتش آمریکا، پاتریوت رو با تغییراتی برای این سرعت آماد کرده بودن.

کشف مشکل

اولین بار نیروهای اسراءیلی مشکل رو پیدا کرن و گزارش دادن. بر اساس گزارش اونها سیستم پاتریوت بعد از 8 ساعت کار، تقریبا 20 درصد خطا تو محاسبه پیدا میکنه (که البته تدریجی اضافه میشه).

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

بروز مشکل

تو 25 فوریه 1991 سیستم پاتریوت موشک اسکاتی که عراق شلیک کرده بود رو ردیابی کرد اما محاسبه کرد که به خارج از نواحی حساس برخورد میکنه و به همین خاطر برای مقابله موشکی رو شلیک نکرد. اما موشک اسکات به داخل شهر ظهران برخورد کرد.

سایت اصلی تو زمان حادثه 100 ساعت بود که کار میکرد و میزان خطای زمانی محاسبه 0.34 ثانیه شده بود. این اختلاف زمانی باعث میشد تا محاسبه سرعت موشک با اشتباه 1.7 کیلومتر بر ثانیه انجام بشه. همین اشتباه محاسباتی باعث میشه نقطه برخورد هم اشتباه محاسبه بشه.


بعدا در مورد مشکلات مشابه و نتیجه که میخوام بگیرم بیشتر صحبت میکنیم

۰ موافقین ۱ مخالفین ۰ ۳۰ بهمن ۹۳ ، ۰۱:۰۳
حامد شیخلو

هنوز در مورد مشکل خون ریزی قلبی، مطالب فنی زیادی نخوندم، اما این عکس رو امروز پیدا کردم. به ساده ترین شکل ممکن یه مساله رو توضیح داده

۳ موافقین ۰ مخالفین ۰ ۳۱ فروردين ۹۳ ، ۱۱:۱۱
حامد شیخلو

در شبکه های کامپیوتری، port knocking یک روش برای باز کردن پورت مشخص در دیواره آتش، با دریافت درخواست از شبکه خارجی است. این پورت مشخص از خارج شبکه و با انجام عمل پویش مانند پورت اسکن کاملا بسته به نظر میرسد، اما برای درخواست مشخص شده، باز می‌شود. این عمل باز کردن پورت کاملا به صورت اتوماتیک انجام می‌شود. یکی از انواع روشهای knocking با عنوان single packet authentication شناخته می‌شود که در آن، یک بسته اطلاعاتی کد شده، فرستاده می‌شود تا پورت ارتباطی برای ادامه باز شود.
حفاظ‌ها (firewall) در معماری امنیت شبکه، برای فیلتر کردن بسته‌ها یا اعتبارسنجی یک پروتکل استفاده می‌شوند و در این دو کار، به خوبی عمل می‌کنند. اما حفاظ‌ها اطلاعات کمی درباره برنامه‌ها و روند استفاده شبکه برای هر کدام از آن‌ها و همچنین کاربران شبکه دارد، این مساله باعث بروز دو مشکل می‌شود:
1 محدود کردن دسترسی به شبکه داخلی از طریق بیرون.
2 محدود کردن دسترسی کاربران داخلی به تعداد محدود پورت‌های مشخص.
توجه شود که خود محدودیت‌های اعمال شده برای کاربران، به دلیل محدود کردن روشهای سو استفاده و حمله به شبکه است و اگر روشی باشد که بدون محدود کردن کاربران مجاز، بتواند در برابر کاربردهای غیر مجاز به خوبی عمل کند، روش مناسب‌تری خواهد بود.
معماری نرمافزارهای شبکه بر اساس معماری clinet-server می‌باشد. قسمت clinet که معمولا یک رابط کاربری است برای ارتباط با کاربر، اتصال به server و درخواست یک سرویس خاص از آن. برای مثال یک مرورگر اینترنت به server متصل می‌شود و درخواست خود را برای یک صفحه یا سند خاص به آن می‌دهد. کاربردهای Peer-to-Peer هم نقش server را دارد و هم نقش clinet را. برنامه ای مثل پراکسی، برای مرورگر یک برنامه سرور ایت و برای وب سرور یک کلاینت حساب می‌شود.
پروتکل اینترنت IP چه مشکلات امنیتی اساسی دارد؟

  • هر کاربر میتواند با روند ip spoofing خود را جای هر ip دیگر نشان دهد.
  • در پروتکل tcp عدد ابتدایی قابلیت حدس زدن را دارد، بنابراین امکان سرقت نشست session hijack بسیار افزایش میابد.
  • بسیاری از پروتکل های مسیریابی موجود در اینترنت ناامن طراحی شده اند.
  • بسته ip قابلیت تکه تکه frangmentation را دارند، که به یک attacker اجازه میدهد بسته اطالعاتی را به چند قسمت تقسیم کند و در چند بخش بفرستد تا نتوان جامعیت آن را کشف کرد.

بعد از این مقدمه نسبتا طولانی به مبحث port knocking ادامه می‌دهیم.
اگر بخواهیم مقایسه ای انجام دهیم بین روند قدیمی پروتکل اینترنت با روند port knocking، می‌توان به یک در تشبیه کرد. در پروتکل اینترنت، مانند این است که در باز است اما کنار در یک نفر نگهبان وجود دارد. با روند ناکینگ اگر مقایسه کنیم، مانند این است که در بسته است، و بعد از در زدن و احراز هویت در باز می‌شود. همان نگهبان‌ها هم وجود دارند.
یک توضیح اضافی در اینجا لازم است، اینکه در روند پروتکل اینترنت در باز است، همان به معنی باز بودن پورت است.

سرویس port knocking در مقابل یک بسته حاوی درخواست که کدگذاری نیز شده است، آن را به سرویس‌های دیگر که خود را ثبت کرده‌اند تحویل می‌دهد، و اگر سرویسی توانست پیام دریافتی را کدگشایی کند، پورت مورد نظر باز خواهد شد.

یک تز فوق لیسانس با موضوع برسی کارایی و افزایش کارایی حفاظ ها با این روش با عنوان زیر در لینک http://www.ciphertext.info/papers/thesis-degraaf.pdf برای مطالعه کاملتر وجود دارد.

۰ موافقین ۰ مخالفین ۱ ۰۸ مهر ۹۲ ، ۱۶:۱۷
حامد شیخلو

روند فعالیت Stuxnet:

روند کامل فعالیت stuxnet به صورت کامل شناخته شده نیست، اما با اطلاعات موجود می‌توان روند زیر را برای آن ذکر کرد:

  •     آلوده کردن سیستم‌های ویندوزی با استفاده از چندین zero-day exploit، اعتبارات جعل شده یا دزدیده شده از نرم افزار های دیگر سیستم در نهایت نصب روتکیت بر روی سیستم‌های مشابه ویندوزی.
  •     تلاش برای دور زدن سیستم تشخیص نفوذ مبتنی بر HIDS بوسیله یک روش خاص در بارگذاری کتابخانه های مورد نیاز. در این روش بارگذاری کتابخانه‌ها (DLL) توسط خود بد افزار انجام نمی‌شود و یک تکه کد بر روی نرمافزارهای موجود در سیستم تزریق می‌شود و بارگذاری توسط این نرمافزارها انجام می‌شود.
  •     برای توسعه به سیستم‌های متصل به سیستم آلوده، ابتدا مطمعن می‌شود که 1 سیستم مقصد ویندوز باشد، 2 سیستم قبلا آلوده شده است یا خیر 3 روی سیستم آنتی ویروس نصب شده است یا خیر.
  •     گسترش از طریق آلوده کردن شبکه یا دستگاه های ذخیره سازی انجام می‌شود.
  •     جستجوی سیستم‌های صنعتی (Simens Wincc).
  •     اگر سیستم صنعتی مورد نظر یافت شد، از اکانت اعتبارسنجی SQL توکار این سیستم‌ها برای قرار دادن کد درون پایگاه داده آن و آلوده کردن آن برای دسترسی به PLC مقصد استفاده می‌کند.
  •     تزریق کد درون PLC. این کار از طریق پروتکل profibus انجام می‌شود. این تزریق کد خروجی PLC را تغییر می‌دهد.
  •     از طریق برسی (monitor) کردن ترافیک PLC، فعالیت سیستم کلی را برسی می‌کند.
  •     اگر یک فرکانس خاص در ترافیک یافت شد، تنظیمات فرکانس را از 1410 به 2hz کاهش می‌دهد.
  •     وجود مکانیزم حذف کردن خود از سیستم‌هایی که هماهنگی سازم را ندارند، خوابیدن (غیر فعال شدن موقت)، پاک کردن سیستم آلوده به صورت خودکار.

با توجه به اینکه این بد افزار بسیار پیچیده است، اینکه چگونه یافت شد، تنها یک جواب دارد: به دلیل گسترده شدن زیاد این بد افزار. اگر این سیستم با تکنیک خاص‌تری پخش می‌شد، شاید تا مدت‌ها بدون کشف باقی می‌ماند.
۰ موافقین ۰ مخالفین ۱ ۱۱ مرداد ۹۲ ، ۱۲:۱۰
حامد شیخلو

Stuxnet چیست؟

بد افزار Stuxnet یک روتکیت مخصوص سیستم‌های صنعتی است. مجموعه‌ای از نرم‌افزارهاست که کنترل یک سیستم رایانه‌ای را به دست می‌گیرد. در این نوع حمله، کاربر سیستم متوجه حضور روت‌کیت نخواهد شد و هکر رایانه توانایی تغییر تمامی تنظیمات رایانه را دارد. رایانه‌ای که تحت سلطه روت‌کیت و نهایتاً هکر قرار می‌گیرد را زامبی (Zombie) می‌نامند. اگر ضایعه‌ای در شبکه رایانه‌ها پیدا شود، با پیگیری آن به زامبی می‌رسیم و هکر نمی‌تواند ردیابی شود.

stuxnet به عنوان یک اسلحه جدید در جنگ سایبری مطرح شد. اولین مشاهده این بد افزار در سال 2010 صورت گرفت. تمام مجموعه دانش‌ها و یافته‌ها با وجود آمدن این حمله بسیار پیشرفته، کنار گذاشته شد. در مقایسه با حملات دیگر، این بد افزار یک سلاح هسته ای به شمار می‌رود.

هرچند stuxnet برای اولین بار در ژوئن 2009 مشاهده شد، تا تابستان 2010 که سازمان ICS-CERT درباره آن هشدار دهد، در مقابل آن مقابله جدید انجام نشده بود. این ویروس از چهار نوع حمله zero-day برای آلوده کردن و پخش شدن استفاده می‌کند. این ویروس ابتدا به دنبال برنامه های simatic WINCC و PCS7 که توسط شرکت simens توسعه پیدا کرده‌اند می‌گردد، سپس از مجوز اکانت پیش فرض sql برای سرایت کردن به plc های مرتبط با آن، به روش تزریق کد استفاده می‌کند. این تزریق کد از طریق پروتکل fieldbus شرکت simens انجام می‌گیرد. در مرحله بعد، stuxnet به دنبال ابزارهای اتوماسیون که وظیفه کنترل سرعت موتورها را دارند می‌گردد. اگر کنترلی پیدا شد که در محدوده 800-1200hz باشد، تلاش می‌کند تا خرابکاری انجام دهد.

هرچند در ابتدا، اطلاعاتی که از این بد افزار بسیار کم بود، اما شرکت simens سریعاً عمل کرد و یک برنامه برای یافتن و پاک کردن این بد افزار عرضه کرد.

stuxnet در اواخر سال 2010 توجه رسانه‌ها را به خود جلب کرد. در رسانه‌ها این بد افزار به عنوان یک عامل با گسترش سریع و بسیار پیچیده مطرح شد. این مسئله توجه بسیاری به یک مسئله خاص معطوف کرد: «صنایع باید با سرعت زیاد نسبت به افزایش سطح امنیت خود عمل کنند».

کالبد شکافی stuxnet

این بدافزار بسیار پیچیده است، در شکل زیر میتوان ساختار آن را مشاهده کرد. 

Stuxnet

این بد افزار اولین روتکیت شناخته شده برای دستگاه‌های کنترل صنعتی می‌باشد. این روتکیت می‌توانست خود را به صورت خودکار بروز رسانی کند. توانایی تزریق کد در منطق بار کننده یک plc را دارا بود و بعد از این مرحله فعالیت یک plc به خوبی ادامه پیدا می‌کرد، و این بد افزار خود را کاملاً مخفی میکند، فقط در مواقع خاصی داده های اشتباه به HMI ارسال می‌شد.

این بد افزار برای محیط‌های مختلف، خود را هماهنگ می‌کرد، از مجموعه مجوزهای توکار سیستم‌ها استفاده می‌کرد و در مواقعی از کلیدهای دسترسی ابزارهای دیگر که جعل میکند، برای نفوذ استفاده می‌کرد.

در مطلب بعدی به روند کارهایی که این بد افزار انجام می‌داد، پرداخته خواهد شد.
۰ موافقین ۱ مخالفین ۱ ۱۱ مرداد ۹۲ ، ۱۰:۴۱
حامد شیخلو