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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Shoggoth — مشفّر متعدد الأشكال يحوّل شيلكود وملفات PE وCOFF إلى حمولات مشوّشة ومستقلة عن الموقع مع تشفير RC4 وتشفير الكتل العشوائي، بالإضافة إلى توليد تعليمات غير مرغوب فيها باستخدام مكتبة AsmJit. | Kitploit
أدوات/GitHubGitHub/frkngksl/shoggoth
أطر الاستغلالتوليد الحمولةشيل كودتحليل الملفات الثنائيةالفريق الأحمر
GitHubfrkngksl/shoggoth

Shoggoth

مشفّر متعدد الأشكال يحوّل شيلكود وملفات PE وCOFF إلى حمولات مشوّشة ومستقلة عن الموقع مع تشفير RC4 وتشفير الكتل العشوائي، بالإضافة إلى توليد تعليمات غير مرغوب فيها باستخدام مكتبة AsmJit.

عرض المستودع
805103منذ 4 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

شوغوث

عُرض في

  • أرسنال BlackHat Europe 2022 - تسجيل العرض

مقدمة

الوصف

شوغوث هو مشروع مفتوح المصدر يعتمد على لغة C++ ومكتبة asmjit يُستخدم لتشفير شيلكود وملفات PE وCOFF بشكل متعدد الأشكال.

سيقوم شوغوث بإنشاء ملف مخرجات يخزن الحمولة ومُحمّلها المقابل في شكل مبهم. نظرًا لأن محتوى المخرجات مستقل عن الموضع، يمكن تنفيذه مباشرة كشيلكود. أثناء تنفيذ الحمولة، تقوم بفك تشفير نفسها في وقت التشغيل. بالإضافة إلى روتين التشفير، يضيف شوغوث أيضًا تعليمات غير ضرورية (قمامة) لا تغير شيئًا بين الروتينات.

بدأت تطوير هذا المشروع لدراسة طرق مختلفة لتوليد التعليمات الديناميكية، وممارسات التجميع، واكتشاف التواقيع. أخطط لتحديث المستودع بانتظام بما أتعلمه جديدًا.

الميزات

الميزات الحالية مذكورة أدناه:

  • يعمل فقط على مدخلات x64
  • القدرة على دمج مُحمّل COFF المستقل عن الموضع (PIC) مع ملفات COFF أو BOF المدخلة
  • القدرة على دمج مُحمّل PE المستقل عن الموضع (PIC) مع ملفات PE المدخلة
  • تشفير تيار باستخدام خوارزمية RC4
  • تشفير كتلي بعمليات مولدة عشوائيًا
  • توليد تعليمات غير ضرورية

سير التنفيذ

يمكن رؤية سير التنفيذ العام لشوغوث لملف إدخال في الصورة أدناه. يمكنك ملاحظة هذا السير باستخدام الإعدادات الافتراضية.

ببساطة، يقوم شوغوث أولاً بدمج شيلكود المُحمّل المُجمّع مسبقًا وفقًا للوضع المختار (ملف COFF أو PE) مع ملف الإدخال. ثم يضيف تعليمات غير ضرورية متعددة يولدها إلى هذه الحمولة المدمجة. يتم تشفير الجزء الذي يحتوي على المُحمّل والتعليمات غير الضرورية والحمولة أولاً بتشفير RC4، ثم بتشفير كتلي مولّد عشوائيًا من خلال ضم وحدات فك التشفير المقابلة. أخيرًا، يضيف تعليمات غير ضرورية إلى الكتلة الناتجة.

توليد كود الآلة

بينما يقوم شوغوث بتوليد تعليمات عشوائيًا للأجزاء غير الضرورية أو روتينات التشفير، فإنه يستخدم مكتبة AsmJit.

AsmJit هي مكتبة خفيفة لتوليد كود الآلة مكتوبة بلغة C++. يمكنها توليد كود آلة لمعماريات X86 و X86_64 و AArch64، وتدعم التعليمات الأساسية وجميع الإضافات الحديثة. تسمح AsmJit بتحديد أكواد العمليات، والسجلات، والمعاملات الفورية، وتسميات الاستدعاءات، وتضمين قيم عشوائية في أي إزاحة داخل الكود. عند توليد بعض تعليمات التجميع باستخدام AsmJit، يكفي استدعاء دالة API التي تقابل عملية التجميع المطلوبة مع قيم معاملات التجميع من فئة Assembler. لكل استدعاء API، تحتفظ AsmJit بمعلومات الكود وإعادة التوطين في بنيتها الداخلية CodeHolder. بعد استدعاء دوال API لجميع أوامر التجميع المراد توليدها، يمكن استخدام فئة JitRuntime لنسخ الكود من CodeHolder إلى الذاكرة بصلاحية تنفيذ وإعادة توطينه.

أثناء بحثي عن مكتبة لتوليد الكود، صادفت AsmJit ورأيت أنها مستخدمة على نطاق واسع في العديد من المشاريع الشهيرة. لذلك قررت استخدامها لاحتياجاتي. لا أعرف ما إذا كان شوغوث هو أول مشروع يستخدمها في سياق الفريق الأحمر، لكنني أعتقد أنها يمكن أن تكون مرجعًا للتطبيقات المستقبلية.

