Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
impostor — خادم SMB1 لاعتراض تجزئة NTLMv2، مكتوب بلغة C. | Kitploit
أدوات/GitHubGitHub/lcky00/impostor
هجمات كلمات المرورالاستغلالأمن الشبكاتاختبار الاختراقالتعلم والتعليمالفريق الأحمر
GitHublcky00/impostor

impostor

خادم SMB1 لاعتراض تجزئة NTLMv2، مكتوب بلغة C.

عرض المستودع
414منذ 7 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Impostor

خادم SMB1 لاعتراض تجزئات NTLMv2، مكتوب بلغة C.

الهدف من المشروع هو تنفيذ خادم SMB1 كآلة حالة تستقبل طلبات العملاء وتستجيب لها بشكل صحيح من أجل خداعهم، مما يدفعهم إلى إكمال مصادقة NTLM وبالتالي كشف تجزئة NTLMv2 الخاصة بهم (بتنسيق متوافق مع hashcat/john).

أداة مخصصة لأنشطة الأمن الهجومي/الفرق الحمراء ولأغراض تعليمية (دراسة بروتوكول SMB1/NTLM)، ليتم استخدامها حصريًا في بيئات مصرح بها تمتلكها أو بموافقة صريحة.

كيف يعمل

يتظاهر الخادم بأنه خادم SMB1 شرعي ويوجه العميل عبر آلة حالة من 3 مراحل:

مخطط آلة الحالة

الحالةالانتقال
1. NEGOTIATEإذا وصل SMB NEGOTIATE، بعد استجابة الخادم تنتقل الحالة إلى 2. CHALLENGE
2. CHALLENGEإذا وصل NTLM_NEGOTIATE، بعد استجابة الخادم تنتقل الحالة إلى 3. AUTH
3. AUTHإذا وصل NTLM_AUTH، بعد استجابة الخادم تعود الحالة إلى 1. NEGOTIATE

على مستوى التنفيذ، يجب مراعاة "الغلاف" الخارجي لـ NetBIOS، المكون من 4 بايتات، آخر 3 منها تشير إلى طول حزمة SMB بالبايتات.

يتم تتبع كل اتصال عميل عبر بنية حالة (client_t في server.h) والتي، بالإضافة إلى حالة آلة الحالة، تحتفظ بـ:

  • مخزن استقبال (rx_buf) مع طوله، لتخزين البيانات المقروءة من المقبس ولكن لم تتم معالجتها بالكامل بعد؛
  • مخزن إرسال (tx_buf، مع إزاحة tx_off) لتخزين البيانات المراد إرسالها إلى العميل ولكن لم يتم نقلها بالكامل بعد؛
  • الحقلين netbios_header_recv و netbios_msg_len لتتبع رأس NetBIOS.

عند استلام البيانات، يتم التحقق من استلام 4 بايتات على الأقل (رأس NetBIOS)، ويتم تحديد طول رسالة SMB، وتحديث حقول الحالة، وأخيرًا تتم معالجة الرسالة، مع تحديث حالة العميل للاستقبال التالي.

تعتمد الحلقة الرئيسية للخادم على poll() للتعامل مع اتصالات متعددة في وقت واحد بطريقة غير محظورة:

فكرة الحلقة الرئيسية للاستقبال

عند اكتمال مصادقة NTLM، يطبع الخادم على الشاشة ([INTERCEPTED] ...) اسم المستخدم، واسم المضيف، والمجال، وتجزئة NTLMv2 الملتقطة، بالتنسيق:

root@kitploit:~
username::domain:server_challenge:ntlmv2_response:blob

جاهزة للاستخدام مع أدوات كسر التجزئات مثل hashcat (الوضع -m 5600) أو john.

بنية المشروع

المتطلبات

  • مترجم C متوافق مع المعيار المستخدم في المشروع (مثل gcc/clang) وأدوات POSIX (الكود يستخدم مقابس BSD، poll()، signal()، إلخ، لذا فهو مخصص لبيئات Linux/Unix-like).

الترجمة (البناء)

يتم تضمين Makefile:

root@kitploit:~
make            # بناء الخادم الرئيسي -> ./impostor
make debug      # بناء للتصحيح (رموز، -O0، AddressSanitizer/UBSan)
make clean      # إزالة ملفات الكائنات والملفات التنفيذية المولدة
make run        # بناء وتشغيل الخادم

