
Snoopy v2.0 - إطار عمل نمطي للتتبع الرقمي الأرضي
تقدم SensePost:
/$$$$$$
/$$__ $$
| $$ \__/ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$ /$$
| $$$$$$ | $$__ $$ /$$__ $$ /$$__ $$ /$$__ $$| $$ | $$
\____ $$| $$ \ $$| $$ \ $$| $$ \ $$| $$ \ $$| $$ | $$
/$$ \ $$| $$ | $$| $$ | $$| $$ | $$| $$ | $$| $$ | $$
| $$$$$$/| $$ | $$| $$$$$$/| $$$$$$/| $$$$$$$/| $$$$$$$
\______/ |__/ |__/ \______/ \______/ | $$____/ \____ $$
| $$ /$$ | $$
| $$ | $$$$$$/
|__/ \______/
Version: 2.0
Code: [email protected] // @glennzw
Visit: www.sensepost.com // @sensepost
License: Non-commercial use
أهلاً بك في Snoopy الإصدار 2.0!
لتثبيت وإعداد Snoopy:
bash install.sh
لحفظ البيانات من إضافات اللاسلكي وsysinfo وheartbeat محليًا:
snoopy -v -m wifi:mon=True -m sysinfo -m heartbeat -d myDrone -l London
لمزامنة البيانات من عميل إلى خادم:
الخادم:
snoopy_auth --create myDrone # Create account
snoopy -v -m server # Start server plugin
العميل:
snoopy -v -m wifi:mon=True -s http://<server>:9001/ -d myDrone -l London -k <key>
المقدمة والنظرة العامة ============================= Snoopy هو إطار عمل موزع للاستشعار وجمع البيانات والاعتراض والتحليل والتصور. وهو مكتوب بصيغة معيارية، مما يسمح بجمع أي بيانات من مصادر مختلفة عبر إضافات Python.
البنية
يمكن لكل مثيل Snoopy تشغيل عدة إضافات في وقت واحد. تقوم الإضافة بجمع البيانات، والتي يستعلم عنها سير عمل Snoopy الرئيسي وتُكتب إلى قاعدة بيانات محلية. يمكن لـ Snoopy مزامنة البيانات بين العملاء (الدرونات) وخادم، ويمكن للعملاء (الدرونات) أيضًا سحب نسخ من البيانات من الخادم. يمكن لكل مثيل Snoopy تشغيل الإضافات المناسبة لموقعه في الصورة الأكبر. إليك مخططًا يصور أحد الإعدادات الممكنة:
Drone01 Server01
+---------------+ +--------------+
| Plugins: | | Plugins: |
| * WiFi | | *Server |
| * Bluetooth |====3G====>| |<=========================\
| * GSM | | | ||
| * FitBit | | | ||
+---------------+ +--------------+ ||
||
Drone02 Server02 Server03 ||
+---------------+ +--------------+ +-------------+ ||
| Plugins: | | Plugins: | | Plugins: | ||
| * WiFi | | * Server | | * Server | ||
| * Cookie |=====Xbee==>| * Heartbeat |==3G==>| * Wigle |<==\
| thief | || | | | * DataViz | ||
| * GPS | || | | | | ||
+---------------+ || +--------------+ +-------------+ ||
|| Internet
Drone03 || Laptop01 ||
+---------------+ || +--------------+ ||
| Plugins: | || | Plugins: | ||
| * Thermal | || | *RemotePull | ||
| * Camera |===/ | |====/
| * Heat | | Run: |
| | | *Maltego |
+---------------+ +--------------+
في الرسم التوضيحي أعلاه، هناك ثلاثة درونات تعمل وتزامن بياناتها إلى خادمين منفصلين. أحدهما يزامن عبر 3G، والآخران عبر Xbee. الخادم الثاني يزامن بياناته إلى خادم ثالث. أخيرًا، عميل (لابتوب) يسحب جميع البيانات من الخادمين الأول والثالث، ويشغّل Maltego لاستكشاف البيانات.
تشغيل 'sh install.sh' داخل مجلد snoopy-ng.git سيثبّت جميع الحزم المطلوبة. وهو يوفر خيار تثبيت aircrack من المصدر، وهو مطلوب للتوزيعات التي لا تحتوي على هذه الحزمة (تُستخدم مجموعة أدوات aircrack لإضافات اللاسلكي). لا يمكننا أن نوصي بما يكفي بـ Maltego لاستكشاف البيانات، حيث يمكن تنزيل الإصدار المجتمعي (مع بعض القيود) مجانًا من موقع Paterva على http://paterva.com.
لرؤية جميع الخيارات والعلامات المتاحة، أعددنا لك أمرين:
root@kali:~# snoopy --help (shorthand -h)
يعطيك هذا الأمر جميع خيارات التشغيل، مثل الخادم الذي تريد المزامنة إليه، واسم الدرون وموقعه. بالإضافة إلى ذلك، يشرح أيضًا كيفية تشغيل الإضافات المختلفة.
root@kali:~# snoopy --list (shorthand -i)
يسرد هذا الأمر جميع الإضافات المتاحة والمعاملات المطلوبة من كل إضافة لتعمل بشكل صحيح. للحصول على معلومات أكثر تفصيلاً حول كل إضافة، استخدم '-ii' أو '-iii'. للحصول على معلومات حول إضافة معينة، استخدم '-i -m '.
يمكن تحديد الإضافات باستخدام خيار --plugin (أو الاختصار -m). يمكن تحديد عدد كبير من الإضافات، وستبدأ بالترتيب الذي أُدخلت به. ستُمنح كل إضافة 60 ثانية للإشارة إلى أنها جاهزة، وبعد ذلك تنتهي المهلة وتُبدأ الإضافة التالية. قد يكون هذا مفيدًا إذا كانت الإضافات اللاحقة تعتمد على إجراءات الإضافات السابقة.
يمكن لكل إضافة أن تأخذ معاملات عديدة (كما هو موضح في مخرجات --list) في شكل أزواج مفتاح-قيمة مفصولة بفواصل. أدناه نستخدم إضافة 'example'، التي تولد أرقامًا عشوائية ببساطة.
snoopy --plugin example:x=1,v=True
إذا لم يتم توفير خيارات الدرون / الموقع، فسيتم توفير قيم افتراضية. بدلاً من ذلك، يمكن تحديدها كما يلي.
snoopy --plugin example:x=1,v=True --drone myDrone --location Cansas
يمكن مزامنة البيانات إلى جهاز بعيد عن طريق توفير خيار --server (-s). يجب أن يكون الجهاز البعيد مشغّلاً لإضافة الخادم (--plugin server). يجب إنشاء مفتاح لاسم الدرون مسبقًا. ما يلي يوضح ذلك.
الخادم
root@server:~# snoopy_auth --create myDrone01 --verbose
[+] Creating new Snoopy server sync account
[+] Key for 'myDrone01' is 'GWWVF'
[+] Use this value in client mode to sync data to a remote server.
root@kali:~# snoopy --plugin server
[+] Running webserver on '0.0.0.0:9001'
[+] Plugin server caught data for 2 tables.
العميل
root@client:~# snoopy --plugin example:x=1 --drone myDrone --key GWWVF --server http://<server_ip>:9001/ --verbose
[+] Starting Snoopy with plugins: example
[+] Plugin example created new random number: 21
[+] Snoopy successfully sunc 2 elements over 2 tables.
سحب البيانات عن بعد
يمكن سحب البيانات من خادم باستخدام إضافة local_sync. على سبيل المثال، افترض أن الخادم أعلاه يعمل، وقم بتنفيذ هذه العملية من العميل:
root@client:~# snoopy --plugin local_sync:server_url=http://<server_ip>:9001/ --drone myDrone --key GWWVF
[+] Plugin local_sync pulled 888 records from remote server.
السلوك الافتراضي هو تخزين جميع البيانات داخل ملف SQLITE باسم snoopy.db. يمكن تجاوز ذلك باستخدام المعامل --dbms. راجع وثائق SQL Alchemy حول كيفية تحديد محركات قواعد بيانات مختلفة (http://docs.sqlalchemy.org/en/rel_0_9/dialects/index.html). كمثال، نستخدم أدناه MySQL:
root@client:~# snoopy -v --plugin example --dbms=mysql://glenn:secret@localhost/snoopy_db
[+] Capturing local only. Saving to 'mysql://glenn:secret@localhost/snoopy_db'