
تطبيق كسر الحماية الثنائي FortinetHunter (@YogSoth0). جزء من CTF الخاص بـ FortinetHunter. باب ELF: ملف Nuitka onefile مجرّد، مدقّق Argon2id مشوّش بـ XOR، تكامل AES-GCM.

واجهة TUI تقوم بإعادة تعيين مفاتيح بوابة كلمة المرور الخاصة بـ "Fortinet Hunter 2026" المبنية على Nuitka. جزء من تحدي capture-the-flag من @YoSoth0) التحليل الكامل: Hunting the Fortinet Hunter 0-day
لا يتم تشغيل ملف ELF على المضيف أبدًا. يقوم GateX بفك حزمة onefile بشكل ثابت، وإزالة قناع XOR عن تجزئة Argon2id المشوّشة ولافتة AES-GCM، ويعيد كتابة تلك الكتل بحيث يُحقّق FH_PASS=gatex كلا الفحصين، ثم ينفّذ الملف الثنائي الداخلي داخل قفص Docker مُحكم الإغلاق.
هذا لا يستعيد عبارة المرور الأصلية للمؤلف. Argon2id (m=65536,t=3,p=4) يقوم بعمله. الإضافات (plugins) كانت مُجمّعة مسبقًا داخل ELF الداخلي؛ كلمة المرور تكشف فقط عن لافتة.
abraxas
7350FH.zip (غير مُرفق)الحمولة (payload) هي كود غير موثوق على شكل برمجية خبيثة من CTF. يقوم GateX فقط بتنفيذها (exec) تحت:
--platform linux/amd64--network none--read-only + tmpfs لفك الحزمة--cap-drop ALL --security-opt no-new-privileges:true65532، ذاكرة 2 GiB، معالج واحد، 256 pidsgit clone [email protected]:abraxas/GateX.git
cd GateX
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
ضع ملف التحدي المضغوط (أو ELF الداخلي) حيث يمكن لـ GateX رؤيته:
mkdir -p files
cp /path/to/7350FH.zip files/7350FH.zip
واجهة TUI:
.venv/bin/python -m gatex --target files/7350FH.zip
داخل واجهة TUI:
/probe # static zstd unpack + assemble the Argon2id hash (no exec)
/sandbox up # start Docker, build gatex-cage:noble
/bypass # re-key to FH_PASS=gatex and exec list in the cage
/cmd --help # argv against the patched inner ELF
/cmd --version
/cmd score --ml
بدون واجهة (Headless):
# unpack + print the assembled argon2id hash (no TUI, no exec)
.venv/bin/python -m gatex --target files/7350FH.zip --probe
# re-key + exec list in the cage
.venv/bin/python -m gatex --target files/7350FH.zip --bypass
الخيار --session name يحفظ الحالة تحت ~/.gatex/sessions/ (وضع 0600).
| الأمر | ما يفعله |
|---|---|
/help | قائمة الأوامر |
/probe | فك حزمة ثابت + تجميع تجزئة Argon2id (بدون تنفيذ) |
/bypass [password] | إعادة تعيين مفاتيح كتل البوابة (افتراضيًا gatex) والتنفيذ داخل القفص |
/cmd [args…] | argv يُمرَّر إلى ELF المُعدَّل (list، --help، --version، …) |
/sandbox /sandbox up /sandbox down | حالة Docker / بناء / تدمير |
/target <zip|elf> | تبديل الملف الثنائي |
/session name | تبديل الجلسة القابلة لإعادة الاستخدام |
/timeout <seconds> | مهلة تنفيذ القفص |
/quit | حفظ ومغادرة |
F1 = مساعدة.
KAY + zstd). الصورة الداخلية هي 7350FH.bin.BYTES وهو c + fh-slim-hardened-v2.utf-8(xor(b64decode(ct), cycle(b64decode(key)))). ثلاث شُذَر تُجمّع PHC الحقيقي. سلسلة Argon2 نصية صريحة في الملف الثنائي هي فخ argon2-cffi doctest — تجاهلها.fh-slim-v2-salt-2026 / fh-slim-v2-core) → AES-256-GCM للافتة بحجم 79 بايت. ثم cli.main(). الاستغلالات ليست في النص المشفّر./bypass يكتب PHC جديدًا لكلمة مرور تعرفها، ويشفّر لافتة بديلة تحت AAD b"fh-slim-hardened-v2" (قيمة البايتات، وليس إبرة cfh-… على القرص)، ويشغّل الداخلي المُعدَّل كـ /opt/fh/7350FH.bin مع LD_LIBRARY_PATH=$ORIGIN.الداخلي الأصلي + FH_PASS=gatex لا يزال يطبع [!] access denied. تلك هي التجربة.
docker exec مباشر ضد الداخلي المُعاد تعيين مفاتيحه، linux/amd64، net none، الصلاحيات مُسقطة، uid 65532. تم الالتقاط في 2026-08-26.




النصوص الكاملة: files/evidence/*.txt و files/hunter-cli/.
.venv/bin/pip install pytest
.venv/bin/python -m pytest tests/test_offline.py -q
اختبارات التعديل/فك الحزمة التي تحتاج files/7350FH.zip يتم تخطيها إذا كان الملف المضغوط غائبًا.
كُتب لتحدي CTF سمح به المؤلف. لا توجّه هذا نحو أنظمة لا تملكها. لا يوفّر GateX أي استغلالات ولا نسخة من 7350FH.