
محرك البصمات الموزع المعياري
Scannerl هو محرك بصمات معياري موزّع طُوّر بواسطة Kudelski Security. يمكن لـ Scannerl أخذ بصمات آلاف الأهداف على مضيف واحد، ويمكن توزيعه بسهولة عبر مضيفين متعددين. Scannerl بالنسبة لأخذ البصمات هو مثل zmap بالنسبة لمسح المنافذ.
يعمل Scannerl على Debian/Ubuntu/Arch (لكنه سيعمل على الأرجح على توزيعات أخرى أيضًا). يستخدم بنية رئيس/تابع حيث يقوم العقدة الرئيسية بتوزيع العمل (المضيف(ين) لأخذ بصماتهم) على توابعها (محلية أو عن بُعد). النشر بأكمله شفاف بالنسبة للمستخدم.
عند استخدام أدوات أخذ البصمات التقليدية للتحليل على نطاق واسع، غالبًا ما يواجه الباحثون الأمنيون قيدين: أولاً، هذه الأدوات مصممة عادةً لمسح عدد قليل نسبيًا من المضيفات في المرة الواحدة وهي غير مناسبة لنطاقات واسعة من عناوين IP. ثانيًا، إذا تم أخذ بصمات نطاق كبير من عناوين IP المحمية بأجهزة IPS، فإن احتمال إدراجك في القائمة السوداء يكون أعلى مما قد يؤدي إلى مجموعة غير كاملة من المعلومات. صُمم Scannerl لتجاوز هذه القيود، ليس فقط من خلال توفير القدرة على أخذ بصمات مضيفين متعددين في وقت واحد، ولكن أيضًا عن طريق توزيع الحمل عبر عدد غير محدود من المضيفين. كما يجعل Scannerl توزيع هذه المهام شفافًا تمامًا، مما يجعل إعداد وصيانة مشاريع أخذ البصمات على نطاق واسع أمرًا تافهًا؛ وهذا يسمح بالتركيز على التحليلات بدلاً من المهمة الجبارة المتمثلة في إدارة وتوزيع عمليات أخذ البصمات يدويًا. بالإضافة إلى عامل السرعة، صُمم Scannerl للسماح بإعداد تحليلات بصمات محددة بسهولة في بضعة أسطر من الكود. ليس فقط إنشاء كتلة أخذ بصمات سهل الإعداد، بل يمكن تعديله عن طريق إضافة عمليات مسح مضبوطة بدقة إلى حملات أخذ البصمات الخاصة بك.
إنها الأداة الأسرع لتنفيذ حملات أخذ بصمات على نطاق واسع.
للمزيد:
جدول المحتويات
انظر الويكي للمزيد.
انظر خيارات التثبيت المختلفة تحت صفحة تثبيت الويكي
للتثبيت من المصدر، قم أولاً بتثبيت Erlang (الإصدار v.18 على الأقل) عن طريق اختيار الحزمة المناسبة لمنصتك: Erlang downloads
قم بتثبيت الحزم المطلوبة:
# على debian
$ sudo apt install erlang erlang-src rebar
# على arch
$ sudo pacman -S erlang-nox rebar
ثم قم ببناء scannerl:
$ git clone https://github.com/kudelskisecurity/scannerl.git
$ cd scannerl
$ ./build.sh
احصل على الاستخدام عن طريق تشغيل
$ ./scannerl -h
Scannerl متاح على aur لمستخدمي arch linux
حزم DEB (Ubuntu, Debian) متاحة في الإصدارات.
حزم RPM (Opensuse, Centos, Redhat) متاحة تحت https://build.opensuse.org/package/show/home:chapeaurouge/scannerl.
هناك نوعان من العقد اللازمة لإجراء مسح موزّع:
يجب أن يكون لدى العقدة الرئيسية scannerl مثبتًا ومُجمّعًا بينما التوابع تحتاج فقط إلى تثبيت Erlang. الإعداد بأكمله شفاف ويتم تلقائيًا بواسطة العقدة الرئيسية.
متطلبات المسح الموزّع:
$ ./scannerl -h
____ ____ _ _ _ _ _ _____ ____ _
/ ___| / ___| / \ | \ | | \ | | ____| _ \| |
\___ \| | / _ \ | \| | \| | _| | |_) | |
___) | |___ / ___ \| |\ | |\ | |___| _ <| |___
|____/ \____/_/ \_\_| \_|_| \_|_____|_| \_\_____|
الاستخدام
scannerl MODULE TARGETS [NODES] [OPTIONS]
MODULE:
-m <mod> --module <mod>
mod: وحدة أخذ البصمات المراد استخدامها.
تفصل الوسائط بنقطتين.
TARGETS:
-f <target> --target <target>
target: قائمة بالأهداف مفصولة بفاصلة.
-F <path> --target-file <path>
path: مسار الملف الذي يحتوي على هدف واحد في كل سطر.
-d <domain> --domain <domain>
domain: قائمة بالنطاقات مفصولة بفاصلة.
-D <path> --domain-file <path>
path: مسار الملف الذي يحتوي على نطاق واحد في كل سطر.
NODES:
-s <node> --slave <node>
node: قائمة بالعقد (أسماء المضيفات وليس عناوين IP) مفصولة بفاصلة.
-S <path> --slave-file <path>
path: مسار الملف الذي يحتوي على عقدة واحدة في كل سطر.
يمكن أيضًا توفير عقدة مع مضاعف (<node>*<nb>).
OPTIONS:
-o <mod> --output <mod> قائمة مفصولة بفاصلة بوحدة (وحدات) الإخراج المراد استخدامها.
-p <port> --port <port> المنفذ المراد أخذ بصمته.
-t <sec> --timeout <sec> مهلة عملية أخذ البصمات.
-T <sec> --stimeout <sec> مهلة اتصال التابع (الافتراضي: 10).
-j <nb> --max-pkt <nb> الحد الأقصى للحزم المستلمة (عدد صحيح أو "infinity").
-r <nb> --retry <nb> عداد إعادة المحاولة (الافتراضي: 0).
-c <cidr> --prefix <cidr> تقسيم النطاق ببادئة > cidr (الافتراضي: 24).
-M <port> --message <port> المنفذ للاستماع للرسائل (الافتراضي: 57005).
-P <nb> --process <nb> الحد الأقصى للعمليات المتزامنة لكل عقدة (الافتراضي: 28232).
-Q <nb> --queue <nb> الحد الأقصى لعدد النتائج غير المعالجة في قائمة الانتظار (الافتراضي: infinity).
-C <path> --config <path> قراءة الوسائط من ملف، سطر واحد لكل وسيطة.
-O <mode> --outmode <mode> 0: على الرئيسي، 1: على التابع، >1: على الوسيط (الافتراضي: 0).
-v <val> --verbose <val> كن مفصلاً (0 <= int <= 255).
-K <opt> --socket <opt> خيار مقبس مفصول بفاصلة (key[:value]).
-l --list-modules سرد وحدات fp/out المتاحة.
-V --list-debug سرد خيارات التصحيح المتاحة.
-A --print-args إخراج سجل الوسائط.
-X --priv-ports استخدام منافذ المصدر فقط بين 1 و 1024.
-N --nosafe الاستمرار حتى لو فشلت بعض التوابع في البدء.
-w --www DNS سيحاول www.<domain>.
-b --progress إظهار التقدم.
-x --dryrun تشغيل تجريبي.
انظر الويكي للمزيد.
يمكن استخدام Scannerl على المضيف المحلي دون أي مضيف آخر. ومع ذلك، فإنه سيظل ينشئ عقدة تابعة على نفس المضيف الذي يتم تشغيله منه. لذلك، يجب أيضًا استيفاء المتطلبات الموضحة في الإعداد الموزّع.
طريقة سريعة للقيام بذلك هي التأكد من أن مضيفك قادر على حل نفسه باستخدام
grep -q "127.0.1.1\s*`hostname`" /etc/hosts || echo "127.0.1.1 `hostname`" | sudo tee -a /etc/hosts