محمد لینوکس

همه چیز به غیر از لینوکس!

محمد لینوکس

همه چیز به غیر از لینوکس!

مهمترین نقاط آسیب پذیر یونیکس و لینوکس ( بخش اول )

سیستم عامل، یکی از عناصر چهار گانه در یک سیستم کامپیوتری است که دارای نقشی بسیار مهم و حیاتی در نحوه مدیریت منابع سخت افزاری و نرم افزاری است . پرداختن به مقوله  امنیت سیستم های عامل ، همواره از بحث های مهم در رابطه با ایمن سازی اطلاعات در یک سیستم کامپیوتری بوده که امروزه با گسترش اینترنت ، اهمیت آن مضاعف شده است . بررسی و آنالیز امنیت در سیستم های عامل می بایست با ظرافت و در چارچوبی کاملا" علمی و با در نظر گرفتن تمامی واقعیت های موجود ، انجام تا از یک طرف تصمیم گیرندگان مسائل استراتژیک در یک سازمان قادر به انتخاب مستند و منطقی یک سیستم عامل باشند و از طرف دیگر امکان نگهداری و پشتیبانی آن با در نظر گرفتن مجموعه تهدیدات موجود و آتی  ، بسرعت و بسادگی میسر گردد .
اکثر کرم ها و سایر حملات موفقیت آمیز در اینترنت ، بدلیل وجود نقاط آسیب پذیر در تعدادی  اندک  از سرویس های سیستم  های عامل متداول است . مهاجمان ، با فرصت طلبی خاص خود از روش  های متعددی بمنظور سوء استفاده از نقاط ضعف امنیتی شناخته شده ، استفاده نموده  و در این راستا ابزارهای  متنوع ، موثر و گسترده ای را بمنظور نیل به اهداف خود ، بخدمت می گیرند . مهاجمان ، در این رهگذر متمرکز بر سازمان ها و موسساتی می گردند که هنوز مسائل موجود امنیتی ( حفره ها و نقاط آسیب پذیر ) خود را برطرف نکرده و بدون هیچگونه تبعیضی آنان را بعنوان هدف ، انتخاب می نمایند . مهاجمان بسادگی و بصورت مخرب ،  کرم هائی نظیر : بلستر ، اسلامر و Code Red را در شبکه  منتشر می نمایند. آگاهی از مهمترین نقاط آسیب پذیر در سیستم های  عامل ، امری ضروری است . با شناسائی و آنالیز اینگونه نقاط آسیب پذیر توسط کارشناسان امنیت اطلاعات ، سازمان ها و موسسات قادر به استفاده از مستندات علمی تدوین شده بمنظور برخورد منطقی با مشکلات موجود و ایجاد یک لایه حفاظتی مناسب می باشند.
در مجموعه مقالاتی که ارائه خواهد شد ، به بررسی مهمترین نقاط آسیب پذیر یونیکس و لینوکس خواهیم پرداخت . در این راستا ، پس از معرفی هر یک از نقاط آسیب پذیر ، علت وجود ضعف امنیتی ، سیستم های عامل در معرض تهدید ، روش های  تشخیص آسیب پذیری سیستم و نحوه مقابله و یا پیشگیری در مقابل هر یک از نقاط آسیب پذیر ، بررسی می گردد .همزمان با  ارائه مجموعه مقالات مرتبط با  یونیکس ( پنج مقاله ) ، به بررسی مهمترین نقاط آسیب پذیر در ویندوز  ، طی مقالات جداگانه ای خواهیم پرداخت .
همانگونه که اشاره گردید ، اغلب تهدیدات و حملات ، متاثر از وجود نقاط آسیب پذیر در سیستم های عامل بوده که زمینه تهاجم را برای مهاجمان فراهم می آورد .  شناسائی و آنالیز نقاط آسیب پذیر در هر یک از سیستم های عامل ، ماحصل  تلاش و پردازش دهها کارشناس امنیتی ورزیده در سطح جهان است و می بایست مدیران سیستم و شبکه در یک سازمان بسرعت با آنان آشنا و اقدامات لازم را انجام دهند.
نقاط آسیب پذیر موجود در هر سیستم عامل  که در ادامه به آنان اشاره می گردد ، سندی پویا و شامل دستورالعمل های لازم بمنظور برخورد مناسب با هر یک از نقاط آسیب پذیر و لینک هائی به سایر اطلاعات مفید و تکمیلی مرتبط با ضعف امنیتی است .

