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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cobaltstrike4.5_cdf-1 — Cobalt Strike 4.5 نسخة مكسورة/مصدّعة، إزالة بصمة checksum8، تجاوز BeaconEye، إصلاح تسريب المرحلة (stage) من مسار الأخطاء، إضافة تحقق ثنائي العوامل TOTP، إصلاح CVE-2022-39197 وغيرها | Kitploit
أدوات/GitHubGitHub/zeoday/cobaltstrike4.5_cdf-1
أطر اختبار الاختراقأطر الاستغلالتحليل الثغرات الأمنيةالتهرب من IDS/IPSالهندسة العكسيةالتشفيرالقيادة والسيطرةتحليل الملفات الثنائيةالمصادقةالفريق الأحمرتطوير الحمولات
13منذ 3 سنواتلم تتم المراجعة بعد
GitHub
zeoday/cobaltstrike4.5_cdf-1

cobaltstrike4.5_cdf-1

Cobalt Strike 4.5 نسخة مكسورة/مصدّعة، إزالة بصمة checksum8، تجاوز BeaconEye، إصلاح تسريب المرحلة (stage) من مسار الأخطاء، إضافة تحقق ثنائي العوامل TOTP، إصلاح CVE-2022-39197 وغيرها

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

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

cobaltstrike4.5_cdf

كسر إصدار cobaltstrike4.5، إزالة ميزة checksum8، تجاوز BeaconEye، إصلاح تسريب stage عبر المسار الخاطئ، إضافة التحقق ثنائي العوامل totp، إضافة تشفير اسم المستخدم للعرض، إصلاح خطأ الاشتقاق foreign في إصدار 4.5، تعديل اسم ملف إعدادات العميل، إلخ

كسر cobalt strike4.5

كسر cobaltstrike4.5

[TOC]

إخلاء المسؤولية\اتفاقية إخلاء المسؤولية

هذه الأداة ومحتوى المقال مخصصان للبحث الأمني فقط، ويتحمل المستخدم كافة المسؤوليات القانونية ذات الصلة الناتجة عن استخدام هذه الأداة ومحتوى المقال! المؤلف لا يتحمل أي مسؤولية قانونية! إذا قمت بأي سلوك غير قانوني أثناء استخدام هذه الأداة ومحتوى المقال، فستتحمل العواقب بنفسك، ولن نتحمل أي مسؤولية قانونية أو مسؤولية تضامنية. خلاف ذلك، يرجى عدم تثبيت هذه الأداة أو استخدامها. إن سلوكك في الاستخدام أو إشارتك بأي طريقة أخرى صريحة أو ضمنية إلى قبولك لهذا الاتفاق، يُعتبر بمثابة قراءتك وموافقتك على الالتزام بهذا الاتفاق. عند استخدام هذه الأداة للبحث الأمني، يجب عليك التأكد من أن هذا السلوك يتوافق مع القوانين واللوائح، وأنك حصلت على تفويض كافٍ. يرجى عدم استخدامها ضد أهداف غير مصرح بها.

نعم، لقد عدت مرة أخرى، متابعًا مشروع cobaltstrike4.4_cdf الأصلي: https://github.com/lovechoudoufu/about_cobaltstrike4.4_cdf هذه المرة هو إصدار 4.5. تم حذف الإصدار 4.4 السابق من GitHub، وأتوقع أنه لن يمر وقت طويل قبل حذف هذا المشروع أيضًا ~.

يُنصح بالانضمام إلى مجموعة تيليجرام، حيث يمكن تنزيل التحديثات الأخرى لاحقًا أو المشروع بعد حذفه من داخل المجموعة:

image-20220802163532221

قبل الاستخدام، يرجى التحقق بدقة من تجزئة (hash) ملف jar للإصدار المقابل.

كسر cs

الإصدارات قبل 4.5

عملية التحقق من الشهادة (مثال 4.3): في إصدار 4.5 كانت هناك تغييرات طفيفة في النهاية.

مفاتيح فك التشفير الرسمية لكل إصدار:

root@kitploit:~
4.0 1be5be52c6255c33558e8a1cb667cb06
4.1 80e32a742060b884419ba0c171c9aa76
4.2 b20d487addd4713418f2d5a3ae02a7a0
4.3 3a4425490f389aeec312bdd758ad2b99
4.4 5e98194a01c6b48fa582a6a9fcbb92d6

cobaltstrike.auth ملف مفتاح المصادقة، مشفر بـ RSA، محتوى فك التشفير:

4.3

