
أداة تحليل الشبكات
BruteShark هي أداة تحليل الأدلة الجنائية للشبكات (NFAT) تقوم بمعالجة وفحص عميق لحركة مرور الشبكة (بشكل أساسي ملفات PCAP، ولكنها قادرة أيضًا على الالتقاط المباشر من واجهة شبكة). تشمل: استخراج كلمات المرور، بناء خريطة للشبكة، إعادة بناء جلسات TCP، استخراج تجزئات كلمات المرور المشفرة وحتى تحويلها إلى صيغة Hashcat من أجل تنفيذ هجوم قوة غاشمة (Brute Force) دون اتصال.
الهدف الرئيسي للمشروع هو توفير حل لباحثي الأمن ومسؤولي الشبكات في مهمة تحليل حركة مرور الشبكة بينما يحاولون تحديد نقاط الضعف التي يمكن أن يستغلها مهاجم محتمل للوصول إلى نقاط حرجة على الشبكة.
يتوفر إصداران من BruteShark: تطبيق بواجهة رسومية (ويندوز) وأداة بواجهة سطر أوامر (ويندوز ولينكس).
يمكن أيضًا استخدام المشاريع المختلفة في الحل بشكل مستقل كبنية تحتية لتحليل حركة مرور الشبكة على أجهزة لينكس أو ويندوز. لمزيد من التفاصيل، انظر قسم البنية المعمارية.
طُوّر المشروع في وقت فراغي لمعالجة شغفين رئيسيين لديّ: هندسة البرمجيات وتحليل بيانات الشبكة.
أحب تلقي الملاحظات من مستخدمي BruteShark، رأيكم مهم بالنسبة لي! لا تتردد في التواصل معي على [email protected] أو إنشاء مشكلة جديدة.
يرجى ⭐️ هذا المستودع إذا كان هذا المشروع قد ساعدك!
wget https://github.com/odedshimon/BruteShark/releases/latest/download/BruteSharkCli
./BruteSharkCli
بناء خريطة شبكة
https://user-images.githubusercontent.com/18364847/131922221-5714f351-85f7-4490-bec9-8da4339b66b3.mp4
مثال استخدام BruteSharkCli - استخراج كلمات مرور وتجزئات متعددة (متاح أيضًا على يوتيوب)
https://user-images.githubusercontent.com/18364847/131924013-8b2aa18b-0941-456e-a09d-799902554166.mp4





