Maltrail adalah sistem deteksi lalu lintas berbahaya, memanfaatkan daftar (hitam) yang tersedia untuk umum yang berisi jejak berbahaya dan/atau umumnya mencurigakan, bersama dengan jejak statis yang dikumpulkan dari berbagai laporan AV dan daftar yang ditentukan pengguna khusus, di mana jejak dapat berupa apa saja dari nama domain (misalnya zvpprsensinaix.com
untuk malware Banjori), URL (misalnya hXXp://109.162.38.120/harsh02.exe
untuk malware yang diketahui dapat dieksekusi), alamat IP (misalnya 185.130.5.231
untuk penyerang yang dikenal) atau nilai header Agen-Pengguna HTTP (misalnya sqlmap
untuk injeksi SQL otomatis dan alat pengambilalihan basis data). Selain itu, ia menggunakan mekanisme heuristik canggih (opsional) yang dapat membantu dalam penemuan ancaman yang tidak diketahui (misalnya malware baru).
Daftar (hitam) berikut (yaitu feed) sedang digunakan:
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.
Pada entri statis, jejak entitas jahat berikut (misalnya K&C malware atau lubang runtuhan) telah dimasukkan secara manual (dari berbagai laporan AV dan penelitian pribadi):
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 didasarkan pada arsitektur Lalu Lintas -> Sensor <-> Server <-> Klien . Sensor adalah komponen mandiri yang berjalan pada node pemantauan (misalnya platform Linux yang terhubung secara pasif ke port SPAN/mirroring atau secara transparan inline pada jembatan Linux) atau pada mesin mandiri (misalnya Honeypot) di mana ia "memantau" Lalu Lintas yang lewat untuk item/jalur yang masuk daftar hitam (yaitu nama domain, URL dan/atau IP). Jika ada kecocokan positif, ia akan mengirimkan detail kejadian ke Server (pusat) di mana detail tersebut disimpan di dalam direktori logging yang sesuai (yaitu LOG_DIR
dijelaskan di bagian Konfigurasi ). Jika Sensor dijalankan pada mesin yang sama dengan Server (konfigurasi default), log disimpan langsung ke direktori logging lokal. Jika tidak, pesan tersebut akan dikirim melalui pesan UDP ke server jarak jauh (yaitu LOG_SERVER
yang dijelaskan di bagian Konfigurasi ).
Peran utama server adalah menyimpan detail acara dan menyediakan dukungan back-end untuk aplikasi web pelaporan. Dalam konfigurasi default, server dan sensor akan berjalan di mesin yang sama. Jadi, untuk mencegah potensi gangguan pada aktivitas sensor, bagian pelaporan front-end didasarkan pada arsitektur "Klien gemuk" (yaitu semua pasca-pemrosesan data dilakukan di dalam instance browser web klien). Peristiwa (yaitu entri log) untuk periode yang dipilih (24 jam) ditransfer ke Klien , di mana aplikasi web pelaporan bertanggung jawab penuh atas bagian presentasi. Data dikirim ke klien dalam potongan terkompresi, di mana data tersebut diproses secara berurutan. Laporan akhir dibuat dalam bentuk yang sangat ringkas, secara praktis memungkinkan penyajian peristiwa yang jumlahnya hampir tidak terbatas.
Catatan: Komponen server dapat dilewati sama sekali, dan cukup gunakan Sensor mandiri. Dalam hal ini, semua peristiwa akan disimpan dalam direktori logging lokal, sedangkan entri log dapat diperiksa secara manual atau dengan beberapa aplikasi pembacaan CSV.
Halaman demo yang berfungsi penuh dengan kumpulan ancaman kehidupan nyata dapat ditemukan di sini.
Untuk menjalankan Maltrail dengan benar, Python 2.6 , 2.7 atau 3.x diperlukan pada sistem *nix/BSD, bersama dengan paket pcapy-ng yang diinstal.
CATATAN: Penggunaan pcapy
lib alih-alih pcapy-ng
dapat menyebabkan maltrail berfungsi salah, terutama pada lingkungan Python 3.x. Contoh.
Komponen sensor memerlukan setidaknya 1 GB RAM untuk dijalankan dalam mode proses tunggal atau lebih jika dijalankan dalam mode multiproses, bergantung pada nilai yang digunakan untuk opsi CAPTURE_BUFFER
. Selain itu, komponen Sensor (secara umum) memerlukan hak administratif/root.
Komponen server tidak memiliki persyaratan khusus.
Serangkaian perintah berikut akan membuat Sensor Maltrail Anda aktif dan berjalan (di luar kotak dengan pengaturan default dan antarmuka pemantauan "apa saja"):
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
Untuk memulai Server (opsional) pada mesin yang sama, buka terminal baru dan jalankan perintah berikut:
[[ -d maltrail ]] || git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
python server.py
Untuk menguji apakah semuanya sudah aktif dan berjalan, jalankan perintah berikut:
ping -c 1 136.161.101.53
cat /var/log/maltrail/ $( date + " %Y-%m-%d " ) .log
Selain itu, untuk menguji penangkapan lalu lintas DNS Anda dapat mencoba yang berikut ini:
nslookup morphed.ru
cat /var/log/maltrail/ $( date + " %Y-%m-%d " ) .log
Untuk menghentikan instans Sensor dan Server (jika berjalan di latar belakang) jalankan perintah berikut:
sudo pkill -f sensor.py
pkill -f server.py
Akses antarmuka pelaporan (yaitu Klien ) dengan mengunjungi http://127.0.0.1:8338 (kredensial default: admin:changeme!
) dari browser web Anda:
Konfigurasi sensor dapat ditemukan di dalam bagian file maltrail.conf
[Sensor]
:
Jika opsi USE_MULTIPROCESSING
disetel ke true
maka semua inti CPU akan digunakan. Satu inti hanya akan digunakan untuk pengambilan paket (dengan afinitas yang sesuai, prioritas IO, dan pengaturan level yang bagus), sedangkan inti lainnya akan digunakan untuk pemrosesan paket. Jika tidak, semuanya akan dijalankan pada satu inti. Opsi USE_FEED_UPDATES
dapat digunakan untuk mematikan pembaruan jejak dari feed secara keseluruhan (dan cukup gunakan yang statis yang disediakan). Opsi UPDATE_PERIOD
berisi jumlah detik antara setiap pembaruan jalur otomatis (Catatan: nilai default diatur ke 86400
(yaitu satu hari)) dengan menggunakan definisi di dalam direktori trails
(Catatan: Sensor dan Server menangani pembaruan jalur). Opsi CUSTOM_TRAILS_DIR
dapat digunakan oleh pengguna untuk menyediakan lokasi direktori yang berisi file jalur khusus ( *.txt
).
Opsi USE_HEURISTICS
mengaktifkan mekanisme heuristik (misalnya long domain name (suspicious)
, excessive no such domain name (suspicious)
, direct .exe download (suspicious)
, dll.), yang berpotensi menimbulkan kesalahan positif. Opsi CAPTURE_BUFFER
menyajikan total memori (dalam byte persentase total memori fisik) yang akan digunakan dalam mode multiprosesing untuk menyimpan tangkapan paket dalam buffer cincin untuk diproses lebih lanjut dengan proses non-penangkapan. Opsi MONITOR_INTERFACE
harus berisi nama antarmuka pengambilan. Gunakan nilai any
untuk menangkap dari semua antarmuka (jika OS mendukung ini). Opsi CAPTURE_FILTER
harus berisi filter penangkapan jaringan ( tcpdump
) untuk melewatkan paket yang tidak menarik dan memudahkan proses penangkapan. Opsi SENSOR_NAME
berisi nama yang seharusnya muncul di dalam nilai peristiwa sensor_name
, sehingga peristiwa dari satu sensor dapat dibedakan dari sensor lainnya. Jika opsi LOG_SERVER
disetel, maka semua peristiwa dikirim dari jarak jauh ke Server , jika tidak, peristiwa tersebut disimpan langsung ke direktori logging yang disetel dengan opsi LOG_DIR
, yang dapat ditemukan di dalam bagian file maltrail.conf
[All]
. Jika opsi UPDATE_SERVER
disetel, maka semua jalur ditarik dari lokasi tertentu, jika tidak, jalur tersebut akan diperbarui dari definisi jalur yang terletak di dalam instalasi itu sendiri.
Opsi SYSLOG_SERVER
dan/atau LOGSTASH_SERVER
dapat digunakan untuk mengirim peristiwa sensor (yaitu data log) ke server non-Maltrail. Dalam kasus SYSLOG_SERVER
, data peristiwa akan dikirim dalam format CEF ( Common Event Format ) ke layanan UDP (misalnya Syslog) yang mendengarkan di alamat yang diberikan (misalnya 192.168.2.107:514
), sedangkan dalam kasus LOGSTASH_SERVER
data peristiwa akan dikirim dalam Format JSON ke layanan UDP (mis. Logstash) mendengarkan di alamat yang diberikan (mis 192.168.2.107:5000
).
Contoh data event yang dikirimkan melalui UDP adalah sebagai berikut:
SYSLOG_SERVER
(Catatan: Nilai LogSeverity
adalah 0 (untuk rendah), 1 (untuk sedang) dan 2 (untuk tinggi)): 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)"}
Saat menjalankan sensor (misalnya sudo python sensor.py
) untuk pertama kalinya dan/atau setelah jangka waktu tidak berjalan yang lebih lama, sensor akan secara otomatis memperbarui jejak dari definisi jejak (Catatan: disimpan di dalam direktori trails
). Setelah inisialisasi, ia akan mulai memantau antarmuka yang dikonfigurasi (opsi MONITOR_INTERFACE
di dalam maltrail.conf
) dan menulis peristiwa ke direktori log yang dikonfigurasi (opsi LOG_DIR
di dalam bagian file maltrail.conf
[All]
) atau mengirimkannya dari jarak jauh ke Server logging/pelaporan (opsi LOG_SERVER
).
Peristiwa yang terdeteksi disimpan di dalam direktori logging Server (yaitu opsi LOG_DIR
di dalam bagian file maltrail.conf
[All]
) dalam format CSV yang mudah dibaca (Catatan: spasi ' ' digunakan sebagai pembatas) sebagai entri baris tunggal terdiri dari: sensor
time
src_ip
src_port
dst_ip
dst_port
proto
trail_type
trail
trail_info
reference
(misal "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
):
Konfigurasi server dapat ditemukan di dalam bagian maltrail.conf
[Server]
:
Opsi HTTP_ADDRESS
berisi alamat mendengarkan server web (Catatan: gunakan 0.0.0.0
untuk mendengarkan di semua antarmuka). Opsi HTTP_PORT
berisi port mendengarkan server web. Port mendengarkan default diatur ke 8338
. Jika opsi USE_SSL
disetel ke true
maka SSL/TLS
akan digunakan untuk mengakses server web (misalnya https://192.168.6.10:8338/
). Dalam hal ini, opsi SSL_PEM
harus mengarah ke file PEM pribadi/sertifikat server.
Subbagian USERS
berisi pengaturan konfigurasi pengguna. Setiap entri pengguna terdiri dari username:sha256(password):UID:filter_netmask(s)
. Nilai UID
mewakili pengidentifikasi pengguna unik, di mana disarankan untuk menggunakan nilai yang lebih rendah dari 1000 untuk akun administratif, sedangkan nilai yang lebih tinggi untuk akun non-administratif. Bagian filter_netmask(s)
mewakili filter keras yang dibatasi koma yang dapat digunakan untuk memfilter peristiwa yang ditampilkan tergantung pada akun pengguna. Entri default adalah sebagai berikut:
Opsi UDP_ADDRESS
berisi log server yang mengumpulkan alamat mendengarkan (Catatan: gunakan 0.0.0.0
untuk mendengarkan di semua antarmuka), sedangkan opsi UDP_PORT
berisi nilai port mendengarkan. Jika diaktifkan, bila digunakan bersama dengan opsi LOG_SERVER
, ini dapat digunakan untuk arsitektur Sensor <-> Server yang berbeda (banyak).
Opsi FAIL2BAN_REGEX
berisi ekspresi reguler (misalnya attacker|reputation|potential[^"]*(web scan|directory traversal|injection|remote code|iot-malware download|spammer|mass scanner
) untuk digunakan dalam panggilan web /fail2ban
untuk ekstraksi dari IP sumber penyerang saat ini. Hal ini memungkinkan penggunaan mekanisme pemblokiran IP (misalnya fail2ban
, iptables
atau ipset
) dengan menarik secara berkala alamat IP yang masuk daftar hitam dari lokasi jarak jauh. Contoh penggunaan adalah skrip berikut (misalnya dijalankan sebagai root
cronjob setiap menit):
#! /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
Opsi BLACKLIST
memungkinkan untuk membuat ekspresi reguler untuk diterapkan pada satu bidang. Untuk setiap aturan, sintaksnya adalah : <field> <control> <regexp>
dimana :
field
menunjukkan bidang yang akan dikompilasi, dapat berupa: src_ip
, src_port
, dst_ip
, dst_port
, protocol
, type
, trail
atau filter
.control
dapat berupa ~
untuk kecocokan atau !~
untuk tidak cocokregexp
adalah ekspresi reguler untuk diterapkan ke lapangan. Hubungkan aturan lain dengan kata kunci and
(kata kunci or
tidak didukung, cukup tambahkan baris untuk ini). Anda dapat menggunakan kata kunci BLACKLIST
saja atau menambahkan nama : BLACKLIST_NAME
. Dalam kasus terakhir, urlnya adalah : /blacklist/name
Misalnya, yang berikut ini akan membuat daftar hitam untuk semua lalu lintas dari sumber lain selain 192.168.0.0/16
ke port tujuan SSH
atau mencocokkan scan
filter atau 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
Cara membuat daftar hitam ipset adalah sama (lihat di atas) kecuali URL-nya adalah /blacklist/in
dan /blacklist/out
dalam contoh kita.
Sama seperti Sensor , ketika menjalankan Server (misalnya python server.py
) untuk pertama kalinya dan/atau setelah jangka waktu tidak berjalan yang lebih lama, jika opsi USE_SERVER_UPDATE_TRAILS
disetel ke true
, maka secara otomatis akan memperbarui jejak dari definisi jejak ( Catatan: disimpan di dalam direktori trails
). Fungsi dasarnya adalah untuk menyimpan entri log di dalam direktori logging (yaitu opsi LOG_DIR
di dalam bagian file maltrail.conf
[All]
) dan menyediakan antarmuka pelaporan web untuk menyajikan entri yang sama kepada pengguna akhir (Catatan: tidak ada perlu menginstal paket server web pihak ke-3 seperti Apache):
Saat memasuki antarmuka pelaporan Server (yaitu melalui alamat yang ditentukan oleh opsi HTTP_ADDRESS
dan HTTP_PORT
), pengguna akan disajikan dialog otentikasi berikut. Pengguna harus memasukkan kredensial yang tepat yang telah ditetapkan oleh administrator server di dalam file konfigurasi maltrail.conf
(Catatan: kredensial default adalah admin:changeme!
):
Begitu masuk, pengguna akan disajikan antarmuka pelaporan berikut:
Bagian atas berisi garis waktu geser (Catatan: diaktifkan setelah mengklik label tanggal saat ini dan/atau ikon kalender) di mana pengguna dapat memilih log untuk peristiwa masa lalu (Catatan: peristiwa yang diarahkan mouse akan memicu tampilan tooltip dengan perkiraan jumlah peristiwa untuk saat ini tanggal). Tanggal dikelompokkan berdasarkan bulan, di mana data periode 4 bulan ditampilkan di dalam widget itu sendiri. Namun, dengan menggunakan slider yang disediakan (yaitu) pengguna dapat dengan mudah mengakses acara dari bulan-bulan sebelumnya.
Setelah mengklik tanggal, semua acara untuk tanggal tertentu harus dimuat dan diwakili oleh browser web klien. Tergantung pada jumlah peristiwa dan kecepatan koneksi jaringan, pemuatan dan tampilan peristiwa yang dicatat dapat memerlukan waktu beberapa detik, hingga beberapa menit (misalnya, 100.000 peristiwa memerlukan waktu total sekitar 5 detik). Sepanjang waktu pemrosesan, pemuat animasi akan ditampilkan di antarmuka pengguna yang dinonaktifkan:
Bagian tengah berisi ringkasan acara yang ditampilkan. Kotak Events
mewakili jumlah total peristiwa dalam periode 24 jam yang dipilih, dengan garis merah mewakili peristiwa berbasis IP, garis biru mewakili peristiwa berbasis DNS, dan garis kuning mewakili peristiwa berbasis URL. Kotak Sources
mewakili jumlah peristiwa per sumber teratas dalam bentuk bagan kolom bertumpuk, dengan jumlah total sumber di atas. Kotak Threats
mewakili persentase ancaman teratas dalam bentuk diagram lingkaran (Catatan: area abu-abu berisi semua ancaman yang memiliki total kejadian masing-masing <1%), dengan jumlah total ancaman di atas. Kotak Trails
mewakili persentase jalur teratas dalam bentuk diagram lingkaran (Catatan: area abu-abu menampung semua jalur yang memiliki total kejadian masing-masing <1%), dengan jumlah total jalur di atas. Masing-masing kotak tersebut aktif, sehingga klik salah satunya akan menghasilkan grafik yang lebih detail.
Bagian bawah berisi representasi singkat dari peristiwa yang dicatat dalam bentuk tabel paginasi. Setiap entri menyimpan rincian untuk satu ancaman (Catatan: diidentifikasi secara unik oleh pasangan (src_ip, trail)
atau (dst_ip, trail)
jika src_ip
sama dengan trail
seperti dalam kasus serangan yang datang dari luar):
Kolom threat
menyimpan ID unik ancaman (misalnya 85fdb08d
) dan warna (Catatan: diekstrusi dari ID ancaman), sensor
menyimpan nama sensor di mana peristiwa tersebut dipicu (misalnya blitvenica
), events
menyimpan jumlah total peristiwa untuk ancaman saat ini , severity
menahan tingkat keparahan ancaman yang dievaluasi (Catatan: dihitung berdasarkan nilai di kolom info
dan reference
, memprioritaskan lalu lintas yang dihasilkan malware), first_seen
menahan waktu kejadian pertama dalam periode yang dipilih (24 jam) (misalnya 06th 08:21:54
), last_seen
menyimpan waktu kejadian terakhir dalam jangka waktu (24 jam) yang dipilih (misalnya 06th 15:21:23
), sparkline
berisi grafik grafik mini kecil yang mewakili aktivitas ancaman dalam periode yang dipilih, src_ip
menyimpan IP sumber ancaman (misalnya 99.102.41.102
), src_port
menyimpan port sumber (misalnya 44556, 44589, 44601
), dst_ip
menyimpan IP tujuan (misalnya 213.202.100.28
), dst_port
menyimpan port tujuan (misalnya 80 (HTTP)
), proto
menyimpan protokol (misalnya TCP
), trail
menyimpan daftar hitam (atau entri heuristik) yang memicu peristiwa, info
menyimpan lebih banyak informasi tentang ancaman/jejak (misalnya known attacker
untuk alamat IP penyerang yang dikenal atau ipinfo
untuk layanan informasi IP dikenal yang biasa digunakan oleh malware saat startup), reference
menyimpan sumber entri yang masuk daftar hitam (misalnya (static)
untuk jalur statis atau myip.ms
untuk umpan dinamis yang diambil dari sumber yang sama) dan tags
menyimpan tag yang ditentukan pengguna untuk jejak tertentu (misalnya APT28
).
Saat mengarahkan mouse ke entri tabel src_ip
dan dst_ip
, tooltip informasi ditampilkan dengan informasi DNS terbalik dan WHOIS yang terperinci (Catatan: RIPE adalah penyedia informasi):
Detail peristiwa (misalnya src_port
, dst_port
, proto
, dll.) yang berbeda dalam entri ancaman yang sama diringkas dalam bentuk ikon gelembung (yaitu ). Hal ini dilakukan untuk mendapatkan antarmuka pelaporan yang dapat digunakan dengan baris sesedikit mungkin. Menggerakan mouse ke ikon tersebut akan menghasilkan tampilan tooltip informasi dengan semua item ditahan (misalnya semua nomor port dipindai oleh attacker
):
Mengklik salah satu ikon tersebut akan membuka dialog baru yang berisi semua item yang disimpan (Catatan: dalam bentuk tidak terkondensasi) yang siap untuk di-Salin-Tempel(d) untuk analisis lebih lanjut:
Saat mengarahkan penunjuk mouse ke jejak ancaman selama beberapa detik, hal ini akan menghasilkan bingkai yang terdiri dari hasil yang menggunakan jejak tersebut sebagai istilah pencarian yang dilakukan terhadap Enkripsi Pencarian mesin pencari seaX. Dalam banyak kasus, ini memberikan informasi dasar tentang ancaman itu sendiri, sehingga pengguna tidak perlu melakukan pencarian manual untuk ancaman tersebut. Di pojok kanan atas jendela bingkai yang terbuka ada dua tombol tambahan. Dengan mengklik yang pertama (yaitu ), bingkai yang dihasilkan akan dibuka di dalam tab (atau jendela) browser baru, sedangkan dengan mengklik yang kedua (yaitu ) akan segera menutup bingkai (Catatan: tindakan yang sama dilakukan dengan memindahkan penunjuk mouse di luar batas bingkai):
Untuk setiap ancaman terdapat tag
kolom yang dapat diisi dengan "tag" sembarang untuk menggambarkan secara dekat semua ancaman yang memiliki jejak yang sama. Selain itu, ini merupakan cara yang bagus untuk mendeskripsikan ancaman satu per satu, sehingga semua ancaman yang menggunakan tag yang sama (misalnya yahoo
) dapat dikelompokkan nanti:
Pada bagian berikut beberapa skenario "tersangka" akan dijelaskan melalui kasus-kasus kehidupan nyata.
Pemindaian massal adalah fenomena yang cukup umum di mana individu dan/atau organisasi memberikan hak kepada diri mereka sendiri untuk memindai seluruh rentang IP 0.0.0.0/0 (yaitu seluruh Internet) setiap hari, dengan penafian yang menyatakan bahwa jika Anda tidak suka maka Anda harus menghubungi mereka secara pribadi agar dapat dilewati dari pemindaian berikutnya.
Lebih buruk lagi, organisasi seperti Shodan dan ZoomEye memberikan semua hasil yang tersedia secara gratis (bagi calon penyerang lainnya) melalui mesin pencari mereka. Dalam tangkapan layar berikut Anda akan melihat detail pemindaian Shodan dalam satu hari.
Berikut adalah pencarian DNS dan WHOIS terbalik dari alamat "penyerang":
Saat mengarahkan penunjuk mouse ke konten kolom trail
(alamat IP), Anda akan disajikan dengan hasil pencarian dari searX di mana Anda akan dapat menemukan informasi lebih lanjut tentang "penyerang":
Di kolom dst_ip
, jika Anda memiliki organisasi besar, Anda akan disajikan daftar besar alamat IP yang dipindai:
Di kolom dst_port
Anda akan dapat melihat semua port yang telah dipindai oleh pemindaian massal seperti:
Dalam situasi serupa lainnya, Anda akan melihat perilaku yang sama, datang dari penyerang individu yang masuk daftar hitam (dalam hal ini oleh cinsscore.com):
Perilaku umum lainnya adalah memindai seluruh rentang IP 0.0.0.0/0 (yaitu Internet) untuk mencari satu port tertentu (misalnya port TCP 443 ketika Heartbleed ditemukan). Dalam tangkapan layar berikut, Anda akan menemukan satu kasus untuk penyerang yang sebelumnya masuk daftar hitam (dalam hal ini oleh alienvault.com dan dua daftar hitam lainnya) yang menargetkan port UDP 5060 (yaitu SIP) untuk mencari perangkat VoIP yang salah dikonfigurasi:
Untuk mengenali calon penyerang yang tersembunyi di balik jaringan anonimitas Tor, Maltrail menggunakan daftar titik keluar Tor yang tersedia untuk umum. Pada tangkapan layar berikut, Anda akan melihat kasus di mana calon penyerang telah memanfaatkan jaringan Tor untuk mengakses target web (melalui HTTP) dalam jangkauan organisasi kami dengan cara yang mencurigakan (total 171 permintaan koneksi dalam 10 menit):
Kasus yang cukup mirip dengan kasus sebelumnya adalah ketika penyerang yang sebelumnya masuk daftar hitam mencoba mengakses layanan tertentu (misalnya non-HTTP) dalam jangkauan organisasi kami dengan cara yang agak mencurigakan (yaitu total 1513 upaya koneksi dalam waktu kurang dari 15 menit):
Jika kita memasukkan ssh attacker
ke kolom Filter
, kita akan dapat melihat semua kejadian serupa pada hari itu, namun dalam kasus ini untuk port 22 (yaitu SSH):
Jika terjadi upaya koneksi dari komputer yang terinfeksi di dalam organisasi kami ke server C&C yang sudah dikenal, Anda akan dapat menemukan ancaman serupa dengan berikut (dalam hal ini Beebone):
Jika permintaan DNS berisi nama domain DGA yang dikenal, ancaman akan ditampilkan seperti (dalam hal ini Necurs):
Dalam kasus berikut, pengunduhan file dari URL yang masuk daftar hitam (dalam hal ini oleh malwarepatrol.net) telah terjadi:
Jika kami memasukkan nama malware tertentu (dalam hal ini Ramnit) ke dalam bidang Filter
, hanya ancaman yang diketahui terkait dengan malware ini yang akan disaring (menunjukkan semua komputer internal yang terpengaruh):
Secara umum, jika kita memasukkan malware
ke dalam bidang Filter
, semua ancaman yang ditemukan oleh jejak malware (terkait) (misalnya alamat IP
) akan disaring dalam:
Maltrail menggunakan daftar statis domain TLD yang diketahui sering terlibat dalam aktivitas mencurigakan. Sebagian besar domain TLD tersebut berasal dari pendaftar domain gratis (misalnya Freenom), oleh karena itu domain tersebut harus lebih diawasi. Pada tangkapan layar berikut, kita dapat menemukan kasus di mana salah satu domain TLD .cm
telah digunakan oleh malware tak dikenal menggunakan algoritme DGA untuk menghubungi server C&C-nya:
Ada juga kasus ketika domain TLD yang benar-benar valid (misalnya .ru
) digunakan untuk aktivitas mencurigakan, seperti dalam kasus ini (misalnya long domain name (suspicious)
) yang domainnya jelas merupakan DGA yang dihasilkan oleh malware yang tidak dikenal:
Maltrail menggunakan daftar statis yang disebut "domain dinamis" yang sering digunakan dalam aktivitas mencurigakan (misalnya untuk server C&C malware yang sering mengubah alamat IP tujuan):
Selain itu, Maltrail menggunakan daftar statis domain terkait "bawang" yang juga sering digunakan dalam aktivitas mencurigakan (misalnya malware yang menghubungi server C&C dengan menggunakan layanan Tor2Web):
Dalam kasus malware lama dan/atau usang yang tidak terdeteksi di komputer internal organisasi yang terinfeksi, sering kali terdapat "fenomena" di mana malware terus-menerus mencoba menghubungi domain server C&C yang telah lama mati tanpa resolusi DNS apa pun. Oleh karena itu, ancaman (potensial) semacam itu akan ditandai sebagai excessive no such domain (suspicious)
:
Jika satu jejak menyebabkan terlalu banyak ancaman (misalnya dalam kasus IP sumber palsu seperti dalam serangan amplifikasi DNS), semua ancaman serupa akan dikelompokkan dalam satu ancaman flood
(Catatan: ID ancaman akan ditandai dengan akhiran F0
), seperti pada contoh berikut:
Banyak sekali malware yang menggunakan semacam layanan ipinfo
(misalnya ipinfo.io) untuk mengetahui alamat IP Internet korban. Dalam kasus-kasus rutin dan terutama di luar jam kantor, permintaan semacam itu harus diawasi dengan ketat, seperti contoh berikut:
Dengan menggunakan filter ipinfo
semua komputer yang berpotensi terinfeksi dalam jangkauan organisasi kami dapat dicantumkan yang memiliki perilaku mencurigakan seperti ini:
Maltrail melacak semua upaya pengunduhan file langsung yang mencurigakan (mis .apk
, .bin
, .class
, .chm
, .dll
, .egg
, .exe
, .hta
, .hwp
, .lnk
, .ps1
, .scr
, .sct
, .wbk
ekstensi file .wbk
dan .xpi
). Hal ini dapat memicu banyak kesalahan positif, namun pada akhirnya dapat membantu dalam rekonstruksi rantai infeksi (Catatan: penyedia layanan yang sah, seperti Google, biasanya menggunakan HTTPS terenkripsi untuk melakukan pengunduhan semacam ini):
Jika ada permintaan mencurigakan yang datang dari pemindai keamanan aplikasi web luar (misalnya mencari kerentanan SQLi, XSS, LFI, dll.) dan/atau upaya jahat pengguna internal terhadap situs web yang tidak dikenal, ancaman seperti berikut dapat ditemukan (kasus nyata penyerang mencoba mengeksploitasi kerentanan Joomla! CMS CVE-2015-7297, CVE-2015-7857, dan CVE-2015-7858):
Dalam contoh berikut, pemindaian kerentanan aplikasi web telah ditandai sebagai "mencurigakan":
Jika kita mengklik ikon gelembung (yaitu ) untuk melihat detailnya dan menyalin dan menempelkan seluruh konten ke file tekstual, kita akan dapat melihat semua permintaan HTTP yang mencurigakan:
Pada tangkapan layar berikut, rangkaian alat kerentanan SQLi yang populer, sqlmap, dapat ditemukan di dalam log kami:
Jika terjadi terlalu banyak upaya koneksi ke sejumlah besar port TCP yang berbeda, Maltrail akan memperingatkan tentang potensi pemindaian port, sebagai akibat dari deteksi mekanisme heuristiknya. Jika tangkapan layar berikut peringatan tersebut dapat ditemukan untuk menjalankan alat pemindai port populer nmap:
Salah satu serangan DDoS yang populer terhadap infrastruktur server web adalah kehabisan sumber daya server DNS (utama) dengan membuat kueri rekursi DNS yang valid untuk nama subdomain acak (semu) (misalnya abpdrsguvjkyz.www.dedeni.com
):
Program lain-lain (terutama yang berbasis seluler) menghadirkan perilaku malware (seperti) yang mengirimkan data yang berpotensi sensitif ke pos suar jarak jauh. Maltrail akan mencoba menangkap perilaku seperti pada contoh berikut:
Seperti semua solusi keamanan lainnya, Maltrail rentan terhadap "positif palsu". Dalam kasus seperti itu, Maltrail akan (terutama jika ada ancaman suspicious
) mencatat perilaku pengguna biasa dan menandainya sebagai berbahaya dan/atau mencurigakan. Dalam contoh berikut terlihat bahwa penyedia feed daftar hitam blocklist.de
menandai server Google biasa sebagai attacker
, yang mengakibatkan ancaman berikut:
Dengan mengarahkan mouse ke atas jejak, bingkai dengan hasil pencarian searX menunjukkan bahwa ini (kemungkinan besar) adalah server Google biasa:
Contoh lainnya, akses ke domain .work
biasa (TLD populer untuk tujuan jahat) mengakibatkan ancaman berikut:
Namun demikian, administrator harus meluangkan waktu ekstra dan memeriksa (dengan cara lain) apakah "mencurigakan" berarti berbahaya atau tidak, seperti pada contoh berikut:
Di Ubuntu/Debian
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
Pada SUSE/openSUSE
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
Tetapkan lingkungan kerja:
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
Atur lingkungan yang berjalan:
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
Aktifkan sebagai layanan systemd (khusus 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
Catatan : /maltrail-sensor.service
dapat dimulai sebagai layanan khusus tanpa memulai /maltrail-server.service
. Ini berguna ketika /maltrail-server.service
diinstal dan berfungsi di komputer lain di lingkungan jaringan Anda.
Perangkat lunak ini disediakan di bawah Lisensi MIT. Lihat file LISENSI yang disertakan untuk informasi lebih lanjut.
1 Menggunakan (hanya) jalur
2 Konektor ke jalur (hanya)