درس اليوم حول منهجية جمع المعلومات والاستطلاع باستخدام الأداة recon-ng ، فما هي هذه الأداة؟
تعريف الأداة recon-ng
هي أداة وظيفتها جمع المعلومات من العديد من المصادر الموجودة والمتاحة على الإنترنت.
أي أنها تقوم بما يسمى ب Open Source Intelligence باختصار OSINT أو جمع المعلومات الاستخباراتية التي تحدثنا عنها سابقاً في هذه الوحدة.
وتعطينها في قاعدة بيانات خاصة في هيكلية معينة، يتم بعد ذلك تصنف النتائج وتصدر التقارير من خلالها للاستفادة منها في مرحلة أخرى من مراحل الإختراق الأخلاقي.
هذه الأداة مبرمجة بالبايثون ومفتوحة المصدر.
لذلك يمكن لأي شخص يرغب في تطويرها بإضافة بعض الخصائص وال modules الخاصة بها، يمكنه برمجتها ووضع حقوقه الخاصة فيها ونشرها على الإنترنت.
هناك في موقع الأداة يوجد طريقة وخطوات إذا أردت تطوير module خاص بك ونشره يوجد طريقة لكيفية عمل ذلك.
الأداة مقسمة إلى Modules
ال modules هي بعض الوظائف التي يتم عبرها عمل أمور معينة، فهناك modules خاصة بال reconning وعددهم 77 module.
هناك modules خاصة بعمل ب discovery وعددهم 2، module لاستغلال الثغرات عددهم 2، modules لإصدار التقارير عددهم 8، و modules لاستيراد البيانات عددهم 2.
غالباً سنتحدث عن recon modules و reporting modules لأن هذه الأداة مخصصة أساساً لعمل الاستطلاع.
بعكس metasploit و social net collect والتي هي مخصصة للهندسة الاجتماعية. وأداة recon شبيهة بال metasploit.
وظائف الأداة
جمع المعلومات والبيانات من مصادر مختلفة وخدمات من الإنترنت وتجميعها، وهذه المعلومات التي ستجمعها يمكن أن تكون معلومات حول أشخاص أو نطاقات أو شركات.
أنواع المعلومات التي ستجمعها هي أنواع مختلفة، لذا يجب تخزين هذه المعلومات في مكان محدد وبالاعتماد على أنواعها.
لذلك يتم تصميم قاعدة بيانات schema تحوي العديد من الجداول، وكل واحد من الجداول يتم تخزين البيانات المخصصة فيه. مثل
جدول domains
وفيه سيخزن البيانات الخاصة بالنطاقات.
جدول Hosts
تخزن به البيانات الخاصة بالنطاقات الفرعية.
جدول Locations
بخزن فيه معلومات خاصة بالبيانات الجغرافية وهكذا.
والعديد من الجداول الأخرى. سنتعامل مع عدة جداول مختلفة.
كيفية التعامل مع الأداة من خلال Kali Linux
أقوم بتشغيل توزيعة Kali Linux وهذه الأداة موجودة عليها، من Application ثم information gathering ثم recon-ng أو من خلال سطر الأوامر بأن اكتب: recon-ng
إن ظهرت أخطاء باللون الأحمر، فيقصد بها أن هناك خطأ ب APIs بما أن وظيفة الأداة جمع معلومات من مصادر مختلفة.
بعض هذه المواقع والخدمات تحتاج API، بحيث أننا إن تعاملنا مع هذه المواقع بأن أدخل الموقع وأسجل فيه.
ومن ثم أبحث عما أريد ويعطينا نتائج وآخذ النتائج بشكل يدوي وأضمنها داخل التقرير الخاص.
لكن معظم هذه المواقع تقوم بتوفير API أو Application Programming Interface وهي بيئة يمكن من خلالها الحصول على بعض البيانات لبرمجة أدوات تتعامل مع هذه الخدمة من الأداة نفسها.
فإن أردت أن تقوم recon-ng بأن تتعمل مع هذه الأداة فعلي بالدخول إلى العديد من الخدمات المختلفة على حساب عليها وآخذ API key .
وطبعاً هذا حسب طبيعة إنشاء API على المواقع والخدمات ومن ثم إضافتها على recon-ng .
لن أتطرق لكيفية إنشاء API لأن كل موقع له طريقة وخدمة مختلفة، بل سأتحدث عن طريقة إضافة key على recon-ng وعلى كيفية التعامل مع المفاتيح وما هي المفاتيح المتاحة وما هي قيمها.
Help
وظيفته إظهار الجميع الأوامر التي يمكن أن نستخدمها داخل recon-ng ومنها نتعرف على الآتي:
Add
وظيفته إضافة record على قاعدة البيانات، فقبل قليل تحدثت عن schema وهي تحوي جداول الدومين والهوست وغيرها.
لإضافة سجل أو حقل على جدول من الجداول الموجودة في schema سأتعامل مع ADD ثم إسم الجدول ثم أنقر Enter سيقوم بسؤال عما تريد إضافتها وقيمها.
Back
تعني العودة للخلف.
Delete
لحذف السجل record.
Exit
للخروج العمل ككل.
Keys
وظيفتها إظهار المفاتيح وإضافة وحذف المفاتيح ويمكن ضبط المفاتيح.
Load و use
وظيفتهما أن لدي module معين يقوم بالاستطلاع، إن أردنا التعامل مع هذا ال module لتنفيذه، يمكن استخدام أحدهما، ومن ثم نتبعه باسم ال module.
Search
للبحث عن module معين في recon-ng.
Set
إذا أردنا تحديد خصائص أو خيارات ل module معين، والتعديل عليها.
Show
خاصة بال framework والمكان الذي أتواجد فيه.
وهناك أوامر أخرى غيرها.
الخيارات
بكتابة show options، سيظهر لي بعض الخيارات وبحسب أين أتواجد، فأنا لست داخل module معين، وإنما داخل framework.
ستظهر لي خيارات خاصة بال framework وهي recon-ng بشكل كلي:
Name server
وقيمته 8.8.8.8 هذا IP Address لل DNS الخاص بجوجول.
والمقصود به هو أن أي طلب سيتم تنفيذه من الأداة إلى أي موقع أو خدمة مختلفة، إذا احتاج لعمل name resolution سيتعامل مع DNS Server الخاص بجوجل.
ويمكنني التعديل عليه بالشكل التالي: set name server 8.8.4.4 فتتغير القيمة.
للتأكد أكتب: show Options
ولأعيد له قيمته الأصلية أكرر الخطوات.
Proxy
أريد للأداة recon-ng أن تخرج proxy في أي دولة أخرى لأخفي هويتي أو أتجاوز أمور معينة ممنوعة عني.
Threads
هي عدد الطلبات التي ستنفذها الأداة مع بعضها.
User agent
كي أشغل الأداة كمتصفح مثل الفاير فوكس.
Clear
لتنظيف الشاشة.
تطبيق على أمر keys
لدي أمر keys سأنفذه، ويعطيني معلومة أنها تعمل management لل API Keys ويمكنني أن أعرف أسماء المفاتيح مع قيمها بكتابة الأمر Keys list.
لإضافة keys أكتب: keys add وأضغط tab فيظهر جميع المفاتيح التي يمكنني إضافتها.
فإن أردت أن أضيف مثلاً مفتاح انستغرام أكتب: keys add Instagram api ومن ثم أكتب قيمة الانستغرام التي أريدها، وأضغط Enter.
إن أردت حذف مفتاح ما أكتب: keys delete Instagram api وينحذف المفتاح بالكامل مع قيمته.
تطبيق على show
إن كتبت show وحدها فسيخبرني أن show يتبعها أحد هذه الأمور: إما banner أو contacts أو companies ونحوها.
فأكتب مثلاً: show banner يظهر لي banner الأداة الذي ظهر في الشاشة الرئيسية. ويمكنك التعديل عليه.
Show schema تظهر لي تصميم قاعدة البيانات الخاصة بأداة recon-ng، فلدي جدول domains فيه عمودين وجدول الشركة ووصفها، وجداول عديدة.
فإن أردت أحد هذه الجداول وليكن جدول domains أكتب: show domains، فلو أضفت domain معين وأريد أن أراه، يمكنني إعطاء هذا الأمر.
Show modules يظهر لي جميع ال modules بكل تصنيفاتها، فهناك مثلاً تصنيف discovery فيه إثنان modules، وإن كتبت: show modules recon يظهر لي فقط ال recon.
Show reporting يظهر فقط modules التقارير وهكذا.
تطبيق على use و Load
لدي module معين وأريد أن أتعامل معه، فإما عن طريق load أو عن طريق use. سأختار أحد الـ modules وأكتبه في سطر الأوامر: use recon/domains-hosts/netcraft
أو أستعمل الأمر load : load recon/domains-hosts/netcraft، نفس الشيء.
تطبيق back
فإن أردت أن أعود للوراء أكتب: back فقط.
تطبيق search
سأبحث عن module معين أكتب: search google فيعطيني اثنان modules تحوي كلمة Google .
لأبحث عن modules تحوي كلمة shodan مثلاً: search shodan فيعطيني أنه يوجد أربعة modules وأختار ما أريد وأتعامل معه.
الأمر workspaces
لنفهم workspaces كيف تعمل لنأخذ المثال التالي:
لو فرضنا أنك تعمل في شركة، والشركة تقدم خدمات إختبار الإختراق لشركة أخرى، فكان لديك أكثر من جهة ولديك أكثر من مشروع في إختبار الاختراق.
أنت تريد ان تعمل على كل هذه المشاريع، وتتعامل مع أداة recon-ng لتجمع معلومات حول كل جهة من هذه الجهات.
لو فرضنا أنك ستعمل بشكل موازي، بهذه الحالة البيانات ستخزن في schema ، ولو أنهم سيخزنون في نفس المكان، فسيحدث لديك تعارض وفوضى.
ولن تستطيع تمييز البيانات بين المشاريع، وبالتالي مطوري recon-ng قاموا بعمل workspaces من أجل ذلك.
وأي مشروع ستعمل عليه ستنشئ له مكان عمل workspace بحيث أن بياناته تتخزن داخل workspace الخاصة به لتعزلها عن بعضها.
تطبيق workspace
ونتعامل مع workspaces بالشكل التالي: workspaces وأضغط tab مرتين. فتظهر لي أني أستطيع إما إضافة أو حذف workspace أو List أو select.
أكتب مثلاً: workspace list وأضغط enter فأجد أن لدي default إفتراضية.
أريد أن أضيف جديد: workspace add Microsoft بافتراض أن مشروعي يدعى Microsoft.
فإن عدت إلى الأمر List أجد أنه أصبح لدي مكاني عمل default و Microsoft . وهكذا.
للانتقال من مكان عمل إلى آخر أستعمل الأمر select وإن أردت حذفه أستعمل الأمر delete.
سأنشئ مكاني عمل: workspace add A ، workspace add B
أصبح لدي اثنتان : workspace list فتظهر ثلاث وهي default و A و B.
فإن كتبت: add domains aa.com
Show domains
فسيظهر أن لدي دومين aa.com موجود في b وهو الذي أضفته، لكن إن ظهر لي إسم module آخر غير ال user define معناه أن هناك module نفذته وأضاف الdomain.
إن كتبت: workspace select A أنتقل إلى A، وإن كتبت: show domains فسيقول لي أنه لا يوجد بيانات.
فهذا يعني أن البيانات في ال workspace ، لا يراهاworkspace آخر فهما معزولان عن بعض وهذا هو الهدف من workspace.
هنا نكون انتهينا من درس اليوم عن recon-ng وأتمنى أن يكون مفيداً وواضحاً لكم.
محمد خريشة