بشكل عام، يُنصح بتحميل الملفات وتشغيلها واستكشاف النتائج.
يمكن تنزيل ملفات PCAP مثال تحتوي على سيناريوهات توضح جميع إمكانيات BruteShark من هنا.
لاحظ أن تحليل حركة مرور الشبكة عملية تستهلك الوقت والموارد، لذا يُنصح بتحديد الوحدات المطلوبة فقط عند تحميل ملفات كبيرة.
ينبغي إيلاء اهتمام خاص لخياري "Build TCP Sessions" / "Build UDP Sessions".
الواجهة الرسومية واضحة بذاتها إلى حد كبير، فقط قم بتحميل الملفات المطلوبة، واضبط الوحدات المطلوبة، ثم اضغط زر التشغيل.
BruteSharkCli هو إصدار سطر الأوامر من BruteShark لمستخدمي لينكس وويندوز. يتمتع بجميع ميزات BruteSharkDesktop وهو مصمم للعمل من الصدفة (Shell). كأداة CLI تقليدية، يعمل عن طريق تلقي جميع المعاملات ذات الصلة للمعالجة ثم طباعة النتائج إلى stdout أو إلى ملفات.
عرض قائمة المساعدة:
BruteSharkCli --help
احصل على بيانات الاعتماد من جميع الملفات في مجلد (ستتم طباعة كلمات المرور والتجزئات إلى stdout):
BruteSharkCli -m Credentials -d "C:\Users\King\Desktop\Pcap Files"
احصل على بيانات الاعتماد من جميع الملفات في مجلد وقم أيضًا بتصدير التجزئات المستخرجة (إن وُجدت) إلى ملفات إدخال Hashcat.
BruteSharkCli -m Credentials -d C:\Users\King\Desktop\Pcap_Examples -o C:\Users\King\Desktop\Results
شغّل وحدات متعددة على جميع الملفات في مجلد وقم أيضًا بتصدير جميع النتائج.
BruteSharkCli -m Credentials,NetworkMap,FileExtracting -d C:\Users\King\Desktop\Pcap_Examples -o C:\Users\King\Desktop\Results
التقط حركة المرور من واجهة اسمها "Wi-Fi"، وشغّل وحدات متعددة، وقم أيضًا بتصدير جميع النتائج إلى مجلد (سيتم تصدير النتائج فقط عند إيقاف أداة الالتقاط بالضغط على CTRL + C).
BruteSharkCli -l Wi-Fi -m Credentials,NetworkMap,FileExtracting,DNS -o C:\Users\King\Desktop\Test Export
BruteShark أداة معيارية (modular) مصممة للتوسع.
هذه الوحدة مسؤولة عن استخراج وترميز أسماء المستخدمين وكلمات المرور بالإضافة إلى تجزئات المصادقة. في الواقع، هذه الوحدة مسؤولة عن تحديث جدولي عرض: جدول كلمات المرور وجدول التجزئات. بينما تكون أسماء المستخدمين وكلمات المرور سهلة الاستخدام مباشرةً، فإن التجزئات تُستخدم غالبًا في هجمات أكثر تعقيدًا مثل pass-the-hash أو عبر كسرها بالقوة الغاشمة للحصول على كلمة المرور. BruteShark متكامل مع Hashcat بحيث يمكن تحويل جميع التجزئات المستخرجة إلى ملف إدخال Hashcat.
| البروتوكول | نوع التجزئة | وضع Hascat (-m) |
|---|---|---|
| HTTP | HTTP-Digest | 11400 |
| SMTP\IMAP | CRAM-MD5 | 16400 |
| NTLM (مثل SMB) | NTLMv1 | 5500 |
| NTLM (مثل SMB) | NTLMv2 | 5600 |
| Kerberos | AS-REQ etype 23 | 7500 |
| Kerberos | AS-REP etype 23 | 18200 |
| Kerberos | TGS-REP etype 23 | 13100 |
| Kerberos (AES128) | TGS-REP etype 17 | 19600 |
| Kerberos (AES256) | TGS-REP etype 18 | 19700 |
هذه الوحدة مسؤولة عن بناء خريطة الشبكة من خلال تحديد مكونات الشبكة والاتصالات بينها. يمكن تصدير خريطة الشبكة إلى ملفي JSON، يحتوي أحدهما على جميع الاتصالات في الشبكة ويحتوي الآخر على جميع نقاط النهاية والمعلومات المرتبطة بها (مثل المنافذ المفتوحة، وتعيينات DNS، وما إلى ذلك). يمكن استخدام هذه الملفات للتحليل باستخدام أدوات خارجية مثل Neo4j.

