
شيل WinRM أصلي بلغة Nim مع NTLM وKerberos ونقل الملفات وأدوات مساعدة في الذاكرة وتقارير AD/OPSEC
عميل WinRM shell أصلي مكتوب بلغة Nim
الإصدار 1.2.0 · المؤلف Chokri Hammedi (blue0x1) · الترخيص MIT
nimrm مخصص للإدارة القانونية واختبار الأمان والبحث على الأنظمة التي تملكها أو لديك إذن صريح بالوصول إليها. المؤلف غير مسؤول عن سوء الاستخدام أو الأضرار الناتجة عن هذه الأداة.
يوفر nimrm واجهة WinRM shell مدمجة وسريعة مع مساعدات عملية للمصادقة وتنفيذ الأوامر والنقل وإعداد التقارير. تم بناؤه كملف تنفيذي أصلي بلغة Nim بدون أي تبعيات لحزم Nim.
| المجال | الدعم |
|---|---|
| المصادقة | كلمة مرور NTLM، تجزئة NTLM، Kerberos عبر KRB5CCNAME |
| نقل WinRM | HTTP، HTTPS/TLS، منفذ مخصص |
| Shell | PowerShell تفاعلي، بادئة CMD، وضع الأمر الواحد، إكمال تلقائي للأوامر والمسارات المحلية |
| النقل | رفع/تنزيل الملفات، نقل المجلدات بشكل تكراري، تمرير الملفات والمجلدات بين الجلسات عن بُعد |
| في الذاكرة | استيراد سكربت PowerShell، تنفيذ تجميعات .NET المُدارة |
| التقارير | سياق AD/النطاق، وضع التسجيل والتدقيق |
| الموثوقية | تغليف رسائل Kerberos، معالجة إعادة تعيين/إعادة محاولة النقل |
| المكوّن | المتطلب |
|---|---|
| البناء | Nim >= 1.6.0 |
| Kerberos | libgssapi_krb5.so.2 على Linux أو libgssapi_krb5.dylib على macOS |
| بناء TLS | OpenSSL و -d:ssl |
| الهدف | إمكانية الوصول إلى WinRM على المنفذ المحدد |
Nimble:
nimble install nimrm
تنزيل أحدث إصدار:
curl -L -o nimrm https://github.com/blue0x1/nimrm/releases/latest/download/nimrm
chmod +x nimrm
ملف Windows التنفيذي للإصدار:
Invoke-WebRequest -Uri https://github.com/blue0x1/nimrm/releases/latest/download/nimrm.exe -OutFile nimrm.exe
حزمة Debian:
curl -L -o nimrm_1.2.0_amd64.deb https://github.com/blue0x1/nimrm/releases/latest/download/nimrm_1.2.0_amd64.deb
sudo dpkg -i nimrm_1.2.0_amd64.deb
BlackArch:
sudo pacman -S nimrm
يتتبع PKGBUILD الخاص بـ BlackArch أحدث commit في المستودع الأصلي، لذا تصل الإصدارات الجديدة إلى مستخدمي BlackArch عند تحديث النظام التالي. إذا كان nimrm مثبتًا بالفعل، قم بترقيته باستخدام:
sudo pacman -Syu nimrm
البناء من المصدر:
git clone https://github.com/blue0x1/nimrm.git
cd nimrm
make linux
make linux
make ssl
make windows
يبني هدف Windows ملفًا تنفيذيًا واحدًا مكتفيًا بذاته قادرًا على SSL في dist/windows/nimrm.exe. المشغّل مكتوب بلغة Nim ويضمّن نواة WinRM المُنشأة بالإضافة إلى مكتبات DLL المطلوبة من vendor/windows-runtime/، ويستخرجها إلى مجلد تشغيل مؤقت عند التنفيذ، ثم يشغّل النواة بنفس الوسائط. يدعم هذا WinRM عبر HTTP العادي ما لم يتم تمرير --tls / --ssl، وWinRM عبر HTTPS عند تمكين TLS. يستخدم وقت تشغيل OpenSSL المضمّن:
libssl-3-x64.dll
libcrypto-3-x64.dll
يتم تحميل وضع Kerberos (-k / --kerb) بشكل كسول على Windows بحيث يمكن للملف التنفيذي البدء حتى عند عدم استخدام Kerberos. يضمّن بناء Windows وقت تشغيل MIT Kerberos/GSSAPI المستخدم في وضع Kerberos.
البناء اليدوي:
nim c -d:release --opt:speed -o:nimrm nimrm.nim
صُمم nimrm ليبقى سريعًا باستخدام ملف تنفيذي أصلي بلغة Nim، وrunspace WinRM دائم، ومنطق نقل مجزأ، وعرض تقدم مدمج.
| العملية | التنفيذ |
|---|---|
| الرفع | كتابات Base64 مجزأة مع إعادة محاولة تكيفية للمغلفات الكبيرة |
| التنزيل | أجزاء Base64 متدفقة مع تتبع التقدم ومسار سريع للملفات الصغيرة |
| تمرير الجلسات عن بُعد | القراءة من جلسة WinRM والكتابة إلى أخرى عبر ذاكرة المتحكم دون كتابة الملف على القرص المحلي |
| نقل المجلدات | تعداد الملفات بشكل تكراري باستخدام نفس مسار النقل المجزأ |
| تنفيذ الأوامر | إعادة استخدام shell/runspace WinRM النشط بدلاً من إعادة الاتصال لكل أمر |
كلمة مرور NTLM:
./nimrm -T 192.168.1.10 -A 'CORP\administrator' -P 'Password123'
NTLM pass-the-hash:
./nimrm -T 192.168.1.10 -A 'CORP\user' -N aad3b435b51404eeaad3b435b51404ee:0123456789abcdef0123456789abcdef
Kerberos:
KRB5CCNAME=FILE:/tmp/user.ccache ./nimrm -k -T dc01.corp.local -Z CORP.LOCAL
فرض تشفير رسائل NTLM عبر HTTP:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' --seal
منفذ مخصص:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' -p 5985
أمر واحد:
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' -c 'whoami'
تخطي التحقق من شهادة TLS (الشهادات الموقعة ذاتيًا):
./nimrm -T 192.168.1.10 -A 'CORP\user' -P 'Password123' --tls --insecure
| الخيار | الوصف |
|---|---|
-T, --target | عنوان IP أو اسم المضيف الهدف |
-A, --account | اسم المستخدم: user، user@domain، أو DOMAIN\user |
-P, --secret | كلمة مرور NTLM |
-p, --port | منفذ WinRM |
-N, --nt-proof | تجزئة NT أو تجزئة LM:NT |
-Z, --krb-zone | تجاوز نطاق Kerberos |
-K, --kerb-spn | تجاوز SPN الخاص بـ Kerberos |
-k, --kerb | استخدام مصادقة Kerberos |
-c, --command | تنفيذ أمر واحد والخروج |
--tls | استخدام HTTPS/TLS |
--insecure | تخطي التحقق من شهادة TLS |
-h, --help | عرض المساعدة |