
أداة لتنفيذ هجوم تخمين خفيف على خوادم HTTP لتحديد نقاط نهاية مصادقة NTLM التي يمكن الوصول إليها بشكل شائع.
NTLMRecon هو نسخة بلغة Golang من الأداة الأصلية NTLMRecon التي كتبها Sachin Kamath (المعروف أيضًا باسم pwnfoo). يمكن استخدام NTLMRecon لإجراء هجمات تخمينية ضد خادم ويب مستهدف لتحديد نقاط النهاية الشائعة للتطبيقات التي تدعم مصادقة NTLM. يتضمن ذلك نقاط النهاية مثل نقطة نهاية Exchange Web Services التي يمكن غالبًا استغلالها لتجاوز المصادقة متعددة العوامل.
تدعم الأداة جمع البيانات الوصفية من نقاط نهاية مصادقة NTLM المكشوفة بما في ذلك معلومات حول اسم الكمبيوتر، واسم مجال Active Directory، واسم غابة Active Directory. يمكن الحصول على هذه المعلومات دون مصادقة مسبقة عن طريق إرسال حزمة NTLM NEGOTIATE_MESSAGE إلى الخادم وفحص رسالة NTLM CHALLENGE_MESSAGE التي يعيدها الخادم المستهدف. لقد نشرنا أيضًا تدوينة بجانب هذه الأداة تناقش بعض الدوافع وراء تطويرها وكيفية تعاملنا مع جمع البيانات الوصفية الأكثر تقدمًا داخل Chariot.
أردنا إجراء التخمين والتحديد الآلي لنقاط نهاية مصادقة NTLM المكشوفة داخل Chariot، وهي منصتنا لإدارة سطح الهجوم الخارجي والاختراق الآلي المستمر للفريق الأحمر. البنية التحتية الأساسية للمسح الخلفي لدينا مكتوبة بلغة Golang ولم نرغب في تحميل وتشغيل أداة NTLMRecon بلغة Python لجمع هذه المعلومات. كما أردنا مزيدًا من التحكم في مستوى تفاصيل المعلومات التي نجمعها، إلخ.
يمكن استخدام الأمر التالي لتثبيت أداة NTLMRecon. بدلاً من ذلك، يمكنك تنزيل نسخة مُجمَّعة مسبقًا من الثنائي من علامة التبويب Releases في GitHub.
go install github.com/praetorian-inc/NTLMRecon/cmd/NTLMRecon@latest
يمكن استخدام الأمر التالي لاستدعاء أداة كشف NTLM واكتشاف نقاط نهاية مصادقة NTLM المكشوفة:
NTLMRecon -t https://autodiscover.contoso.com
يمكن استخدام الأمر التالي لاستدعاء أداة كشف NTLM واكتشاف نقاط نهاية NTLM مع إخراج البيانات الوصفية المجمعة بتنسيق JSON:
NTLMRecon -t https://autodiscover.contoso.com -o json
يمكن استخدام الأمر التالي لتحديد عنوان Host مخصص عند اختبار نقاط النهاية التي تتطلب ذلك:
NTLMRecon -t https://192.168.1.100 -H mail.contoso.com
يمكن استخدام الأمر التالي لتمكين إخراج التصحيح لاستكشاف الأخطاء وإصلاحها:
NTLMRecon -t https://autodiscover.contoso.com -debug
فيما يلي مثال على إخراج JSON مع البيانات التي نجمعها من رسالة NTLM CHALLENGE_MESSAGE التي يعيدها الخادم:
{
"url": "https://autodiscover.contoso.com/EWS/",
"ntlm": {
"netbiosComputerName": "MSEXCH1",
"netbiosDomainName": "CONTOSO",
"dnsDomainName": "na.contoso.local",
"dnsComputerName": "msexch1.na.contoso.local",
"forestName": "contoso.local"
}
}
➜ ~ NTLMRecon -t https://adfs.contoso.com -o json | jq
{
"url": "https://adfs.contoso.com/adfs/services/trust/2005/windowstransport",
"ntlm": {
"netbiosComputerName": "MSFED1",
"netbiosDomainName": "CONTOSO",
"dnsDomainName": "corp.contoso.com",
"dnsComputerName": "MSEXCH1.corp.contoso.com",
"forestName": "contoso.com"
}
}
➜ ~ NTLMRecon -t https://autodiscover.contoso.com
https://autodiscover.contoso.com/Autodiscover
https://autodiscover.contoso.com/Autodiscover/AutodiscoverService.svc/root
https://autodiscover.contoso.com/Autodiscover/Autodiscover.xml
https://autodiscover.contoso.com/EWS/
https://autodiscover.contoso.com/OAB/
https://autodiscover.contoso.com/Rpc/
➜ ~
استهدفت منهجيتنا عند تطوير هذه الأداة أبسط نسخة أساسية من الإمكانية المطلوبة للإصدار الأولي. كان الهدف من هذا المشروع هو إنشاء أداة أولية يمكننا دمجها في Chariot ثم السماح للمساهمات المجتمعية والملاحظات بتوجيه تحسينات الأداة أو وظائفها الإضافية. فيما يلي بعض الأفكار لوظائف إضافية يمكن إضافتها إلى NTLMRecon:
[1] https://www.praetorian.com/blog/automating-the-discovery-of-ntlm-authentication-endpoints/