
أداة تخمين ioctl لأنظمة Windows NT وأداة تشويش نمطية (Fuzzer).
مجموعة أدوات IOCTL لبرامج تشغيل Windows.
تشمل هذه الأداة ميزتين متميزتين. الأولى هي تخمين قيم IOCTL التي يقبلها برنامج التشغيل بالإضافة إلى حدود الأحجام الصالحة لها، وتخزين النتائج في ملف لاستخدامها لاحقًا. أما الميزة الثانية فتتكون من 3 فازرات بسيطة: فازر عشوائي بحت، وفازر DWORD منزلق، وفازر غير متزامن. يمكنك تشغيل أي مجموعة من الثلاثة بالتتابع وتحديد حدود زمنية لكل تشغيل فازر. ستحذرك الفازرات المتزامنة أيضًا إذا فشل عدد كبير جدًا من الطلبات على التوالي (مما يشير إلى أن المزيد من الفازرة قد لا يكون مفيدًا، على سبيل المثال بسبب نقص الصلاحيات)، ويتيح لك الفازر غير المتزامن تعيين النسبة المئوية للطلبات التي سيتم محاولة إلغائها ومستوى التزامن (عدد الطلبات المعلقة دفعة واحدة). تتضمن الميزات الأخرى التحكم في مستوى التفصيل والقدرة على إيقاف أي تشغيل فازر بشكل نظيف باستخدام ctrl-c. عند الاكتمال، يعرض كل فازر إحصائيات تراكمية.
dibf.exe <options> <device name>
Options:
-h You're looking at it
-i Ignore previous logfile - THIS WILL OVERWRITE IT
-l Specify custom logfile name to read from/write to (default dibf-bf-results.txt)
-d Deep IOCTL bruteforce (8-9 times slower)
-v [0-3] Verbosity level
-s [ioctl] Start IOCTL value
-e [ioctl] End IOCTL value
-t [d1,d2,d4] Timeout for each fuzzer in seconds -- no spaces and decimal input ONLY
-p [max requests] Max number of async pending requests (loosely enforced, default 64)
-a [max threads] Max number of threads, default is 2xNbOfProcessors, max is 128
-c [% cancelation] Async cancelation attempt percent rate (default 15)
-f [0-7] Fuzz flag. OR values together to run multiple
fuzzer stages. If left out, it defaults to all
stages.
0 = Brute-force IOCTLs only
1 = Sliding DWORD (sync)
2 = Random (async)
4 = Named Pipe (async)
Examples:
dibf \\.\MyDevice
dibf -v -d -s 0x10000000 \\.\MyDevice
dibf -f 0x3 \\.\MyDevice
Notes:
- The bruteforce stage will generate a file named "dibf-bf-results.txt"
in the same directory as the executable. If dibf is started with no
arguments, it will look for this file and start the fuzzer with the values
from it The -l flag can be used to specify a custom results file name.
- If not specified otherwise, command line arguments can be passed as decimal or hex (prefix with "0x")
- CTRL-C interrupts the current stage and moves to the next if any. Current statistics will be displayed.
- The statistics are cumulative.
- The command-line flags are case-insensitive.
من أجل توفير حزم مُفازرة لفازر Named Pipe، اتصل بـ \\.\pipe\dibf_pipe في وضع PIPE_TYPE_MESSAGE وأرسل البيانات المُفازرة. سيتم تفسير آخر 4 بايتات من الحزمة على أنها كود IOCTL. بالإضافة إلى ذلك، يمكن استخدام ناشر Named Pipe الخاص بـ Peach لفازرة نقاط نهاية Named Pipe خارج نطاق DIBF.
يمكن استخدام ناشر Peach المرفق لربط Peach بمزوّد فازر Named Pipe الخاص بـ DIBF. يمكن العثور على ملف Peach XML نموذجي باسم peach_np.xml يستخدم هذا المزوّد داخل مجلد PeachNamedPipePublisher:
<?xml version="1.0" encoding="utf-8"?>
<Peach xmlns="http://peachfuzzer.com/2012/Peach" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://peachfuzzer.com/2012/Peach ../peach.xsd">
<!-- DataModel containing a single string -->
<DataModel name="TheDataModel">
<String value="Hello World!" />
<Number name="IOCTL0" value="EFBEADDE" valueType="hex" size="32" mutable="false" />
</DataModel>
<!-- StateModel referencing data model above -->
<StateModel name="DibfState" initialState="DibfState0">
<State name="DibfState0">
<Action type="output">
<DataModel ref="TheDataModel"/>
</Action>
</State>
</StateModel>
<!-- The test with pipe publisher -->
<Test name="Default">
<StateModel ref="DibfState"/>
<Publisher class="NamedPipe">
<Param name="host" value="." />
<Param name="pipeName" value="dibf_pipe" />
<Param name="impersonationLevel" value="1" />
</Publisher>
</Test>
</Peach>
<!-- end -->
<<<< RUNNING RANDOM FUZZER >>>>
RUN STARTED: 3/17/2014 4:14 PM
---------------------------------------
Sent Requests : 4233
Completed Requests : 4233 (4233 sync, 0 async)
SuccessfulRequests : 1254
FailedRequests : 2979
CanceledRequests : 0
RUN ENDED: 3/17/2014 4:14 PM
---------------------------------------
<<<< RUNNING SLIDING DWORD FUZZER >>>>
RUN STARTED: 3/17/2014 4:14 PM
---------------------------------------
Sent Requests : 6339
Completed Requests : 6339 (6339 sync, 0 async)
SuccessfulRequests : 1254
FailedRequests : 5085
CanceledRequests : 0
RUN ENDED: 3/17/2014 4:14 PM
---------------------------------------
<<<< RUNNING ASYNC FUZZER >>>>
RUN STARTED: 3/17/2014 4:14 PM
---------------------------------------
Sent Requests : 8272
Completed Requests : 8272 (6339 sync, 1933 async)
SuccessfulRequests : 1738
FailedRequests : 6414
CanceledRequests : 120
RUN ENDED: 3/17/2014 4:14 PM
---------------------------------------
تقوم هذه الأداة البسيطة جدًا بترميز وفك ترميز أكواد تحكم IOCTL الخاصة بنظام Windows. وهي توفر طريقة سهلة الاستخدام للتعامل مع ترميز IO لأنواع الأجهزة ورقم الوظيفة وطريقة النقل ونوع الوصول.
iocode.exe [IOCODE] or iocode.exe [DEVICE_TYPE] [FUNCTION] [METHOD] [ACCESS]
هذه أداة مخصصة لإثبات الثغرات الأمنية، ومن المفترض استخدامها مع محرر سداسي عشري. بمجرد صياغة الطلب المطلوب في المحرر، سترسل هذه الأداة الطلب إلى برنامج التشغيل باستخدام معاملات سطر الأوامر. يتم إرسال الاستجابة إلى stdout. يمكن أيضًا استخدام عناوين عشوائية كعناوين مخازن الإدخال والإخراج.
iosend [Device] [IOCODE] [InputBufFilePath|InputAdress] [InputLen] [[OutputAddress]] [OutputLen] > [Output file]
Notes:
- This utility prints error/status messages to stderr
- Input can be provided as an arbitrary address or a file name
- An output buffer is allocated and its contents eventually written to stdout unless the optional OutputAddress parameter is provided
GPLv2