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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
refinery — مجموعة أدوات سطر أوامر قابلة للتركيب لفرز البرمجيات الخبيثة وتحليل الملفات الثنائية: فك الترميز، وفك التشفير، والاستخراج، واستخلاص المؤشرات من الملفات الخبيثة وشفرة شيل (shellcode). | Kitploit
أدوات/GitHubGitHub/binref/refinery
الهندسة العكسيةالتحقيق الجنائي الرقميتحليل البرمجيات الخبيثةالتشفيرالأدوات والمكوناتتحليل الملفات الثنائيةاستخبارات التهديدات
GitHubbinref/refinery

refinery

مجموعة أدوات سطر أوامر قابلة للتركيب لفرز البرمجيات الخبيثة وتحليل الملفات الثنائية: فك الترميز، وفك التشفير، والاستخراج، واستخلاص المؤشرات من الملفات الخبيثة وشفرة شيل (shellcode).

عرض المستودع
86780منذ 13 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Binary Refinery

Documentation Test Status Code Coverage PyPI Version

root@kitploit:~
  __     __  High Octane Triage Analysis          __
  ||    _||______ __       __________     _____   ||
  ||    \||___   \__| ____/   ______/___ / ____\  ||
==||=====||  | __/  |/    \  /==|  / __ \   __\===]|
  '======||  |   \  |   |  \_  _| \  ___/|  |     ||
         ||____  /__|___|__/  / |  \____]|  |     ||
=========''====\/=========/  /==|__|=====|__|======'
                         \  /
                          \/

Binary Refinery™ هي مجموعة من نصوص Python تنفّذ تحويلات على البيانات الثنائية مثل الضغط والتشفير. سنشير إليها غالبًا باسم refinery، وهو أيضًا اسم الحزمة المقابلة. صُممت النصوص لقراءة المدخلات من stdin وكتابة المخرجات إلى stdout حصريًا. الفلسفة الرئيسية هي أن كل نص يجب أن يكون وحدة بمعنى أنه يؤدي مهمة واحدة، ويمكن دمج الوحدات الفردية في خطوط أنابيب عبر عامل الأنابيب | في سطر الأوامر لتنفيذ مهام أكثر تعقيدًا. التركيز الأساسي للمشروع هو فرز وتحليل البرمجيات الخبيثة (malware triage)، وهو محاولة لتنفيذ شيء مشابه لـ CyberChef على سطر الأوامر.

النسخة المختصرة

أنشئ بيئة افتراضية لـ Python. ستحتاج إلى Python 3.10 أو أحدث. ثبّت refinery كما يلي:

root@kitploit:~
python -m pip install -U pip
python -m pip install -U binary-refinery[extended]

شغّل الوحدات باستخدام -h لتعلّم طريقة عملها، وابحث في docs أو استخدم الأمر binref للعثور عليها. شاهد فيديو حديث إذا أردت رؤيتها أثناء العمل. ولكن أيضًا، اقرأ بقية ملف readme هذا.

جدول الإصدارات

لا يوجد جدول زمني للإصدارات، لكن الإصدارات تصدر بشكل متكرر جدًا ويُنصح بالتحديث دوريًا. إصلاحات الأخطاء غير موثقة خارج GIT، ولكن جميع التغييرات الأخرى (أي الميزات الجديدة) موثقة في سجل التغييرات. تابعني على Mastodon للحصول على تحديثات حول الإصدارات المؤثرة بشكل خاص.

التوثيق

النص المساعد الذي يظهر عند تنفيذ وحدة باستخدام المفتاح -h أو --help هو توثيقها الرئيسي. يحتوي التوثيق المولّد تلقائيًا على تجميع لهذا المخرجات لكل وحدة على المستوى الأعلى، ولكنه يحتوي أيضًا على مواصفات المفاهيم الأساسية الثلاثة للأداة: التأطير، وسائط multibin، و متغيرات meta. البحث النصي الكامل في الوصف والنص المساعد لكل وحدة متاح أيضًا من سطر الأوامر، عبر أمر binref الموفّر. إدراكًا لحقيقة أن التوثيق المرجعي قد يكون جافًا بعض الشيء، هناك جهد مستمر لإنتاج سلسلة من الدروس التعليمية؛ أنصح بشدة بالاطلاع عليها. علاوة على ذلك، أجمع موارد إضافية (بما في ذلك بعضها من أطراف ثالثة) أدناه.

