مبحث یکم : مقدمه و تاریخچه
مبحث دوم: مراحل نفوذ کردن / جلوگیری از نفوذ
مبحث سوم: حملات شبکه ای
مبحث چهارم - کار عملی
مبحث پنجم - DHCP
مبحث ششم - وب و حملات مطرح در آن
مبحث هفتم - حملات DoS
مبحث هشتم - سیستم عامل
مبحث نهم - مهندسی اجتماعی
مبحث دهم - Vulnerability (آسیب پذیری)

سوال : اگر 5 دقیقه پای یک سیستم لینوکس بودید که دسترسی root آن فراهم شده است چه کاری انجام می دادید ؟

  • جواب های حاضرین در کلاس : یک user با دسترسی root ایجاد می کردیم . shadow و etc را کپی می گرفتیم . netcat و keylogger را روی آن run می کردیم . دستور rm –rf را روی شاخه /  (root) می زدیم  . هارد را نابود می کردیم سیستم را می بردیم و …
  • کارهای مختلفی در بحث نفوذ ، می تواند از نفوذگر سربزند ، اما یک نفوذگر که می خواهد به یک سیستم دسترسی پیدا کند سعی می کند آن قدر سرو صدا به راه نیاندازد مثلا نابود کردن هارد در صحنه ! کمی! با سر و صدا است و یا user اضافه کردن کاری است که می تواند خیلی زود آشکار شود . چون یکی از وظایف admin این است که فایل /etc/passwd را چک کند . نفوذ گر کاری که می کند این است که فایل /etc/passwd را ویرایش می کند . فرض کنید نفوذگر یک user با سطح معمولی را در سیستم داشته است . حال سطر مربوط به user خود را پیدا کرده و فیلد سوم و چهارم که به ترتیب مربوط به uid و gid است را عوض می کند . مثلا قبلا مقدار 8470:0 بوده است آن را به 0:0 تغییر می دهد و بعد فایل را ذخیره می کند و دوباره login  می کند  0:0 یعنی کاربر سطح root را دارد. ( عبارتی که زیر آن خط کشیده شده مربوط به تغییر user id است ). در فایل shadow نیز نیازی به انجام تغییر نیست . حال اگر نفوذگر دوباره login کند ، و دستور id را اجرا کند می بیند که سطح کاربری او به root تغییر پیدا کرده است ( اگر نفوذگر از قبل در سیستم user نمی داشت کافی بود تا یک سطر به نام دلخواه خود و با فرمت خط های دیگر در فایل /etc/passwd اضافه کند . )

حال admin برای جلوگیری از این نفوذ می تواند به طور دوره ای در فایل /etc/passwd به دنبال عبارت 0:0 بگردد تا اگر احیانا کسی چنین تغییری را ایجاد کرد ، admin با آن مقابله کند . راه حلی که ارائه شد زمانی موفق خواهد بود که admin به بررسی فایل /etc/passwd نپردازد .راه دیگر این است که نفوذگر یک فایل خطرناک در جایی از سیستم قرار دهد که بعدا که با user خود login کرد و آن را اجرا کرد ، به کاربر ارشد تبدیل شود . یکی از کارهایی که به عنوان admin باید انجام دهیم بحث monitoring سیستم است مثلا بررسی کنیم که آیا کاربری (user) وجود دارد که پروسس useradd را صدا زده باشد . useradd پروسسی است که فقط admin می تواند صدا بزند .

  • دستور ps یک snapshot از وضعیت پروسس ها و حافظه می گیرد و خروجی آن به صورت real-time عوض نمی شود . دستور top به طور دوره ای خروجی اش عوض می شود .
  • بحث مونیتورینگ سیستم فقط مربوط به مباحث امنیتی نمی شود و کلا بحث مدیریت سرور است . برای مثال شرکت های بزرگ خروجی دستورات مثل top و … که وضعیت شبکه و سیستم را نشان می دهند ، را حتی در راهروهای شرکت هم نمایش داده اند تا در هر لحظه قابل مونیتور باشد برای مثال استفاده از CPU نباید زیاد شود . load سیستم باید در حد انتظار بماند.
  • هر Process که در سیستم اجرا می شود یک Address space به آن اختصاص داده می شود و یک process اجازه ی دسترسی به Address space سایر process ها را ندارد .
  • همانطور که می بینید در خروجی دستور top ، هر Process با یک uid اجرا شده است ( ستون اول نشان دهنده همین موضوع است )
  • به خروجی cat /etc/passwd نگاه کنید. در آن به دنبال کاربری (user) با نام apache بگردید ( ویا سرویس دیگر). در این خروجی یک سری user های سیستمی وجود دارند مثل sys و … اما یک سری user وجود دارند که مربوط به سرویس هایی (مثل Apache) هستند . چرا برای سرویس ها user ایجاد می شود ؟ دقت کنید که کاربر root (user) خاص منظوره است که لزومی ندارد هر سرویس و پروسسی تحت root اجرا شود . موقع نصب آپاچی می گوید که یک user سیستمی به نام آپاچی ساخته می شود که برنامه آپاچی تحت آن user اجرا می شود . دیگر حتی اگر از طریق آپاچی نفوذگر بتواند exploit انجام دهد ( از طریق وب سرور به سیستم دسترسی پیدا کند و اصطلاحا بتواند shell بگیرد ) تحت کاربر (user) آپاچی اجرا می شود که دسترسی مثلا پاک کردن shadow را ندارد زیرا محدود است. اگر به آخرین فیلد /etc/passwd نگاه کنید برای کاربر (user) آپاچی نوشته است No login که این یعنی نمی توان با این کاربر (user) عمل login انجام داد .
  • دستور poweroff دستور خاموش کردن سیستم است .
  • CPU برای اجرای دستورات موجود در حافظه (RAM) نیاز دارد تا دانستن آدرس آن ها را بداند . این آدرس (Pointer = اشاره گر ) را سیستم عامل به CPU می دهد . CPU نیز از آن آدرس شروع می کند به اجرای دستورات .

CPU یک سری رجیستر (Register) دارد که از آن ها برای ذخیره اطلاعات مختلف از جمله آدرس دستورات استفاده می کند . به رجیستری که در هر لحظه به قسمتی از حافظه اشاره می کند ( که در آن قسمت یک دستورالعمل است ) (IP) Instruction Pointer می گویند . سیستم عامل است که این رجیستر را مقدار دهی می کند .

اسکرول به بالا