Maltrail هو نظام للكشف عن حركة المرور الضارة، يستخدم القوائم (السوداء) المتاحة للجمهور والتي تحتوي على مسارات ضارة و/أو مشبوهة بشكل عام، إلى جانب المسارات الثابتة المجمعة من تقارير AV المختلفة والقوائم المخصصة التي يحددها المستخدم، حيث يمكن أن يكون المسار أي شيء من اسم النطاق (على سبيل المثال zvpprsensinaix.com
لبرامج Banjori الضارة)، وعنوان URL (على سبيل المثال hXXp://109.162.38.120/harsh02.exe
للبرامج الضارة المعروفة القابلة للتنفيذ)، وعنوان IP (على سبيل المثال 185.130.5.231
للمهاجم المعروف) أو قيمة رأس وكيل مستخدم HTTP (على سبيل المثال sqlmap
لحقن SQL التلقائي وأداة الاستيلاء على قاعدة البيانات). كما أنه يستخدم (اختياريًا) آليات إرشادية متقدمة يمكن أن تساعد في اكتشاف التهديدات غير المعروفة (مثل البرامج الضارة الجديدة).
يتم استخدام القوائم (السوداء) التالية (أي الخلاصات):
360bigviktor, 360chinad, 360conficker, 360cryptolocker, 360gameover,
360locky, 360necurs, 360suppobox, 360tofsee, 360virut, abuseipdb, alienvault,
atmos, badips, bitcoinnodes, blackbook, blocklist, botscout,
bruteforceblocker, ciarmy, cobaltstrike, cruzit, cybercrimetracker,
dataplane, dshieldip, emergingthreatsbot, emergingthreatscip,
emergingthreatsdns, feodotrackerip, gpfcomics, greensnow, ipnoise,
kriskinteldns, kriskintelip, malc0de, malwaredomainlistdns, malwaredomains,
maxmind, minerchk, myip, openphish, palevotracker, policeman, pony,
proxylists, proxyrss, proxyspy, ransomwaretrackerdns, ransomwaretrackerip,
ransomwaretrackerurl, riproxies, rutgers, sblam, socksproxy, sslbl,
sslproxies, talosintelligence, torproject, trickbot, turris, urlhaus,
viriback, vxvault, zeustrackermonitor, zeustrackerurl, etc.
اعتبارًا من الإدخالات الثابتة، تم تضمين مسارات الكيانات الضارة التالية (على سبيل المثال، أوامر وأحكام البرامج الضارة أو الثغرات) يدويًا (من تقارير AV المختلفة والأبحاث الشخصية):
1ms0rry, 404, 9002, aboc, absent, ab, acbackdoor, acridrain, activeagent,
adrozek, advisorbot, adwind, adylkuzz, adzok, afrodita, agaadex, agenttesla,
aldibot, alina, allakore, almalocker, almashreq, alpha, alureon, amadey,
amavaldo, amend_miner, ammyyrat, android_acecard, android_actionspy,
android_adrd, android_ahmythrat, android_alienspy, android_andichap,
android_androrat, android_anubis, android_arspam, android_asacub,
android_backflash, android_bankbot, android_bankun, android_basbanke,
android_basebridge, android_besyria, android_blackrock, android_boxer,
android_buhsam, android_busygasper, android_calibar, android_callerspy,
android_camscanner, android_cerberus, android_chuli, android_circle,
android_claco, android_clickfraud, android_cometbot, android_cookiethief,
android_coolreaper, android_copycat, android_counterclank, android_cyberwurx,
android_darkshades, android_dendoroid, android_dougalek, android_droidjack,
android_droidkungfu, android_enesoluty, android_eventbot, android_ewalls,
android_ewind, android_exodus, android_exprespam, android_fakeapp,
android_fakebanco, android_fakedown, android_fakeinst, android_fakelog,
android_fakemart, android_fakemrat, android_fakeneflic, android_fakesecsuit,
android_fanta, android_feabme, android_flexispy, android_fobus,
android_fraudbot, android_friend, android_frogonal, android_funkybot,
android_gabas, android_geinimi, android_generic, android_geost,
android_ghostpush, android_ginmaster, android_ginp, android_gmaster,
android_gnews, android_godwon, android_golddream, android_goldencup,
android_golfspy, android_gonesixty, android_goontact, android_gplayed,
android_gustuff, android_gypte, android_henbox, android_hiddad,
android_hydra, android_ibanking, android_joker, android_jsmshider,
android_kbuster, android_kemoge, android_ligarat, android_lockdroid,
android_lotoor, android_lovetrap, android_malbus, android_mandrake,
android_maxit, android_mobok, android_mobstspy, android_monokle,
android_notcompatible, android_oneclickfraud, android_opfake,
android_ozotshielder, android_parcel, android_phonespy, android_pikspam,
android_pjapps, android_qdplugin, android_raddex, android_ransomware,
android_redalert, android_regon, android_remotecode, android_repane,
android_riltok, android_roamingmantis, android_roidsec, android_rotexy,
android_samsapo, android_sandrorat, android_selfmite, android_shadowvoice,
android_shopper, android_simbad, android_simplocker, android_skullkey,
android_sndapps, android_spynote, android_spytekcell, android_stels,
android_svpeng, android_swanalitics, android_teelog, android_telerat,
android_tetus, android_thiefbot, android_tonclank, android_torec,
android_triada, android_uracto, android_usbcleaver, android_viceleaker,
android_vmvol, android_walkinwat, android_windseeker, android_wirex,
android_wolfrat, android_xavirad, android_xbot007, android_xerxes,
android_xhelper, android_xploitspy, android_z3core, android_zertsecurity,
android_ztorg, andromeda, antefrigus, antibot, anubis, anuna, apocalypse,
apt_12, apt_17, apt_18, apt_23, apt_27, apt_30, apt_33, apt_37, apt_38,
apt_aridviper, apt_babar, apt_bahamut, etc.
يعتمد Maltrail على بنية المرور -> المستشعر <-> الخادم <-> العميل . المستشعر (المستشعرات) عبارة عن مكون مستقل يعمل على عقدة المراقبة (على سبيل المثال، نظام Linux المتصل بشكل سلبي بمنفذ SPAN/النسخ المتطابق أو مضمّن بشفافية على جسر Linux) أو على الجهاز المستقل (على سبيل المثال، Honeypot) حيث "يراقب" حركة المرور المارة للعناصر/الممرات المدرجة في القائمة السوداء (أي أسماء النطاقات و/أو عناوين URL و/أو عناوين IP). في حالة وجود تطابق إيجابي، فإنه يرسل تفاصيل الحدث إلى الخادم (المركزي) حيث يتم تخزينها داخل دليل التسجيل المناسب (أي LOG_DIR
الموضح في قسم التكوين ). إذا تم تشغيل المستشعر على نفس الجهاز مثل الخادم (التكوين الافتراضي)، فسيتم تخزين السجلات مباشرة في دليل التسجيل المحلي. وإلا، فسيتم إرسالها عبر رسائل UDP إلى الخادم البعيد (أي LOG_SERVER
الموضح في قسم التكوين ).
يتمثل الدور الأساسي للخادم في تخزين تفاصيل الحدث وتوفير الدعم الخلفي لتطبيق الويب لإعداد التقارير. في التكوين الافتراضي، سيتم تشغيل الخادم والمستشعر على نفس الجهاز. لذلك، لمنع الاضطرابات المحتملة في أنشطة المستشعر، يعتمد جزء إعداد التقارير للواجهة الأمامية على بنية "Fat Client" (أي تتم المعالجة اللاحقة لجميع البيانات داخل مثيل متصفح الويب الخاص بالعميل). يتم نقل الأحداث (أي إدخالات السجل) للفترة المختارة (24 ساعة) إلى العميل ، حيث يكون تطبيق الويب لإعداد التقارير هو المسؤول الوحيد عن جزء العرض التقديمي. يتم إرسال البيانات إلى العميل في أجزاء مضغوطة، حيث تتم معالجتها بشكل تسلسلي. يتم إنشاء التقرير النهائي في شكل مكثف للغاية، مما يسمح عمليًا بعرض عدد غير محدود تقريبًا من الأحداث.
ملاحظة: يمكن تخطي مكون الخادم تمامًا، واستخدام المستشعر المستقل فقط. في مثل هذه الحالة، سيتم تخزين جميع الأحداث في دليل التسجيل المحلي، بينما يمكن فحص إدخالات السجل إما يدويًا أو بواسطة بعض تطبيقات قراءة ملف CSV.
يمكن العثور هنا على صفحات تجريبية كاملة الوظائف تحتوي على تهديدات حقيقية تم جمعها.
لتشغيل Maltrail بشكل صحيح، يلزم وجود Python 2.6 أو 2.7 أو 3.x على نظام *nix/BSD، بالإضافة إلى حزمة pcapy-ng المثبتة.
ملاحظة: يمكن أن يؤدي استخدام pcapy
lib بدلاً من pcapy-ng
إلى عمل غير صحيح لـ Maltrail، خاصة في بيئات Python 3.x. أمثلة.
يتطلب مكون المستشعر 1 جيجابايت على الأقل من ذاكرة الوصول العشوائي (RAM) للتشغيل في وضع المعالجة الفردية أو أكثر إذا تم تشغيله في وضع المعالجة المتعددة، اعتمادًا على القيمة المستخدمة للخيار CAPTURE_BUFFER
. بالإضافة إلى ذلك، يتطلب مكون الاستشعار (في الحالة العامة) امتيازات إدارية/جذرية.
لا يحتوي مكون الخادم على أي متطلبات خاصة.
يجب أن تقوم مجموعة الأوامر التالية بتشغيل جهاز استشعار Maltrail الخاص بك (خارج الصندوق مع الإعدادات الافتراضية وواجهة المراقبة "أي"):
sudo apt-get install git python3 python3-dev python3-pip python-is-python3 libpcap-dev build-essential procps schedtool
sudo pip3 install pcapy-ng
git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
sudo python3 sensor.py
sudo zypper install gcc gcc-c++ git libpcap-devel python3-devel python3-pip procps schedtool
sudo pip3 install pcapy-ng
git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
sudo python3 sensor.py
لبدء تشغيل الخادم (اختياري) على نفس الجهاز، افتح محطة جديدة وقم بتنفيذ ما يلي:
[[ -d maltrail ]] || git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
python server.py
لاختبار أن كل شيء جاهز للعمل، قم بتنفيذ ما يلي:
ping -c 1 136.161.101.53
cat /var/log/maltrail/ $( date + " %Y-%m-%d " ) .log
أيضًا، لاختبار التقاط حركة مرور DNS، يمكنك تجربة ما يلي:
nslookup morphed.ru
cat /var/log/maltrail/ $( date + " %Y-%m-%d " ) .log
لإيقاف مثيلات الاستشعار والخادم (إذا كانت تعمل في الخلفية)، قم بتنفيذ ما يلي:
sudo pkill -f sensor.py
pkill -f server.py
قم بالوصول إلى واجهة إعداد التقارير (أي العميل ) عن طريق زيارة http://127.0.0.1:8338 (بيانات الاعتماد الافتراضية: admin:changeme!
) من متصفح الويب الخاص بك:
يمكن العثور على تكوين المستشعر داخل قسم ملف maltrail.conf
[Sensor]
:
إذا تم ضبط الخيار USE_MULTIPROCESSING
على true
، فسيتم استخدام جميع مراكز وحدة المعالجة المركزية. سيتم استخدام نواة واحدة فقط لالتقاط الحزم (مع التقارب المناسب وأولوية الإدخال والإخراج وإعدادات المستوى الجيد)، بينما سيتم استخدام النوى الأخرى لمعالجة الحزم. خلاف ذلك، سيتم تشغيل كل شيء على جوهر واحد. يمكن استخدام الخيار USE_FEED_UPDATES
لإيقاف تحديثات المسار من الخلاصات تمامًا (واستخدم فقط الخلاصات الثابتة المتوفرة). يحتوي الخيار UPDATE_PERIOD
على عدد الثواني بين كل تحديث تلقائي للمسارات (ملاحظة: تم ضبط القيمة الافتراضية على 86400
(أي يوم واحد)) باستخدام التعريفات داخل دليل trails
(ملاحظة: يعتني كل من المستشعر والخادم بتحديث المسارات). يمكن للمستخدم استخدام الخيار CUSTOM_TRAILS_DIR
لتوفير موقع الدليل الذي يحتوي على ملفات المسارات المخصصة ( *.txt
).
يقوم خيار USE_HEURISTICS
بتشغيل الآليات الإرشادية (على سبيل المثال، long domain name (suspicious)
، excessive no such domain name (suspicious)
، direct .exe download (suspicious)
، وما إلى ذلك)، مما قد يؤدي إلى تقديم نتائج إيجابية كاذبة. يقدم الخيار CAPTURE_BUFFER
ذاكرة إجمالية (بالبايت بالنسبة المئوية لإجمالي الذاكرة الفعلية) لاستخدامها في حالة وضع المعالجة المتعددة لتخزين التقاط الحزم في مخزن مؤقت حلقي لمزيد من المعالجة من خلال عمليات غير الالتقاط. يجب أن يحتوي الخيار MONITOR_INTERFACE
على اسم واجهة الالتقاط. استخدم القيمة any
للالتقاط من جميع الواجهات (إذا كان نظام التشغيل يدعم ذلك). يجب أن يحتوي الخيار CAPTURE_FILTER
على مرشح التقاط الشبكة ( tcpdump
) لتخطي الحزم غير المهمة وتسهيل عملية الالتقاط. يحتوي الخيار SENSOR_NAME
على الاسم الذي يجب أن يظهر داخل قيمة sensor_name
للأحداث، بحيث يمكن تمييز الحدث من أحد أجهزة الاستشعار عن الآخر. إذا تم تعيين الخيار LOG_SERVER
، فسيتم إرسال جميع الأحداث عن بعد إلى الخادم ، وإلا فسيتم تخزينها مباشرة في مجموعة دليل التسجيل مع الخيار LOG_DIR
، والذي يمكن العثور عليه داخل قسم ملف maltrail.conf
[All]
. في حالة تعيين الخيار UPDATE_SERVER
، فسيتم سحب جميع المسارات من الموقع المحدد، وإلا فسيتم تحديثها من تعريفات المسارات الموجودة داخل التثبيت نفسه.
يمكن استخدام الخيارات SYSLOG_SERVER
و/أو LOGSTASH_SERVER
لإرسال أحداث الاستشعار (أي بيانات السجل) إلى خوادم غير تابعة لـ Maltrail. في حالة SYSLOG_SERVER
، سيتم إرسال بيانات الحدث بتنسيق CEF ( Common Event Format ) إلى خدمة UDP (مثل Syslog) التي تستمع إلى العنوان المحدد (على سبيل المثال 192.168.2.107:514
)، بينما في حالة LOGSTASH_SERVER
سيتم إرسال بيانات الحدث في تنسيق JSON لخدمة UDP (مثل Logstash) التي تستمع إلى العنوان المحدد (على سبيل المثال 192.168.2.107:5000
).
مثال على بيانات الحدث التي يتم إرسالها عبر UDP هو كما يلي:
SYSLOG_SERVER
(ملاحظة: قيم LogSeverity
هي 0 (للمنخفض)، 1 (للمتوسط) و2 (للعالي)): Dec 24 15:05:55 beast CEF:0|Maltrail|sensor|0.27.68|2020-12-24|andromeda (malware)|2|src=192.168.5.137 spt=60453 dst=8.8.8.8 dpt=53 trail=morphed.ru ref=(static)
LOGSTASH_SERVER
: {"timestamp": 1608818692, "sensor": "beast", "severity": "high", "src_ip": "192.168.5.137", "src_port": 48949, "dst_ip": "8.8.8.8", "dst_port": 53, "proto": "UDP", "type": "DNS", "trail": "morphed.ru", "info": "andromeda (malware)", "reference": "(static)"}
عند تشغيل المستشعر (على سبيل المثال sudo python sensor.py
) لأول مرة و/أو بعد فترة أطول من عدم التشغيل، فإنه سيقوم تلقائيًا بتحديث المسارات من تعريفات الممرات (ملاحظة: مخزنة داخل دليل trails
). بعد التهيئة، سيبدأ في مراقبة الواجهة التي تم تكوينها (الخيار MONITOR_INTERFACE
داخل maltrail.conf
) وكتابة الأحداث إما إلى دليل السجل الذي تم تكوينه (الخيار LOG_DIR
داخل قسم ملف maltrail.conf
[All]
) أو إرسالها عن بعد إلى خادم التسجيل/التقارير (الخيار LOG_SERVER
).
يتم تخزين الأحداث المكتشفة داخل دليل تسجيل الخادم (أي الخيار LOG_DIR
داخل قسم ملف maltrail.conf
[All]
) بتنسيق CSV سهل القراءة (ملاحظة: يتم استخدام المسافة البيضاء ' ' كمحدد) كمدخلات سطر واحد يتكون من: sensor
time
src_ip
src_port
dst_ip
dst_port
proto
trail_type
trail
trail_info
reference
(على سبيل المثال "2015-10-19 15:48:41.152513" beast 192.168.5.33 32985 8.8.8.8 53 UDP DNS 0000mps.webpreview.dsl.net malicious siteinspector.comodo.com
):
يمكن العثور على إعدادات الخادم داخل قسم maltrail.conf
[Server]
:
يحتوي الخيار HTTP_ADDRESS
على عنوان الاستماع لخادم الويب (ملاحظة: استخدم 0.0.0.0
للاستماع على جميع الواجهات). يحتوي الخيار HTTP_PORT
على منفذ الاستماع الخاص بخادم الويب. تم ضبط منفذ الاستماع الافتراضي على 8338
. إذا تم ضبط الخيار USE_SSL
على true
، فسيتم استخدام SSL/TLS
للوصول إلى خادم الويب (على سبيل المثال https://192.168.6.10:8338/
). في هذه الحالة، يجب أن يشير الخيار SSL_PEM
إلى ملف PEM الخاص/الشهادة الخاص بالخادم.
يحتوي القسم الفرعي USERS
على إعدادات تكوين المستخدم. يتكون كل إدخال مستخدم من username:sha256(password):UID:filter_netmask(s)
. تمثل قيمة UID
معرف المستخدم الفريد، حيث يوصى باستخدام قيم أقل من 1000 للحسابات الإدارية، بينما قيمة أعلى للحسابات غير الإدارية. يمثل الجزء filter_netmask(s)
عامل التصفية (المرشحات) الثابت المفصول بفواصل والذي يمكن استخدامه لتصفية الأحداث المعروضة اعتمادًا على حساب (حسابات) المستخدم. الإدخال الافتراضي هو كما يلي:
يحتوي الخيار UDP_ADDRESS
على سجل الخادم الذي يجمع عنوان الاستماع (ملاحظة: استخدم 0.0.0.0
للاستماع على جميع الواجهات)، بينما يحتوي الخيار UDP_PORT
على قيمة منفذ الاستماع. إذا تم تشغيله، عند استخدامه مع الخيار LOG_SERVER
، فيمكن استخدامه لبنية الاستشعار (المتعددة) <-> الخادم المميزة.
يحتوي الخيار FAIL2BAN_REGEX
على التعبير العادي (على سبيل المثال، attacker|reputation|potential[^"]*(web scan|directory traversal|injection|remote code|iot-malware download|spammer|mass scanner
) لاستخدامه في مكالمات الويب /fail2ban
للاستخراج لعناوين IP لمصدر المهاجم اليوم، مما يسمح باستخدام آليات حظر IP (على سبيل المثال، fail2ban
أو iptables
أو ipset
) بشكل دوري سحب عناوين IP المدرجة في القائمة السوداء من موقع بعيد، سيكون مثال الاستخدام هو البرنامج النصي التالي (على سبيل المثال، التشغيل كوظيفة cronjob root
على أساس دقيقة):
#! /bin/bash
ipset -q flush maltrail
ipset -q create maltrail hash:net
for ip in $( curl http://127.0.0.1:8338/fail2ban 2> /dev/null | grep -P ' ^[0-9.]+$ ' ) ; do ipset add maltrail $ip ; done
iptables -I INPUT -m set --match-set maltrail src -j DROP
يتيح خيار BLACKLIST
إنشاء تعبيرات عادية لتطبيقها على حقل واحد. بناء الجملة لكل قاعدة هو: <field> <control> <regexp>
حيث:
field
إلى الحقل المراد ترجمته، ويمكن أن يكون: src_ip
أو src_port
أو dst_ip
أو dst_port
أو protocol
أو type
أو trail
أو filter
.control
إما ~
للمطابقات أو !~
لعدم التطابقregexp
هو التعبير العادي الذي يجب تطبيقه على الحقل. قم بربط قاعدة أخرى بالكلمة الأساسية " and
" (الكلمة الأساسية or
غير مدعومة، ما عليك سوى إضافة سطر لهذا). يمكنك استخدام الكلمة الأساسية BLACKLIST
وحدها أو إضافة اسم: BLACKLIST_NAME
. في الحالة الأخيرة، سيكون عنوان URL هو: /blacklist/name
على سبيل المثال، سيقوم ما يلي بإنشاء قائمة سوداء لجميع حركات المرور من مصدر آخر غير 192.168.0.0/16
إلى منفذ الوجهة SSH
أو مطابقة مرشحات scan
أو known attacker
BLACKLIST_OUT
src_ip !~ ^192.168. and dst_port ~ ^22$
src_ip !~ ^192.168. and filter ~ scan
src_ip !~ ^192.168. and filter ~ known attacker
BLACKLIST_IN
src_ip ~ ^192.168. and filter ~ malware
طريقة إنشاء قائمة ipset السوداء هي نفسها (انظر أعلاه) باستثناء أن عناوين URL ستكون /blacklist/in
و /blacklist/out
في مثالنا.
كما هو الحال مع جهاز الاستشعار ، عند تشغيل الخادم (على سبيل المثال، python server.py
) لأول مرة و/أو بعد فترة أطول من عدم التشغيل، إذا تم تعيين الخيار USE_SERVER_UPDATE_TRAILS
على true
، فسيتم تحديث المسارات تلقائيًا من تعريفات المسار ( ملاحظة: مخزنة داخل دليل trails
). وتتمثل وظيفته الأساسية في تخزين إدخالات السجل داخل دليل التسجيل (أي الخيار LOG_DIR
داخل قسم ملف maltrail.conf
[All]
) وتوفير واجهة إعداد تقارير الويب لتقديم تلك الإدخالات نفسها إلى المستخدم النهائي (ملاحظة: لا يوجد تحتاج إلى تثبيت حزم خادم الويب لجهة خارجية مثل Apache):
عند الدخول إلى واجهة إعداد التقارير الخاصة بالخادم (أي عبر العنوان المحدد بواسطة الخيارين HTTP_ADDRESS
و HTTP_PORT
)، سيتم تقديم مربع حوار المصادقة التالي للمستخدم. يجب على المستخدم إدخال بيانات الاعتماد المناسبة التي تم تعيينها بواسطة مسؤول الخادم داخل ملف التكوين maltrail.conf
(ملاحظة: بيانات الاعتماد الافتراضية هي admin:changeme!
):
بمجرد الدخول، ستظهر للمستخدم واجهة إعداد التقارير التالية:
يحتوي الجزء العلوي على مخطط زمني منزلق (ملاحظة: يتم تنشيطه بعد النقر فوق تسمية التاريخ الحالي و/أو رمز التقويم) حيث يمكن للمستخدم تحديد سجلات للأحداث الماضية (ملاحظة: سيؤدي تمرير الماوس فوق الحدث إلى عرض تلميح الأدوات مع العدد التقريبي للأحداث للأحداث الحالية تاريخ). يتم تجميع التواريخ حسب الأشهر، حيث يتم عرض فترة 4 أشهر من البيانات داخل الأداة نفسها. ومع ذلك، باستخدام شريط التمرير المتوفر (على سبيل المثال)، يمكن للمستخدم الوصول بسهولة إلى الأحداث من الأشهر السابقة.
بمجرد النقر على التاريخ، يجب تحميل جميع الأحداث الخاصة بهذا التاريخ المعين وتمثيلها بواسطة متصفح الويب الخاص بالعميل. اعتمادًا على عدد الأحداث وسرعة الاتصال بالشبكة، يمكن أن يستغرق تحميل الأحداث المسجلة وعرضها من ثانيتين إلى عدة دقائق (على سبيل المثال، يستغرق 100000 حدث حوالي 5 ثوانٍ إجمالاً). طوال وقت المعالجة بالكامل، سيتم عرض أداة التحميل المتحركة عبر واجهة المستخدم المعطلة:
الجزء الأوسط يحمل ملخصًا للأحداث المعروضة. يمثل مربع Events
إجمالي عدد الأحداث في فترة 24 ساعة محددة، حيث يمثل الخط الأحمر الأحداث المستندة إلى IP، ويمثل الخط الأزرق الأحداث المستندة إلى DNS، ويمثل الخط الأصفر الأحداث المستندة إلى URL. يمثل مربع Sources
عدد الأحداث لكل المصادر العليا في شكل مخطط عمودي مكدس، مع إجمالي عدد المصادر في الأعلى. يمثل مربع Threats
النسبة المئوية لأهم التهديدات في شكل مخطط دائري (ملاحظة: تحتوي المنطقة الرمادية على جميع التهديدات التي يقل كل منها عن 1% في إجمالي الأحداث)، مع إجمالي عدد التهديدات في الأعلى. يمثل مربع Trails
النسبة المئوية لأفضل الممرات في شكل مخطط دائري (ملاحظة: المنطقة الرمادية تحتوي على جميع الممرات التي تحتوي على أقل من 1% من إجمالي الأحداث)، مع إجمالي عدد الممرات في الأعلى. كل من هذه المربعات نشطة، وبالتالي فإن النقر على أحد هذه المربعات سيؤدي إلى رسم بياني أكثر تفصيلاً.
يحتوي الجزء السفلي على تمثيل مكثف للأحداث المسجلة في شكل جدول مرقّم. يحتوي كل إدخال على تفاصيل تهديد واحد (ملاحظة: يتم تحديده بشكل فريد بواسطة زوج (src_ip, trail)
أو (dst_ip, trail)
إذا كان src_ip
هو نفس trail
كما في حالة الهجمات القادمة من الخارج):
يحمل عمود threat
المعرّف الفريد للتهديد (على سبيل المثال 85fdb08d
) واللون (ملاحظة: يتم إخراجه من معرّف التهديد)، ويحتفظ sensor
باسم (أسماء) المستشعر الذي تم تشغيل الحدث فيه (على سبيل المثال blitvenica
)، وتحتفظ events
بالعدد الإجمالي لأحداث التهديد الحالي ، يتم تقييم severity
خطورة التهديد (ملاحظة: يتم حسابه استنادًا إلى القيم الموجودة في info
والأعمدة reference
، مع إعطاء الأولوية لحركة المرور الناتجة عن البرامج الضارة)، ويحتفظ first_seen
بوقت الحدث الأول في فترة محددة (24 ساعة) (على سبيل المثال 06th 08:21:54
)، يحمل last_seen
وقت الحدث الأخير في فترة محددة (24 ساعة) (على سبيل المثال 06th 15:21:23
)، يحمل sparkline
المؤشر رسمًا بيانيًا صغيرًا يمثل نشاط التهديد في فترة محددة، ويحمل src_ip
عنوان IP المصدر (منافذ) التهديد (على سبيل المثال 99.102.41.102
)، يحمل src_port
منفذ (منافذ) المصدر (على سبيل المثال 44556, 44589, 44601
)، dst_ip
يحمل عنوان (عناوين) IP للوجهة (على سبيل المثال 213.202.100.28
)، ويحمل dst_port
منفذ (منافذ) الوجهة (على سبيل المثال 80 (HTTP)
)، ويحتفظ proto
بالبروتوكول (البروتوكولات)، (على سبيل المثال TCP
)، ويحمل trail
إدخال مدرج في القائمة السوداء (أو إرشادي) أدى إلى الحدث (الأحداث)، info
تحتوي على مزيد من المعلومات حول التهديد/المسار (على سبيل المثال known attacker
لعناوين IP الخاصة بالمهاجم المعروف أو ipinfo
لخدمة معلومات IP المعروفة التي تستخدمها البرامج الضارة بشكل شائع أثناء بدء التشغيل)، يحتفظ reference
بمصدر الإدخال المدرج في القائمة السوداء (على سبيل المثال (static)
للمسارات الثابتة أو myip.ms
للخلاصة الديناميكية التي تم استردادها من ذلك نفس المصدر) tags
تحمل علامات يحددها المستخدم لمسار معين (مثل APT28
).
عند تحريك الماوس فوق إدخالات الجدول src_ip
و dst_ip
، يتم عرض تلميح أداة المعلومات مع معلومات تفصيلية عن DNS وWHOIS (ملاحظة: RIPE هو موفر المعلومات):
يتم تكثيف تفاصيل الأحداث (مثل src_port
و dst_port
و proto
وما إلى ذلك) التي تختلف داخل نفس إدخال التهديد في شكل رمز فقاعي (على سبيل المثال). يتم تنفيذ ذلك للحصول على واجهة تقارير قابلة للاستخدام مع أقل عدد ممكن من الصفوف. سيؤدي تحريك الماوس فوق هذا الرمز إلى عرض تلميح معلومات مع الاحتفاظ بجميع العناصر (على سبيل المثال، يتم فحص جميع أرقام المنافذ بواسطة attacker
):
سيؤدي النقر فوق أحد هذه الأيقونات إلى فتح مربع حوار جديد يحتوي على جميع العناصر المخزنة (ملاحظة: في شكلها غير المكثف) جاهزة للنسخ واللصق (د) لمزيد من التحليل:
عند تحريك مؤشر الماوس فوق مسار التهديد لبضع ثوانٍ، سينتج عن ذلك إطار يتكون من نتائج تستخدم المسار كمصطلح بحث يتم إجراؤه ضده تشفير البحث محرك البحث سيركس. وفي كثير من الحالات، يوفر هذا معلومات أساسية حول التهديد نفسه، مما يلغي حاجة المستخدم إلى إجراء بحث يدوي عنه. يوجد في الزاوية اليمنى العليا من نافذة الإطار المفتوحة زرين إضافيين. بالنقر فوق الأول (على سبيل المثال)، سيتم فتح الإطار الناتج داخل علامة تبويب (أو نافذة) المتصفح الجديد، بينما يؤدي النقر فوق الثاني (على سبيل المثال) إلى إغلاق الإطار على الفور (ملاحظة: يتم تنفيذ نفس الإجراء عن طريق تحريك مؤشر الماوس خارج حدود الإطار):
يوجد لكل تهديد tag
عمود يمكن ملؤها بـ "علامات" عشوائية لوصف جميع التهديدات التي تشترك في نفس المسار عن كثب. كما أنها طريقة رائعة لوصف التهديدات بشكل فردي، بحيث يمكن تجميع جميع التهديدات التي تشترك في نفس العلامة (مثل yahoo
) لاحقًا:
في القسم التالي، سيتم وصف بعض سيناريوهات "المشتبه بهم المعتادين" من خلال حالات واقعية.
تعد عمليات الفحص الجماعي ظاهرة شائعة إلى حد ما حيث يمنح الأفراد و/أو المؤسسات أنفسهم الحق في فحص نطاق IP 0.0.0.0/0 بالكامل (أي الإنترنت بالكامل) على أساس يومي، مع إخلاء المسؤولية حيث يقولون إنه إذا لم يعجبك لذا يجب عليك الاتصال بهم على انفراد حتى يتم تخطيك من عمليات الفحص المستقبلية.
ولجعل الأمور أسوأ، تقدم منظمات مثل Shodan وZoomEye جميع النتائج متاحة مجانًا (لمهاجمين محتملين آخرين) من خلال محرك البحث الخاص بهم. في لقطات الشاشة التالية، سترى تفاصيل عمليات فحص Shodan في يوم واحد.
فيما يلي بحث عكسي عن DNS وWHOIS لعنوان "المهاجم":
عند تحريك مؤشر الماوس فوق محتوى عمود trail
(عنوان IP)، ستظهر لك نتائج البحث من searX حيث ستتمكن من العثور على مزيد من المعلومات حول "المهاجم":
في العمود dst_ip
، إذا كانت لديك مؤسسة كبيرة، فسيتم تقديم قائمة كبيرة من عناوين IP التي تم فحصها:
في العمود dst_port
ستتمكن من رؤية جميع المنافذ التي تم فحصها بواسطة عمليات الفحص الجماعية هذه:
في مواقف أخرى مماثلة، سترى نفس السلوك، قادمًا من مهاجم (مهاجمين) فرديين مدرجين في القائمة السوداء (في هذه الحالة بواسطة cinsscore.com):
أحد السلوكيات الشائعة الأخرى هو فحص نطاق IP 0.0.0.0/0 بالكامل (أي الإنترنت) بحثًا عن منفذ معين (على سبيل المثال، منفذ TCP 443 عند العثور على Heartbleed). في لقطة الشاشة التالية، ستجد إحدى هذه الحالات للمهاجمين المدرجين سابقًا في القائمة السوداء (في هذه الحالة بواسطة موقع Alienvault.com وقائمتين أسودتين أخريين) يستهدفون منفذ UDP 5060 (أي SIP) بحثًا عن أجهزة VoIP التي تم تكوينها بشكل خاطئ:
لاكتشاف المهاجمين المحتملين المختبئين خلف شبكة Tor المجهولة، يستخدم Maltrail قوائم متاحة للعامة لعقد خروج Tor. في لقطة الشاشة التالية، سترى حالة يستخدم فيها مهاجم محتمل شبكة Tor للوصول إلى هدف الويب (عبر HTTP) في نطاق مؤسستنا بطريقة مشبوهة (إجمالي 171 طلب اتصال في 10 دقائق):
الحالة المشابهة إلى حد ما للحالة السابقة هي عندما يحاول مهاجم مدرج في القائمة السوداء مسبقًا الوصول إلى خدمة معينة (على سبيل المثال غير HTTP(s)) في نطاق مؤسستنا بطريقة مشبوهة إلى حد ما (أي إجمالي 1513 محاولة اتصال في أقل من 15 دقيقة):
إذا أدخلنا ssh attacker
في حقل Filter
، فسنكون قادرين على رؤية جميع الأحداث المشابهة لذلك اليوم، ولكن في هذه الحالة بالنسبة للمنفذ 22 (أي SSH):
في حالة وجود محاولات اتصال قادمة من أجهزة كمبيوتر مصابة داخل مؤسستنا نحو خوادم التحكم والسيطرة المعروفة بالفعل، فستتمكن من العثور على تهديدات مشابهة لما يلي (في هذه الحالة Beebone):
في حالة طلبات DNS التي تحتوي على أسماء نطاقات DGA معروفة، سيتم عرض التهديد كما يلي (في هذه الحالة Necurs):
في الحالة التالية، حدثت تنزيلات لملفات من عناوين URL المدرجة في القائمة السوداء (في هذه الحالة عن طريق برنامج Malwarepatrol.net):
إذا أدخلنا اسم البرنامج الضار المعين (في هذه الحالة Ramnit) في حقل Filter
، فسيتم تصفية التهديدات المعروفة بأنها مرتبطة بهذه البرامج الضارة فقط (تظهر لك جميع أجهزة الكمبيوتر الداخلية المتأثرة):
بشكل أكثر عمومية، إذا أدخلنا malware
في حقل Filter
، فسيتم تصفية جميع التهديدات التي تم العثور عليها من خلال مسارات البرامج الضارة (المتعلقة) (مثل عناوين IP
) في:
يستخدم Maltrail القائمة الثابتة لنطاقات TLD المعروفة بتورطها بشكل شائع في الأنشطة المشبوهة. تأتي معظم نطاقات TLD هذه من مسجلي النطاقات المجانية (مثل Freenom)، وبالتالي يجب أن تخضع لمزيد من التدقيق. في لقطة الشاشة التالية، يمكننا العثور على حالة تم فيها استخدام أحد نطاقات TLD .cm
بواسطة برامج ضارة غير معروفة باستخدام خوارزمية DGA للاتصال بخادم (خوادم) التحكم والسيطرة الخاص بها:
هناك أيضًا حالات يتم فيها استخدام نطاقات TLD صالحة تمامًا (مثل .ru
) لأنشطة مشبوهة، كما هو الحال في هذه الحالة (على سبيل المثال، long domain name (suspicious)
) حيث من الواضح أن النطاقات تم إنشاؤها بواسطة DGA بواسطة برامج ضارة غير معروفة:
يستخدم Maltrail قائمة ثابتة لما يسمى بـ "المجالات الديناميكية" التي تُستخدم غالبًا في الأنشطة المشبوهة (على سبيل المثال لخوادم القيادة والسيطرة الضارة التي غالبًا ما تغير عناوين IP للوجهة):
يستخدم Maltrail أيضًا قائمة ثابتة من النطاقات ذات الصلة بـ "البصل" والتي غالبًا ما تُستخدم أيضًا في الأنشطة المشبوهة (مثل البرامج الضارة التي تتصل بخوادم القيادة والسيطرة باستخدام خدمة (خدمات) Tor2Web):
في حالة البرامج الضارة القديمة و/أو المتقادمة التي لا يتم اكتشافها على أجهزة الكمبيوتر الداخلية المصابة بالمؤسسة، فغالبًا ما تكون هناك "ظاهرة" حيث تحاول البرامج الضارة باستمرار الاتصال بمجال خادم القيادة والتحكم الذي توقف منذ فترة طويلة دون أي حل لنظام أسماء النطاقات. ومن ثم، سيتم تصنيف هذا النوع من التهديدات (المحتملة) على أنه excessive no such domain (suspicious)
:
في حالة وجود مسار واحد مسؤول عن عدد كبير جدًا من التهديدات (على سبيل المثال، في حالة عناوين IP المصدرية المزيفة كما هو الحال في هجمات تضخيم DNS)، سيتم تجميع جميع التهديدات المماثلة تحت تهديد flood
واحد (ملاحظة: سيتم وضع علامة على معرف التهديد باللاحقة F0
)، كما في المثال التالي:
تستخدم الكثير من البرامج الضارة نوعًا ما من خدمة ipinfo
(مثل ipinfo.io) لاكتشاف عنوان IP الخاص بالإنترنت للضحية. في حالة الدوام الرسمي وخاصة خارج ساعات العمل، يجب مراقبة هذا النوع من الطلبات عن كثب، كما في المثال التالي:
باستخدام عامل التصفية ipinfo
يمكن إدراج جميع أجهزة الكمبيوتر التي يحتمل أن تكون مصابة في نطاق مؤسستنا والتي تشترك في هذا النوع من السلوك المشبوه:
يقوم Maltrail بتتبع جميع محاولات تنزيل الملفات المباشرة المشبوهة (مثل .apk
و .bin
و .class
و .chm
و .dll
و .egg
و .exe
و .hta
و .hwp
و .lnk
و .ps1
و .scr
و .sct
و .wbk
و .xpi
ملحقات الملفات). يمكن أن يؤدي هذا إلى الكثير من النتائج الإيجابية الخاطئة، ولكنه قد يساعد في النهاية في إعادة بناء سلسلة العدوى (ملاحظة: عادةً ما يستخدم مقدمو الخدمة الشرعيون، مثل Google، HTTPS المشفر لإجراء هذا النوع من التنزيلات):
في حالة الطلبات المشبوهة الواردة من أدوات فحص أمان تطبيقات الويب الخارجية (مثل البحث عن نقاط الضعف SQLi وXSS وLFI وما إلى ذلك) و/أو المحاولات الضارة للمستخدم الداخلي تجاه مواقع ويب غير معروفة، يمكن العثور على تهديدات مثل ما يلي (حالة حقيقية لـ يحاول المهاجمون استغلال نقاط الضعف في Joomla!
في المثال التالي، تم وضع علامة "مشبوهة" على فحص الثغرات الأمنية لتطبيق الويب:
إذا نقرنا على أيقونة الفقاعة (على سبيل المثال) للحصول على التفاصيل وقمنا بنسخ المحتوى بالكامل ولصقه في ملف نصي، فسنكون قادرين على رؤية جميع طلبات HTTP المشبوهة:
في لقطة الشاشة التالية، يمكن العثور على مجموعة من أدوات الثغرات الأمنية SQLi الشائعة sqlmap داخل سجلاتنا:
في حالة وجود عدد كبير جدًا من محاولات الاتصال بكمية كبيرة من منافذ TCP المختلفة، سوف يحذر Maltrail من فحص المنافذ المحتمل، نتيجة لاكتشاف الآلية الإرشادية الخاصة به. في لقطة الشاشة التالية، يمكن العثور على مثل هذه التحذيرات لتشغيل أداة فحص المنافذ الشائعة nmap:
أحد هجمات DDoS الشائعة ضد البنية التحتية لخادم (خوادم) الويب هو استنفاد موارد خادم DNS (الرئيسي) الخاص به عن طريق إجراء استعلامات تكرار DNS صالحة لأسماء النطاقات الفرعية العشوائية (الزائفة) (على سبيل المثال abpdrsguvjkyz.www.dedeni.com
):
تقدم البرامج المتنوعة (خصوصًا تلك المعتمدة على الأجهزة المحمولة) سلوكًا شبيهًا بالبرامج الضارة حيث ترسل بيانات قد تكون حساسة إلى منشورات المنارات البعيدة. سيحاول Maltrail التقاط مثل هذا السلوك كما في المثال التالي:
كما هو الحال في جميع الحلول الأمنية الأخرى، فإن Maltrail عرضة لـ "الإيجابيات الكاذبة". في مثل هذه الحالات، سيقوم Maltrail (خاصة في حالة التهديدات suspicious
) بتسجيل سلوك المستخدم العادي ووضع علامة عليه على أنه ضار و/أو مريب. في المثال التالي، يمكن ملاحظة أن موفر موجز القائمة السوداء blocklist.de
وضع علامة على خادم Google العادي attacker
(مهاجمين)، مما أدى إلى التهديد التالي:
من خلال تحريك الماوس فوق المسار، يُظهر الإطار الذي يحتوي على نتائج من بحث searX أن هذا هو (على الأرجح) خادم Google عادي:
وكمثال آخر، أدى الوصول إلى نطاقات .work
العادية (نطاق TLD الشائع للأغراض الضارة) إلى التهديد التالي:
ومع ذلك، يجب على المسؤول (المسؤولين) استثمار بعض الوقت الإضافي والتحقق (بوسائل أخرى) مما إذا كانت كلمة "مشبوهة" تعني ضارة أم لا، كما في المثال التالي:
على أوبونتو/ديبيان
sudo apt-get install git python3 python3-dev python3-pip python-is-python3 libpcap-dev build-essential procps schedtool
sudo pip3 install pcapy-ng
cd /tmp
git clone --depth 1 https://github.com/stamparm/maltrail.git
sudo mv /tmp/maltrail /opt
sudo chown -R $USER : $USER /opt/maltrail
على سوزي/أوبن سوزي
sudo zypper install gcc gcc-c++ git libpcap-devel python3-devel python3-pip procps schedtool
sudo pip3 install pcapy-ng
cd /tmp
git clone --depth 1 https://github.com/stamparm/maltrail.git
sudo mv /tmp/maltrail /opt
sudo chown -R $USER : $USER /opt/maltrail
ضبط بيئة العمل:
sudo mkdir -p /var/log/maltrail
sudo mkdir -p /etc/maltrail
sudo cp /opt/maltrail/maltrail.conf /etc/maltrail
sudo nano /etc/maltrail/maltrail.conf
ضبط بيئة التشغيل:
crontab -e # autostart server & periodic update
*/5 * * * * if [ -n "$(ps -ef | grep -v grep | grep 'server.py')" ]; then : ; else python3 /opt/maltrail/server.py -c /etc/maltrail/maltrail.conf; fi
0 1 * * * cd /opt/maltrail && git pull
sudo crontab -e # autostart sensor & periodic restart
*/1 * * * * if [ -n "$(ps -ef | grep -v grep | grep 'sensor.py')" ]; then : ; else python3 /opt/maltrail/sensor.py -c /etc/maltrail/maltrail.conf; fi
2 1 * * * /usr/bin/pkill -f maltrail
التمكين كخدمات systemd (Linux فقط):
sudo cp /opt/maltrail/maltrail-sensor.service /etc/systemd/system/maltrail-sensor.service
sudo cp /opt/maltrail/maltrail-server.service /etc/systemd/system/maltrail-server.service
sudo systemctl daemon-reload
sudo systemctl start maltrail-server.service
sudo systemctl start maltrail-sensor.service
sudo systemctl enable maltrail-server.service
sudo systemctl enable maltrail-sensor.service
systemctl status maltrail-server.service && systemctl status maltrail-sensor.service
ملاحظة : يمكن بدء تشغيل /maltrail-sensor.service
كخدمة مخصصة بدون تشغيل /maltrail-server.service
مسبقًا. يعد هذا مفيدًا في حالة تثبيت /maltrail-server.service
وتشغيله على جهاز آخر في بيئة الشبكة الخاصة بك.
يتم توفير هذا البرنامج بموجب ترخيص MIT. راجع ملف الترخيص المرفق لمزيد من المعلومات.
1 استخدام المسارات (فقط).
2 موصل للمسارات (فقط)