[!NOTE]
Refinery لا تزال في مرحلة ألفا وقد تتغير الواجهة أحيانًا، أي يمكن إزالة الوحدات والمعاملات أو إعادة تسميتها. لذلك، قد يحدث أن أوامر محددة من مقاطع فيديو أو مشاركات مدونات قديمة لم تعد تعمل.

  • [2021/08] كان OALabs لطيفًا بما يكفي للسماح لي بعرض الأداة في فيديو مميز. في الفيديو، أعمل بشكل أساسي من خلال محتويات الدليل الأول.
  • [2021/11] كتب Johannes Bader منشور مدونة مذهلاً حول تحليل malspam باستخدام binary refinery.
  • [2024/03] أنتج Malware Analysis For Hedgehogs فيديو حول فك تغليف عينة XWorm باستخدام refinery.
  • [2024/11] استضافني the CyberYeti في بث مباشر لعرض refinery.
  • [2025/06] كنت في بث مباشر مرة أخرى مع the CyberYeti، وهذه المرة كانت أكثر عشوائية. جميع الأخطاء التي تراها هنا تم إصلاحها. 😉

تشمل العروض التوضيحية مرة أخرى عينات من قسم الأمثلة أدناه ومن الدروس التعليمية.

الترخيص

Binary Refinery هي (c) 2019 Jesko Hüttenhain، وتُنشر بموجب رخصة BSD بثلاثة بنود. يحتوي هذا المستودع أيضًا على نسخة من النص الكامل للترخيص. إذا أردت القيام بشيء غير مشمول بهذا الترخيص، فلا تتردد في التواصل مع المؤلف.

تحذيرات ونصائح

تتطلب refinery Python 3.10 على الأقل. يُنصح بتثبيتها في بيئة افتراضية خاصة بها: يمكن للحزمة أن تجلب الكثير من التبعيات، وتثبيتها في Python العام لديك قد يكون عرضة لتعارضات الإصدارات. أيضًا، نظرًا لأن الأداة تقدم عددًا كبيرًا من الأوامر الجديدة، فهناك احتمال كبير أن يتعارض بعضها على أنظمة معينة، وإبقاؤها في بيئة افتراضية منفصلة خاصة بها هو إحدى الطرق لمنع ذلك.

إذا كنت تريد أن تكون جميع أوامر refinery متاحة في الصدفة الخاصة بك في جميع الأوقات (أي دون الحاجة إلى التبديل إلى بيئة افتراضية مخصصة)، فإن لديك أيضًا خيار اختيار بادئة للتثبيت، سيتم وضعها أمام كل غلاف أمر يتم تثبيته. على سبيل المثال، إذا اخترت r. كبادئة، فسيتم تثبيت وحدة emit كأمر r.emit. من الفوائد الإضافية أنه يمكنك كتابة r. والضغط على Tab مرتين للحصول على قائمة بجميع أوامر refinery المتاحة. لاحظ مع ذلك أنه لا يتم افتراض أي بادئة في التوثيق، وهو هدف تطويري لـ refinery ألا تتعارض على معظم الأنظمة. المؤلف لا يستخدم بادئة ويوفر هذا الخيار كأمان إضافي.

التثبيت

أبسط طريقة لتثبيت وتحديث refinery هي عبر pip. تأكد أولاً من تشغيل أحدث إصدار:

root@kitploit:~
python -m pip install -U pip

ثم قم فقط بتثبيت حزمة refinery:

root@kitploit:~
pip install -U binary-refinery

إذا كنت تريد اختيار بادئة لجميع الوحدات، فيمكنك تحديدها عبر متغير البيئة REFINERY_PREFIX. على سبيل المثال، سيقوم الأمر التالي بتثبيت refinery في بيئة Python الحالية ببادئة r. على Linux:

root@kitploit:~
REFINERY_PREFIX=r. pip install -U binary-refinery

على Windows، ستحتاج إلى تشغيل الأوامر التالية:

root@kitploit:~
set REFINERY_PREFIX=r.
pip install -U binary-refinery

تحديد البادئة الخاصة ! سيكون له تأثير عدم إنشاء أي أوامر صدفة على الإطلاق، وسيتم تثبيت binary refinery كمكتبة فقط. إذا كنت تريد تثبيت HEAD الحالي لـ refinery، يمكنك تكرار جميع الخطوات أعلاه، مع تحديد هذا المستودع بدلاً من حزمة pip. على سبيل المثال، سيقوم التالي بتثبيت أحدث commit لـ refinery:

root@kitploit:~
pip install -U git+git://github.com/binref/refinery.git

أخيرًا، إذا كنت تستخدم REMnux، فيمكنك استخدام حاوية docker الخاصة بـ refinery.

تثبيت مهارة Claude

