
التهرب المتقدم من أنظمة EDR عبر انتحال قياسات الذكاء الاصطناعي عن بُعد وعزل WASM. مشروع Onyx هو خط أنابيب إثبات مفهوم (PoC) لفريق أحمر (Red Team)، مصمم لتوضيح تقنيات تهرب متقدمة ضد أنظمة EDR الحديثة. يبتعد عن التعتيم التقليدي القائم على التوقيعات نحو التمويه السلوكي والربط البيئي الصارم.

مراوغة متقدمة لأنظمة EDR عبر انتحال قياسات الذكاء الاصطناعي (AI Telemetry Spoofing) وعزل WASM. Project Onyx هو خط أنابيب Red Team (PoC) مصمم لعرض تقنيات مراوغة متقدمة ضد أنظمة EDR الحديثة. يبتعد عن أساليب الإخفاء التقليدية القائمة على التوقيعات نحو التمويه السلوكي والربط البيئي الصارم.
هذا المشروع هو بحث Red Team (إثبات مفهوم) يدرس خط أنابيب تنفيذ غير تقليدي متعدد الطبقات. تسلسل البنية المعمارية خمس تقنيات متميزة: تمويه قياسات الذكاء الاصطناعي، الربط البيئي المرتبط بالعتاد، إخفاء أوزان ONNX (steganography)، عزل WebAssembly في الذاكرة، وقناة Dead-Drop C2 عبر تحديثات النموذج التنزيلية --> في سلسلة توصيل وظيفية واحدة.
لا يدّعي Project Onyx تجاوزًا عمليًا لأنظمة EDR الإنتاجية. إنه مخطط معماري: كل مكوّن منفَّذ وعامل كجزء من السلسلة، لكن كل طبقة تتطلب بحثًا مخصصًا لتصبح ذات معنى ضد الدفاعات الواقعية.Project Onyx من الأفضل فهمه كنقطة انطلاق منظمة لهذا النوع من الاستكشاف. الحمولة وقت التشغيل محدودة عمدًا بمنارة نبض (heartbeat beacon)، مما يسمح بفحص خط الأنابيب بالكامل دون تضمين سلوك تخريبي أو سلوك ما بعد الاستغلال.
onnxruntime من Microsoft. وهذا يجعل قطعة ONNX جزءًا نشطًا من خط الأنابيب بدلاً من ملف زخرفي مثل شبكة MLP الصغيرة السابقة.MachineGuid وVolume Serial Number للهدف وcurrent user's SID.wasm3. يعمل تطبيق C++ المضيف كمجرد مُحمِّل وجسر API، ويكشف دوال مضيفة آمنة لعزل WASM.float32. يستخرج المضيف هذه الخزنة من بايتات النموذج المضمّنة، ويتحقق من مصادقتها، وعندها فقط يستعيد مادة المفتاح التجريبي.heartbeat_ack وset_status فقط، مما يثبت قابلية القناة للعمل دون تمكين تنفيذ أوامر عشوائية.
راجع docs/architecture.md للمخطط التقني الكامل من البداية إلى النهاية. (أنصح بالاطلاع عليه لفهم أفضل).
وكذلك العملية الكاملة: أخطائي، والمفاهيم والأفكار التي درستها على طول الطريق، والمقايضات المعمارية التي واجهتها أثناء بناء Project Onyx --> Medium
أُنشئ هذا المشروع لأغراض تعليمية وبحث أمني وعمليات Red Team مرخّصة فقط.
التقنيات المعروضة في هذا المستودع (Project Onyx) تهدف إلى مساعدة المتخصصين الأمنيين على فهم طرق المراوغة المتقدمة وتحسين دفاعات نقطة النهاية (EDR/XDR).
لا تستخدم هذا البرنامج على أي نظام أو شبكة لا تملكها أو ليس لديك إذن كتابي صريح لاختبارها.
لا يتحمل مؤلف هذا المشروع (X-3306) أي مسؤولية ولا يُسأل عن أي إساءة استخدام أو ضرر أو أنشطة غير قانونية ناتجة عن استخدام هذا البرنامج. بتحميلك هذا الكود أو تجميعه أو استخدامه، فأنت توافق على تحمل المسؤولية الكاملة عن أفعالك.
DiagnosticsTool.cpp - مضيف C++ لنظام Windows وتكامل Wasm3/ONNX.DiagnosticsTool.rc / resource.h - ارتباطات الموارد (resource bindings) للأصول المُنشأة.build.py - أداة مساعدة لأخذ البصمات، توليد طُعم ONNX، تضمين خزنة الأوزان، توافق خزنة البيانات الوصفية، قناة Dead-Drop C2 عبر تحديثات النموذج، وتشفير WASM.wasm_license_module/ - كود Rust المصدري لوحدة نبض WebAssembly.wasm3/source/ - نسخة مصغّرة مُضمّنة من كود Wasm3 المصدري المطلوب لبناء CMake.assets/README2.md - صيغ الأصول المُنشأة.docs/architecture.md - سلسلة وقت التشغيل الكاملة وملاحظات البنية المعمارية.ثبّت هذه المتطلبات على Windows قبل البناء:
تبعيات Python:
py -m pip install onnx numpy cryptography
هدف Rust:
rustup target add wasm32-unknown-unknown
يتوقع ملف CMake شجرة مصدر/بناء ONNX Runtime في ./onnxruntime ويربط مكتبات المكونات الثابتة من:
onnxruntime/build/Windows/Release/Releaseonnxruntime/build/Windows/Release/vcpkg_installed/x64-windows-static-md/libمن Developer PowerShell الخاص بـ VS 2022، ابنِ ONNX Runtime على النحو التالي:
git clone --recursive https://github.com/microsoft/onnxruntime.git onnxruntime
.\onnxruntime\build.bat --config Release --parallel --compile_no_warning_as_error --skip_tests --build_shared_lib --use_vcpkg --cmake_extra_defines VCPKG_TARGET_TRIPLET=x64-windows-static-md onnxruntime_BUILD_UNIT_TESTS=OFF
لا يتم توزيع onnxruntime.dll المُنشأ مع Project Onyx. يربط Project Onyx ملفات المكونات الثابتة .lib ويجب ألا يُدرج الملف التنفيذي النهائي onnxruntime.dll في dumpbin /DEPENDENTS.
احصل على بصمة التجزئة (fingerprint hash) لجهاز Windows الحالي:
python build.py fingerprint --show-components
استخدم السطر الثاني المطبوع كقيمة --trigger.
ابنِ وحدة Rust WebAssembly:
cargo build --manifest-path wasm_license_module/Cargo.toml --target wasm32-unknown-unknown --release
ولّد assets/model.onnx وassets/license_module.wasm.aes:
python build.py build `
--trigger "<64-char lowercase fingerprint hash>" `
--secret "<exactly-32-demo-key-chars>" `
--model-output assets/model.onnx `
--wasm-input wasm_license_module/target/wasm32-unknown-unknown/release/wasm_license_module.wasm `
--wasm-output assets/license_module.wasm.aes
تحقق من خزائن ONNX:
python build.py verify --trigger "<64-char lowercase fingerprint hash>" --model assets/model.onnx
يتحقق أمر التحقق من كلٍّ من خزنة البيانات الوصفية القديمة وخزنة أوزان ONNX المخفية. يجب أن يفتح كلاهما نفس مادة المفتاح التجريبي المكوّنة من 32 حرفًا.
الناقل الافتراضي هو SqueezeNet 1.0 opset 12:
onnxmodelzoo/squeezenet1.0-12assets/base/squeezenet1.0-12.onnxdata_0, float[1, 3, 224, 224]softmaxout_1, float[1, 1000, 1, 1]اجلب النموذج الأساسي المُرفق أو تحقق منه:
python build.py fetch-model
تنسخ build.py build هذا النموذج الحقيقي، وتضيف بيانات تعريف Project Onyx الوصفية، وتضمّن خزنة أوزان ONNX الموثَّقة في وحدات البت الأقل دلالة (LSBs) لمهيّئات float32، وتكتب النموذج المرجعي النهائي إلى assets/model.onnx.
الوصلة التنزيلية الإضافية هي امتداد بحثي لاختبار ما إذا كان تحديث نموذج ONNX عادي يمكنه حمل إشارة تحكم صغيرة موثقة كـ PoC بسيط. وهي محدودة عمدًا بتوجيهين آمنين: