اجرای دستی فازینگ
چنانچه برای انجام عملیات فازینگ نمیخواهید رابط کاربری تحت وب سامانه فازر را نصب و پیکربندی کنید و تنها قصد دارید این عملیات را به صورت دستی از طریق پایگاه داده انجام دهید، این بخش را مطالعه کنید.
بعد از نصب سامانه جهت انجام عملیات فازینگ باید یک Task در کالکشن tasks به پایگاه داده افزوده شود. فرمت Task مشابه شکل زیر است:
برخی از فیلدهای هر تسک عبارت است از:
- فیلد driver آدرس فایل درایوری است که میخواهید تست بگیرید.
- فیلد fuzzer آدرس فایل fuzzer (کدی در درون ماشینهای مجازی که وظیفه ارسال IOCTL Codeها را به درایور دارد) است. البته این فیلد در این فاز کار نمیکند و در فاز بعدی پیادهسازی میشود. در این فاز کد فازر در زمان شروع عملیات فازینگ به طور خودکار از روی یک کد پایه کامپایل میشود.
- فیلد Ip_file_name نام Symbolic Link درایور است.
- فیلد ioctl_code باید برابر همان کد ioctl باشد که میخواهید آن را تست کنید. همانطور که میدانید کد IOCTL از چهار بخش device type، function، method و access تشکیل شده است. برای تولید کد IOCTL و همچنین برعکس آن (استخراج بخشهای یک کد IOCTL) میتوانید از ابزار iocode.exe که در اختیار شما قرار داده شده است، استفاده کنید.
- فیلد stop در هنگام وارد کردن Task باید برابر false باشد. در صورتی که میخواهید یک Task را متوقف کنید باید این فیلد را برابر true کنید. چند ثانیه بعد از true شدن این فیلد، کلیه Slaveها عملیات فازینگ را متوقف میکنند.
- فیلد description توضیحی دلخواه درباره Task است.
- فیلد slaves_number تعداد slaveهایی است که میخواهید در اجرای این Task سهیم باشند.
- فیلد error نشاندهنده خطاهایی است که در هنگام انجام عملیات فازینگ رخ دادهاند. این فیلد در ابتدا خالی است، اما به مرور توسط سامانه فازر پر خواهد شد.
- فیلد crashes نشاندهنده لیست crashهایی است که موفق شدهاید تا آنها را در درایور هدف بگیرید. این فیلد در ابتدا خالی است، اما به مرور توسط سامانه فازر به محض شناسایی Crash پر خواهد شد.
- فیلد state وضعیت انجام Task را نشان میدهد. در ابتدا باید برابر todo باشد. بعد از آن توسط سامانه فازر تنظیم خواهد شد.
- فیلد creator نشاندهنده کاربری است که درخواست اجرای Task را داده است. با توجه به اینکه Taskها را به طور دستی وارد پایگاه داده ميکنید، این فیلد هر مقدار دلخواهی میتواند داشته باشد.
نکته: چنانچه یک سرور HTTP برای ذخیره فایلهای driver.sys و fuzzer.exe نیاز دارید، میتوانید از دستور زیر استفاده کنید:
php -S 0.0.0.0:4545
با اجرای دستور بالا یک HTTP Server ساخته میشود که امکان دانلود محتوای پوشه فعلی را از طریق HTTP فراهم میکند.
نکته: در صورت شناسایی Crash ورودی که باعث Crash شده است به صورت دو بار Base64 شده از پایگاه داده MongoDB قابل دریافت است.
نکته: در هنگام تست درایور حتما توجه کنید که درایور شما باید قابل اجرا در ماشین مجازی شما باشد. به عنوان مثال چنانچه از Windows 7 x64 برای تست استفاده میکنید، درایور شما باید ۶۴ بیتی باشد و قابل اجرا در Windows 7 باشد.