
تمرير التجزئة إلى أنبوب مسمى لانتحال التوكن
هذا المشروع هو كود إثبات مفهوم (PoC) لاستخدام Pass-the-Hash للمصادقة على انتحال هوية مستخدم Named Pipe المحلي. يوجد أيضًا منشور مدونة للشرح:
https://s3cur3th1ssh1t.github.io/Named-Pipe-PTH/
إنه مبني بشكل كبير على كود المشاريع Invoke-SMBExec.ps1 و RoguePotato.
لقد واجهت في الماضي مواقف معينة في مشاريع الأمن الهجومي، حيث كنت أمتلك بالفعل تجزئة NTLM لحساب مستخدم منخفض الامتياز واحتجت إلى شل لذلك المستخدم على النظام المخترق الحالي - لكن ذلك لم يكن ممكنًا باستخدام الأدوات العامة الحالية. تخيل حقيقتين إضافيتين لمثل هذا الموقف - لم يكن من الممكن كسر تجزئة NTLM ولم تكن هناك عملية للمستخدم الضحية لتنفيذ شيل كود فيها أو للانتقال إلى تلك العملية. قد يبدو هذا كحالة حافة سخيفة للبعض منكم. لكنني واجهت ذلك عدة مرات. ليس فقط في مهمة واحدة، بل قضيت الكثير من الوقت في البحث عن الأداة/التقنية المناسبة في تلك الحالة المحددة.
كانت أهدافي الشخصية للأداة/التقنية:
منخفضة الامتياز - اعتمادًا على أهداف المهمة، قد يكون من الضروري الوصول إلى نظام باستخدام مستخدم معين مثل الرئيس التنفيذي، حسابات الموارد البشرية، مسؤولي SAP أو غيرهمالمستخدم المنتحَل لسوء الحظ ليس لديه مصادقة شبكة مسموح بها، لأن العملية الجديدة تستخدم رمز انتحال مقيد. لذا يمكنك استخدام هذه التقنية فقط للإجراءات المحلية مع مستخدم آخر.
هناك طريقتان لاستخدام هذه التقنية. إما يمكنك تجميع \Resources\PipeServerImpersonate.sln وإسقاط الملف التنفيذي على المضيف البعيد والاتصال بـ Named Pipe عبر \Resources\Invoke-NamedPipePTH.ps1:
أو يمكنك استخدام السكريبت المستقل للبقاء في الذاكرة:
إذا كنت لا تريد إسقاط ملف ثنائي للتنفيذ، فقط قم بتمرير الوسائط للثنائيات الأصلية في Windows مثل Powershell
Invoke-ImpersonateUser-PTH -Username USERNAME -Hash NTLMHASH -Domain DOMAIN -PipeName mypipe -binary "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" -argument "-nop -w 1 -sta -enc BASEBLOB"