root@kitploit:~
-54, -2, -64, -45,	//文件头
0, 77,	//后续长度 
1, -55, -61, 127, 	//证书时间限制29999999(永久)
0, 0, 0, 1, 	//watermark(水印)
43, 	//版本
16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 
16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 
16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 
16, 58, 68, 37, 73, 15, 56, -102, -18, -61, 18, -67, -41, 88, -83, 43, -103

مع كل تحديث للإصدار، يزداد الطول المقابل بمقدار 17، ويزداد المفتاح بمقدار 17 بايت.

في aggressor/Agressor.class، يبدأ التحقق من الترخيص من License.checkLicenseGUI(new Authorization());:

image-20211101142121856

تقوم isValid وisPerpetual وisExpired وisAlmostExpired في License.checkLicenseGUI بالحكم على ما إذا كان الترخيص صالحًا وما إذا كان منتهيًا:

image-20211101142738431

في فئة Authorization تتم معالجة ملف cobaltstrike.auth، حيث يتم قراءة محتوى الملف واستدعاء AuthCrypto().decrypt لمعالجة المحتوى:

image-20211101143829398

في مُنشئ AuthCrypto() يتم استدعاء load()، وتقوم دالة load() بإجراء فحص MD5 على resources/authkey.pub، ثم تحصل على المفتاح العام RSA:

image-20211101144809625

في decrypt() يتم استدعاء _decrypt لفك تشفير محتوى ملف cobaltstrike.auth باستخدام المفتاح العام RSA وتعيين النتيجة للمصفوفة var2، ثم يتم استخدام DataParser للتحويل وتعيينها لـ var3. يتم استخدام طريقة readInt() للحصول على أول أربعة بايتات من var3 للحكم على رأس الملف (-889274181 لإصدارات 3.x؛ -889274157 لإصدارات 4.x). ثم من var3 يتم استخدام readShort() للحصول على بايتين كطول وتعيينهما لـ var5، ثم var6 = var3.readBytes(var5) للحصول على محتوى بهذا الطول وتعيينه لـ var6 وإرجاعه:

image-20211101145153818

المصفوفة arrayOfByte2 التي تم الحصول عليها في فئة Authorization هي المحتوى بعد إزالة أول ستة بايتات. يستمر معالجة مصفوفة arrayOfByte2، حيث يتم أولاً الحصول على أربعة أرقام وتعيينها لـ i، ثم الحصول على 4 أرقام وتعيينها لـ watermark، ثم الحصول على رقم واحد وتعيينه لـ b1، والتحقق من أن b1 أقل من 43، والتحقق من أن i يساوي 29999999. في common/ListenerConfig، عندما يتم الحكم على أن watermark يساوي 0، يتم إضافة علامة كشف مكافحة الفيروسات:

image-20211101152338045

image-20211101152000407

بعد إزالة أول 6 بايتات، ثم إزالة الـ 9 بايتات المكونة من i وwatermark وb1، فإن ما تبقى هو المفاتيح منذ 4.0 حتى 4.3، ببنية: 16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20:

root@kitploit:~
            byte b2 = dataParser.readByte();	//获取1位,即16
            byte[] arrayOfByte3 = dataParser.readBytes(b2);		//获取16位,为4.0的key
            byte b3 = dataParser.readByte();	//获取1位,即16
            byte[] arrayOfByte4 = dataParser.readBytes(b3);		//获取16位,为4.1的key
            byte b4 = dataParser.readByte();	//获取1位,即16
            byte[] arrayOfByte5 = dataParser.readBytes(b4);		//获取16位,为4.2的key
            byte b5 = dataParser.readByte();	//获取1位,即16
            byte[] arrayOfByte6 = dataParser.readBytes(b5);		//获取16位,为4.3的key赋值给arrayOfByte6

في فئة Authorization يتم استدعاء طريقة SleevedResource.Setup لمعالجة arrayOfByte6. في SleevedResource يتم تعيين المفتاح كمفتاح فك تشفير AES وHmacSHA256، ويتم استدعاء فك التشفير في _readResource عبر this.data.decrypt(arrayOfByte1);، والمحتوى الذي يتم فك تشفيره هو ملفات dll الموجودة في /sleeve/:

image-20211101153935202

في SleeveSecurity يتم تعيين مفاتيح فك تشفير AES وHmacSHA256، ويتم استخدام القيمة المُمررة لحساب ملخص (Digest) بطول 256، ثم يتم أخذ البايتات 0-16 كمفتاح AES، والبايتات 16-32 كمفتاح HmacSHA256:

image-20211101154127243

إذا لم يتم الحصول على المفتاح المقابل، فلن يكون من الممكن فك تشفير ملفات dll في مجلد sleeve، وعند الاتصال بالخادم ستظهر رسالة الخطأ [Sleeve] Bad HMAC:

