Maltrail یک سیستم شناسایی ترافیک های مخرب است که از لیست های سیاهی که حاوی مسیرهای مخرب و مشکوک است همراه با مسیرهای استاتیک که از گزارش های مختلف AV و لیست های تعریف شده توسط کاربر ساخته شده استفاده می کند .
در موارد زیر Maltrail که یک سیستم شناسایی ترافیک های مخرب می باشد می تواند در کشف تهدیدهای ناشناخته ( مانند نرم افزارهای مخرب جدید ) کمک کند
مثال از URL :
zvpprsensinaix.com برای بدافزار Banjori
http://109.162.38.120/harsh02.exe برای اجرای خراب کاری های شناخته شده
ارزش هدر HTTP User Agent : به عنوان مثال sqlmap برای SQL injection injection و ابزار های پایگاه داده
,360chinad, 360conficker, 360cryptolocker, 360gameover, 360locky
,360necurs, 360tofsee, 360virut, alienvault, atmos, badips
,bambenekconsultingc2dns, bambenekconsultingc2ip, bambenekconsultingdga
,bitcoinnodes, blocklist, botscout, bruteforceblocker, ciarmy, cruzit
,cybercrimetracker, dataplane, dshielddns, dshieldip, emergingthreatsbot
,emergingthreatscip, emergingthreatsdns, feodotrackerdns, feodotrackerip
,greensnow, loki, malc0de, malwaredomainlistdns, malwaredomainlistip
,malwaredomains, malwarepatrol, maxmind, myip, nothink, openphish
,palevotracker, policeman, pony, proxylists, proxyrss, proxyspy
,ransomwaretrackerdns, ransomwaretrackerip, ransomwaretrackerurl
,riproxies, rutgers, sblam, socksproxy, sslipbl, sslproxies
,talosintelligence, torproject, torstatus, turris, urlvir, voipbl, vxvault
,zeustrackerdns, zeustrackerip, zeustrackermonitor, zeustrackerurl, etc
مسیرهای موجود در موارد زیر (مثلا مخرب C & Cs یا sinkholes) به صورت دستی (از گزارشهای مختلف AV و تحقیقات شخصی) گنجانده شده است :
aboc, adylkuzz, agaadex, alienspy, almalocker, alureon, android_acecard, android_adrd, android_alienspy, android_arspam, android_backflash, android_basebridge, android_boxer, android_chuli, android_claco,
android_coolreaper, android_counterclank, android_cyberwurx, android_dendoroid, android_dougalek, android_droidjack, android_droidkungfu, android_enesoluty, android_ewalls, android_ewind, android_exprespam,
android_fakebanco, android_fakedown, android_fakeinst, android_fakelog, android_fakemart, android_fakemrat, android_fakeneflic, android_fakesecsuit, android_feabme, android_flexispy, android_frogonal, android_geinimi,
android_ghostpush, android_ginmaster, android_gmaster, android_godwon, android_golddream, android_gonesixty, android_ibanking, android_kemoge, android_lockdroid, android_lovetrap, android_maistealer, android_maxit,
android_oneclickfraud, android_opfake, android_ozotshielder, android_pikspam, android_pjapps, android_qdplugin, android_repane, android_roidsec, android_samsapo, android_sandorat, android_selfmite, android_simplocker,
android_skullkey, android_sndapps, android_spytekcell, android_stealer, android_stels, android_teelog, android_tetus, android_tonclank, android_torec, android_uracto, android_usbcleaver, android_walkinwat,
android_windseeker, android_wirex, android_xavirad, android_zertsecurity, andromem, androm, angler, anuna, apt_adwind, apt_aridviper, apt_babar, apt_bisonal, apt_blackenergy, apt_blackvine, apt_bookworm, apt_carbanak,
apt_careto, apt_casper, apt_chches, apt_cleaver, apt_copykittens, apt_cosmicduke, apt_darkhotel, apt_darkhydrus, apt_desertfalcon, apt_dragonok, apt_dukes, apt_equationgroup, apt_fin4, apt_finfisher, apt_gamaredon, apt_gaza,
apt_gref, apt_groundbait, apt_htran, apt_ke3chang, apt_lazarus, apt_lotusblossom, apt_magichound, apt_menupass, apt_miniduke, apt_naikon, apt_nettraveler, apt_newsbeef, apt_oceanlotus, apt_pegasus, apt_potao, apt_quasar, apt_redoctober, apt_russiandoll, apt_sauron, apt_scarletmimic, apt_scieron, apt_shamoon, apt_snake,
apt_snowman, apt_sobaken, apt_sofacy, apt_stealthfalcon, apt_stonedrill, apt_stuxnet, apt_tibet, apt_turla, apt_tvrms, apt_volatilecedar, apt_waterbug, apt_weakestlink, apt_xagent, arec, artro, autoit, avalanche, avrecon, axpergle, azorult, bachosens, badblock, balamid, bamital, bankapol, bankpatch, banloa, banprox, bayrob, bedep,
blackshades, blockbuster, bredolab, bubnix, bucriv, buterat, calfbot, camerashy, carbanak, carberp, cerber, changeup, chanitor, chekua, cheshire, chewbacca, chisbur, cloudatlas, cobalt, conficker, contopee, corebot,
couponarific, criakl, cridex, crilock, cryakl, cryptinfinite, cryptodefense, cryptolocker, cryptowall, ctblocker, cutwail, defru, destory, dircrypt, dmalocker, dnsbirthday, dnschanger, dnsmessenger, dnstrojan, dorifel, dorkbot, dragonok,
drapion, dridex, dropnak, dursg, dyreza, elf_aidra, elf_billgates, elf_darlloz, elf_ekoms, elf_groundhog, elf_hacked_mint, elf_mayhem, elf_mokes, elf_pinscan, elf_rekoobe, elf_shelldos, elf_slexec, elf_sshscan,
elf_themoon, elf_turla, elf_xnote, elf_xorddos, elpman, emogen, emotet, evilbunny, expiro, fakben, fakeav, fakeran, fantom, fareit, fbi_ransomware, fiexp, fignotok, filespider, findpos, fireball, fraudload, fynloski, fysna, gamarue, gandcrab, gauss, gbot, generic, glupteba, goldfin, golroted, gozi, hacking_team, harnig, hawkeye, helompy, hiloti,
hinired, immortal, injecto, invisimole, ios_keyraider, ios_muda, ios_oneclickfraud, ios_specter, ios_xcodeghost, iron, ismdoor, jenxcus, kegotip, kingslayer, kolab, koobface, korgo, korplug, kovter, kradellsh, kronos, kulekmoko, locky, lollipop, luckycat, majikpos, malwaremustdie.org.csv, marsjoke, matsnu, mdrop, mebroot, mestep, misogow, miuref,
modpos, morto, nanocor, nbot, necurs, nemeot, neshuta, netwire, neurevt, nexlogger, nigelthorn, nivdort, njrat, nonbolqu, notpetya, nuclear, nuqel, nwt, nymaim, odcodc, oficla, onkods, optima, osx_keranger, osx_keydnap, osx_mami, osx_mughthesec, osx_salgorea, osx_wirelurker, padcrypt, palevo, parasite, paycrypt, pdfjsc, pepperat,
pghost, phytob, picgoo, pift, plagent, plugx, ponmocup, poshcoder, powelike, proslikefan, pushdo, pykspa, qakbot, rajump, ramnit, ransirac, reactorbot, redsip, remcos, renocide, reveton, revetrat, rincux, rovnix, runforestrun, rustock, sage, sakurel, sality, satana, sathurbot, satori, scarcruft, seaduke, sefnit, selfdel, shifu, shimrat, shylock,
siesta, silentbrute, silly, simda, sinkhole_abuse, sinkhole_anubis, sinkhole_arbor, sinkhole_bitdefender, sinkhole_blacklab, sinkhole_botnethunter, sinkhole_certgovau, sinkhole_certpl, sinkhole_checkpoint, sinkhole_cirtdk, sinkhole_conficker, sinkhole_cryptolocker, sinkhole_drweb, sinkhole_dynadot, sinkhole_dyre, sinkhole_farsight, sinkhole_fbizeus, sinkhole_fitsec, sinkhole_fnord, sinkhole_gameoverzeus, sinkhole_georgiatech, sinkhole_gladtech,
sinkhole_honeybot, sinkhole_kaspersky, sinkhole_microsoft, sinkhole_rsa, sinkhole_secureworks, sinkhole_shadowserver, sinkhole_sidnlabs, sinkhole_sinkdns, sinkhole_sugarbucket, sinkhole_supportintel, sinkhole_tech, sinkhole_tsway, sinkhole_unknown, sinkhole_virustracker, sinkhole_wapacklabs, sinkhole_xaayda,
sinkhole_yourtrap, sinkhole_zinkhole, skeeyah, skynet, skyper, smokeloader, smsfakesky, snifula, snort.org.csv, sockrat, sohanad, spyeye, stabuniq, synolocker, tdss, teamspy, teerac, teslacrypt, themida, tinba, torpig, torrentlocker, troldesh, tupym, unruy, upatre, utoti, vawtrak, vbcheman, vinderuf, virtum, virut, vittalia, vobfus,
vundo, waledac, wannacry, waprox, wecorl, wecoym, wndred, xadupi, xpay, xtrat, yenibot, yimfoca, zaletelly, zcrypt, zemot, zeroaccess, zeus, zherotee, zlader, zlob, zombrari, zxshell, zyklon, etc
معماری Maltrail بر اساس ترافیک می باشد Sensor <-> Server <-> Client architecture
Sensor (ها) یک پارامتر مستقل هستند که در نود مانیتورینگ قرار دارند (به عنوان مثال پلت فرم لینوکس به طور مخفیانه به پورت SPAN/mirroring وصل شده یا … ) یا در دستگاه مستقل (مانند Honeypot) که “نظارت” برای موارد و مسیرهای لیست سیاه (یعنی نام دامنه، URL ها و / یا IP ها) است .
تطابق قطعی جزئیات ، رویدادی است که در داخل دایرکتوری مربوطه ثبت می شود و به سرور (مرکزی) ارسال می شود ( LOG_DIR که در قسمت پیکربندی توضیح داده شده است ) .
اگر سنسور در همان دستگاه به عنوان سرور (پیکربندی پیش فرض) اجرا شود ، لاگ های مربوطه به طور مستقیم در ورودی دایرکتوری محلی ذخیره می شود در غیر این صورت، آنها از طریق پیام های UDP به سرور راه دور ارسال می شوند (به عنوان مثال LOG_SERVER در قسمت پیکربندی توضیح داده شده است).
نقش اصلی سرور این است که اطلاعات مربوط به رویداد را ذخیره کرده و پشتیبانی پشت صحنه در برنامه وب را گزارش دهد. در تنظیمات پیش فرض، سرور و سنسور بر روی یک ماشین اجرا می شوند.
بنابراین، برای جلوگیری از اختلالات بالقوه و شناسایی ترافیک های مخرب در فعالیت های سنسورها ، قسمت گزارش بخش جلویی براساس معماری “Fat client” (یعنی تمام پردازش داده ها در داخل برنامه مرورگر وب مشتری انجام می شود) است
در جایی که برنامه وب تنها مسئول بخش ارائه گزارش دهی است رویدادها (لاگ های ثبت شده) برای دوره (24 ساعته) انتخاب شده به کلاینت منتقل می شود . داده ها یی که به صورت متوالی پردازش می شوند به سمت کلاینت در بسته های فشرده ارسال می شود .
گزارش نهایی در شکل بسیار متداول می شود و عملا امکان ارائه تعداد نامحدودی از حوادث را فراهم می کند .
نکته: اجزای سرور را می توان در کل حذف کرده و فقط از سنسور مستقل استفاده کنید . در چنین مواردی، تمام حوادث در دایرکتوری logging محلی ذخیره می شوند، در حالی که ورود به سیستم می تواند به صورت دستی یا توسط برخی از برنامه CSV مورد بررسی قرار گیرد.
مجموعه دستورات زیر سنسور Maltrail Sensor را فعال می کند (خارج از جعبه با تنظیمات پیش فرض و رابط مانیتورینگ) :
sudo apt-get install git python-pcapy
git clone https://github.com/stamparm/maltrail.git
cd maltrail
sudo python sensor.py
برای شروع به کار سرور در همان دستگاه (اختیاری) ، یک ترمینال جدید را باز کرده و موارد زیر را اجرا کنید:
d maltrail ]] || git clone 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
برای متوقف کردن سنسور (اگر در حال اجرا در پس زمینه باشد ) از دستورات زیر استفاده کنید :
sudo pkill -f sensor.py
pkill -f server.py
از طریق مرورگر وب خود، با مراجعه به http://127.0.0.1:8338 ( پیش فرض: admin: changeme!) به رابط کاربری (به عنوان مثال کلاینت) از طریق مرورگر وب خود دسترسی پیدا کنید .
Sensor :
برای پیکربندی Sensor باید به مسیر فایل maltrail.conf بروید
اگر گزینه USE_MULTIPROCESSING درست تنظیم شده باشد، تمام هسته های CPU استفاده درست خواهند داشت . برای ضبط بسته فقط از یک هسته استفاده می شود (با وابستگی مناسب، اولویت IO و تنظیمات سطح خوب) .
گزینه USE_FEED_UPDATES را می توان برای غیر فعال کردن به روز رسانی مسیرهای استاتیک ارائه شده استفاده کرد .
گزینه UPDATE_PERIOD در داخل مسیر دایرکتوری ، حاوی زمان بر حسب ثانیه ما بین به روز رسانی های خودکار می باشد (توجه: مقدار پیش فرض به 86400 (یعنی یک روز) تنظیم شده است)
گزینه CUSTOM_TRAILS_DIR می تواند توسط کاربر برای ارائه محل دایرکتوری حاوی مسیرهای سفارشی (* .txt) استفاده شود .
گزینه USE_HEURISTICS بر روی مکانیزم های کشف شده (به عنوان مثال یک دامنه طولانی (مشکوک)، نام دامنه (مشکوک)، فایل احرایی (مشکوک) و غیره) false positives ها را معرفی میکند .
گزینه CAPTURE_BUFFER مجموع حافظه در بایت (درصد از کل حافظه فیزیکی) را نشان می دهد که در حالت چند پردازشی برای ذخیره سازی ضبط بسته ، در یک بافر حلقه برای پردازش بیشتر با فرایندهای غیر جذب مورد استفاده قرار می گیرد .
گزینه MONITOR_INTERFACE با استفاده از کپچر ، تمام واسط ها باید حاوی نام اینترفیس مانیتور شده باشد.
گزینه CAPTURE_FILTER باید شامل فیلترینگ شبکه (tcpdump) باشد تا بسته های غیرمستقیم را جست وجو کند و فرایند کپچر کردن را کاهش دهد.
گزینه SENSOR_NAME شامل نامی است که باید در داخل رویداد value sensor_name ظاهر شود، بنابراین رویداد از یک سنسور میتواند از دیگری متفاوت باشد.
اگر گزینه LOG_SERVER تنظیم شده باشد، تمام رویدادها از راه دور به سرور ارسال می شود، در غیر این صورت آنها به طور مستقیم در فهرست دایرکتوری وارد شده با گزینه LOG_DIR ذخیره می شوند که می توانید در بخش
[maltrail.conf [All مشاهده کنید .
در صورتی که گزینه UPDATE_SERVER تنظیم شده باشد، تمام مسیرها از موقعیت داده شده کشیده می شوند، در غیر این صورت از تعاریف مسیریابی که درون دستگاه نصب شده است، به روز می شود.
هنگام اجرای سنسور (مثلا sudo python sensor.py) در صورتی که یک دوره طولانی غیر فعال بوده باشد باید مسیرها را از تعاریف مسیریابی داخل پوشه ذخیره شده به طور خودکار به روزرسانی کنید.
بعد از مقداردهی اولیه، شروع به نظارت بر رابط پیکربندی شده (گزینه MONITOR_INTERFACE در داخل maltrail.conf) کنید و رویدادها را در هر ورودی دایرکتوری پیکربندی (گزینه LOG_DIR داخل بخش [maltrail.conf [All) بنویسید یا آنها را از راه دور به ورود یا گزارش سرور (گزینه LOG_SERVER) ارسال کنید .