| SORTER(1) | General Commands Manual | SORTER(1) |
نام (NAME)
sorter - دستهبندی فایلهای درون یک ایمیج بر اساس نوع فایل
خلاصه دستور (SYNOPSIS)
sorter [-b size ] [-e] [-E] [-h] [-l] [-md5] [-s] [-sha1] [-U] [-v] [-V] [-a hash_alert ] [-c config ] [-C config ] [-d dir ] [-m mnt ] [-n nsrl_db ] [-x hash_exclude ] [-i imgtype] [-o imgoffset] [-f fstype] image [image] [meta_addr]
توضیحات (DESCRIPTION)
sorter یک اسکریپت Perl است که یک سیستم فایل را تحلیل میکند تا فایلهای تخصیصیافته و تخصیصنیافته را بر اساس نوع فایل سازماندهی کند. این ابزار دستور 'file' را روی هر فایل اجرا کرده و فایلها را طبق قواعد موجود در فایلهای پیکربندی مرتب میسازد. همچنین تطبیق پسوندها برای شناسایی فایلهای «مخفی» انجام میشود. علاوه بر این میتوان پایگاههای داده هش را برای فایلهایی که بهعنوان فایل سالم شناخته میشوند و میتوان از آنها صرفنظر کرد، و فایلهایی که بهعنوان مخرب شناخته میشوند و باید هشدار داده شوند، مشخص نمود.
بهطور پیشفرض، برنامه از فایلهای پیکربندی موجود در پوشهای که The Sleuth Kit در آن نصب شده است استفاده میکند. این تنظیمات را میتوان با گزینههای زمان اجرا بازنویسی کرد. یک فایل پیکربندی استاندارد برای تمامی انواع سیستم فایل و سپس یک فایل ویژه برای یک سیستمعامل مشخص وجود دارد.
آرگومانها (ARGUMENTS)
آرگومانهای الزامی به شرح زیر هستند. این دستور یک یا چند ایمیج را تحلیل کرده و نتایج را در دایرکتوری تعیینشده با -d ذخیره میکند یا در صورت مشخص شدن -l، نتایج را در STDOUT فهرست مینماید.
- -d dir
- محل ذخیره تمامی فایلها را مشخص میکند. این شامل فایلهای شاخص و زیرپوشهها در صورت تعیین پرچم -s میشود. مشخص کردن این آرگومان الزامی است، مگر آنکه پرچم فهرستکردن -l داده شده باشد.
- -l
- اطلاعات را در STDOUT فهرست میکند (هیچ فایلی نوشته نمیشود). این گزینه با استفاده از 'netcat' برای پاسخگویی به حوادث (Incident Response) مفید است. در صورت استفاده از -d، این گزینه قابل استفاده نیست.
- image [images]
- ایمیج دیسک یا پارتیشن برای خواندن، که قالب آن با -i مشخص میشود. در صورتی که ایمیج به چند بخش تقسیم شده باشد، میتوان چندین نام فایل ایمیج را وارد کرد. اگر تنها یک فایل ایمیج مشخص شود و نام آن نخستین بخش از یک توالی باشد (برای مثال با پسوند '.001' پایان یابد)، بخشهای بعدی ایمیج بهطور خودکار لحاظ خواهند شد.
گزینهها به شرح زیر هستند:
- -f fstype
- نوع سیستم فایل ایمیج(ها) را مشخص میکند. این همان نوعی است که The Sleuth Kit استفاده میکند.
- -i imgtype
- نوع ایمیجی که سیستم فایل در آن قرار دارد را مشخص میکند. این همان نوعی است که The Sleuth Kit استفاده میکند.
- -o imgoffset
- آفست سکتور از ابتدای ایمیج تا شروع سیستم فایل را مشخص میکند.
- -b size
- حداقل اندازه فایل برای پردازش را مشخص میکند. تمامی فایلهای کوچکتر از این اندازه نادیده گرفته خواهند شد.
- -c config
- مسیر یک فایل پیکربندی اضافی را مشخص میکند. این فایل علاوه بر فایلهای استاندارد موجود در دایرکتوری نصب بارگذاری خواهد شد. این تنظیمات نسبت به فایلهای استاندارد اولویت خواهند داشت.
- -C config
- مسیر تنها فایل پیکربندی مورد استفاده را مشخص میکند. در صورت تعیین این گزینه، فایلهای پیکربندی استاندارد بارگذاری نخواهند شد. برای مثال، در دایرکتوری 'share/sort' فایلی به نام 'images.sort' وجود دارد. این فایل تنها شامل قواعد مربوط به فایلهای تصویری گرافیکی است. اگر با -C مشخص شود، تنها اطلاعات تصاویر مربوط به ایمیج ذخیره خواهد شد.
- -m mnt
- نقطه اتصال (mount point) ایمیج در حال تحلیل را مشخص میکند. این گزینه صرفاً به دلایل ظاهری است؛ هنگام نوشته شدن ورودیها در فایلهای خروجی، فایلها بهجای مسیر نسبی دارای مسیر کامل خواهند بود. در صورت تعیین این گزینه، تنها یک ایمیج میتواند مشخص شود.
- -a hash_alert
- مسیر یک پایگاه داده هش حاوی ورودیهای فایلهای «مخرب» شناختهشده را مشخص میکند. اگر فایلی با مقدار هش MD5 در این پایگاه داده یافت شود، در یک فایل هشدار ویژه قرار خواهد گرفت. این پایگاه داده پیش از استفاده توسط sorter، باید با ابزار 'hfind' در The Sleuth Kit برای MD5 ایندکس شده باشد.
- -n nsrl_db
- مسیر پایگاه داده National Software Reference Library (NSRL) متعلق به NIST را مشخص میکند (http://www.nsrl.nist.gov). هر فایلی که در NSRL یافت شود نادیده گرفته شده و در دستهبندی قرار نمیگیرد. این پایگاه داده پیش از استفاده توسط sorter، باید با ابزار 'hfind' در The Sleuth Kit برای MD5 ایندکس شده باشد. فایل پایگاه داده در حال حاضر 'NSRLFile.txt' نام دارد.
- -x hash_exclude
- مسیر یک پایگاه داده هش حاوی ورودیهای فایلهای «سالم» شناختهشده را مشخص میکند. اگر فایلی با مقدار هش MD5 در این پایگاه داده یافت شود، نادیده گرفته شده و پردازش یا در فایلهای دستهبندی ذخیره نخواهد شد. این پایگاه داده پیش از استفاده توسط sorter، باید با ابزار 'hfind' در The Sleuth Kit برای MD5 ایندکس شده باشد.
- -e
- بررسیهای عدم تطابق پسوند را انجام میدهد (هیچ فایل شاخص دستهبندی تولید نمیشود).
- -U
- دادههای مربوط به انواع فایلهای ناشناخته را ذخیره نمیکند. بهطور پیشفرض، برای فایلهایی که خروجی 'file' برای آنها مشخص نیست، یک فایل 'unknown' ایجاد میشود. این به کاربر اجازه میدهد پیکربندی خود را بهبود بخشد. اگر این رفتار مطلوب نیست، از این پرچم استفاده کنید.
- -h
- فایلهای دستهبندی را در قالب HTML ایجاد میکند.
- -md5
- مقدار MD5 را برای هر فایل محاسبه کرده و در فایل دستهبندی ذخیره میکند. این کار هنگام مشخص شدن هر یک از پایگاههای داده بهطور خودکار انجام خواهد شد.
- -sha1
- مقدار SHA-1 را برای هر فایل محاسبه کرده و در فایل دستهبندی ذخیره میکند.
- -s
- محتوای واقعی فایل را در زیرپوشههایی در دایرکتوری مشخصشده با -d ذخیره میکند. برای مثال، تمام فایلهای JPG و GIF در دایرکتوری 'images' ذخیره خواهند شد. در صورت تعیین -h، تصاویر بندانگشتی (thumbnails) از فایلهای تصویری نیز ایجاد میشوند.
- -v
- نمایش اطلاعات با جزئیات کامل (حالت پرگو).
- -V
- نمایش نسخه.
- [meta_addr]
- آدرس متادیتای دایرکتوری برای شروع. بهطور پیشفرض، دایرکتوری ریشه استفاده میشود. در صورت تعیین این مقدار، تنها یک ایمیج میتواند مشخص شود.
نمای کلی فرایند (HIGH-LEVEL OVERVIEW OF PROCESS)
دستور sorter یک اسکریپت Perl است که با سایر ابزارهای The Sleuth Kit تعامل دارد. این اسکریپت با خواندن فایلهای پیکربندی از دایرکتوری نصب کار خود را آغاز میکند. یک فایل پیکربندی عمومی و یک فایل اختصاصی برای هر سیستمعامل وجود دارد. فایل اختصاصی از طریق پرچم -f تعیین میشود. هر فایل پیکربندی شامل قواعدی برای پردازش خروجی دستور 'file' است. یک نوع خط مشخص میکند که یک خروجی معین دستور 'file' (مثلاً 'image data') به کدام دستهبندی (مثلاً 'images') تعلق دارد (با استفاده از عبارتهای باقاعده). قاعده دیگر پسوندهای فایل (مثلاً .txt) را نشان میدهد که متعلق به یک خروجی دستور 'file' (مثلاً ASCII(.*?)text) هستند. به بخش قواعد در ادامه مراجعه فرمایید.
سپس برنامه ابزار 'fls' در The Sleuth Kit را اجرا میکند تا فایلهای موجود در ایمیج سیستم فایل را شناسایی کند. هر فایل شناساییشده با استفاده از ابزار 'icat' مشاهده و بررسی میشود. اگر پایگاه داده هش ارائه شده باشد، هش فایل محاسبه و جستجو میشود. اگر در یک پایگاه داده 'alert' پیدا شود، به فایل ویژه 'alert.txt' افزوده میشود. اگر در NSRL یا پایگاه داده 'exclude' یافت شود، بهعنوان یک فایل سالم شناختهشده نادیده گرفته میشود. فایلهای مستثنیشده برای مراجعات بعدی در یک فایل 'exclude' ثبت میشوند، اما در فایلهای دستهبندی ذخیره نمیگردند.
سپس دستور 'file' برای شناسایی نوع فایل (بر اساس اطلاعات هدر) اجرا میشود. قواعد فایل پیکربندی برای تشخیص اینکه فایل متعلق به کدام دستهبندی است استفاده میشوند. ورودی جدیدی به فایل دستهبندی مربوطه (در دایرکتوری -d dir) اضافه میشود. اگر پرچم -s مشخص شده باشد، یک نسخه از فایل در زیرپوشهای همنام با دستهبندی ذخیره میشود. در صورت استفاده از قالب HTML، پیوندها به کاربر امکان میدهند فایلهای ذخیرهشده و محتویات هر دستهبندی را بهآسانی مشاهده کند.
فایلهایی که دستهبندی ندارند در دستهبندی 'unknown' و دستهبندی 'data' ثبت میشوند. 'data' برای فایلهایی با ساختاری است که 'file' آن را نمیشناسد، و 'unknown' برای فایلهایی با ساختاری است که 'file' میشناسد اما در پیکربندی قاعدهای ندارند. این فایلها برای مراجعات بعدی ذخیره میشوند، اما با استفاده از پرچم -U میتوان از دستهبندی unknown صرفنظر کرد.
با استفاده از پرچم -s میتوان نسخهای از فایلها را ذخیره کرد. در این صورت، فایلها در زیرپوشهای به نام همان دستهبندی ذخیره میشوند. هر فایل با استفاده از نام ایمیج سیستم فایل، بهدنبال آن آدرس متادیتا و پسوند اصلی فایل نامگذاری میشود. فایل شاخص دستهبندی میتواند برای تطبیق نام واقعی با نام ذخیرهشده استفاده شود. قالب HTML مشاهده را آسانتر میکند زیرا پیوندهایی از فایل شاخص دستهبندی به هر فایل وجود دارد.
برنامه همچنین به قواعد مربوط به پسوند فایل مراجعه میکند. اگر فایل در انتهای خود دارای پسوند باشد (هر چیزی بعد از '.')، با قواعد مقایسه میشود. اگر پسوند در قواعد بهعنوان یک پسوند معتبر برای آن نوع فایل یافت نشود، به فایل عدم تطابق ('mismatch') اضافه میشود. اگر فایل فاقد پسوند باشد، حتی در صورت وجود پسوندهای معتبر برای آن نوع فایل، ثبت نخواهد شد. این بررسی حتی اگر فایل در یکی از پایگاههای داده هش سالم شناختهشده وجود داشته باشد نیز انجام میشود. در صورت یافت شدن در یکی از آنها، به فایلی ویژه افزوده خواهد شد. فایلهای نوع 'data' بهطور پیشفرض بررسی پسوند ندارند (زیرا ساختار ناشناخته دارند).
برنامه رویههای فوق را با استفاده از خروجی دستور 'ils' نیز تکرار میکند. این به 'sorter' امکان میدهد محتویات فایلهای تخصیصنیافته را که هنوز به واحدهای داده اشارهگر دارند بررسی کند (همه سیستمهای فایل از این مرحله داده تولید نخواهند کرد).
فایلهای پیکربندی (CONFIGURATION FILES)
فایلهای پیکربندی برای تعریف اینکه چه نوع فایلهایی به کدام دستهبندیها تعلق دارند و چه پسوندهایی متعلق به چه نوع فایلهایی هستند استفاده میشوند. فایلهای پیکربندی همراه با ابزار 'sorter' توزیع میشوند و در دایرکتوری نصب در مسیر 'share/sorter' قرار دارند.
فایل 'default.sort' توسط هر نوع سیستم فایلی استفاده میشود و حاوی ورودیهایی برای انواع فایلهای متداول است. همچنین یک فایل مختص سیستمعامل وجود دارد که برای پسوندهای خاص یک سیستمعامل مشخص مفید است. بهطور پیشفرض، فایل پیشفرض و فایل مختص سیستمعامل استفاده خواهند شد. با استفاده از پرچم -c، میتوان از یک فایل اضافی استفاده کرد. اگر از پرچم -C استفاده شود، تنها فایل پیکربندی ارائهشده استفاده میشود.
دو نوع قاعده در فایلهای پیکربندی وجود دارد. هر قاعده با یک سرآیند آغاز میشود که نوع قاعده (category یا ext) را مشخص میکند. هر دو نوع قاعده دو ستون اضافی دارند که میتوانند با هر فاصله خالی (whitespace) جدا شوند.
قاعده دستهبندی (category) دارای نام دستهبندی در ستون دوم و یک عبارت باقاعده Perl در ستون سوم است. نام دستهبندی نباید هیچ فاصلهای داشته باشد و تنها میتواند از حروف و اعداد تشکیل شود. عبارت باقاعده برای بررسی خروجی دستور 'file' استفاده میشود و بدون حساسیت به بزرگی و کوچکی حروف اعمال میگردد. بیش از یک قاعده میتواند برای یک دستهبندی وجود داشته باشد، اما برای یک خروجی فایل معین تنها یک دستهبندی میتواند اعمال شود. برای مثال:
این قاعده تمام خروجیهای فایل که در هر کجای آنها 'image data' وجود دارد را در دستهبندی 'images' ذخیره میکند:
category images image data
این قاعده تمام خروجیهای فایل را که دارای 'ASCII' و بهدنبال آن هر نویسهای و سپس 'text' هستند، در دستهبندی 'text' ذخیره میکند:
category text ASCII(.*?)text
این قاعده تمام خروجیهای فایلی را که صرفاً 'data' هستند در دستهبندی 'data' ذخیره میکند (نویسههای ^ و $ مرزها را در Perl تعریف میکنند). مقدار 'data' در خروجی file برای دادههای دودویی ناشناخته متداول است.
category data ^data?
دستهبندی ویژهای به نام 'ignore' وجود دارد که برای رد کردن فایلهای این نوع استفاده میشود. این گزینه در درجه اول باعث صرفهجویی در زمان و فضا میشود.
قاعده پسوند (ext) مشابه است با این تفاوت که ستون دوم مقادیر پسوندها را برای خروجی فایل نگه میدارد. چندین قاعده میتوانند برای یک نوع فایل وجود داشته باشند. مقایسه بدون حساسیت به حروف بزرگ و کوچک انجام میشود. اگر هیچ پسوندی برای نوع فایل معتبر نباشد، نیازی به ایجاد قاعده نیست؛ این موضوع از قبل مفروض تلقی میشود.
برای مثال، خروجی ASCII برای چندین پسوند فایل به کار میرود، بنابراین قواعد زیر میتوانند وجود داشته باشند:
ext txt,log ASCII(.*?)text ext c,cpp,h,js ASCII(.*?)text
لطفاً هر قاعدهای را که برای تحقیقات استاندارد مفید میدانید ایمیل کنید تا در نسخههای آینده گنجانده شوند (carrier at sleuthkit dot org).
مثالها (EXAMPLES)
برای اجرای sorter بدون پایگاههای داده هش، میتوان از موارد زیر استفاده کرد:
# sorter -f ntfs -d data/sorter images/hda1.dd # sorter -d data/sorter images/hda1.dd # sorter -i raw -f ntfs -o 63 -d data/sorter images/hda.dd
برای گنجاندن پایگاههای داده هش NSRL، یک پایگاه داده استثنا (exclude) و یک پایگاه داده هشدار (alert):
# sorter -f ntfs -d data/sorter -a /usr/hash/rootkit.db \
-x /usr/hash/win2k.db -n /usr/hash/nsrl/NSRLFile.txt \
images/hda1.dd
صرفاً برای شناسایی تصاویر با استفاده از فایل 'images.sort' ارائهشده:
# sorter -f ntfs -C /usr/local/sleuthkit/share/sort/images.sort \
-d data/sorter -h -s images/hda1.dd
پیشنیازها (REQUIREMENTS)
کتابخانه مرجع نرمافزار ملی NIST (NSRL) در نشانی زیر قابل دسترس است: https://www.nsrl.nist.gov
مجوز (LICENSE)
تحت مجوز Common Public License توزیع شده است که در فایل cpl1.0.txt در دایرکتوری مجوزهای The Sleuth Kit قرار دارد.
نویسنده (AUTHOR)
Brian Carrier <carrier at sleuthkit dot org>
ارسال بهروزرسانیهای مستندات به: <doc-updates at sleuthkit dot org>