image-20211101160942103

يمكن الرجوع إلى جزء فك تشفير hmac: Cobaltstrike 4 كسر: أصدر لنفسي ترخيصًا (license)

لذا فإن مفتاح إكمال الكسر هو مفتاح إصدار cs المقابل.

التحقق الإضافي في إصدار 4.5

وفقًا للوصف الرسمي، أضاف إصدار 4.5 أمانًا جديدًا للترخيص، وهذا صحيح بالفعل،

image-20220802145353409

لذا نحتاج إلى فك تشفير ملف auth المسرّب لنرى ما الذي أُضيف:

image-20220802154920364

بعد موضع key الخاص بإصدار 4.5 توجد سلسلة إضافية، وهذه الإضافات هي watermarkHash الجديد في هذا الإصدار:

image-20220802155137639

يرتبط watermarkHash بتوليد الـ beacon ويرتبط بملفات dll في مجلد sleeve، وبدونه أو إذا كان خاطئًا لن يتمكن الـ beacon من الاتصال عبر الإنترنت. ربما يمكن للجهة الرسمية تتبع مصدر التسريب من خلال هذا watermarkHash.

image-20220802155317878

طرق الكسر

الطريقة الأولى: ترميز المفتاح بشكل ثابت (Hardcode)

قم بتعليق الكود الآخر، واكتب المعلمة المُعينة بعد فك تشفير RSA في AuthCrypto().decrypt بشكل ثابت:

image-20220802155654981

root@kitploit:~
         byte[] var4 = {1, -55, -61, 127, 0, 1, -122, -96, 45, 16, 27, -27, -66, 82, -58, 37, 92, 51, 85, -114, -118, 28, -74, 103, -53, 6, 16, -128, -29, 42, 116, 32, 96, -72, -124, 65, -101, -96, -63, 113, -55, -86, 118, 16, -78, 13, 72, 122, -35, -44, 113, 52, 24, -14, -43, -93, -82, 2, -89, -96, 16, 58, 68, 37, 73, 15, 56, -102, -18, -61, 18, -67, -41, 88, -83, 43, -103, 16, 94, -104, 25, 74, 1, -58, -76, -113, -91, -126, -90, -87, -4, -69, -110, -42, 16, -13, -114, -77, -47, -93, 53, -78, 82, -75, -117, -62, -84, -34, -127, -75, 66, 0, 0, 0, 24, 66, 101, 117, 100, 116, 75, 103, 113, 110, 108, 109, 48, 82, 117, 118, 102, 43, 86, 89, 120, 117, 119, 61, 61};

الطريقة الثانية: أسلوب Javaagent

مبدأ Javaagent: https://www.cnblogs.com/rickiyang/p/11368932.html

أداة الكسر يمكن الرجوع إليها: https://github.com/Twi1ight/CSAgent

جوهر الكسر لا يزال يتطلب مفتاح إصدار cs المقابل

إزالة الألغام الخفية

في beacon/BeaconData يتم تثبيت قيمة طريقة shouldPad على false:

image-20211101180447451

ألغام خفية جديدة في 4.4

(سابقًا تم تحليل التحقق من الترخيص باستخدام 4.3 كمثال، وبعد التبديل إلى 4.4 اكتشفت أن البرنامج يخرج من التشغيل عند الجري، حيث توجد ألغام خفية جديدة)

بالمقارنة مع exit الخاص بـ this.shouldPad السابق، تمت أيضًا إضافة فحص .class في common/Helper، فقط قم بتعليقه:

image-20211119153406737

تمت إضافة فحص .class في common/Starter، فقط قم بتعليقه:

image-20211119153558224

تمت إضافة فحص .class في common/Starter2، فقط قم بتعليقه:

image-20211119153636952

تمت إضافة فحص .class في beacon/CommandBuilder: (هذا اللغم الخفي حقير فعلاً، فبعد اتصال متواصل لمدة 4 ساعات بين العميل والخادم لا يمكن تنفيذ الأوامر، ولم أكتشفه أبدًا لأنني لم أتصل بهذه المدة من قبل، ggg)

image-20220505104735903

ألغام خفية جديدة في 4.5

أضاف إصدار 4.5 مجموعة من الألغام الخفية ضد javaagent، ويمكن لمن يقوم بفك تجميع حزمة jar للكسر تجاهلها، فقط ابحث عن javaagent وعدّلها واحدًا تلو الآخر:

image-20220802160404976

بعد إزالة هذه المواضع يمكننا العودة إلى العمل الجماعي مرة أخرى.