إذا كنت تريد تعليم claude المحلي لتحليل البرمجيات الخبيثة استخدام binary refinery، فاطلع على مهارة Binary Refinery.

دعم الصدفات

فيما يلي ملخص لمدى جودة دعم بيئات الصدفات المختلفة حاليًا:

إذا كنت تستخدم صدفة مختلفة ولديك بعض الملاحظات لمشاركتها، فيرجى إخباري!

التبعيات المعيارية

هناك بعض الوحدات الظرفية جدًا التي تعتمد على تبعيات خارجية (كبيرة أحيانًا). على سبيل المثال، stego هي وحدة تتطلب مكتبة تحليل الصور Pillow. لا يتم تثبيت بعض المكتبات افتراضيًا لإبقاء وقت تثبيت refinery عند مستوى معقول للمستخدمين الجدد. ستخبرك الوحدات المقابلة بما يجب فعله عندما تكون تبعيتها مفقودة:

root@kitploit:~
$ emit config.png | stego RG
(13:37:00) failure in stego: dependency Pillow is missing; run pip install Pillow

يمكنك بعد ذلك تثبيت هذه التبعيات المفقودة يدويًا. إذا كنت لا تريد أن تزعجك التبعيات المفقودة ولا تمانع في تثبيت طويل لـ refinery، يمكنك تثبيت الحزمة كما يلي:

root@kitploit:~
pip install -U binary-refinery[all]

والذي سيثبّت جميع التبعيات بالإضافة إلى تلك المطلوبة. بتعبير أدق، تتوفر الفئات الإضافية التالية:

الاسمالتبعيات المشمولة
defaultاختيار موصى به من التبعيات المعقولة، حسب اختيار المؤلف
extendedاختيار موسع، يستثني فقط الأكثر غموضًا
allجميع التبعيات لجميع وحدات refinery

هذه مدرجة هنا بترتيب تصاعدي، أي أن extended سيثبّت كل ما سيثبته default.

الحافة المتطورة

بدلاً من ذلك، يمكنك استنساخ هذا المستودع واستخدام النصوص update.sh (على Linux) أو update.ps1 (على Windows) لتثبيت حزمة refinery في بيئة افتراضية محلية. عملية التثبيت والتحديث لهذه الطريقة هي ببساطة تشغيل النص:

  • يسحب المستودع،
  • ينشّط البيئة الافتراضية،
  • يلغي تثبيت binary-refinery،
  • ثم يثبّت binary-refinery[all].

توليد التوثيق

يمكنك أيضًا توليد جميع التوثيق محليًا. لفعل ذلك، نفّذ النص run-pdoc3.py. سيؤدي هذا إلى الفشل ما لم تشغّله من بيئة تم فيها تثبيت binary refinery كحزمة Python. لتشغيله، عليك تحديد مسار بيئة افتراضية كوسيط سطر الأوامر الأول لـ run-pdoc3.py، مما سيجعل النص يعيد تشغيل نفسه باستخدام مفسّر تلك البيئة. إذا كنت متأكدًا من رغبتك في تشغيل run-pdoc3.py، فإن هناك مفتاح سطر أوامر لإجبار النص على العمل مع مفسّر Python الافتراضي الحالي. يقوم النص بتثبيت حزمة pdoc3 ويستخدمها لتوليد توثيق HTML لحزمة refinery. يمكن العثور على التوثيق بعد ذلك في المجلد الفرعي html بجانب ملف readme هذا مباشرة.

الدروس التعليمية هي دفاتر Jupyter يمكنك ببساطة تشغيلها وتنفيذها إذا كانت بيئتك الافتراضية تحتوي على Jupyter مثبتًا. تجدر الإشارة إلى أن Visual Studio Code يوفر دعمًا مريحًا جدًا لـ Jupyter.

أمثلة

أمثلة أساسية

الوحدتان emit و dump تلعبان دورًا خاصًا: الأولى لإخراج البيانات بينما الثانية لتفريغ البيانات إلى الحافظة أو إلى القرص. على سبيل المثال، فكّر في خط الأنابيب التالي:

root@kitploit:~
emit M7EwMzVzBkI3IwNTczM3cyMg2wQA | b64 | zl | hex 

هنا، نصدر السلسلة M7EwMzVzBkI3IwNTczM3cyMg2wQA، نفك ترميز base64 باستخدام b64، نفك ضغط zlib للنتيجة باستخدام zl، وأخيرًا نفك ترميز hex للبيانات المفكوك ضغطها. كل وحدة تنفذ عملية "فك الترميز" لتحويل معين بشكل افتراضي، لكن بعضها ينفذ أيضًا العملية العكسية. إذا فعلت ذلك، يتم دائمًا عبر توفير مفتاح سطر الأوامر -R أو --reverse. يمكنك إنتاج سلسلة base64 أعلاه باستخدام الأمر التالي لأن hex و zl و b64 جميعها توفر العملية العكسية:

