Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ctftool — أداة استكشاف تفاعلية لـ CTF | Kitploit
أدوات/GitHubGitHub/taviso/ctftool
أطر الاستغلالالاختبار العشوائياختبار الاختراقالتعلم والتعليماستغلال الملفات الثنائية
GitHubtaviso/ctftool

ctftool

أداة استكشاف تفاعلية لـ CTF

عرض المستودع
1.7k26325منذ 5 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

CTFTOOL

هل تريد فقط اختبار استغلال SYSTEM؟ انقر هنا.

Video of Exploit

أداة تفاعلية لاستكشاف CTF

هذه ctftool، أداة سطر أوامر تفاعلية لتجربة CTF، وهو بروتوكول غير معروف يُستخدم في ويندوز لتنفيذ خدمات النص. قد يكون مفيدًا لدراسة دواخل ويندوز، وتصحيح المشكلات المعقدة مع معالجات إدخال النص وتحليل أمان ويندوز.

من الممكن كتابة نصوص برمجية بسيطة باستخدام ctftool لأتمتة التفاعل مع عملاء أو خوادم CTF، أو إجراء اختبارات تشويش بسيطة.

خلفية

هناك منشور مدونة يرافق إصدار هذه الأداة متاح هنا.

https://googleprojectzero.blogspot.com/2019/08/down-rabbit-hole.html

الاستخدام

تم اختبار ctftool على ويندوز 7 وويندوز 8 وويندوز 10. كلا الإصدارين 32 بت و x64 مدعومان، ولكن تم اختبار x64 بشكل أكثر شمولاً.

هناك تعليمات عبر الإنترنت لمعظم الأوامر، ببساطة اكتب help لرؤية قائمة الأوامر، و help <command> لرؤية تعليمات مفصلة لأمر معين.

$ ./ctftool.exe
An interactive ctf exploration tool by @taviso.
Type "help" for available commands.
Most commands require a connection, see "help connect".
ctf> help
Type `help <command>` for help with a specific command.
Any line beginning with # is considered a comment.

help            - List available commands.
exit            - Exit the shell.
connect         - Connect to CTF ALPC Port.
info            - Query server informaiton.
scan            - Enumerate connected clients.
callstub        - Ask a client to invoke a function.
createstub      - Ask a client to instantiate CLSID.
hijack          - Attempt to hijack an ALPC server path.
sendinput       - Send keystrokes to thread.
setarg          - Marshal a parameter.
getarg          - Unmarshal a parameter.
wait            - Wait for a process and set it as the default thread.
thread          - Set the default thread.
sleep           - Sleep for specified milliseconds.
forget          - Forget all known stubs.
stack           - Print the last leaked stack ptr.
marshal         - Send command with marshalled parameters.
proxy           - Send command with proxy parameters.
call            - Send command without appended data.
window          - Create and register a message window.
patch           - Patch a marshalled parameter.
module          - Print the base address of a module.
module64        - Print the base address of a 64bit module.
editarg         - Change the type of a marshalled parameter.
symbol          - Lookup a symbol offset from ImageBase.
set             - Change or dump various ctftool parameters.
show            - Show the value of special variables you can use.
lock            - Lock the workstation, switch to Winlogon desktop.
repeat          - Repeat a command multiple times.
run             - Run a command.
script          - Source a script file.
print           - Print a string.
consent         - Invoke the UAC consent dialog.
reg             - Lookup a DWORD in the registry.
gadget          - Find the offset of a pattern in a file.
section         - Lookup property of PE section.
Most commands require a connection, see "help connect".
ctf>

أول شيء سترغب في فعله هو الاتصال بجلسة، ومعرفة العملاء المتصلين.

ctf> connect
The ctf server port is located at \BaseNamedObjects\msctf.serverDefault1
NtAlpcConnectPort("\BaseNamedObjects\msctf.serverDefault1") => 0
Connected to CTF server@\BaseNamedObjects\msctf.serverDefault1, Handle 00000264
ctf> scan
Client 0, Tid 3400 (Flags 0x08, Hwnd 00000D48, Pid 8696, explorer.exe)
Client 1, Tid 7692 (Flags 0x08, Hwnd 00001E0C, Pid 8696, explorer.exe)
Client 2, Tid 9424 (Flags 0x0c, Hwnd 000024D0, Pid 9344, SearchUI.exe)
Client 3, Tid 12068 (Flags 0x08, Hwnd 00002F24, Pid 12156, PROCEXP64.exe)
Client 4, Tid 9740 (Flags 0000, Hwnd 0000260C, Pid 3840, ctfmon.exe)

يمكنك بعد ذلك التجربة بإرسال واستقبال الأوامر إلى الخادم، أو أي من العملاء المتصلين.

البناء

إذا كنت لا ترغب في بنائه بنفسك، تحقق من علامة التبويب الإصدارات