إزالة ميزة checksum8 من cs

لن أشرح ميزة checksum8 بالتفصيل، ولكن من الضروري تعديلها لتجنب اكتشافها بواسطة nmap ومحركات البحث الفضائية.

تعديل الكود

في BeaconPayload قم بتعديل قيمة XOR إلى قيمة جديدة:

أي رقم عشري عشوائي يكفي، ثم قم بتغييره لاحقًا في ملف dll إلى الرقم السداسي العشري المقابل.

image-20211108114054512

تعديل ملف dll

استخدم CrackSleeve لفك تشفير ملف dll: https://github.com/ca3tie1/CrackSleeve/

  1. ضع cobaltstrike.jar و CrackSleeve.java معًا
  2. الترجمة (javac -encoding UTF-8 -classpath cobaltstrike.jar CrackSleeve.java)
  3. فك تشفير الملف (java -classpath cobaltstrike.jar;./ CrackSleeve decode) # تنفيذ عبر سطر أوامر Windows

استخدم Alt+T للبحث عن الكلمة المفتاحية: 2Eh

image-20211107222017434

image-20211107222039265

قم بتعديل قيمة xor مباشرة، أولاً استخدم Change byte للعثور على 2E وتعديله، ثم Apply patches to input file للحفظ. (لا تنسَ الحفظ)

image-20211107222223636

ملفات dll التي تحتاج إلى تعديل: beacon.dll وbeacon.x64.dll وdnsb.dll وdnsb.x64.dll وpivot.dll وpivot.x64.dll وextc2.dll وextc2.x64.dll (الإصدار 4.5 أضاف بعض ملفات rl100k.dll التي تحتاج أيضًا إلى تعديل)

ثم استخدم CrackSleeve لتشفير ملفات dll، وأخيرًا ضع ملفات dll الموجودة في مجلد encode في مجلد مشروع IDEA وأعد الترجمة والحزم.

عند الاختبار، على الرغم من أنه لا يزال يمكن طلب عنوان uri، إلا أن المحتوى لم يعد ممكنًا فك تشفيره بواسطة سكربتات nmap، وبالمثل يمكن تجنب التعرف من محركات البحث الفضائية:

image-20211107233719344

بالإضافة إلى طريقة تعديل قيمة XOR، يمكن أيضًا https://mp.weixin.qq.com/s?__biz=MzA3MDY2NjMxMA==&mid=2247484641&idx=1&sn=014f6c4ad5343e3f5034c33dffa66f26&chksm=9f3815c8a84f9cde1c7493ff29cfc89c0474fec48ede52be618727e7b9a5ab321c4743e1a44c&mpshare=1&scene=23&srcid=1202NA46yt71CvD3BMGKS10c&sharer_sharetime=1606892728447&sharer_shareid=ff83fe2fe7db7fcd8a1fcbc183d841c4#rd تغيير خوارزمية checksum8، ولكن عندها سيكون الوصول عبر uri ثابت فقط، وستحتاج إلى استخدامه مع profile، وفي كل مرة تغيّر فيها uri ستحتاج إلى إعادة الحزم. لكل طريقة مزاياها وعيوبها.

إزالة ميزات beaconeye من cs

فكرة تعديل إزالة ميزات beaconeye مصدرها الرابط، والبايتات التي تحتاج إلى تعديل باستخدام 4.3 و4.4 كمثال هي كما يلي.

استخدم CrackSleeve لفك تشفير ملف dll: https://github.com/ca3tie1/CrackSleeve/

  1. ضع cobaltstrike.jar و CrackSleeve.java معًا

  2. الترجمة (javac -encoding UTF-8 -classpath cobaltstrike.jar CrackSleeve.java)

  3. فك تشفير الملف (java -classpath cobaltstrike.jar;./ CrackSleeve decode) # تنفيذ عبر سطر أوامر Windows

4.3 key 58, 68, 37, 73, 15, 56, -102, -18, -61, 18, -67, -41, 88, -83, 43, -103 4.4 key 94, -104, 25, 74, 1, -58, -76, -113, -91, -126, -90, -87, -4, -69, -110, -42

تعديلات 4.3

dll 32 بت

العنوان: 10009FBB

6A 00 يُعدَّل إلى 6A 09 (عدّل 00 إلى أي قيمة)

image-20211111165257545

dll 64 بت

العنوان: 000000001800186C3

التعليمة داخل beacon.x64.dll هي xor edx, edx، عدّلها إلى mov edx, esi

image-20211111165321033

تعديلات 4.4

dll 32 بت

العنوان: 1000A0B9

6A 00 يُعدَّل إلى 6A 09 (عدّل 00 إلى أي قيمة)

