ابزار شناسایی IOCTL

همانطور که می‌دانید قبل از شروع عملیات فازینگ یک درایور، باید نام Symbolic Link آن درایور و همچنین کدهای IOCTL قابل قبول آن درایور را در اختیار داشته باشید.

برای گرفتن لیست Symbolic Linkها می‌توان از ابزار Sysinternals WinObj استفاده کرد. بخش Globals این ابزار لیست کلیه Symbolic Linkهای موجود در سیستم عامل را به شما نمایش می‌دهد.

برای شناسایی لیست کدهای IOCTL آن درایور نیز ما ابزاری برای استخراج لیست آن با استفاده از روش Brute-Force طراحی و پیاده‌سازی کردیم. این ابزار از QEMU برای اجرای درایور و Brute-Force کردن آن استفاده مي‌کند.

 

راهنمای نصب و استفاده

این ابزار باید در یک رایانه دارای قابلیت مجازی‌سازی و سیستم عامل Ubuntu 20.04 اجرا شود. قبل از هر چیز پیش‌نیازها را نصب نمایید:

sudo apt-get install qemu-kvm qemu virt-manager virt-viewer libvirt-bin

نکته: ترجیحا از نسخه‌های بروز QEMU همانند QEMU 5.0.0‌ به بعد استفاده کنید. چنانچه QEMU موجود در Repository سیستم عامل Ubuntu قدیمی است، می‌توانید آخرین نسخه را از طریق لینک زیر دانلود کنید:

https://download.qemu.org/qemu-5.0.0.tar.xz

برای نصب دستی دستورات زیر را وارد کنید:

sudo ./configure --target-list=i386-softmmu,x86_64-softmmu --enable-vnc --enable-gtk --disable-werror
sudo make
sudo make install

نکته: جهت اطمینان از اجرا شدن ماژول QEMUدستور زیر را وارد کنید:

sudo modprobe nbd

حالا برای نصب ابزار مراحل زیر را طی کنید:

  1. کد ابزار IOCTL-Finder را در مسیر HOME قرار داده، یک پوشه با نام installation در درون آن بسازید و فایل نصب ویندوز (با نام windows.iso) را در آن قرار دهید (ترجیحا از نسخه 64 بیتی ویندوز 7 استفاده کنید. هر چند امکان استفاده از نسخه‌های دیگر ویندوز نیز وجود دارد).
  2. سپس فایل udp_server.py را با دسترسی root اجرا کنید. در صورتی که سیستم‌عامل از قبل نصب نشده باشد، فرآیند نصب سیستم‌عامل را انجام دهید و یک بار سیستم‌عامل را خاموش کنید.

    نکته: ترجیحا بعد از نصب، دیوار آتش ویندوز را نیز خاموش کنید. هر چند این کار الزامی نیست.

  3. سیستم‌عامل دوباره اجرا می‌شود. با استفاده از Task Scheduler یک Task با مشخصات زیر ایجاد کنید:

    فایل در مسیر C:\dir_to_copy\DriverLoader.exe را پس از اجرا شدن سیستم عامل اجرا کنید (At LogOn). دسترسی Admin داشته باشد و همچنین آرگومان‌های زیر نیز به برنامه داده شوند:

    “Temp\driver.sys” “kafl” C:\dir_to_copy\ioctl.txt

  4. حالت Test Mode را در سیستم‌عامل فعال کنید. برای این کار دستور زیر را با دسترسی Admin اجرا کنید:

    bcdedit.exe /set TESTSIGNING ON

  5. Driver Integrity Check را در سیستم‌عامل غیرفعال کنید. برای این کار دستور زیر را با دسترسی Admin اجرا نمایید:

    bcdedit /set nointegritychecks on

  6. سیستم‌عامل درون QEMU را خاموش کنید.
  7. فایل driver.sys را در مسیر dir_to_copy با درایور مدنظر خود جایگزین کنید. فایل udp_server.py را ویرایش کنید و مقادیر HANDLE و BASE را با توجه به مشخصات درایور هدف تغییر دهید. BASE مقدار شروع برای BruteForce است که به صورت پیشفرض 0x0 در نظر گرفته شده است. عبارت HANDLE نیز باید برابر مقدار Symbolic Link درایور باشد. 
  8. پس از چندثانیه فرآیند تست و بررسی آغاز می‌شود. نتایج این بررسی در مسیر results ذخیره می‌شود. هر کد IOCTL که توسط درایور قابل قبول است یا ممکن است مورد قبولش باشد، در این مسیر به شما نمایش داده می‌شود.

    در زیر تصاویری از اجرای ماژول IOCTL-Finder ارائه شده است.

     

     

نمی‌توانید پاسخی پیدا کنید؟ آیا به دنبال مقاله خاصی هستید که در سؤالات عمومی قرار دارد؟ فقط پوشه ها و دسته بندی های مختلف مربوطه را مرور کنید و سپس مقاله مورد نظر خود را پیدا خواهید کرد.
تمامی حقوق مادی و معنوی این سایت متعلق به شرکت مهندسی دنیای فناوری امن ویرا می‌باشد.