تحاول هذه الوحدة استخراج الملفات من جلسات UDP/TCP (لذلك، لاحظ أنه لكي تكون هذه الوحدة فعالة، يجب تشغيل خياري "Build TCP Sessions" / "Build UDP Sessions"). تدعم هذه الوحدة حاليًا تقنيات الطب الشرعي الكلاسيكية للتنقيب عن الملفات عبر خوارزمية "Header-Footer" الفعالة للملفات التي تحتوي على ترويسة وتذييل معروفين مثل JPG وPNG وPDF.
تستخرج هذه الوحدة مكالمات VoIP من بروتوكولي SIP وRTP. يمكن تصدير المكالمات المستخرجة كملفات صوتية خام ويمكن تشغيلها باستخدام مشغل صوت مناسب (مثل Audacity)
تم تنفيذ جميع مشاريع BruteShark باستخدام .Net Core و .Net Standard لتوفير دعم حديث ومتعدد المنصات.
تم تصميم الحل ببنية من ثلاث طبقات، تتضمن مشروعًا واحدًا أو أكثر في كل طبقة - DAL وBLL وPL.
يتم إنشاء الفصل بين الطبقات من خلال حقيقة أن كل مشروع يشير فقط إلى كائناته الخاصة.
باعتباره طبقة الوصول إلى البيانات، يكون هذا المشروع مسؤولًا عن قراءة ملفات PCAP الخام باستخدام برامج التشغيل المناسبة (WinPcap, libpcap) ومكتبة الغلاف الرائعة SharpPcap بقلم كريس مورغان. يمكنه تحليل قائمة ملفات في وقت واحد، ويوفر ميزات إضافية مثل إعادة بناء جميع جلسات TCP (باستخدام مشروع TcpRecon الرائع).
طبقة منطق الأعمال، المسؤولة عن تحليل معلومات الشبكة (حزمة، جلسة TCP، إلخ)، وتنفذ آلية قابلة للتوصيل (pluggable). كل مكوّن إضافي هو في الأساس فئة تنفذ الواجهة IModule. يتم تحميل جميع المكونات الإضافية باستخدام الانعكاس (reflection):
private void _initilyzeModulesList()
{
// Create an instance for any available modules by looking for every class that
// implements IModule.
this._modules = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => typeof(IModule).IsAssignableFrom(p) && !p.IsInterface)
.Select(t => (IModule)Activator.CreateInstance(t))
.ToList();
// Register to each module event.
foreach(var m in _modules)
{
m.ParsedItemDetected += (s, e) => this.ParsedItemDetected(s, e);
}
}
تطبيق سطح مكتب لنظام ويندوز مبني على WinForms. يستخدم مشروعًا شاملًا (cross-cutting) بمعنى أنه يشير إلى كل من طبقتَي DAL وBLL. يتم ذلك من خلال دمج كل طبقة، والاشتراك في أحداثها، وعند تشغيل حدث، يتم تحويل كائن الحدث إلى الكائن المكافئ في الطبقة التالية، وإرساله إلى الطبقة التالية.
public MainForm()
{
InitializeComponent();
_files = new HashSet<string>();
// Create the DAL and BLL objects.
_processor = new PcapProcessor.Processor();
_analyzer = new PcapAnalyzer.Analyzer();
_processor.BuildTcpSessions = true;
// Create the user controls.
_networkMapUserControl = new NetworkMapUserControl();
_networkMapUserControl.Dock = DockStyle.Fill;
_sessionsExplorerUserControl = new SessionsExplorerUserControl();
_sessionsExplorerUserControl.Dock = DockStyle.Fill;
_hashesUserControl = new HashesUserControl();
_hashesUserControl.Dock = DockStyle.Fill;
_passwordsUserControl = new GenericTableUserControl();
_passwordsUserControl.Dock = DockStyle.Fill;
// Contract the events.
_processor.TcpPacketArived += (s, e) => _analyzer.Analyze(Casting.CastProcessorTcpPacketToAnalyzerTcpPacket(e.Packet));
_processor.TcpSessionArived += (s, e) => _analyzer.Analyze(Casting.CastProcessorTcpSessionToAnalyzerTcpSession(e.TcpSession));
_processor.FileProcessingStarted += (s, e) => SwitchToMainThreadContext(() => OnFileProcessStart(s, e));
_processor.FileProcessingEnded += (s, e) => SwitchToMainThreadContext(() => OnFileProcessEnd(s, e));
_processor.ProcessingPrecentsChanged += (s, e) => SwitchToMainThreadContext(() => OnProcessingPrecentsChanged(s, e));
_analyzer.ParsedItemDetected += (s, e) => SwitchToMainThreadContext(() => OnParsedItemDetected(s, e));
_processor.TcpSessionArived += (s, e) => SwitchToMainThreadContext(() => OnSessionArived(Casting.CastProcessorTcpSessionToBruteSharkDesktopTcpSession(e.TcpSession)));
_processor.ProcessingFinished += (s, e) => SwitchToMainThreadContext(() => OnProcessingFinished(s, e));
InitilizeFilesIconsList();
this.modulesTreeView.ExpandAll();
}
بدايةً، شكرًا لتخصيصك الوقت للمساهمة! ترحب BruteShark بمساهمات الجميع.
عند المساهمة في هذا المستودع، يرجى أولاً مناقشة التغيير الذي ترغب في إجرائه عبر issue أو بريد إلكتروني قبل إجراء أي تغيير.