
أداة اختراق C2 خفيفة من المرحلة الأولى مكتوبة بلغة Nim (وRust).
بواسطة Cas van Cooten (@chvancooten)، مع شكر خاص لبعض الأشخاص الرائعين:
كادير ياماموتو (@yamakadi)، فوركان غوكسل (@frkngksl)، فابيان موش (@S3cur3Th1sSh1t)، رافايل فيليكس (@b1scoito)، غيوم كاييه (@OffenseTeacher)، وآخرون كثيرون!
إذا كان NimPlant مفيدًا لك و/أو أعجبك عملي بشكل عام، فإن دعمك مرحب به جدًا:
inline-execute، shinject (باستخدام الاستدعاء الديناميكي)، powershell في مساحة تشغيل مخصصة، أو في الخيط execute-assemblyمطلوب إصدار حديث من Python3 لتشغيل Nimplant.
requirements.txt من مجلد الخادم (pip3 install -r server/requirements.txt).choosenim، لأن apt لا يحتوي دائمًا على أحدث إصدار).cd client; nimble install -d).mingw لنظامك الأساسي (brew install mingw-w64 أو apt install mingw-w64).rustup).rustup target add x86_64-pc-windows-gnu.~/.cargo/config.toml الخاص بك وفقًا لـ Cargo.toml واستخدم سلسلة البناء الليلية (rustup default nightly).ملاحظة: حتى إذا كنت تقوم بالتجميع على Windows، فإن الهدف
x86_64-pc-windows-gnuموصى به. ينتج عنه ملفات ثنائية أكبر قليلاً، ولكنه يبدو أكثر استقرارًا عند إنشاء shellcode من مكتبة DLL الناتجة. يمكنك تعديلrust-toolchain.tomlلتغيير الهدف إلىx86_64-pc-windows-msvc، ولكن قد لا يعمل shellcode الناتج بشكل صحيح في جميع الحالات.
قبل استخدام NimPlant، قم بإنشاء ملف التكوين config.toml. يوصى بنسخ config.toml.example والعمل منه.
فيما يلي نظرة عامة على الإعدادات.
| الفئة | الإعداد | الوصف |
|---|---|---|
| server | ip | عنوان IP الذي سيستمع عليه خادم الويب C2 (بما في ذلك API). يوصى باستخدام 127.0.0.1، استخدم 0.0.0.0 فقط عند إعداد قواعد جدار الحماية أو التوجيه المناسبة لحماية C2. |
| server | port | المنفذ الذي سيستمع عليه خادم الويب C2 (بما في ذلك API). |
| listener | type | نوع المستمع، إما HTTP أو HTTPS. يتم تكوين خيارات HTTPS أدناه. |
| listener | sslCertPath | المسار المحلي لملف شهادة HTTPS (مثل المطلوب عبر LetsEncrypt CertBot أو الموقع ذاتيًا). يتم تجاهله عندما يكون نوع المستمع 'HTTP'. |
| listener | sslKeyPath | المسار المحلي لملف المفتاح الخاص لشهادة HTTPS المقابلة. سيُطلب كلمة المرور عند تشغيل خادم NimPlant إذا تم تعيينه. يتم تجاهله عندما يكون نوع المستمع 'HTTP'. |
| listener | hostname | اسم المضيف للمستمع. إذا لم يكن فارغًا (""), سيستخدم NimPlant اسم المضيف هذا للاتصال. تأكد من توجيه حركة المرور بشكل صحيح من هذا المضيف إلى منفذ مستمع NimPlant. |
| listener | ip | عنوان IP للمستمع. مطلوب حتى إذا تم تعيين 'hostname'، حيث يتم استخدامه بواسطة الخادم للتسجيل على عنوان IP هذا. |
| listener | port | منفذ المستمع. مطلوب حتى إذا تم تعيين 'hostname'، حيث يتم استخدامه بواسطة الخادم للتسجيل على هذا المنفذ. |
| listener | registerPath | مسار URI الذي ستسجل به NimPlants الجديدة. |
| listener | taskPath | مسار URI الذي ستحصل منه NimPlants على المهام. |
| listener | resultPath | مسار URI الذي ستقدم إليه NimPlants النتائج. |
| nimplant | riskyMode | تجميع NimPlant مع دعم الأوامر المحفوفة بالمخاطر. يُنصح بتقدير المشغل. تعطيل هذا سيزيل دعم execute-assembly، powershell، shell و shinject. |
| nimplant | sleepMask | ما إذا كان سيتم استخدام قناع النوم Ekko بدلاً من استدعاءات النوم العادية لـ Nimplants. يعمل فقط مع البرامج القابلة للتنفيذ العادية حاليًا! |
| nimplant | sleepTime | وقت النوم الافتراضي بالثواني لـ NimPlants الجديدة. |
| nimplant | sleepJitter | الاهتزاز الافتراضي بالنسبة المئوية لـ NimPlants الجديدة. |
| nimplant | killDate | تاريخ الإيقاف لـ Nimplants (التنسيق: yyyy-MM-dd). ستخرج Nimplants إذا مر هذا التاريخ. |
| nimplant | userAgent | وكيل المستخدم الذي تستخدمه NimPlants. يستخدمه الخادم أيضًا للتحقق من حركة مرور NimPlant، لذا يوصى باختيار وكيل مستخدم غير لافت للنظر، ولكن ليس شائعًا جدًا. |