استخدمت GNU make و Visual Studio 2019 لتطوير ctftool. يتم دعم الإصدارات 32 بت فقط، لأن هذا يسمح للأداة بالعمل على ويندوز x86 و x64.

إذا تم تثبيت جميع التبعيات، فإن مجرد كتابة make في موجه أوامر المطور يجب أن يكون كافياً.

أستخدم متغير "Build Tools" من Visual Studio، والمكونات الوحيدة التي لدي المحددة هي MSVC و MSBuild و CMake و SDK.

يستخدم هذا المشروع وحدات فرعية لبعض التبعيات، تأكد من أنك تستخدم أمرًا مثل هذا لجلب جميع التعليمات البرمجية المطلوبة.

git submodule update --init --recursive

الاستغلال

الأمثلة تعمل فقط على ويندوز 10 x64. جميع المنصات والإصدارات منذ ويندوز XP متأثرة، ولكن لا يوجد إثبات مفهوم مطبق حاليًا.

تم استخدام هذه الأداة لاكتشاف العديد من مشاكل الأمان الحرجة مع بروتوكول CTF التي كانت موجودة منذ عقود.

إذا كنت تريد فقط اختبار استغلال على ويندوز 10 x64 1903، قم بتشغيل أو النقر المزدوج على ctftool.exe وأدخل هذا الأمر:

An interactive ctf exploration tool by @taviso.
Type "help" for available commands.
Most commands require a connection, see "help connect".
ctf> script .\scripts\ctf-consent-system.ctf

سينتظر ظهور مربع حوار UAC، ويخترقه ويبدأ شل.

في الواقع، ينقسم كود الاستغلال إلى مرحلتين يمكنك استخدامهما بشكل مستقل. على سبيل المثال، قد ترغب في اختراق عملية تابعة لمستخدم في جلسة مختلفة باستخدام المعاملات الاختيارية لـ connect.

يمكن اختراق معظم عملاء CTF، حيث يجبر النواة التطبيقات التي ترسم النوافذ على تحميل المكتبة الضعيفة.

ببساطة اتصل بجلسة، اختر عميلاً لاختراقه (استخدم أوامر scan و thread، أو فقط wait)، ثم:

ctf> script .\scripts\ctf-exploit-common-win10.ctf

ملاحظات الاستغلال

بناء سلسلة قفز CFG تعمل على أغلب عملاء CTF كان صعبًا جدًا. هناك مكونان أساسيان للاستغلال النهائي، تعسفي بدائي الكتابة ثم إعداد مسجلاتنا لاستدعاء LoadLibrary().

يمكنك استخدام dumpbin /headers /loadconfig لتفريغ أهداف الفرع المسموح بها.

الكتابة التعسفية

أحتاج إلى أداة كتابة تعسفية لإنشاء كائنات في موقع يمكن توقعه. أفضل أداة قابلة للاستخدام تمكنت من العثور عليها كانت تناقص dword تعسفي في msvcrt!_init_time.

هذا يعني أنه بدلاً من مجرد تعيين القيم التي نريدها، علينا الاستمرار في التناقص حتى يصل LSB إلى القيمة التي نريدها. هذا عمل كثير، لكننا لا نضطر أبدًا للقيام بأكثر من (2^8 - 1) * len عملية تناقص.

Decrement Write

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

Object Layout

كانت هناك (بالطبع) العديد من أدوات الكتابة التعسفية، المشكلة كانت في استعادة السيطرة على التنفيذ بعد الكتابة. أثبت هذا أنه صعب جدًا، وهذا هو السبب الذي جعلني عالقًا مع تناقص dword بدلاً من شيء أبسط.

MSCTF تلتقط جميع الاستثناءات، لذا كان التحدي هو إيجاد كتابة تعسفية لم تفسد المكدس بحيث ينجو SEH، أو تعطلت بسرعة كبيرة بدون إحداث أي ضرر.

كانت أداة msvcrt!_init_time أفضل ما وجدته، خلال بضع تعليمات تقوم بإلغاء الإشارة إلى NULL دون إفساد المزيد من الذاكرة. هذا يعني يمكننا تكرارها إلى ما لا نهاية.

إعادة توجيه التنفيذ

وجدت أداتين مفيدتين لضبط المسجلات، الأولى كانت:

combase!CStdProxyBuffer_CF_AddRef:
      mov     rcx,qword ptr [rcx-38h]
      mov     rax,qword ptr [rcx]    
      mov     rax,qword ptr [rax+8]  
      jmp     qword ptr [combase!__guard_dispatch_icall_fptr]

والثانية كانت:

MSCTF!CCompartmentEventSink::OnChange:
      mov     rax,qword ptr [rcx+30h]
      mov     rcx,qword ptr [rcx+38h]
      jmp     qword ptr [MSCTF!_guard_dispatch_icall_fptr]
تنزيل الأداة