
شيل WinRM أصلي بلغة Nim مع NTLM وKerberos ونقل الملفات وأدوات مساعدة في الذاكرة وتقارير AD/OPSEC
عميل قشرة WinRM أصلي مكتوب بلغة Nim
الإصدار 1.2.0 · المؤلف Chokri Hammedi (blue0x1) · الترخيص MIT
nimrm مخصص للإدارة القانونية واختبار الأمان والبحث على الأنظمة التي تملكها أو لديك إذن صريح بالوصول إليها. المؤلف غير مسؤول عن سوء الاستخدام أو الأضرار الناجمة عن هذه الأداة.
يوفر nimrm قشرة WinRM مدمجة وسريعة مع أدوات عملية للمصادقة وتنفيذ الأوامر والنقل وإعداد التقارير. وهو مبنٍ كملف ثنائي Nim أصلي دون أي تبعيات لحزم Nim.
| المجال | الدعم |
|---|---|
| المصادقة | كلمة مرور NTLM، تجزئة NTLM، Kerberos عبر KRB5CCNAME |
| نقل WinRM | HTTP، HTTPS/TLS، منفذ مخصص |
| القشرة | 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 أحدث التزام في مستودع المصدر، لذلك تصل الإصدارات الجديدة إلى مستخدمي BlackArch عند تحديث نظامهم التالي. إذا كان nimrm مثبتًا بالفعل، فقم بترقيته باستخدام:
sudo pacman -Syu nimrm
البناء من المصدر:
git clone https://github.com/blue0x1/nimrm.git
cd nimrm
make linux
make linux
make ssl
make windows
بناء يدوي:
nim c -d:release --opt:speed -o:nimrm nimrm.nim
تم تصميم nimrm ليبقى سريعًا باستخدام ملف ثنائي Nim أصلي، ومساحة تشغيل WinRM دائمة، ومنطق نقل مجزأ، وعرض تقدم مدمج.
| العملية | التنفيذ |
|---|---|
| الرفع | كتابات Base64 مجزأة مع إعادة محاولة تكيفية للأظرف الكبيرة |
| التنزيل | أجزاء Base64 متدفقة مع تتبع التقدم ومسار سريع للملفات الصغيرة |
| ترحيل الجلسة البعيدة | يقرأ من جلسة WinRM ويكتب إلى أخرى عبر ذاكرة المتحكم دون كتابة الملف على القرص المحلي |
| نقل الدلائل | تعداد تكراري للملفات باستخدام مسار النقل المجزأ نفسه |
| تنفيذ الأوامر | يعيد استخدام قشرة/مساحة تشغيل 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 | إظهار المساعدة |
| الأمر | الوصف |
|---|---|
/help | إظهار المساعدة |
exit, quit | إغلاق القشرة |
!<cmd> | التشغيل عبر cmd.exe |
upload <local> [remote] | رفع ملف واحد |
download <remote> [local] | تنزيل ملف واحد |
rupload <remote> <session> [dest] | نسخ ملف بعيد من الجلسة النشطة إلى جلسة أخرى عبر الذاكرة |
rdownload <session> <remote> [dest] | نسخ ملف بعيد من جلسة أخرى إلى الجلسة النشطة عبر الذاكرة |
rupload-dir <remote> <session> [dest] | نسخ دليل بعيد من الجلسة النشطة إلى جلسة أخرى عبر الذاكرة |
rdownload-dir <session> <remote> [dest] | نسخ دليل بعيد من جلسة أخرى إلى الجلسة النشطة عبر الذاكرة |
upload-dir <local> [remote] | رفع دليل |
download-dir <remote> [local] | تنزيل دليل |
invoke-script <ps1> [args] | استيراد PowerShell محلي من الذاكرة |
execute-assembly <exe> [args] | تشغيل .NET مُدار من الذاكرة |
ad-info | إظهار سياق AD/النطاق |
opsec-check | إظهار وضع تسجيل السجلات والتدقيق |
sessions | سرد جميع الجلسات النشطة |
session <opts> | إنشاء جلسة جديدة |
use <name|id> | التبديل إلى جلسة |
kill <name|id> | إغلاق وإزالة جلسة |
يدعم nimrm جلسات WinRM متعددة ومتزامنة. يمكنك التنقل بين مضيفين ومستخدمين مختلفين دون مغادرة القشرة.
إنشاء جلسة جديدة من داخل جلسة حالية:
PS C:\Users\Administrator> session -T 10.0.0.5 -A 'CORP\user2' -P 'Pass123'
PS C:\Users\Administrator> session -T dc02.corp.local -A [email protected] -N aad3b435:0123456789abcdef -n dc02
PS C:\Users\Administrator> session -T dc03.corp.local -k -Z CORP.LOCAL -n dc03
سرد الجلسات النشطة:
PS C:\Users\Administrator> sessions