مهمترین نقاط آسیب پذیر یونیکس:
یونیکس ، یکی از سیستم های عامل رایج در جهان بوده که امروزه در سطح بسیار وسیعی استفاده می گردد . تا کنون حملات متعددی توسط مهاجمین متوجه سیستم هائی بوده است که از یونیکس ( نسخه های متفاوت )  بعنوان سیستم عامل استفاده می نمایند . با توجه به حملات متنوع و گسترده انجام شده ، می توان مهمترین نقاط آسیب پذیر یونیکس را به ده گروه عمده تقسیم نمود :

  • BIND Domain Name System

  • Remote Procedure Calls (RPC)

  • Apache Web Server

  • General UNIX Authentication Accounts with No Passwords or Weak Passwords

  • Clear Text Services

  • Sendmail

  • Simple Network Management Protocol (SNMP)

  • Secure Shell (SSH)

  • Misconfiguration of Enterprise Services NIS/NFS

  • Open Secure Sockets Layer (SSL)

در بخش اول این مقاله ، به بررسی BIND Domain Name System  وRemote Procedure Calls   (موارد یک و دو)  ، خواهیم پرداخت .

اولین نقطه آسیب پذیر : BIND Domain Name System
 نرم افزار BIND ) Berkeley Internet Name Domain) ، در مقیاس گسترده ای و بمنظور پیاده سازی DNS)Domain Name Service) ، استفاده می گردد. BIND ، سیستمی حیاتی است که از آن بمنظور تبدیل اسامی میزبان ( نظیر : http://www.srco.ir/ ) به آدرس IP ریجستر شده ،استفاده می گردد .با توجه به استفاده وسیع از BIND  و جایگاه حیاتی آن در یک شبکه کامپیوتری ، مهاجمان آن را بعنوان یک هدف مناسب بمنظور انجام حملات ، خصوصا"  از نوع DoS)Denila Of  Service) انتخاب و حملات متنوعی را در ارتباط با آن انجام داده اند. حملات فوق،از کارافتادن سرویس DNS و عدم دستیابی به اینترنت برای سرویس های مربوطه و میزبانان را می تواند بدنبال داشته باشد. با اینکه پیاده کنندگان BIND ، تلاشی مستمر را از گذشته تا کنون بمنظور برطرف نمودن نقاط آسیب پذیر انجام داده اند ، ولی هنوز تعداد زیادی از نقاط آسیب پذیر قدیمی ، بدرستی پیکربندی نشده و سرویس دهندگان آسیب پذیر در آن باقی مانده است .
عوامل متعددی در بروز اینگونه حملات نقش دارد: عدم آگاهی لازم مدیران سیستم در خصوص ارتقاء امنیتی سیستم هائی که بر روی آنان Bind deamon  بصورت غیر ضروری  اجراء می گردد و پیکربندی نامناسب فایل ها ، نمونه هائی از عوامل فوق بوده و  می تواند زمینه  یک تهاجم از نوع DoS  ، یک Buffer Overflow و یا  بروز اشکال در DNS Cache  را بدنبال داشته باشد.از جمله مواردیکه اخیرا" در رابطه با ضعف امنیتی  BIND کشف شده است مربوط به یک تهاجم از نوع DoS است . مقاله
CERT Advisory CA-2002-15  جزئیات بیشتری را در این رابطه ارائه می نماید. از دیگر حملات اخیر ، تهاجمی  از نوع Buffer Overflow است . مقاله CERT Advisory CA-2002-19  جزئیات بیشتری را در این رابطه در اختیار قرار می دهد. درتهاجم فوق ، یک مهاجم از نسخه آسیب پذیر پیاده سازی  توابع Resolver مربوط به DNS  استفاده و با ارسال پاسخ های مخرب به DNS و اجرای کد دلخواه ، امکان  سوء استفاده از نقطه آسیب پذیر فوق را فراهم و حتی دربرخی موارد می تواند زمینه بروز یک تهاجم از نوع  DoS را باعث گردد .
تهدیدی دیگر که می تواند در این رابطه وجود داشته باشد ، حضور یک سرویس دهنده BIND آسیب پذیر در شبکه است . در چنین مواردی ، مهاجمان از وضعیت فوق استفاده و از آن بمنزله مکانی جهت استقرار داده های غیر معتبر خود و بدون آگاهی مدیرسیستم استفاده می نمایند. بدین ترتیب ، مهاجمان از سرویس دهنده بعنوان پلات فرمی بمنظور فعالیت های آتی مخرب خود بهره برداری خواهند کرد .

سیستم های عامل در معرض تهدید :
تقریبا" تمامی سیستم های عامل  یونیکس و لینوکس بهمراه یک نسخه از BIND  ارائه شده اند .در صورت پیکربندی میزبان بعنوان سرویس دهنده ، نسخه ای  از BIND بر روی آن نصب خواهد شد.

نحوه تشخیص آسیب پذیری سیستم
در صورت دارا بودن  نسخه خاصی از BIND  که بهمراه سیستم عامل ارائه و بر روی سیستم نصب شده است ، می بایست عملیات بهنگام سازی آن را با استفاده از آخرین Patch های ارائه شده توسط تولید کننده ( عرضه کننده ) انجام داد. در صورت استفاده از نسخه BIND مربوط به  ISC: Internet Software Consortium ، می بایست از نصب آخرین نسخه BIND ، اطمینان حاصل نمود . در صورتیکه BIND  نصب شده بر روی سیستم ، نسخه ای قدیمی بوده و یا بطور کامل  Patch نشده باشد ، احتمال آسیب پذیری سیستم وجود خواهد داشت . در اکثر سیستم ها ، دستور : "named - v " ، اطلاعات لازم در خصوص نسخه BIND نصب شده بر روی سیستم را بصورت X.Y.Z نمایش خواهد داد . X ، نشاندهنده نسخه اصلی ، Y ،نشاندهنده جزئیات نسخه و Z نشاندهنده یک Patch Level است . پیشنهاد می گردد ، آخرین نسخه BIND  ارائه شده  توسط  ISC  را دریافت و آن را  بر روی سیستم نصب نمود. آخرین نسخه موجود Version 9.2.2 بوده و می توان آن را از سایت 
ISC دریافت نمود.  یکی دیگر از رویکردهای کنشگرایانه مرتبط با نگهداری امنیت  BIND ،  عضویت در گروه های خبری نظیر Symantec  برای آگاهی از آخرین هشدارهای امنیتی است . در این راستا می توان از یک برنامه پویشگر بهنگام شده  که قادر به بررسی دقیق سیستم های DNS بمنظور تشخیص نقاط  آسیب پذیراست ، نیز استفاده گردد .

نحوه حفاظت در مقابل نقطه آسیب پذیر
بمنظور حفاظت در مقابل نقاط آسیب پذیر مرتبط با BIND موارد زیر پیشنهاد می گردد :

  • غیر فعال نمودن BIND deamon ( به آن  named نیز اطلاق  می گردد ) بر روی سیستم هائی که بعنوان یک سرویس دهنده DNS در نظر گرفته نشده اند .  بمنظور پیشگیری ازاعمال برخی تغییرات خاص ( نظیر فعال نمودن مجدد آن ) ،  می توان  نرم افزار BIND  را از روی اینگونه سیستم ها حذف نمود.

  • بمنظور بهنگام سازی سرویس دهنده DNS ، از تمامی Patch های ارائه شده توسط تولید کنندگان استفاده و در صورت امکان آن را به آخرین نسخه موجود ارتقاء دهید . برای دریافت اطلاعات تکمیلی در رابطه با نصب مطمئن تر BIND ، از مقالات ارائه شده درسایت CERT و بخش UNIX Security Checklist ، استفاده نمائید .

  • بمنظور پیچیده تر نمودن حملات اتوماتیک و یا پویش سیستم مورد نظر ، Banner مربوط به " Version String " را از BIND حذف و نسخه واقعی BIND  را با یک شماره نسخه غیرواقعی در فایل named.conf ، جایگزین نمائید .

  • امکان ارسال انتقالات Zone را صرفا" برای سرویس دهندگان ثانویه DNS در Domain فراهم نمائید (  secondary DNS servers) . امکان انتقالات Zone در ارتباط با  Domain های Parent و Child را غیر فعال و در مقابل از امکان Delegation ( واگذاری مسئولیت ) و فورواردینگ ( Forwarding ) استفاده نمائید .

  • امکان Recursion و glue fetching را بمنظور حفاظت در مقابل عماکرد ناصحیح  DNS Cache ، غیر فعال نمائید .

  • بمنظور حفاظت در رابطه با استفاده از "named" و  تحت تاثیر قرار دادن تمامی سیستم ، BIND را محدود نمائید . بنابراین BIND بعنوان یک کاربر non-privilage در دایرکتوری Chroot اجراء می گردد. برای نسخه شمازه نه BIND از آدرس  http://www.losurs.org/docs/howto/Chroot-BIND.html  استفاده نمائید .

بمنظور حفاظت در مقابل حملات اخیر و مرتبط با  نقاط آسیب پذیر کشف شده BIND  می توان از منابع زیر استفاده نمود:

برای آگاهی و استفاده از پیشنهادات لازم بمنظور نصب ایمن تر BIND بر روی سیستم های سولاریس ، می توان از آدرس : Running the BIND9 DNS Server Securely   و آرشیو مقالات ارائه شده در آدرس Afentis  استفاده نمود.

دومین  نقطه آسیب پذیر :  ( Remote Procedure Calls (RPC
با استفاده از RPC برنامه های موجود بر روی یک کامپیوتر قادر به  اجرای روتین هائی در کامپیوتر دوم از طریق  ارسال داده و بازیابی نتایج می باشند . با توجه به جایگاه عملیاتی RPC ، استفاده از آن  بسیار متداول بوده و درموارد متعددی از آن بمنظور ارائه سرویس های توزیع شده شبکه نظیر مدیریت از راه دور ، اشتراک فایل NFS و NIS  استفاده می گردد.وجود ضعف های امنیتی متعدد در RPC باعث  بهره برداری مهاجمان بمنظور انجام حملات مختلفی شده است .دراکثر موارد ، سرویس های RPC با مجوزهای بیش از حد معمول  ، اجراء می گردند . بدین ترتیب یک مهاجم غیر مجاز قادر به استفاده از سیستم های آسیب پذیر در جهت اهداف خود خواهد بود.اکثر حملات از نوع DoS در  سال 1999 و اوایل سال 2000 در ارتباط با سیستم هائی بود که دارای ضعف امنیـتی و نقظه آسیب پذیر RPC بودند. مثلا" حملات گشترده و موفقیت آمیز در رابطه با سیستم های نظامی امریکا ، بدلیل نقطه آسیب پذیر RPC کشف شده در صدها دستگاه کامپیوتر مربوط به وزارت دفاع امریکا بوده است . اخیرا" نیز  وجود یک ضعف امنیتی DCOM RPC  در ویندوز ،  باعث انتشار گسترده یک کرم  در سطح اینترنت گردید .

سیستم های عامل در معرض تهدید :
تمامی نسخه های یونیکس و لینوکس که بر روی آنان سرویس های RPC نصب شده است در معرض این آسیب می باشند .

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

RPC Service

RPC Program Number

rpc.ttdbserverd 100083
rpc.cmsd 100068
rpc.statd 100024
rpc.mountd 100005
sadmind 100232
cachefsd 100235
snmpXdmid 100249

سرویس های RPC ، عموما" از طریق حملات buffer Overflow ، مورد سوء استفاده قرار می گیرند .علت این امر ، عدم انجام بررسی لازم و کافی در خصوص خطاها و یا اعتبار داده های ورودی توسط برنامه های RPC است . نقاط آسیب پذیر Buffer overflow ، این امکان را برای یک مهاجم فراهم می نماید که داده غیر قابل پیش بینی را ( اغلب بصورت کد مخرب ) به درون حافظه برنامه ، ارسال نماید . با توجه به ضعف موجود در رابطه با بررسی خطاء و  صحت داده ، داده ارسالی مکان هائی حساس و کلیدی که مورد استفاده پردازنده می باشند را بازنویسی می نماید.در یک تهاجم موفقیت آمیز Overflow ، کد مخرب ارسالی ،در ادامه توسط سیستم عامل اجراء می گردد . با توجه به اینکه تعداد زیادی از سرویس های RPC ، با مجوزهای بیش از حد معمول ،  اجراء می گردند ، استفاده موفقیت آمیز از نقاط آسیب پذیر فوق می تواند امکان دسـیابی غیر مجاز و از راه  دور را به سیستم فراهم می نماید.

نحوه حفاظت در مقابل نقطه آسیب پذیر 
بمنظور حفاظت سیستم در مقابل حملات مبتنی بر RPC ، موارد زیر پیشنهاد می گردد :

  • غیر فعال نمودن و یا حذف هر یک از سرویس های  RPC که ضرورتی به استفاده از آن  بر روی شبکه  نمی باشد .
  • نصب آخرین Patch ارائه شده در رابطه با سرویس هائی که امکان حذف آنان وجود ندارد:
    - برای نرم افزار سولاریس از آدرس  (
       http://sunsolve.sun.com   )   استفاده گردد.
    - برای IBM AIX  از آدرس :
    http://www.ibm.com/support/us  و  http://techsupport.services.ibm.com/server/fixes   استفاده گردد.
    - برای نرم افزار SGI  از آدرس : 
    http://support.sgi.com/  استفاده گردد .
    - برای کامپک ( Digital Unix ) از آدرس   
    http://www.compaq.com/support 
    - برای لینوکس  از آدرس : 
    http://www.redhat.com/apps/support/errata    و http://www.debian.org./security  استفاده گردد .
  •  عملیات جستجو بمنظور آگاهی و نصب آخرین Patch  مربوطه می بایست بصورت مستمر انجام شود.
  • پورت 111 ( TCP و UDP ) مربوط به RPC portmapper  و پورت 135 ( TCP و UDP ) مربوط به  Windows RPC را در سطح روتر و یا فایروال بلاک نمائید .
  •  پورت های Loopback  32770 ، 32789  مربوط بهTCP و UDP را بلاک نمائید .
  • فعال نمودن یک پشته غیراجرائی  بر روی سیستم های عاملی که از ویژگی فوق ، حمایت می نمایند. استفاده از یک پشته غیراجرائی ، لایه ای حفاظتی در مقابل تمامی حملات Buffer overflows نبوده ولی می تواند عاملی موثر در جهت مقابله با برخی از حملات استاندارد گردد.
  • در ارتباط با سیستم های فایل NFS صادراتی  ، مراحل زیر می بایست دنبال گردد :
    - استفاده از میزبان / IP   مبتنی بر لیست های صادراتی
    - پیکربندی سیستم های  فایل صادراتی بصورت فقط خواندنی
    - استفاده از "nfsbug" برای پویش نقاط آسیب پذیر 

برای اخذ اطلاعات تکمیلی در رابطه با نقاط آسیب پذیر RPC ،  می توان از آدرس های زیر استفاده نمود :

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد