یکشنبه, ۱۹ اسفند, ۱۴۰۳ / 9 March, 2025
مجله ویستا

مقدمه ای بر نفوذ به سرور از داخل سازمان


مقدمه ای بر نفوذ به سرور از داخل سازمان

بسیاری از شركت ها , توجه كافی به ملاحظات سخت افزاری ندارند اگر ماشینی دارید كه آن را به این طریق در جائی گذاشته اید یك كاربر محلی می تواند به آن ناخنك بزند

این مقاله به طور مختصر روش های رخنه (breach) كردن از داخل به یك سرور را مورد بحث قرار می دهد .

یك « نفوذ داخلی » (Internal Breach) رامی توان به این شكل تعریف نمود كه هر نوع نفوذ یا رخنه امنیتی به درون یك شبكه كه در آن ، هكر یا كراكر برخی دسترس ها را داشته باشد و با استفاده از یك حساب معتبر كاربری و یا بعنوان عضوی از آن شبكه مسئول نگهداری شبكه باشد و با استفاده از این موقعیت سعی در نفوذ به سرور را داشته باشد .

چه شما قربانی باشید و یا مرتكب یك نفوذ داخلی شده باشید این موضوع را بدانید كه : كاربران مجاز (Authorized) مجوز دسترسی به مقادیر زیادی از اطلاعات را دارند و كاربران راه دور (و كاربران غیر مجاز) و كراكرها سخت تلاش می كنند تا به این اطلاعات دست پیدا نمایند . برای مثال ، ساخت یك لیست از كاربران سیستم یونیكس تنها ، تعدادی كلید زده شده (Keystrokes) است كه به هر كاربر مجاز مربوط می شود . این كار را به صورتی بسیار ساده می توان به شكل زیر انجام داد :

Ypcat passwd"cat/etc/passwd"sed_e s/: .*//!

این دستور را با ساختمان یك لیست نام كاربری قابل اطمینان از خارج مقایسه نمائید . این كار مستلزم نوشتن یك اسكریپت است كه معمولاً فرامین finger و ruser را صادر نموده ، داده ها را با یك فایل خارجی (outfile) مقایسه كرده و مواد گول زننده (dupes) را نادیده می گیرد . حتی اگر شبكه ای كه هدف شماست كوچك باشد ، باز هم می بایستی مدت زمان زیادی را صرف كنید تا یك لیست مرتب و منظم را بدست آورید . در عوض ، شبكه های بزرگتر ، مثل یك ISP (فراهم كننده خدمات اینترنت) ممكن است صدها نام را در یك لحظه به شما تحویل دهد . این كار بستگی به این دارد كه چقدر سرپرست آن سیستم تنبل می باشد . اگر سرپرست سیستم در نصب یك دامون (Daemon) فینگر (finger) هك شده شكست بخورد و یا در محدود ساختن دسترسی finger چه به طور جزئی و یا به طور كامل موفق نباشد ، یك لیست كاربری بسیار بزرگ را می توان فقط با یك خط فرمان بدست آورد .

بنابراین می گوییم : حتی اگر كاربران محلی حتی محدود هم شده باشند ولیكن دسترسی مجاز می تواند یك مقدار اندك اطلاعات درباره كاربران بدست بدهد . بعلاوه ، آنها به ابزاری دسترسی دارند كه برای كاربران غیر مجاز راه دور غیر قابل دسترسی می باشند .

اما اینكه دقیقاً این ابزار چه هستند بستگی به سیستم دارد ، ولیكن در اكثر محیط های مبتنی بر یونیكس ، این ابزار حداقل شامل دسترسی به زبان پوسته (shell) و احتمالاً زبان پرل (perl) می باشند .

اگر شبكه مورد نظرتان یك ISP باشد ، احتمالاً دسترسی به كامپایلر زبان C را نیز در خود دارد . اگر آن ISP ، از لینوكس استفاده كند ، شانس زیادی وجود دارد كه یك لیست از كامپایلرها را در خود داشته باشد . بیشتر سرپرستان سیستم كه از لینوكس استفاده می كند ، شانس زیادی وجود دارد كه یك لیست از كامپایلرها را در خود داشته باشد . بیشتر سرپرستان سیستم كه از لینوكس استفاده می كنند اگر نگوئیم تمام آن ها را ، لااقل اكثر سیستم های توسعه را نصب می نمایند .

مطمئناً ، TCL قابل دسترس خواهد بود و این به احتمال زیاد همراه با gcc و g++ ، یك بسته توسعه Basic و شاید پاسكال ، پیتون (Python) ، Fortran و تعدادی دیگر از ابزار خواهد بود .

آیا لینوكس و GNU شگفت آور نیستند ؟

با این اوصاف ، زبان های پوسته (shell) به تنهائی كفایت می كنند . اینها همراه با awk و sed یك محیط برنامه نویسی نیرومند را بدست می دهند ، و اینها هیچكدام ، منحصراً برای یونیكس بكار نمی روند . در اینجا تعدای از ابزارهای توسعه قدرتمند را كه می توانند به یك كاربر شبكه ها یا بسترهای (Platform) دیگر قدرت زیادی بدهند لیست كرده ام :

ـ C و C++

ـ Qbasic ، BASIC یا VB

ـ Envelop

ـ Pascal

ـ Assembly

ـ Perl

در حقیقت ، دستیابی كاربران به این ابزار برنامه نویسی در محیط ویندوز ۹۵ حتی پیامدهای وخیم تری به همراه دارد . در ویندوز NT ، با نصب دقیق و درست ، می توان به كنترل دسترسی قدرتمندتری رسید .

این كنترل حداقل به قدرت بیشتر پیاده سازی های یونیكس ناموثق (non_trusted) نزدیك است . در عوض ویندوز ۹۵ هیچ كنترل دسترسی ای ندارد . به همین دلیل ، یك كاربر محلی می تواند این بسته های توسعه (Development Packages) را در هر زمانی روی ایستگاهش نصب نماید . اكثر این ابزار هم اكنون چه از طریق GNU و یا دیگر سازمان ها یا فروشندگان و چه بصورت رایگان قابل تهیه می باشند .

حتی مفسرهای (Interpreters) TCL برای ویندو ۹۵ وجود دارند . از این رو كاربر نیازی ندارد كه پول زیادی برای یك بسته توسعه خرج نماید . این مورد را با محیط های NT و UNX مقایسه كنید . كاربر محلی ای كه چنین بسته هایی را روی یك ایستگاه نصب می كند می توانند كاربران را از اجرای برنامه ها در یك دایركتوری خاص محروم گردانند . همچنین سهمیه های استفاده از دیسك غالباً بر روی چنین شبكه هایی در نظر گرفته می شود . از این رو یك كاربر تنها (برای مثال) ۸ مگابایت از فضای خود را می تواند استفاده نماید .

این موراد جلوی همه را می گیرند ، اما كامپایلرهای كوچك و حتی نصب آنها می توانند با مهارت این محدودیت ها را دور بزنند . اگر یك توزیع كامل از نرم افزار Office قابل دسترسی باشد و هیچ نرم افزار كنترل دسترسی ثالثی (third_party) نصب نشده باشد ، كاربر محلی لااقل به WordBasic یا ابزاری دیگر دسترسی دارد و گرچه این ابزار كاملاً ابزار توسعه كاملی نیستند ولیكن می توانند سطوح زیادی از دسترسی و كنترل را به وی ببخشند . البته اگر چه امكاناتی را كه در صورت نصب Java ممكن است ارائه شوند را در نظر نگیریم .

بعلاوه ، كاربران محلی یك مسیر مستقیم به شبكه دارند . بنابراین آنها اولین كاندیدائی هستند كه یك وسیله شناسایی (sniffer) را روی یك درایو و یا چند درایو قرار می دهند . همان طور كه در بخش های قبلی بحث شد ، این وسیله شناسایی (اسنایفر) به آنها (كاربران) اجازه می دهد تا (حداقل) اسامی كاربران و رمزهای عبورشان را از آن محل هایی كه اسنایفر قرار دارد بدست آورند .

فواید دیگری نیز برای ك كاربر محلی وجود دارند . یك مورد ساده آن این است كه شما مجاز هستید تا در آنجا باشید . به عبارت ساده تر ، یك كاربر محلی با حق دسترسی مجاز ( كه قصد افزایش سطوح دسترسی اش را دارد ) می تواند در هر زمانی به شبكه اش وارد شود . اگر چه ممكن است عجیب به نظر برسد كه كسی در اواسط شب به سیستم وارد شود ، ولیكن فعالیت كاربر معمولی در طول روز قابل قبول می باشد . در عوض اگر یك كراكر بخواهد سعی كند تا یك دسترسی ساده جهت نفوذ به سیستم را بدست آورد مجبور است تادر زمان كمتری كارش را در شبكه انجام دهد و اگر بخواهد مجوز های ریشه (root) را بدست آورد ، پیوسته تحت فشار قرار دارد و امكان دارد تا فعالیت هایش لو رود . در عوض یك كاربر مجاز محلی می تواند با خیال آسوده شبكه را كراك نماید و عجله ای ندارد كه بسرعت كارش را انجام دهد . در واقع او می تواند فعالیتش را در اوقاتی از ماه صورت دهد .

بعلاوه ، كاربران محلی قادرند از تكنیك های بی ضرری استفاه كنند تا اطلاعات مربوط به سیستم را بدست آورند . یك كاربر می تواند به سرعت فرامین netstat ، arp ، ifconfig ، و پرس و جوهای دیگر را بدون اینكه كسی به وی شك كند اجرا نماید . از این رو وی می تواند از ساختمان یك بانك اطلاعاتی (Knowledge Base) بزرگ درباره سیستم با استفاده از تكنیك هائی كه احتمالاً هرگز گزارش و ثبت نمی شود استفاده نماید . سرپرست سیستمی كه كار رسیدگی به این نوع نفوذها (breaching) در سیستم را بعهده دارد فقط می تواند امیدوار باشد كه این پرس و جوها به یك فایل بیرونی (outfile) وارد شود و یا به شواهد ملموس تر دیگری دست پیدا نماید .

می توان گفت كه كاربر محلی بودن ، معایب خاص خودش را نیز به همراه دارد ، برای مثال خرابكاری (cracking) تحت یك حساب مجاز ، كه كاربر در موقعیتی توافق شده آن را انجام دهد ، در صورت بروز مشكلی كه باعث افشای آن شود ، سبب می شود تا سرپرست سیستم بتواند بسادگی معلوم كند كه چه كسی خرابكاری را انجام داده است . اگر خرابكاری (cracker) متوجه نشود كه فعالیت هایش لو رفته است ( و سرپرست سیستم این فعالیت ها را ثبت می كند ) باعث می شود تا وی باز هم با خیال آسوده به خرابكاری هایش ادامه دهد . بدنبال آن ، شهادت همكاران این فرد حداقل باعث می شود تا همه بگویند وی تمام مدت روز را پشت میز كارش نشسته بود . بعلاوه ، كاربر محلی تحت فشار زیادی است تا شواهد و نشانه هایی از خودش بجا نگذارد .

ولیكن كاربر راه دور نگران این چیزها نیست . برای مثال یك كاربر راه دور می تواند از روی سیستمش دستور finger را صادر كند و اطلاعات را به یك فایل هدایت نماید . هیچ كس دایركتوری های كاربر راه دور را جستجو نمی كند تا چنین فایل هایی را پیدا نماید . در عوض كاربر محلی نمی تواند باخیال راحت این اطلاعات را بر روی درایوش بجا بگذارد . حتی اگر بخواهد بعداً این فایل ها را حذف نماید . تكنیك های بازیابی اطلاعات مواردی هستند كه حتی پس از حذف این فایل ها توسط كاربر محلی امكان پیدا كردن و برگرداندن آنها را بوجود می آورند .

در چنین حالاتی ، كراكرهای محلی باهوش حداقل قبل از این كه اطلاعات را دور بریزند آنها را به رمز در می آورند . ولیكن حتی این كار هم ممكن است فایده ای نداشته باشد . و این می تواند به خاطر سیستم عامل ، نسخه ، نوع فایل و موارد دیگر باشد .