مُحمّلات COFF و PE

يمكن استخدام شوغوث لتشفير ملفات PE و COFF المعطاة بحيث يمكن تنفيذ كلاهما كشيلكود بفضل المُحمّلات المستقلة عن الموضع والمُجمّعة مسبقًا. لقد استخدمت ببساطة طريقة C to Shellcode للحصول على النسخة المستقلة عن الموضع من مُحمّلات PE و COFF المعروفة التي قمت بتعديلها لمشاريعي القديمة. للتجميع، استخدمت ملف Makefile من مشروع HandleKatz وهو أداة تفريغ LSASS بشكل PIC.

بشكل أساسي، للحصول على شيلكود باستخدام تقنية C to Shellcode، قمت بإزالة جميع المتغيرات العامة في كود المصدر للمُحمّل، وجعلت جميع السلاسل النصية مخزنة في المكدس، وحللت عناوين دوال Windows API عن طريق تحميل وتحليل ملفات DLL الضرورية في وقت التشغيل. بعد ذلك، حددت نقطة الدخول باستخدام سكريبت رابط (linker script) وقمت بتجميع الكود باستخدام MinGW مع أعلام تجميع متنوعة. استخرجت القسم .text من الملف التنفيذي المُنشأ وحصلت على شيلكود المُحمّل. نظرًا لأن الملف التنفيذي الذي تم الحصول عليه بعد تعديل الكود كما هو موضح لا يحتوي على أقسام أخرى غير القسم .text، يمكن استخدام الكود في هذا القسم ككود مستقل عن الموضع.

يمكن رؤية وتعديل الكود المصدر لهذه من مجلدات COFFLoader و PELoader. كما يمكن العثور على النسخ المُجمّعة من هذه الأكواد المصدرية في مجلد stub. في الوقت الحالي، إذا كنت ترغب في تعديل أو تغيير هذه المُحمّلات، يجب عليك الالتزام بالتوقيعات واستبدال الملفات الثنائية المُجمّعة مسبقًا من مجلد stub.

لتمرير الوسائط إلى BOF، استخدم الخيار --coff-arg. يتوقع شوغوث سلسلة نصية سداسية عشرية منسقة مسبقًا تحتوي على الوسائط المعبأة، والتي يمكن إنشاؤها باستخدام سكريبت TrustedSec's beacon_generate.py. تم تضمين نسخة من هذا السكريبت كـ COFFArgGenerator/beacon_generate.py. (شكر جزيل لـ @Octoberfest7)

تشفير RC4

يستخدم شوغوث أولاً أحد تشفيرات التيار، خوارزمية RC4، لتشفير الحمولة التي يحصل عليها. بعد توليد المفتاح المستخدم هنا بشكل عشوائي، يقوم بتشفير الحمولة بهذا المفتاح. يتم إنشاء وتجميع جزء فك التشفير (decryptor stub) الذي يفك تشفير الحمولة أثناء التشغيل ديناميكيًا باستخدام AsmJit. يتم اختيار السجلات المستخدمة في الجزء بشكل عشوائي لكل عينة.

لقد رجعت إلى كود لنياكي (Nayuki) لتنفيذ خوارزمية RC4 التي استخدمتها في شوغوث.

تشفير الكتلة العشوائي

بعد إجراء التشفير الأول، يستخدم شوغوث التشفير الثاني وهو تشفير كتلي مولّد عشوائيًا. باستخدام التشفير الثاني، يقوم بتشفير كل من مفكك تشفير RC4 واختياريًا الجزء الذي يحتوي على الحمولة والتعليمات غير الضرورية والمُحمّل المشفر بـ RC4. يقسم الكتلة المراد تشفيرها إلى كتل بحجم 8 بايت ويستخدم تعليمات مولدة عشوائيًا لكل كتلة. تتضمن هذه التعليمات ADD، SUB، XOR، NOT، NEG، INC، DEC، ROL، و ROR. يتم اختيار معاملات هذه التعليمات أيضًا بشكل عشوائي.

توليد التعليمات غير الضرورية

منطق توليد التعليمات غير الضرورية مستوحى بشكل كبير من مشروع SGN الرائع لـ Ege Balci. يمكن لشوغوث اختيار تعليمات غير ضرورية بناءً على القفز فوق بايتات عشوائية، وتعليمات بدون آثار جانبية، واستدعاءات دوال وهمية، وتعليمات لها آثار جانبية ولكنها تحتفظ بالقيم الأولية. يتم اختيار كل هذه التعليمات بشكل عشوائي، ويتم توليدها عن طريق استدعاء دوال API المقابلة لمكتبة AsmJit. أيضًا، لزيادة الحجم والتوليفات المختلفة، يتم استدعاء دوال التوليد هذه بشكل متكرر.

هناك العديد من الأماكن التي يمكن وضع التعليمات غير الضرورية فيها في الإصدار الأول من شوغوث. على سبيل المثال، يمكننا وضع تعليمات غير ضرورية بين تعليمات تشفير الكتلة أو تعليمات تشفير RC4. ومع ذلك، لأغراض العرض التوضيحي، تركتها للإصدارات اللاحقة لتجنب التعقيد الإضافي للحمولات المُنشأة.

الاستخدام

المتطلبات

لم أقم بتجميع المشروع الرئيسي. لذلك ستحتاج إلى التجميع بنفسك. اختياريًا، إذا كنت ترغب في تعديل الكود المصدر لمُحمّل PE أو مُحمّل COFF، يجب أن يكون لديك MinGW على جهازك لتجميعها باستخدام ملفات Makefile المعطاة.

  • Visual Studio 2019+
  • (اختياري) مترجم MinGW

معاملات سطر الأوامر

root@kitploit:~

  ______ _                                  _
 / _____) |                             _  | |
( (____ | |__   ___   ____  ____  ___ _| |_| |__
 \____ \|  _ \ / _ \ / _  |/ _  |/ _ (_   _)  _ \
 _____) ) | | | |_| ( (_| ( (_| | |_| || |_| | | |
(______/|_| |_|\___/ \___ |\___ |\___/  \__)_| |_|
                    (_____(_____|

                     by @R0h1rr1m

                "Tekeli-li! Tekeli-li!"

Usage of Shoggoth.exe:

    -h | --help                             Show the help message.
    -v | --verbose                          Enable more verbose output.
    -i | --input <Input Path>               Input path of payload to be encrypted. (Mandatory)
    -o | --output <Output Path>             Output path for encrypted input. (Mandatory)
    -s | --seed <Value>                     Set seed value for randomization.
    -m | --mode <Mode Value>                Set payload encryption mode. Available mods are: (Mandatory)
                                                [*] raw - Shoggoth doesn't append a loader stub. (Default mode)
                                                [*] pe - Shoggoth appends a PE loader stub. The input should be valid x64 PE.
                                                [*] coff - Shoggoth appends a COFF loader stub. The input should be valid x64 COFF.
    --coff-arg <Argument>                   Set argument for COFF loader. Generate this string using COFFArgGenerator/beacon_generate.py.
                                                example: --coff-arg 0a0000000600000068656c6c6f00
                                                Only used in COFF loader mode. (Thanks to @Octoberfest7)
    -k | --key <Encryption Key>             Set first encryption key instead of random key.
    --dont-do-first-encryption              Don't do the first (stream cipher) encryption.
    --dont-do-second-encryption             Don't do the second (block cipher) encryption.
    --encrypt-only-decryptor                Encrypt only decryptor stub in the second encryption.

ماذا يعني شوغوث؟


"كان شيئًا فظيعًا لا يوصف، أكبر من أي قطار أنفاق — كتلة لا شكل لها من الفقاعات البروتوبلازمية، متوهجة بذاتها بشكل خافت، مع عدد لا يحصى من العيون المؤقتة تتشكل وتتلاشى كبثرات من الضوء الأخضر في جميع أنحاء الواجهة التي تملأ النفق والتي اندفعت نحونا، ساحقة طيور البطريق المجنونة وتنزلق فوق الأرضية اللامعة التي جرفتها هي وأمثالها من كل الحطام بشكل شرير." ~ هـ. ف. لافكرافت، في جبال الجنون


شوغوث هو وحش خيالي في أساطير كثولهو. تم ذكر الكائنات بشكل عابر في سلسلة السوناتات "فطريات من يوغوث" (1929-1930) له. ف. لافكرافت، ثم وُصفت بالتفصيل لاحقًا في روايته القصيرة "في جبال الجنون" (1931). إنها قادرة على تشكيل أي أعضاء أو زوائد تحتاجها للمهمة المطلوبة، على الرغم من أن حالتها المعتادة هي كتلة ملتوية من العيون والأفواه والمخالب المتلوية.

نظرًا لأن هذه المخلوقات تشبه كتلة واعية ذاتية التشكيل من اللحم الجيلاتيني وليس لها شكل ثابت في أوصاف لافكرافت، أردت إعطاء هذا الاسم لأداة تشفير متعددة الأشكال. 🙂

المراجع

  • https://github.com/EgeBalci/sgn
  • https://github.com/asmjit/asmjit
  • https://www.pelock.com/articles/polymorphic-encryption-algorithms
  • https://github.com/codewhitesec/HandleKatz
  • https://github.com/vxunderground/MalwareSourceCode
  • https://www.nayuki.io/page/rc4-cipher-in-x86-assembly
  • https://www.deviantart.com/halycon450/art/Shoggoth-914584713
  • https://www.artstation.com/burakkrtak (مصمم الشعار)
  • https://github.com/trustedsec/COFFLoader/blob/main/beacon_generate.py

إخلاء مسؤولية

لأغراض اختبار الأمان المصرح به فقط. سوء استخدام هذه الأداة ضد الأنظمة دون إذن صريح غير قانوني.

تنزيل الأداة