image-20211112104322791

dll 64 بت

العنوان: 000000018001879B

التعليمة داخل beacon.x64.dll هي xor edx, edx، عدّلها إلى mov edx, esi

image-20211112105408975

أعد التشفير باستخدام: java -classpath cobaltstrike.jar;./ CrackSleeve encode

image-20211111173148579

image-20211112124415835

تعديلات 4.5

dll 32 بت

العنوان: 1000A65D

image-20220609144218351

dll 64 بت

العنوان: 000000018000CA3F

image-20220609160825342

(الإصدار 4.5 أضاف بعض ملفات rl100k.dll التي تحتاج أيضًا إلى تعديل)

إصلاح تسريب stage عبر المسار الخاطئ في cs

المصدر: https://mp.weixin.qq.com/s?__biz=Mzg2NjQ2NzU3Ng==&mid=2247489846&idx=1&sn=181c223cab4bce4e06def94604166348&chksm=ce4b32a1f93cbbb70e63e589d0da6323a8d2d4539c8aa0ef57d4005976dda6d73caeddebcac3&mpshare=1&scene=1&srcid=0308x6zXAxyDR8lv27V2O9yn&sharer_sharetime=1647358883801&sharer_shareid=15e69d4f532774f3e596a31efa4ef72b#rd

image-20220330111308258

الطريقة هي ببساطة إضافة فحص / إلى uri، وإذا لم يبدأ بـ / فسيتم الرد بـ 404:

تعديل 4.4

image-20220330111413985

تعديل 4.3

image-20220330125957143

إضافة تشفير اسم المستخدم للعرض

لتجنب تسريب كلمة مرور totp أو اسم الدخول إلى cs في سجل الأحداث (Event Log)، يتم عرض حقل name باستخدام MD5 مع إضافة ملح (salt)، وبعد التعديل يكون كما يلي:

image-20220330112745362

إضافة التحقق TOTP

تمت إضافة التحقق ثنائي العوامل TOTP لتعزيز تسجيل الدخول ومنع سرقة كلمات المرور عبر التخمين (Brute Force).

في جانب teamserver، تمت إضافة رابط رمز QR خاص بـ totp في مخرجات teamserver:

image-20220407112543322

(قبل حذف nohup.out تذكر نسخ رمز QR، فكل تشغيل لـ teamserver يولّد رمز QR جديدًا، لذا تحتاج في كل مرة تشغيل لـ teamserver إلى إعادة مسح الرمز)

افتحه في المتصفح (يتطلب VPN/وكيل) واستخدم Google Authenticator أو تطبيق TOTP لمسح رمز QR، أو انسخ المفتاح بعد secret%3D وقم بتكوينه في تطبيق المصادقة أيضًا:

image-20220407112054716

في جانب connect، تبقى host وport وpassword كما كانت سابقًا، وفي user، آخر ستة أرقام هي الأرقام الديناميكية لـ totp ويمكن الاتصال:

image-20220407111813265

سيظهر تنبيه إذا لم يتم إدخال الأرقام الديناميكية لـ totp أو تم إدخالها بشكل خاطئ:

image-20220407113709140

ملاحظة: في بعض الأحيان لا يتوفر هاتف محمول، يمكنك استخدام إضافة متصفح بوظيفة totp أو كتابة سكربت totp بسيط بلغة بايثون.

إصلاح خطأ اشتقاق foreign في cs4.5

عند استخدام windows/foreign/reverse_http(s) لعملية spawn تظهر رسالة خطأ كما يلي:

image-20220827183854784

هذا الإصدار أضاف عمليات getScalar الخاصة بـ Custom في ScListener، لكنه لم يراعِ حالة foreign، مما يؤدي إلى خطأ لأن var1.customDLL وcustomFileName فارغان:

image-20220827184042529

طريقة الإصلاح المؤقتة هي إرجاع الـ shellcode مباشرة عند الحكم على أن الـ payload هو foreign، وإذا كانت هناك أخطاء أخرى في هذه الطريقة يمكنك تقديم ملاحظات عبر issues:

image-20220827190844595

بعد الإصلاح يمكن استخدامه بشكل طبيعي:

image-20220827190954960

تعديل اسم ملف إعدادات عميل cs

لمنع قراءة الإعدادات بواسطة قاعدة بيانات MySQL الخادعة (Honeypot)، لم يعد اسم ملف إعدادات عميل cs هو الاسم الافتراضي، بل يتم إنشاء اسم ملف مكوّن من 11 حرفًا (11 حرفًا من MD5 لعنوان MAC).

image-20220827191056012

تنزيل الأداة