محل مراجعه : آیا تاكنون چیزی درباره Microzap شنیده اید ؟ اگر نه ، می بایستی با آن آشنا شوید . این وسیله ، جهت حذف رد فایل هایی بكار می رود كه آنها را پاك كرده اید . برای كسب اطلاعات بیشتر در این باره به آدرس http://www.govtech.net/ مراجعه نمائید .

برای مثال ، در شركت یكه چند كارمند خطا كار در آن كار می كردند مقداری از اطلاعات به طور غیر قانونی خارج شده بود . این افراد پس از این كار ، كل درایو كامپیوتر مورد نظرشان را فرمت كردند . پس از مدتی مسئولین شركت درایو مورد نظر را به یك شركت بازیابی اطلاعات بنام بردند و از آنها خواستند تا اطلاعات را برگردانده و افراد خاطی مسبب نابودی این داده های با ارزش را معرفی نمایند حاصل كار ، لو رفتن كارمندان خطا كار شد . از این رو ، بجا نگذاشتن ردپا كار بسیار مهمی می باشد . باری یافتن جزئیات بیشتر درباره این موضوع می توانید به آدرس زیر مراجعه نمائید :

http://www.liextra.com/securitynet/articles/۱۲۱۷۹۶S۲.html

● تشریح كامل یك خرابكاری محلی

همان طور كه قبلاً توضیح دادیم ، انواع شكاف ها و رخنه ها برای ورود به یك سیستم وجود دارند و اینكه چه مشكلات امنیتی شدیدی در اینترنت بوجود می آورند . اگر بخاطر داشته باشید شكاف های محلی خیلی بیشتر از شكاف های راه دور عمومیت دارند . شكاف های (Holes) راه دور موضوعات بسیار نگران كننده ای هستند . در واقع وقتی یك شكاف راه دور بروز می كند خرابكاران (crackers) مجبور می شوند بسرعت دست بكار شوند تا ظرف روزهای اول كشف این شكاف ها كارشان را انجام دهند . یعنی در همان روزهای آغازین گزارش شدن این شكاف ها و رخنه های ورود به سیستم . اگر خرابكاران نتوانند بسرعت دست بكار شوند ممكن است این روزنه ها بسرعت بسته شوند و مانع سوء استفاده بعدی توسط آنها شوند . بعلاوه ، برنامه نویسان در زمان نوشتن برنامه های راه دور چه در حالت مشتری و جه در حالت سرور به شدت هوشیار هستند . فروشندگان بزرگ نیز هوشیار هستند زیرا برنامه هایی كه به نوعی دسترسی راه دور را ارائه می دهند ، به تهدید جدی در اینترنت تبدیل می شوند . اگ این برنامه ها موثق نباشند ، اینترنت كاملاً مسدود شده و از كار خواهد افتاد .

در آخر این كه ، چون برنامه های راه دور بسیار مورد توجه هستند (بخصوص توسط خرابكارانی كه از نواحی دوردست و مرزها قصد خرابكاری دارند ) به ندرت می توان شكاف های راه دوری (remote hole) را یافت كه مجبور دسترس ریشه (root) و اختیاراتی از این دست را در اختیارتان قرار دهد . در عوض ، برنامه های داخلی ممكن است گاهی مورد رخنه و نفوذ قرار بگیرند . این موضوع به كم توجهی برنامه نویسی كه این برنامه ها را می نویسد ربطی ندارد بلكه در عوض این برنامه نویسان وظایف سخت تری بر دوش دارند . برای مثال برنامه های سرور / مشتری عموما در قلمروشان محدود می شوند .

درست است كه گاهی این برنامه ها . روال های دیگری را صدا می زنند ، اما قلمروشان (scipe) معمولاً به مجموعه كوچكی از عملیات محدود می شود كه خارج از روابط محیط سرور / مشتری روی می دهند . در مقابل ، برنامه های داخلی محلی (Local Internal Applications) ممكن است نیاز به محاوره با یك دوجین از ابزار و پردازش های سیستمی داشته باشند . بسیاری از افراد انتظار ندارند كه این ابزار و پردازش ها مفاهیم امنیتی در خود داشته باشند .


شما در حال مطالعه صفحه 1 از یک مقاله 4 صفحه ای هستید. لطفا صفحات دیگر این مقاله را نیز مطالعه فرمایید.