root@kitploit:~
emit "Hello World" | hex -R | zl -R | b64 -R

بالنظر إلى ملف packed.bin يحتوي على مخزن حمولة مشفر بـ base64، يستخرج خط الأنابيب التالي تلك الحمولة إلى payload.bin:

root@kitploit:~
emit packed.bin | carve -l -t1 b64 | b64 | dump payload.bin

يمكن استخدام وحدة carve لاقتطاع كتل من البيانات من مخزن الإدخال، في هذه الحالة تبحث عن بيانات مشفرة بـ base64، وتفرزها حسب الطول (-l) وتعيد أولها (-t1)، وهو ما يقتطع أكبر قطعة تشبه base64 من packed.bin. ثم يتم فك ترميز base64 للبيانات وتفريغها إلى الملف payload.bin.

وحدة pack ستلتقط جميع التعبيرات الرقمية من مخزن نصي وتحولها إلى تمثيلها الثنائي. مثال بسيط هو خط الأنابيب

root@kitploit:~
emit "0xBA 0xAD 0xC0 0xFF 0xEE" | pack | hex -R 

والذي سيخرج السلسلة BAADC0FFEE.

مختصر ومفيد

استخرج أكبر قطعة من البيانات المشفرة بـ base64 من BLOB وفك ترميزها:

root@kitploit:~
emit file.exe | carve -ds b64

اقتطع ملف ZIP من مخزن، واختر DLL منه، واعرض معلومات عنها:

root@kitploit:~
emit file.bin | carve-zip | xtzip file.dll | pemeta

اعرض أقسام ملف PE مع تجزئة SHA-256 المقابلة لها:

root@kitploit:~
emit file.exe | vsect [| sha256 -t | pf {} {path} ]]

اعرض بشكل متكرر جميع الملفات في الدليل الحالي مع تجزئة SHA-256 الخاصة بكل منها:

root@kitploit:~
ef "**" [| sha256 -t | pf {} {path} ]]

استخرج المؤشرات من جميع الملفات المذكورة بشكل متكرر داخل الدليل الحالي:

root@kitploit:~
ef "**" [| xtp -n6 ipv4 socket url email | dedup ]]

حوّل عنوان IP المرمّز 0xC0A80C2A بترتيب بايتات الشبكة إلى تنسيق قابل للقراءة:

root@kitploit:~
emit 0xC0A80C2A | pack -EB4 | pack -R [| sep . ]

نفّذ هجوم القوة العمياء أحادي البايت XOR وحاول استخراج حمولة ملف PE في كل تكرار:

root@kitploit:~
emit file.bin | rep 0x100 [| xor v:index | carve-pe -R | peek | dump {name} ]

أمثلة على إعدادات البرمجيات الخبيثة

استخرج خادم C2 لـ RemCos:

root@kitploit:~
emit c0019718c4d4538452affb97c70d16b7af3e4816d059010c277c4e579075c944 \
  | perc SETTINGS [| put keylen cut::1 | rc4 cut::keylen | xtp socket ]

استخرج إعدادات AgentTesla:

root@kitploit:~
emit fb47a566911905d37bdb464a08ca66b9078f18f10411ce019e9d5ab747571b40 \
  | dnfields [| aes x::32 --iv x::16 -T ]] \
  | rex -M "((??email))\n(.*)\n(.*)\n:Zone" addr={1} pass={2} host={3}

استخرج حمولة PowerShell من برنامج إفلات XLS خبيث يحتوي على وحدات ماكرو:

root@kitploit:~
emit 81a1fca7a1fb97fe021a1f2cf0bf9011dd2e72a5864aad674f8fea4ef009417b [ \
  | xlxtr 9.5:11.5 15.15 12.5:14.5 [ \
  | scope -n 3 | chop -t 5 [| sorted -a | snip 2: | sep ] \
  | pack 10 | alu --dec -sN B-S ]] \
  | dump payload.cmd

واحصل على النطاقات للمرحلة التالية:

root@kitploit:~
emit payload.cmd | cmdarg | ps1 | xtp -f domain

استخرج إعدادات عينات HawkEye المفكوك تغليفها:

