Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
drltrace — Drltrace هو متتبع لاستدعاءات المكتبات لتطبيقات ويندوز ولينكس. | Kitploit
أدوات/GitHubGitHub/mxmssh/drltrace
التحليل الديناميكي (عزل)الهندسة العكسيةمصممي الأخطاءتحليل البرمجيات الخبيثةتحليل الملفات الثنائية
GitHubmxmssh/drltrace

drltrace

Drltrace هو متتبع لاستدعاءات المكتبات لتطبيقات ويندوز ولينكس.

عرض المستودع
41971منذ 6 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Drltrace

Windows test build build status

Linux test build Build Status

Drltrace هي أداة تتبع ديناميكي لاستدعاءات واجهة برمجة التطبيقات (API) لتطبيقات ويندوز ولينكس. تم بناء Drltrace فوق إطار العمل الديناميكي للتعليمات الثنائية DynamoRIO. تم تنفيذ Drltrace في البداية بواسطة Derek Bruening وتم توزيعه مع أطر عمل DynamoRIO وDrMemory. يحتوي هذا المستودع على إصدار مستقل من drltrace مع نصوص إضافية ومواد حول كيفية استخدامه لتحليل البرامج الضارة. يمكن تنزيل الإصدار الجاهز هنا.

الاستخدام

استخدام drltrace بسيط جدًا. يحتاج المستخدم إلى تحديد دليل سجل واسم عملية مستهدفة بالطريقة التالية:

root@kitploit:~
drltrace -logdir . -- calc.exe

هذا كل شيء، ستقوم الأداة بحقن ملفات DLL المطلوبة في العملية المستهدفة، وتبدأ التجهيز، وبالتوازي ستسجل معلومات حول جميع استدعاءات المكتبات التي يتم تنفيذها في العملية المستهدفة:

root@kitploit:~
~~43600~~ msvcrt.dll!__wgetmainargs
    arg 0: 0x010d2364
    arg 1: 0x010d2368
    and return to module id:0, offset:0x193a
~~43600~~ ntdll.dll!EtwEventRegister
    arg 0: 0x002ff994
    arg 1: 0x010d1490
    and return to module id:0, offset:0x157e
~~43600~~ ntdll.dll!EtwEventSetInformation
    arg 0: 0x007b4b40
    arg 1: 0x00000033
    and return to module id:0, offset:0x15a1
~~43600~~ SHELL32.dll!ShellExecuteW
    arg 0: <null> (type=<unknown>, size=0x0)
    arg 1: <null> (type=wchar_t*, size=0x0)
    arg 2: calculator:// (type=wchar_t*, size=0x0)
    arg 3: <null> (type=wchar_t*, size=0x0)
    arg 4: <null> (type=wchar_t*, size=0x0)
    arg 5: 0x1 (type=int, size=0x4)
    and return to module id:0, offset:0x167d

تنسيق المخرجات بسيط ويمكن تحليله بسهولة بواسطة سكريبت خارجي:

