در این بخش از دوره SEC504 از موسسه SANS به آشنایی با مبحث پاک کردن رد پا یا Covering Tracks اشاره و در این بخش به پاک کردن ردپا در لینوکس می پرازیم.
Covering Tracks in Linux and Unix
در این بخش به مواردی که برای پوشاندن ردپا از آنها استفاده میشود اشاره خواهد شد. این روشها هم در سیستمعامل ویندوز و هم در سیستمعامل لینوکس توضیح داده میشود. مخفیسازی فعالیتها در شبکه و پنهاننگاری یا Steganography هم مطلب دیگری است که در ادامه به آن پرداخته میشود.
Hiding Files in Unix
یکی از رایجترین روشها برای مخفی نمودن فایلها در یک سیستم یونیکس استفاده از نقطه در ابتدای آن است. البته با توجه به مواردی که پیشتر به آن اشاره گردید، نفوذگر میتواند با استفاده از روتکیتها نیز، فایلها را در سیستم مخفی نماید. با این حال اگر نفوذگر هنوز دسترسی Root را بر روی سیستم نداشته باشد او ممکن است نیاز داشته باشد تا فایلها را بدون استفاده از روتکیت مخفی نماید.
در یک سیستم یونیکسی هر پوشه حاوی حداقل دو دایرکتوری است. یکی از این دایرکتوریها نقطه است. این نام در واقع اشاره به دایرکتوری فعلی دارد، به همین دلیل اگر شما عبارت cd . را تایپ نمایید به دایرکتوری جاری منتقل میشود.
دایرکتوری دیگری که در تمام دایرکتوریها وجود دارد دو نقطه است. این نام به Parent Directory در فایل سیستم اشاره دارد.
نفوذگران فایلها و دایرکتوریها را با نقطه فاصله، نقطه نقطه فاصله و یا سه نقطه نام گذاری میکنند. این روش فوق العاده پیچیده نیست اما به خوبی کار میکند. به عنوان مثال هنگامیکه شما یک فایل را با دونقطه و فاصله نامگذاری میکنید، بسیاری از مدیران حتی متوجه این فایل نخواهند شد.
Where Attackers Put Hidden Unix Files and Dirs
علاوه بر استفاده از نقطه برای مخفی نمودن فایلها و دایرکتوریها، نفوذگر باید این فایل را در محلی قرار دهد که کمتر به آن مراجعه میشود. دایرکتوریهای /dev، /tmp و /etc برای این کار بسیار مناسب هستند. دایرکتوریهای مذکور به علت حجم زیاد فایلهایی که داخل خود جای داده اند، گزینه مناسبی برای فایلها و دایرکتوریهای نفوذگر میباشند زیرا پیدا کردن فایلهای نفوذگر در بین این همه فایل و دایرکتوری، کار بسیار دشواری خواهد بود.
البته با توجه به اینکه دایرکتوری /etc مربوط به پیکربندیهای سیستم است معمولا توسط مدیران شبکه کنترل میشود، پس با این توضیح امکان دارد که نفوذگر از قرار دادن فایلهای خود داخل این پوشه خودداری نماید ولی ما باید این بخش را هم مورد بررسی قرار دهیم.
علاوه بر مسیرهای فوق، به علت پیچیدگی و اطلاعات زیاد، دایرکتوریهایی مانند /usr/local/man و /usr/src نیز برای یک نفوذگر مناسب میباشند.
Editing Unix Log Files
پس از اینکه نفوذگر سیستم را در اختیار خود میگیرد، معمولا قصد دارد تا لاگهای ثبت شده بر روی سیستم را تغییر دهد تا ردپاهای خود را حذف نموده و تکنیک استفاده شده توسط خود را برای دسترسی به سیستم مخفی نگه دارد. برخی از نفوذگران کلیه لاگهای موجود را حذف میکنند که این روش موجب جلب توجه مدیران سیستم خواهد شد. با توجه به این موضوع، نفوذگران ترجیح میدهند تا موارد انتخاب شدهای را از فایلهای لاگ حذف نمایند. این موارد تنها مربوط به دسترسی اولیه نفوذگر میباشد که شامل ورودهای نادرست به سیستم و یا Crash نمودن پروسسها میباشد.
در سیستمهای مبتنی بر یونیکس، پروسس syslog لاگهای مربوط به سیستم را ذخیره میکند. برای پیکربندی این پروسس باید فایل مربوط به آن که در مسیر /etc/syslog.conf میباشد را پیکربندی نمود. هنگامیکه یک نفوذگر بادقت، یک سیستم را در اختیار خود میگیرد، ابتدا به این فایل مراجعه میکند تا ببیند که کدامیک از بخشهای سیستم برای ذخیرهسازی لاگ پیکربندی شدهاند و این لاگها در کجا ذخیره میشود. سپس اقدام به تغییر دستی این لاگ فایلها مینمایند.
آشنایی با روت کیت های سطح کرنل
البته نفوذگرانی که خیلی بادقت نیستند معمولا از اسکریپتهای آماده برای شناسایی فایلهای لاگ استفاده میکنند که این ابزارها بیشتر موارد پیشفرض را تست میکنند ولی ممکن است مسیرها توسط مدیران سیستم تغییر پیدا کرده باشند که در این صورت ابزارهای این چنینی دچار مشکل خواهند شد.
به صورت پیشفرض در سیستمهای مبتنی بر یونیکس، لاگها در مسیر /var/log ذخیره میشوند. که در این مسیر هر برنامه کاربردی لاگهای مربوط به خود را در دایرکتوری خود ذخیره مینماید. البته نام این دایرکتوریها در توزیعهای لینوکس، متفاوت میباشد.
هنگامیکه شما دارای دسترسی Root به یک سیستم باشید میتوانید این فایلها را ویرایش نمایید. البته اگر مکانیزم پیشگیری برای این فایلها مانند رمزنگاری در نظر گرفته نشده باشد. فایلهای لاگ معمولا با فرمت ASCII ذخیره میشوند بنابراین شما میتوانید با استفاده از ابزارهای ویرایش متنی مانند vi آنها را باز نموده و ویرایش کنید.
Don’t Forget Shell History
زمانی که شما وارد یک سیستم مبتنی بر یونیکس میشوید، قطعا عبارات و دستوراتی را در محیط دستوری شل، وارد نمودهاید. کلیه دستورات وارد شده توسط شما در History مربوط به شل ذخیره میگردد. به صورت پیشفرض تا 500 دستور وارد شده در شل، ذخیره میگردد که البته در برخی از نسخهها این عدد به 1000 هم میرسد.
بنابراین یک محقق امنیتی میتواند با بررسی دستورات ذخیره شده در History مربوط به شل، فعالیتهای نفوذگر را بررسی نماید. این موضوع برای نفوذگران خوشایند نیست و آنها فایل مربوط به دستورات ذخیره شده را معمولا ویرایش نموده و یا با وارد نمودن عبارات غلط سعی در گمراه نمودن محققان امنیتی مینمایند.
برای مثال جهت مشاهده فایلهای ذحیره شده در bash میتوانید فایل زیر را باز نمایید:
~/.bash_history
نکته مهم در ذخیره سازی دستورات شل این است که History مربوط به شل، هنگامیدر فایل نوشته میشود که شما از شل خارج شده باشید. بنابراین شما آخرین دستورات خود را در History مربوط به شل مشاهده نخواهید کرد، آنها معمولا در حافظه ذخیره میشوند تا زمانی که شما از شل خارج شوید و بعد بر روی فایل مربوطه نوشته میشوند. نکته دیگر این است که دستور استفاده شده برای ویرایش فایل History نیز در آن ذخیره میشود و یک محقق امنیتی میتواند مواردی شبیه دستور vi .bash_history را مشاهده کند.
یکی از روشها برای حل این مشکل که مناسب هم به نظر نمیرسد، ویرایش فایل توسط نفوذگر، خروج از شل موجود و شروع کار با یک شل دیگر و ویرایش فایل History است. با این روش باز هم مشکل ثبت لاگ نفوذگر وجود دارد.
دو روش برای حل این مشکل وجود دارد:
یک : Kill نمودن شل که در این حالت دیگر نمیتواند دستورات اخیر مانند ویرایش فایل History را ذخیره کند.
Kill -9 [pid]
البته نفوذگر میتواند خود شل را هم Kill نماید:
Killall -9 bash
دو: روش دوم تغییر در متغیر محیطی مربوط به History:
unset HISTFILE
kill -9 $$
Accounting Entries in Unix
در سیستم های یونیکسی چهار فایل موارد مربوط به کاربران را در خود ذخیره مینمایند.
Utmp: این فایل اطلاعات مربوط به تمامیکاربران که در حال حاضر به سیستم لاگین هستند را در خود ذخیره میکند. هنگامیکه شما از دستور who استفاده میکنید در واقع از این فایل کمک گرفته شده و اطلاعات مربوط به session های فعال کاربران به شما نمایش داده میشود. این فایل در مسیر /var/run/utmp قرار دارد.
wtmp: این فایل شامل اطلاعات کاربرانی است که قبلا به سیستم لاگین کرده اند و مسیر آن /var/log/wtmp میباشد.
btmp: این فایل اطلاعات مربوط به لاگینهای ناموفق را در خود ذخیره میکند. این قابلیت معمولا در سیستم غیرفعال میشود. زیرا اغلب مدیران نمیخواهند که اجازه دهند یک فایل با نام کاربرانی که لاگین ناموفق داشتهاند در سیستم ذخیره شود. چراکه در برخی موارد کاربران به دلیل مختلف در هنگام ورود در بخش لاگین به جای نام کاربری، کلمه عبور خود را وارد میکنند و این مورد در این فایل ذخیره میشود. این فایل در مسیر /var/log/btmp قرار دارد.
lastlog: این فایل اطلاعات مربوط به زمان و تاریخ ورود کاربران را نمایش میدهد. مسیر این فایل در /var/log/lastlog قرار دارد.
توجه داشته باشید که معمولا این فایلها توسط نفوذگران دچار تغییر میشود تا مدیران شبکه قادر به شناسایی آنها نباشند. البته این فایلها نمیتوانند به صورت دستی توسط نفوذگر ویرایش شوند زیرا دارای فرمت خاصی هستند که نیاز به یک ابزار برای خواندن و نوشتن درون آنها میباشد.
برای ویرایش این فایلها نفوذگر میتواند از ابزارهایی مانند Remove یا Marry استفاده نماید. این ابزارها با زبان c نوشته شدهاند و برای دسترسی به آنها میتوانید به لینک زیر مراجعه نمایید.