بدلاً من ذلك، أمر الترجمة اليدوي المكافئ هو:

root@kitploit:~
gcc -o impostor server.c smb1_parser.c spnego_decoder.c asn1_parser.c ntlm_parser.c

الاستخدام

root@kitploit:~
./impostor [port]
  • port (اختياري): منفذ TCP الذي يستمع عليه الخادم. إذا تم حذفه، يتم استخدام المنفذ الافتراضي المعرّف في server.h (SERVER_PORT، 9000). يجب أن تكون القيمة بين 1 و 65535.

عند بدء التشغيل، يطبع الخادم لافتة وإصدارًا ومعلومات التكوين (المنفذ، الحد الأقصى لعدد العملاء)، ثم يبقى يستمع للاتصالات. عند التقاط تجزئة NTLMv2، تتم طباعة البيانات المعترضة (اسم المستخدم، اسم المضيف، المجال، التجزئة) على الشاشة. يمكن إيقاف الخادم باستخدام Ctrl+C (SIGINT)، الذي يتم التعامل معه بواسطة intHandler.

root@kitploit:~
 ___                  ___      _    ___        
|_ _|_ __ ___  _ __  / _ \ ___| |_ / _ \ _ __  
 | || '_ ` _ \| '_ \| | | / __| __| | | | '__| 
 | || | | | | | |_) | |_| \__ \ |_| |_| | |    
|___|_| |_| |_| .__/ \___/|___/\__|\___/|_|    
              |_| (v.1.0)             by Lcky  


[*] Version: 1.0
[*] Author: Lcky <luca9vinci at gmail dot com>

[*] Server Info
    Port: 9090
    Max Clients: 50


[*] Listening on port 9090
[*] Waiting for connections...

[INTERCEPTED] Username: test
[INTERCEPTED] Hostname: KALILINUX-2023-02
[INTERCEPTED] Domain  : WORKGROUP
[INTERCEPTED] Hash    : test::WORKGROUP:c4ba87a265de9e09:3482d0efa64fc09a94e44faa83d2a936:01010000000000009A3DE84B6235DD01D36FD06DFF4D64BB000000000200080038004E004900490001001E00570049004E002D00310046005800340055004D005000530034005400420004003400570049004E002D00310046005800340055004D00500053003400540042002E0038004E00490049002E004C004F00430041004C000300140038004E00490049002E004C004F00430041004C000500140038004E00490049002E004C004F00430041004C0008003000300000000000000000000000000000000CAFEB574B56CB6139E261228FBFE3075B4FA9393A3B71031AF3280F4D5A27D00A0010000000000000000000000000000000000009001C0063006900660073002F003100320037002E0030002E0030002E00310000000000
^C
[*] Stopping the server...
تنزيل الأداة
الملفالوصف
server.c / server.hنقطة الدخول، إعداد مستمع TCP، آلة حالة العميل، الحلقة الرئيسية القائمة على poll()، تخزين RX/TX المؤقت، طباعة التجزئات المعترضة
smb1_parser.c / smb1_parser.hتحليل/بناء حزم SMB1 (الرأس، أوامر NEGOTIATE، SESSION_SETUP، الأعلام/flags2، إلخ.)
spnego_decoder.c / spnego_decoder.hفك ترميز رمز SPNEGO (التفاوض على آلية المصادقة، استخراج كتلة NTLMSSP) الموجودة في رسائل SMB
asn1_parser.c / asn1_parser.hمحلل ASN.1 DER بسيط، يستخدمه مفكك SPNEGO لبناء شجرة بنية ASN.1
ntlm_parser.c / ntlm_parser.hتحليل رسائل NTLMSSP (NEGOTIATE، CHALLENGE، AUTHENTICATE) واستخراج اسم المستخدم والمجال واسم المضيف واستجابة NTLMv2
endianness.hأداة للتعامل مع ترتيب البايتات (تحويلات little/big endian في وقت التشغيل)
test.c, test2.cملفات اختبار/تجربة للمحللات
docs/الرسوم البيانية والمواد الداعمة (مخطط آلة الحالة، الحلقة الرئيسية)