
در این بخش از دوره SEC504 از موسسه SANS به آشنایی با مبحث پاک کردن رد پا یا Covering Tracks اشاره و در این بخش به پاک کردن ردپا در ویندوز می پرازیم.
Covering Tracks in Windows
پس از آشنایی با نحوه پاک کردن ردپا یا Covering Tracks در سیستم های مبتنی بر یونیکس، در این بخش به نحوه پاک کردن ردپا در سیستمهای ویندوز میپردازیم.
Hiding Files in NTFS
سیستم فایل ویندوز که NTFS نام دارد از یک ویژگی با نام File Streaming پشتیبانی مینماید. این ویژگی تنها در پارتیشنهایی که از سیستم فایل NTFS استفاده میکنند، وجود داشته و در پارتیشنهای FAT وجود ندارد.
هر فایل در یک پارتیشن NTFS مانند قفسههای کشودار (Chest of Drawers) عمل میکند. نام قفسه نام فایل است که در زیر آن شما میتوانید تعداد دلخواهی از جریانهای دادهای (Data Stream) مرتبط با فایل را قرار دهید و هر Data Stream به عنوان یک کشو عمل میکند که کاربر میتواند دادهها را درون آن جای دهد. در این حالت همه جریانها با نام فایل اصلی مرتبط هستند.
اولین جریان یا Stream در ارتباط با یک فایل، محتویات خود فایل است و در واقع آن چیزی است که وقتی با Windows Explorer به آن فایل نگاه میکنید، مانند نام و سایز فایل که قابل مشاهده هستند. نفوذگر میتواند جریانهای اضافی که مرتبط با فایل و دایرکتوری میباشد را در سیستم ایجاد نماید.
نفوذگر از این روش برای مخفی نمودن اطلاعات حساس خود مانند ابزارهای حمله یا لاگهای مربوط به Sniff انجام شده، استفاده مینماید. هر گونه اطلاعاتی که شما با این روش به فایل اصلی اضافه میکنید مانند یک کشو دراور اضافی عمل میکند.
نحوه ایجاد یک NTFS Stream بوسیله Notepad
ابتدا cmd را باز کنید و دستور زیر را به منظور ایجاد یک فایل وارد کنید.
C:>notepad myfile.txt:lion.txt
پس از وارد کردن این دستور و فشردن کلید Enter صفحه notepad باز میشود. روی دکمه yes کلیک کرده و 10 خط تایپ کنید و آن را ذخیره نمایید.
حال میخواهیم یک فایل دیگر بسازیم. مراحل قبل را تکرار کنید و به جای lion.txt عبارت tiger.txt را وارد نمایید و درون فایل باز شده 20 خط تایپ نموده و ذخیره کنید.
حال یک dir از درایو مورد نظر بگیرید. مشاهده میکنید که فقط یک فایل به نام myfile.txt وجود دارد و حجم آن صفر بوده و وقتی فایل myfile.txt را باز میکنید داخل آن خالی است. سوال این جاست که دو فایل دیگر کجا هستند؟ این دو فایل داخل myfile.txt مخفی شدهاند برای مشاهده هرکدام از فایلهادستورات زیر را در محیط cmd وارد کنید.
C:>notepad myfile.txt:lion.txt
C:>notepad myfile.txt:tiger.txt
نحوه ایجاد یک ویژگی به کمک NTFS Stream
ابتدا دستور زیر را وارد کیند.
echo p@ssword > wininfo.txt:hidden
در این حالت شما ویژگی با نام Hidden برای فایل خواهید داشت که مقدار آن برابر p@ssword میباشد و برای مشاهده این محتویات از دستور زیر استفاده میشود.
more < wininfo.txt:hidden
نحوه قرار دادن یک عکس در فایل متنی به کمک NTFS Stream
ابتدا دستور زیر را وارد کیند.
type secret.bmp > wininfo.txt:secret.bmp
در این حالت شما یک فایل تصویری را در یک فایل متنی اصطلاحا Stream مینمایید و برای مشاهده این محتویات از دستور زیر استفاده میشود.
mspaint wininfo.txt:secret.bmp
نحوه قرار دادن یک فایل اجرایی در فایل متنی به کمک NTFS Stream
ابتدا دستور زیر را وارد کیند.
type malware.exe > wininfo.txt:malware.exe
در این حالت شما یک فایل اجرایی را درون یک فایل متنی قرار داده اید و برای مشاهده و اجرای آن از دستور زیر استفاده میشود.
powershell .\wininfo.txt:malware.exe
Alternate Data Stream in NTFS
هنگامیکه دادهها در Stream مخفی شدهاند، Windows Explorer در هنگام استفاده از دستور dir تنها نام و سایز را به عنوان اولین Stream به شما نمایش میدهد. در این حالت نام و سایز محتوای زیرمجموعه که شما آن را Stream نمودهاید نمایش داده نمیشود.
نکته: اگر شما فایلی را Move کنید، تمام Stream های مرتبط با آن نیز Move خواهد شد.
آشنایی با پاک کردن ردپایا Covering Tracks در لینوکس
در ویندوزهای ویستا به بعد، مایکروسافت یک option را به دستور dir اضافه نمود که با استفاده از آن میتوانید محتویات Stream را نیز در خروجی این دستور مشاهده نمایید. برای این کار از دستور dir /r استفاده میشود.
البته توجه داشته باشید که برنامه smbclient لینوکس نیز میتواند Stream مربوط به دادهها را از طریق Windows Share استخراج کند ولی در این حالت نفوذگر باید نام Stream را بداند تا بتواند اطلاعات آن را استخراج نماید.
لازم به ذکر است که تا کنون ویندوز هیچ قابلیت داخلی مستقیمی برای حذف یک Stream ندارد ولی برای پاک کردن یک Stream با استفاده از قابلیتهای داخلی ویندوز میتوانید فایل دارای Stream را به یک پارتیشن FAT منتقل نموده و سپس آن را مجدد به سیستم اصلی برگردانید تا Stream های مربوط به آن حذف شود.
برخی از آنتی ویروسها فایلهای Stream شده را شناسایی مینمایند. ولی ابزارهایی هم برای شناسایی چنین فایلهایی وجود دارد که از جمله آنها میتوان به ابزار LADS و ابزار Streams از مجموعه Sysinternals اشاره کرد.
Log Editing in Windows
در سیستمعامل ویندوز، لاگهای مربوط به سیستم توسط سرویس و Event Logger تولید میشود. Windows Event Logger مجموعهای از فایلهای بافر را که با پسوند .LOG شناخته میشوند، تولید میکند. سه فایل اصلی وجود دارند که به صورت موقت لاگها را در خود ذخیره میکنند به صورت زیر هستند:
SYSTEM.LOG
SECURITY.LOG
APPLICATION.LOG
هر فایل .LOG به صورت متناوب و خودکار در قالب یک فایل با پسوند .EVT باز نویسی میشود و سه فایل زیر را ایجاد میکند:
SYSEVENT.EVTX
SECEVENT.EVTX
APPEVENT.EVTX
البته برخی از نسخههای ویندوز دارای فایلهایی با پسوند EVT هم میباشند ولی سه مورد مذکور به صورت اصلی در سیستمهای ویندوزی موجود هستند. برای خواندن این فایلها میتوان از Event Viewer استفاده نمود که در بخش کنترل پنل قابل دسترس میباشد. لازم به ذکر است این فایلهای لاگ در برابر نوشتن محافظت میشوند و در حالی که یک سیستم در حال کارکردن میباشد با استفاده از ابزارهای معمول نمیتوان تغییری در آنها ایجاد نمود.
در صورت دسترسی مدیر به سیستم شما میتوانید کلیه لاگهای موجود را حذف نمایید. البته این موضوع موجب جلب توجه مدیران شبکه خواهد شد. بدین منظور شما باید خطوطی از فایلهای مربوط به ویرایش نمایید.
Editing Logs with Physical Access
اگر نفوذگر دسترسی فیزیکی به سیستم ویندوز داشته باشد میتواند با یک فلاپی دیسک یا CD لینوکس سیستم را Boot نماید. سپس میتواند با استفاده از ابزارهای ویرایش تخصصی، به فایلهای لاگ دسترسی پیدا نموده و آنها را حذف نماید.
توجه داشته باشید که در حال حاضر ابزاری برای ویرایش لاگهای ویندوز به صورت عمومی منتشر نشده است اما در محیطهای زیرزمینی در مورد آن بحث میشود.
البته ابزار دیگری که برای حذف لاگها مورد استفاده قرار میگیرد، ابزار clearev در محیط Meterpreter میباشد. این ابزار میتواند لاگهای مربوط به System، Security و Application را حذف نماید. این ابزار هم لاگهای مذکور را به صورت کامل حذف میکند و امکان حذف موردی لاگها در این ابزار موجود نمیباشد.
Defenses from Covering Tracks
این واضح است که ما نمیخواهیم، مهاجمان فایلهای لاگ مربوط به سیستمهای ما را تغییر دهند. حالا چگونه میتوانیم از لاگهای مربوط به سیستم محافظت نماییم؟
استفاده از روشهای دفاعی بستگی به حساسیت سرورهای ما دارد. پس برای دستگاههای قابل دسترس از طریق اینترنت که دارای دادههای حساسی هستند، باید مراقبت بیشتری در مورد لاگهای آنها صورت گیرد. شاید این میزان اهمیت برای سیستمهای داخلی نیاز نباشد. البته نباید از امکان بروز حملات داخلی اطمینان داشته باشید زیرا برخی از حملات در داخل شبکه رخ میدهند. در هر صورت میزان حساسیت دادهها و لاگهای آن بسیار اهمیت دارد.
یکی از روشهای موثر در این مرحله (Covering Tracks)، استفاده از یک سرور مجزا برای ذخیره سازی لاگها میباشد. اگر نفوذگر به یک سیستم دسترسی پیدا کند، میتواند کلیه لاگهای سیستم را حذف نماید ولی اگر این لاگها بر روی سرور دیگری ذخیره گردد، امکان حذف این لاگهاد ر صورتی که به سیستم ذخیره لاگ دسترسی نداشته باشد، امکان پذیر نخواهد بود. از آنجا که سرور مذکور تنها وظیفه ذخیره سازی و نگهداری از لاگها را بر عهده دارد، معمولا از امنیت بالایی نیز برخوردار است و امکان نفوذ به آن توسط نفوذگر مشکلتر خواهد بود.
در سیستمهای مبتنی بر یونیکس، شما به راحتی میتوانید پروسس Syslog را به گونهای پیکربندی کنید تا لاگها در یک سرور دیگر ذخیره شود. ابزار ویندوز هم از طریق محصولات دیگر یا Third-Party از ابزار Syslog پشتیبانی میکند. یکی از ابزارهای رایگانی که در این مورد استفاده میشود ابزار evt2sys میباشد. این ابزار کارایی خوبی داشته و بر روی اکثر نسخههای ویندوز قابل اجرا میباشد. ابزار evt2sys لاگهای سیستم را مانیتور نموده و آنها را به سرور Syslog ارسال مینماید. ابزارهای دیگری مانند SL4NT، Kiwi’s Syslog و Snare نیز از جمله ابزارهای مدیریت لاگ در ویندوز میباشند.
علاوه بر ارسال لاگها به سرور دیگر، شما میتوانید با استفاده از ایجاد یک کنترل یکپارچگی رمز شده یا cryptographic integrity check برای فایلهای لاگ از آنها محافظت نمایید. ابزارهایی مانند Mysyslog که شامل قابلیت لاگبرداری از راه دور و کنترل یکپارچگی نیز میباشد.