root@kitploit:~
emit ee790d6f09c2292d457cbe92729937e06b3e21eb6b212bf2e32386ba7c2ff22c \
  | put cfg perc[RCDATA]:c:: [\
  | xtp guid | pbkdf2 48 rep[8]:h:00 | cca eat:cfg | aes -Q x::32 --iv x::16 ] \
  | dnds

Warzone RAT:

root@kitploit:~
emit 4537fab9de768a668ab4e72ae2cce3169b7af2dd36a1723ddab09c04d31d61a5 \
  | vsect .bss | struct I{key:{}}{} [\
  | rc4 eat:key | struct I{host:{}}{port:H} {host:u16}:{port} ]

استخرج الحمولة من محمّل shellcode واقتطع عنوان c2 الخاص به:

root@kitploit:~
emit 58ba30052d249805caae0107a0e2a5a3cb85f3000ba5479fafb7767e2a5a78f3 \
  | rex yara:50607080.* [| struct LL{s:L}{} | xor -B2 rand[s]:msvc | xtp url ]

احصل على وحدات ماكرو VBA الخبيثة من زمن منسي عندما كانت هذه هي الطريقة المتبعة:

root@kitploit:~
emit ee103f8d64cd8fa884ff6a041db2f7aa403c502f54e26337c606044c2f205394 \
  | vbamc

ثم استخرج حمولة برنامج التنزيل الخبيث:

root@kitploit:~
emit ee103f8d64cd8fa884ff6a041db2f7aa403c502f54e26337c606044c2f205394 \
  | doctxt | repl drp:c: | carve -s b64 | rev | b64 | rev | ppjscript

استخرج روابط الحمولة من مستند PDF خبيث:

root@kitploit:~
emit 066aec7b106f669e587b10b3e3c6745f11f1c116f7728002f30c072bd42d6253 \
  | xt JS | csd string | csd string | url | xtp url [| urlfix ]]

استخرج رابط الحمولة من مستند استغلال محرر المعادلات:

root@kitploit:~
emit e850f3849ea82980cf23844ad3caadf73856b2d5b0c4179847d82ce4016e80ee \
  | officecrypt | xt oleObject | xt native | rex Y:E9[] | vstack -a=x32 -w=200 | xtp

تشفير AES

افترض أن data هو ملف تم تشفيره باستخدام AES بمفتاح 256-بت في وضع CBC. تم اشتقاق المفتاح من عبارة المرور السرية swordfish باستخدام روتين اشتقاق المفاتيح PBKDF2 مع الملح s4lty. يتم وضع IV في مقدمة المخزن كأول 16 بايت. يمكن فك تشفيره بخط الأنابيب التالي:

root@kitploit:~
emit data | aes --mode cbc --iv cut::16 pbkdf2[32,s4lty]:swordfish

هنا، كل من cut:0:16 و pbkdf2[32,s4lty]:swordfish هما وسيطان متعدد الثنائيات يستخدمان معالجًا خاصًا. في هذه الحالة، يستخرج cut:0:16 الشريحة 0:16 (أي أول 16 بايت) من بيانات الإدخال - بعد تطبيق معالج الوسائط المتعددة هذا، تتم إزالة أول 16 بايت من بيانات الإدخال ويتم تعيين الوسيط iv إلى هذه الـ 16 بايت بالضبط. الوسيط الأخير يحدد مفتاح التشفير ذا الـ 32 بايت: من ناحية أخرى، يوجه المعالج pbkdf2[32,s4lty] refinery إلى إنشاء مثيل لوحدة pbkdf2 كما لو كانت قد أعطيت معاملات سطر الأوامر 32 و s4lty بهذا الترتيب ومعالجة سلسلة البايتات swordfish بهذه الوحدة. كتجربة بسيطة، سيقوم خط الأنابيب التالي بتشفير وفك تشفير نص تجريبي:

root@kitploit:~
emit "Once upon a time, at the foot of a great mountain ..." ^
    | aes pbkdf2[32,s4lty]:swordfish --iv md5:X -R | ccp md5:X ^
    | aes pbkdf2[32,s4lty]:swordfish --iv cut:0:16 
تنزيل الأداة
ShellPlatformStateComment
BashPosix🔵 جيديُستخدم من وقت لآخر من قبل المؤلف.
CMDWindows🔵 جيديُستخدم بكثرة من قبل المؤلف.
PowerShellWindows🟡 معقوليعمل فقط إذا كان إصدار PowerShell على الأقل 7.4.
ZshPosix🟠 مشكلات بسيطةبعد نقاش، يوجد إصلاح.
FishPosix🟠 مشكلات بسيطةانظر المشكلة #55 والنقاش #22.