root@kitploit:~
~~[thread id]~~ [dll name]![api call name]
arg [arg #]: [value] (type=[Windows type name], size=[size of arg])
and return to module id:[module unique id], offset:[offset in memory]

يمكن إجراء التحليل باستخدام grep عند استخدام الوسيط -grepable؛ حيث يقوم بطباعة أسماء الدوال والوسائط كلها في سطر واحد:

root@kitploit:~
~~4824~~ KERNELBASE.dll!CreateFileW {0: C:\Windows\Fonts\staticcache.dat (type=wchar_t*, size=0x0)} {1: 0x80000000 (type=DWORD, size=0x4)} {2: 0x3 (type=DWORD, size=0x4)} {3: 0x005cde8c (type=<unknown>*, size=0x0)} {4: 0x3 (type=DWORD, size=0x4)} {5: 0x80 (type=DWORD, size=0x4)}

يتم طباعة جدول المعرفات الفريدة للوحدات في نهاية ملف السجل:

root@kitploit:~
Module Table: version 3, count 70
Columns: id, containing_id, start, end, entry, checksum, timestamp, path
  0,   0, 0x010d0000, 0x010da000, 0x010d1b80, 0x0000f752, 0xb5fe3575,  C:\Windows\SysWOW64\calc.exe
  1,   1, 0x6d4c0000, 0x6d621000, 0x6d563940, 0x00136d65, 0x59ce1b0b,  C:\Users\Max\Downloads\drltrace\drltrace\dynamorio\lib32\release\dynamorio.dll
  2,   2, 0x73800000, 0x73975000, 0x7380dbf7, 0x00000000, 0x59ce1b0f,  C:\Users\Max\Downloads\drltrace\drltrace\bin\release/drltracelib.dll
  3,   3, 0x742f0000, 0x742fa000, 0x742f2a00, 0x0000c877, 0x0adc52c1,  C:\Windows\System32\CRYPTBASE.dll
  4,   4, 0x74300000, 0x74320000, 0x7430c9b0, 0x0002c617, 0x245970b4,  C:\Windows\System32\SspiCli.dll
  5,   5, 0x74410000, 0x74431000, 0x74416900, 0x0002a940, 0x88a53c1d,  C:\Windows\System32\GDI32.dll
  6,   6, 0x74440000, 0x74500000, 0x7446fb20, 0x000cc410, 0xd343d532,  C:\Windows\System32\RPCRT4.dll
  7,   7, 0x74500000, 0x74525000, 0x745047d0, 0x00026737, 0xa39c8991,  C:\Windows\System32\IMM32.DLL
  8,   8, 0x74550000, 0x745c7000, 0x7456e8a0, 0x00081857, 0x73b971e1,  C:\Windows\System32\advapi32.dll
  9,   9, 0x748f0000, 0x74929000, 0x748febd0, 0x00045303, 0xa58be652,  C:\Windows\System32\cfgmgr32.dll
 10,  10, 0x74930000, 0x75c78000, 0x74aa09d0, 0x01377aa6, 0x4b39926b,  C:\Windows\System32\SHELL32.dll

يمكن لـ Drltrace تصفية استدعاءات المكتبات البينية بسهولة وطباعة استدعاءات API التي تتم من الوحدة الرئيسية (أو من الكومة) للتطبيق المستهدف فقط عن طريق تحديد الخيار -only_from_app، وهو مفيد جدًا في حالة التطبيقات التي تولد سجلات ضخمة. للتحكم الدقيق، يسمح الخيار -filter للمستخدم بتحديد ملف تكوين للتصفية بهدف تضمين دوال معينة في القائمة البيضاء، أو تجاهل دوال في القائمة السوداء (انظر ملف filter.config للأمثلة). يحتوي Drltrace أيضًا على عدة نصوص خارجية مفيدة لتصفية استدعاءات API لمكتبة معينة، وطباعة استدعاءات API والسلاسل التي قد تكون مثيرة للاهتمام فقط.

الترخيص

الوحدات الرئيسية لـ Drltrace موزعة تحت رخصة BSD.

بعض الملفات المطلوبة لـ drltrace موزعة تحت رخصة LGPL. راجع ملفات المصدر لمزيد من التفاصيل.

الدافع

تحليل البرامج الضارة ليس مهمة سهلة. أدوات التغليف البرمجية المتطورة مثل Themida وArmadillo، وبالطبع العشرات من أدوات التغليف غير المسماة التي يكتبها مؤلفو البرامج الضارة بالإضافة إلى تشفير الكود والبيانات، تسهل بشكل كبير (وفي بعض الحالات تجعله مستحيلًا تمامًا) الهندسة العكسية الثابتة لهذه العينات، مما يجعل حياة محللي البرامج الضارة معقدة. في هذه الحالة، يمكن لتتبع استدعاءات API أن يقلل بشكل كبير من الوقت المطلوب لفهم النية الضارة الفعلية ويكشف عن الكثير من التفاصيل التقنية حول الكود الضار المحمي.

في حين تم تنفيذ التقنية التقليدية لـ API-hooking بنجاح في عدة حلول، إلا أن هذا النهج تمت دراسته جيدًا من قبل مؤلفي البرامج الضارة ويمكن اكتشافه و/أو تجاوزه بسهولة. علاوة على ذلك، يتم توزيع هذه الأدوات كتطبيقات واجهة مستخدم رسومية مستقلة وثقيلة (كمنتجات مملوكة) والتي غالبًا ما يصعب دمجها في سير عمل تحليل البرامج الضارة الحالي.

إذا نظرنا إلى عالم لينكس، هناك أداة رائعة تسمى ltrace. باستخدام أمر bash واحد، يمكننا بسهولة الحصول على التتبع الكامل لاستدعاءات API لملف تنفيذي معين.

لماذا لا نملك مثل هذه الأداة (مثل ltrace في لينكس) لنظام ويندوز تكون أيضًا شفافة تجاه تقنيات مكافحة البحث التي يستخدمها البرامج الضارة الحديثة؟

اتضح أن هناك تقنية يمكن أن تساعدنا في الحصول على مثل هذه الأداة لنظام ويندوز وتتبع استدعاءات API بشفافية تجاه البرنامج المنفذ. تسمى هذه التقنية التعليمات الثنائية الديناميكية (Dynamic Binary Instrumentation) أو DBI. DBI هي تقنية لتحليل سلوك تطبيق ثنائي في وقت التشغيل من خلال حقن كود التجهيز.

ومع ذلك، فإن تطبيق DBI لتحليل البرامج الضارة محدود بشكل غير مستحق بأتمتة فك التغليف والعديد من البراهين على المفهوم لتتبع التعليمات والكتل الأساسية واستدعاءات الدوال. على حد علمنا، drltrace هي أول أداة لتتبع استدعاءات API تعتمد على DBI يمكن استخدامها عمليًا لتحليل البرامج الضارة. قدمنا عدة أمثلة لتحليل البرامج الضارة في ويكي الخاصة بنا حيث وصفنا كيف سمح drltrace بالكشف في بضع دقائق عن الكثير من التفاصيل التقنية الداخلية حول عينات ضارة معقدة دون حتى بدء IDA أو مصحح الأخطاء.

لماذا Drltrace رائع؟

  • سريع بما يكفي لإجراء تحليل للعينات الضارة دون أن يتم اكتشافه بواسطة تقنيات مكافحة البحث القائمة على الوقت.
  • يدعم كل من x86 و x64 (ARM في المستقبل).
  • يدعم كلاً من ويندوز ولينكس (macOS في المستقبل).
  • يدعم الكود ذاتي التعديل.
  • يدعم جميع أنواع الربط المكتبي (الثابت والديناميكي).
  • غير قابل للاكتشاف بواسطة أساليب مكافحة البحث القياسية (مكافحة الربط، مكافحة التصحيح، ومكافحة المحاكاة).
  • يمكن للمستخدم بسهولة إضافة نموذج دالة جديد لإخبار drltrace بكيفية طباعة المزيد من التفاصيل حول استدعاءات API غير المعروفة سابقًا (حتى بالنسبة لملفات DLL غير النظامية). يتم استخدام ملف تكوين خارجي.
  • سهل الاستخدام والتعديل لأغراضك الخاصة (لا توجد متطلبات حزمة إضافية، ولا واجهة مستخدم رسومية ثقيلة).
  • مفتوح المصدر، الكود واضح وموثق جيدًا. يمكنك بحرية بناء واستخدام الحل المتقدم الخاص بك فوق drltrace.

خيارات سطر الأوامر

root@kitploit:~
 -logdir              [     .]  Log directory to print library call data
 -only_from_app       [ false]  Reports only library calls from the app
 -follow_children     [  true]  Trace child processes
 -print_ret_addr      [ false]  Print library call's return address
 -num_unknown_args    [     2]  Number of unknown libcall args to print
 -num_max_args        [     6]  Maximum number of arguments to print
 -default_config      [  true]  Use default config file.
 -config              [    ""]  The path to custom config file.
 -filter              [filter.config]  The path of the whitelist/blacklist file.
 -ignore_underscore   [ false]  Ignores library routine names starting with "_".
 -help                [ false]  Print this message.
 -version             [ false]  Print version number.
 -verbose             [     1]  Change verbosity.
 -use_config          [  true]  Use config file
 -grepable            [ false]  Grepable output

صيغة ملف التكوين

يدعم Drltrace ملفات التكوين الخارجية حيث يمكن للمستخدم وصف كيفية طباعة drltrace للوسائط لاستدعاءات API معينة.

root@kitploit:~
HANDLE|CreateRemoteThread|HANDLE|SECURITY_ATTRIBUTES*|size_t|THREAD_START_ROUTINE*|VOID*|DWORD|__out DWORD*

يجب فصل كل وسيطة دالة بواسطة |. الوسيطة الأولى هي نوع الإرجاع، والثانية هي اسم الدالة نفسها، والباقي هي وسائط الدالة. يتم استخدام الرمز __out لتمييز وسائط الإخراج و ___inout لتمييز وسائط الإدخال+الإخراج.

أمثلة تحليل البرامج الضارة

يمكنك العثور على أمثلة لكيفية استخدام drltrace لتحليل البرامج الضارة المعقدة على صفحة الويكي الخاصة بنا.

تصور السجل

لتسهيل العمل مع ملفات السجل، قمنا بتنفيذ سكريبت يسمى api_calls_viz.py يمكن استخدامه لإنشاء صور RGB حيث يمثل كل لون بكسل استدعاء API فريدًا. على سبيل المثال، تمثل الصورة أدناه ملف سجل برنامج الفدية WannaCry.

صورة استدعاءات API

المناطق الخضراء الكبيرة في الصورة تمثل استدعاءات API (wcscmp/wcsicmp) التي تُستخدم لتحديد الملفات ذات الامتدادات المثيرة للاهتمام (مثل docx, xls, py) لتشفيرها. المناطق الأرجوانية تمثل استدعاءات API (FindFirstFile/FindNextFile/CryptEncrypt) التي تُستخدم لتعداد وتشفير الملفات والمجلدات على القرص.

يمكن للسكريبت أيضًا إنشاء تمثيل HTML للصورة RGB الناتجة حيث يمكن اختيار كل عنصر لعرض اسم استدعاء API.

صورة استدعاءات API

ملف HTML خام.

راجع دليل api_calls_viz لمزيد من التفاصيل.

كيفية البناء

يمكنك العثور على دليل مفصل في صفحة الويكي هذه.

أنظمة التشغيل المدعومة

ويندوز، لينكس (macOS في المستقبل).

معماريات المعالجات المدعومة

x86، x64 (ARM على القائمة).

اللغات

مكتبة C و C++ القياسية (ونصوص معالجة السجلات المكتوبة بلغة Python).

التفاصيل التقنية

قررنا تنفيذ أداة تتبع استدعاءات API الخاصة بنا فوق إطار العمل الديناميكي للتعليمات الثنائية DynamoRIO. يطلب Drltrace من DynamoRIO إجراء تجهيز لاستدعاء LoadLibrary ليكون قادرًا على التعامل مع المكتبات الجديدة التي يتم تحميلها بواسطة العملية المستهدفة. عندما تحاول العملية تحميل مكتبة جديدة، يقوم DynamoRIO بإعادة توجيه تدفق التحكم إلى drltracelib.dll. بدوره، يقوم drltrace بتعداد الدوال المصدرة في ملف DLL المحمل حديثًا ويسجل رد اتصال خاصًا لكل منها. وبالتالي، إذا تم استدعاء دالة مصدرة بواسطة برنامج ضار، فسيتم تنفيذ رد اتصال drltrace قبل هذه الدالة وستتمكن الأداة من تسجيل جميع المعلومات المطلوبة مثل اسم الدالة والوسائط. يمكن تسجيل رد اتصال آخر بعد الدالة لحفظ نتائج التنفيذ.

لماذا ليس Intel Pin؟ قررنا استخدام DynamoRIO بدافع الأسباب التالية:

  1. الكود المصدري لـ DynamoRIO متاح على github.com وموزع تحت رخصة BSD بينما Intel Pin هو برنامج مملوك.
  2. أحد المتطلبات الأساسية لـ DynamoRIO في وقت التطوير كان الشفافية تجاه الملف التنفيذي الذي يتم تجهيزه.
  3. يستخدم DynamoRIO تقنية تجهيز مختلفة تعتمد على تحويل الكود بينما يستخدم Intel PIN نقاط انطلاق خاصة ليست شفافة تجاه الملف التنفيذي الذي يتم تحليله وقد يتم اكتشافها بواسطة البرامج الضارة.

العمل المستقبلي

  1. على الرغم من أن drltrace غير قابل للاكتشاف بواسطة حيل مكافحة البحث القياسية، إلا أن محرك DBI نفسه يمكن اكتشافه كما هو موضح في هذه الأعمال 1، 2. جعل DynamoRIO مقاومًا لهذه الحيل هو مسار مهم للعمل المستقبلي.
  2. حاليًا، يطبع drltrace سجلاً خامًا ويوفر العديد من النصوص لطباعة السلاسل واستدعاءات المكتبات المهمة. في المستقبل، نخطط لإضافة استدلالات (ربما عن طريق تطبيق قواعد YARA) لتكون قادرة على اختيار السلوك الإرشادي من البرامج الضارة تلقائيًا.
  3. حاليًا، يدعم DynamoRIO إصدار تجريبي لمعمارية ARM، ويلزم اختبار ونقل drltrace إلى ARM.
  4. لا يدعم drltrace الحالة التي يقوم فيها البرنامج الضار بحقن الكود في عملية بعيدة. في مثل هذه الحالات، من الممكن إخبار DynamoRIO بحقن drltrace في جميع العمليات المنشأة حديثًا (خيار -syswide_on لـ drrun.exe). ومع ذلك، في المستقبل، من الضروري تنفيذ دعم خاص في drltrace لمثل هذه الحالات.

يحتوي متتبع المشكلات الخاص بنا على مزيد من التفاصيل حول مستقبل drltrace.

الشكر والتقدير

Maksim Shudrak https://github.com/mxmssh

Derek Bruening https://github.com/derekbruening

Joe Testa https://github.com/jtesta

تنزيل الأداة