Maltrail เป็นระบบตรวจจับการรับส่งข้อมูลที่เป็นอันตราย โดยใช้รายการ (สีดำ) ที่เปิดเผยต่อสาธารณะซึ่งมีเส้นทางที่เป็นอันตรายและ/หรือน่าสงสัยโดยทั่วไป พร้อมด้วยเส้นทางคงที่ที่รวบรวมจากรายงาน AV ต่างๆ และรายการที่ผู้ใช้กำหนดเอง โดยที่ Trail สามารถเป็นอะไรก็ได้จากชื่อโดเมน (เช่น zvpprsensinaix.com
สำหรับมัลแวร์ Banjori), URL (เช่น hXXp://109.162.38.120/harsh02.exe
สำหรับปฏิบัติการที่เป็นอันตรายที่รู้จัก), ที่อยู่ IP (เช่น 185.130.5.231
สำหรับผู้โจมตีที่รู้จัก) หรือค่าส่วนหัว HTTP User-Agent (เช่น 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.
จากรายการคงที่ เส้นทางสำหรับเอนทิตีที่เป็นอันตรายต่อไปนี้ (เช่น C&C มัลแวร์หรือ sinkholes) ได้ถูกรวมไว้ด้วยตนเอง (จากรายงาน 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 ตัวอย่าง.
ส่วนประกอบ เซ็นเซอร์ ต้องการ RAM อย่างน้อย 1GB เพื่อทำงานในโหมดกระบวนการเดียวหรือมากกว่าหากทำงานในโหมดมัลติโปรเซสเซอร์ ขึ้นอยู่กับค่าที่ใช้สำหรับตัวเลือก 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
เข้าถึงอินเทอร์เฟซการรายงาน (เช่น Client ) โดยไปที่ http://127.0.0.1:8338 (ข้อมูลประจำตัวเริ่มต้น: admin:changeme!
) จากเว็บเบราว์เซอร์ของคุณ:
การกำหนดค่าเซ็นเซอร์สามารถพบได้ในส่วนของไฟล์ maltrail.conf
[Sensor]
:
หากตั้งค่าตัวเลือก USE_MULTIPROCESSING
เป็น true
ระบบจะใช้คอร์ CPU ทั้งหมด หนึ่งคอร์จะใช้สำหรับการจับแพ็กเก็ตเท่านั้น (โดยมีความสัมพันธ์ที่เหมาะสม ลำดับความสำคัญของ IO และการตั้งค่าระดับที่ดี) ในขณะที่คอร์อื่นๆ จะใช้สำหรับการประมวลผลแพ็กเก็ต มิฉะนั้น ทุกอย่างจะถูกรันบนคอร์เดียว ตัวเลือก USE_FEED_UPDATES
สามารถใช้เพื่อปิดการอัปเดตเส้นทางจากฟีดทั้งหมด (และเพียงใช้แบบคงที่ที่ให้มา) ตัวเลือก UPDATE_PERIOD
มีจำนวนวินาทีระหว่างการอัปเดต Trails อัตโนมัติแต่ละครั้ง (หมายเหตุ: ค่าเริ่มต้นตั้งไว้ที่ 86400
(เช่น หนึ่งวัน)) โดยใช้คำจำกัดความภายในไดเร็กทอรี trails
(หมายเหตุ: ทั้ง เซ็นเซอร์ และ เซิร์ฟเวอร์ จะดูแลการอัปเดต Trails) ผู้ใช้สามารถใช้ตัวเลือก CUSTOM_TRAILS_DIR
เพื่อระบุตำแหน่งของไดเร็กทอรีที่มีไฟล์ Trails แบบกำหนดเอง ( *.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
แล้ว Trail ทั้งหมดจะถูกดึงออกจากตำแหน่งที่กำหนด มิฉะนั้นจะถูกอัพเดตจากคำจำกัดความ Trail ที่อยู่ในการติดตั้งเอง
ตัวเลือก 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
แสดงถึงตัวระบุผู้ใช้ที่ไม่ซ้ำกัน โดยแนะนำให้ใช้ค่าที่ต่ำกว่า 1,000 สำหรับบัญชีผู้ดูแลระบบ ในขณะที่ค่าที่สูงกว่าสำหรับบัญชีที่ไม่ใช่ผู้ดูแลระบบ ส่วน 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 ที่อยู่ในบัญชีดำจากตำแหน่งระยะไกลเป็นระยะๆ ตัวอย่างการใช้งานจะเป็นสคริปต์ต่อไปนี้ (เช่น เรียกใช้เป็น root
cronjob เป็นประจำทุกนาที):
#! /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 blacklist นั้นเหมือนกัน (ดูด้านบน) ยกเว้นว่า URL จะเป็น /blacklist/in
และ /blacklist/out
ในตัวอย่างของเรา
เช่นเดียวกับ Sensor เมื่อเรียกใช้ Server (เช่น python server.py
) เป็นครั้งแรกและ/หรือหลังจากไม่ได้ทำงานเป็นระยะเวลานาน หากตัวเลือก USE_SERVER_UPDATE_TRAILS
ถูกตั้งค่าเป็น true
มันจะอัปเดตเส้นทางจากคำจำกัดความของเส้นทางโดยอัตโนมัติ ( หมายเหตุ: เก็บไว้ในไดเร็กทอรี trails
) ฟังก์ชันพื้นฐานของมันคือการจัดเก็บรายการบันทึกภายในไดเร็กทอรีการบันทึก (เช่น ตัวเลือก LOG_DIR
ภายในส่วนของไฟล์ maltrail.conf
[All]
) และจัดทำอินเทอร์เฟซการรายงานทางเว็บสำหรับการนำเสนอรายการเดียวกันเหล่านั้นแก่ผู้ใช้ปลายทาง (หมายเหตุ: ไม่มี จำเป็นต้องติดตั้งแพ็คเกจเว็บเซิร์ฟเวอร์บุคคลที่สามเช่น Apache):
เมื่อเข้าสู่อินเทอร์เฟซการรายงานของ เซิร์ฟเวอร์ (เช่น ผ่านที่อยู่ที่กำหนดโดยตัวเลือก HTTP_ADDRESS
และ HTTP_PORT
) ผู้ใช้จะพบกับกล่องโต้ตอบการรับรองความถูกต้องต่อไปนี้ ผู้ใช้จะต้องป้อนข้อมูลรับรองที่เหมาะสมที่ผู้ดูแลระบบเซิร์ฟเวอร์กำหนดไว้ภายในไฟล์กำหนดค่า maltrail.conf
(หมายเหตุ: ข้อมูลรับรองเริ่มต้นคือ admin:changeme!
):
เมื่อเข้าไปข้างในแล้ว ผู้ใช้จะพบกับอินเทอร์เฟซการรายงานต่อไปนี้:
ส่วนบนจะมีไทม์ไลน์แบบเลื่อน (หมายเหตุ: เปิดใช้งานหลังจากคลิกป้ายกำกับวันที่ปัจจุบันและ/หรือไอคอนปฏิทิน ) ซึ่งผู้ใช้สามารถเลือกบันทึกสำหรับเหตุการณ์ที่ผ่านมาได้ (หมายเหตุ: การวางเมาส์เหนือเหตุการณ์จะทริกเกอร์การแสดงคำแนะนำเครื่องมือพร้อมจำนวนเหตุการณ์โดยประมาณสำหรับเหตุการณ์ปัจจุบัน วันที่). วันที่จะถูกจัดกลุ่มตามเดือน โดยจะแสดงข้อมูลในช่วง 4 เดือนภายในวิดเจ็ต อย่างไรก็ตาม ด้วยการใช้แถบเลื่อนที่ให้มา (เช่น ) ผู้ใช้สามารถเข้าถึงกิจกรรมจากเดือนก่อนหน้าได้อย่างง่ายดาย
เมื่อคลิกวันที่ กิจกรรมทั้งหมดสำหรับวันที่นั้นควรโหลดและแสดงโดยเว็บเบราว์เซอร์ของลูกค้า ขึ้นอยู่กับจำนวนเหตุการณ์และความเร็วในการเชื่อมต่อเครือข่าย การโหลดและการแสดงเหตุการณ์ที่บันทึกไว้อาจใช้เวลาไม่กี่วินาที สูงสุดถึงหลายนาที (เช่น 100,000 เหตุการณ์ใช้เวลาประมาณ 5 วินาทีโดยรวม) ตลอดระยะเวลาการประมวลผล ตัวโหลดภาพเคลื่อนไหวจะแสดงผ่านอินเทอร์เฟซผู้ใช้ที่ถูกปิดใช้งาน:
ส่วนตรงกลางมีสรุปเหตุการณ์ที่แสดง กล่อง Events
แสดงถึงจำนวนเหตุการณ์ทั้งหมดในช่วงเวลา 24 ชั่วโมงที่เลือก โดยเส้นสีแดงแสดงถึงเหตุการณ์ตาม IP เส้นสีน้ำเงินแสดงถึงเหตุการณ์ตาม DNS และเส้นสีเหลืองแสดงถึงเหตุการณ์ตาม URL กล่อง Sources
มาแสดงถึงจำนวนเหตุการณ์ต่อแหล่งที่มายอดนิยมในรูปแบบของแผนภูมิคอลัมน์แบบเรียงซ้อน โดยมีจำนวนแหล่งที่มาทั้งหมดอยู่ด้านบน กล่อง Threats
แสดงถึงเปอร์เซ็นต์ของภัยคุกคามอันดับต้นๆ ในรูปแบบของแผนภูมิวงกลม (หมายเหตุ: พื้นที่สีเทาเก็บภัยคุกคามทั้งหมดที่มีเหตุการณ์ทั้งหมด <1% แต่ละรายการ) โดยมีจำนวนภัยคุกคามทั้งหมดอยู่ด้านบน กล่อง Trails
แสดงถึงเปอร์เซ็นต์ของเส้นทางยอดนิยมในรูปแบบของแผนภูมิวงกลม (หมายเหตุ: พื้นที่สีเทาเก็บเส้นทางทั้งหมดที่มีกิจกรรมทั้งหมด <1% ในกิจกรรมทั้งหมด) โดยมีจำนวนเส้นทางทั้งหมดอยู่ด้านบน แต่ละกล่องใช้งานได้ ดังนั้นการคลิกที่กล่องใดกล่องหนึ่งจะทำให้ได้กราฟที่มีรายละเอียดมากขึ้น
ส่วนล่างจะแสดงเหตุการณ์ที่บันทึกไว้ในรูปแบบย่อของตารางแบบแบ่งหน้า แต่ละรายการเก็บรายละเอียดของภัยคุกคามเดียว (หมายเหตุ: ระบุโดยไม่ซ้ำกันด้วยคู่ (src_ip, trail)
หรือ (dst_ip, trail)
หาก src_ip
เหมือนกับ trail
เช่นเดียวกับในกรณีของการโจมตีที่มาจากภายนอก):
threat
ในคอลัมน์เก็บ ID เฉพาะของภัยคุกคาม (เช่น 85fdb08d
) และสี (หมายเหตุ: ดึงมาจาก ID ของภัยคุกคาม) sensor
เก็บชื่อเซ็นเซอร์ที่มีการทริกเกอร์เหตุการณ์ (เช่น blitvenica
) events
เก็บจำนวนเหตุการณ์ทั้งหมดสำหรับภัยคุกคามปัจจุบัน , severity
จะรักษาความรุนแรงที่ประเมินไว้ของภัยคุกคาม (หมายเหตุ: คำนวณตามค่าในคอลัมน์ info
และ reference
, จัดลำดับความสำคัญของการรับส่งข้อมูลที่สร้างโดยมัลแวร์), first_seen
ถือเวลาของเหตุการณ์แรกในที่เลือก (24 ชม.) ระยะเวลา (เช่น 06th 08:21:54
) last_seen
เก็บเวลาของเหตุการณ์สุดท้ายในช่วงเวลาที่เลือก (24 ชม.) (เช่น 06th 15:21:23
) sparkline
เก็บกราฟ 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
):
การคลิกที่ไอคอนดังกล่าวจะเป็นการเปิดกล่องโต้ตอบใหม่ที่มีรายการที่จัดเก็บไว้ทั้งหมด (หมายเหตุ: ในรูปแบบที่ไม่ย่อ) ซึ่งพร้อมที่จะคัดลอก-วาง(d) เพื่อการวิเคราะห์เพิ่มเติม:
เมื่อวางตัวชี้เมาส์เหนือเส้นทางของภัยคุกคามเป็นเวลาสองสามวินาที จะส่งผลให้เฟรมประกอบด้วยผลลัพธ์โดยใช้เส้นทางเป็นคำค้นหาที่ดำเนินการ ค้นหาเข้ารหัส เครื่องมือค้นหา searX ในหลายกรณี ข้อมูลนี้จะให้ข้อมูลพื้นฐานเกี่ยวกับภัยคุกคาม ทำให้ผู้ใช้ไม่ต้องค้นหาด้วยตนเอง ที่มุมขวาบนของหน้าต่างเฟรมที่เปิดอยู่จะมีปุ่มพิเศษสองปุ่ม เมื่อคลิกที่อันแรก (เช่น ) เฟรมผลลัพธ์จะถูกเปิดขึ้นในแท็บ (หรือหน้าต่างของเบราว์เซอร์ใหม่) ในขณะที่การคลิกที่อันที่สอง (เช่น ) จะเป็นการปิดเฟรมทันที (หมายเหตุ: การกระทำเดียวกันนี้ทำได้โดยการย้าย ตัวชี้เมาส์อยู่นอกขอบกรอบ):
สำหรับภัยคุกคามแต่ละรายการ จะมี 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) ในช่วงขององค์กรของเราด้วยวิธีที่ค่อนข้างน่าสงสัย (เช่น พยายามเชื่อมต่อทั้งหมด 1,513 ครั้งในเวลาน้อยกว่า 15 นาที):
หากเราป้อน ssh attacker
ลงในช่อง Filter
เราจะสามารถเห็นเหตุการณ์ที่คล้ายกันทั้งหมดสำหรับวันนั้น แต่ในกรณีนี้สำหรับพอร์ต 22 (เช่น SSH):
ในกรณีที่มีความพยายามในการเชื่อมต่อที่มาจากคอมพิวเตอร์ที่ติดไวรัสภายในองค์กรของเราไปยังเซิร์ฟเวอร์ C&C ที่รู้จักอยู่แล้ว คุณจะสามารถค้นหาภัยคุกคามที่คล้ายกับสิ่งต่อไปนี้ (ในกรณีนี้คือ Beebone):
ในกรณีของคำขอ DNS ที่มีชื่อโดเมน DGA ที่รู้จัก ภัยคุกคามจะแสดงดังนี้ (ในกรณีนี้คือ Necurs):
ในกรณีต่อไปนี้ มีการดาวน์โหลดไฟล์จาก URL ที่อยู่ในบัญชีดำ (ในกรณีนี้คือโดย Malwarepatrol.net) เกิดขึ้น:
หากเราป้อนชื่อมัลแวร์เฉพาะ (ในกรณีนี้คือ Ramnit) ลงในช่อง Filter
เฉพาะภัยคุกคามที่ทราบว่าเชื่อมโยงกับมัลแวร์นี้เท่านั้นที่จะถูกกรอง (แสดงคอมพิวเตอร์ภายในทั้งหมดที่ได้รับผลกระทบ):
โดยทั่วไปแล้ว หากเราป้อน malware
ลงในช่อง Filter
คุกคามทั้งหมดที่พบในเส้นทางมัลแวร์ (ที่เกี่ยวข้องกับมัลแวร์) (เช่น ที่อยู่ IP
) จะถูกกรองใน:
Maltrail ใช้รายการคงที่ของโดเมน TLD ที่ทราบกันว่ามักเกี่ยวข้องกับกิจกรรมที่น่าสงสัย โดเมน TLD ดังกล่าวส่วนใหญ่มาจากผู้รับจดทะเบียนโดเมนฟรี (เช่น Freenom) ดังนั้น จึงควรอยู่ภายใต้การตรวจสอบอย่างละเอียดมากขึ้น ในภาพหน้าจอต่อไปนี้ เราพบกรณีที่มัลแวร์ที่ไม่รู้จักใช้โดเมน TLD .cm
โดยใช้อัลกอริทึม DGA เพื่อติดต่อกับเซิร์ฟเวอร์ C&C:
นอกจากนี้ยังมีกรณีที่โดเมน TLD ที่ถูกต้องสมบูรณ์ (เช่น .ru
) ถูกนำมาใช้สำหรับกิจกรรมที่น่าสงสัย เช่น ในกรณีนี้ (เช่น long domain name (suspicious)
) ซึ่งเห็นได้ชัดว่าโดเมนเป็น DGA ที่สร้างโดยมัลแวร์ที่ไม่รู้จัก:
Maltrail ใช้รายการคงที่ของสิ่งที่เรียกว่า "โดเมนไดนามิก" ซึ่งมักใช้ในกิจกรรมที่น่าสงสัย (เช่น สำหรับเซิร์ฟเวอร์ C&C มัลแวร์ที่มักจะเปลี่ยนที่อยู่ IP ของปลายทาง):
นอกจากนี้ Maltrail ยังใช้รายการคงที่ของโดเมนที่เกี่ยวข้องกับ "onion" ซึ่งมักใช้ในกิจกรรมที่น่าสงสัย (เช่น มัลแวร์ที่ติดต่อกับเซิร์ฟเวอร์ C&C โดยใช้บริการ Tor2Web):
ในกรณีของมัลแวร์เก่าและ/หรือล้าสมัยซึ่งตรวจไม่พบในคอมพิวเตอร์ภายในขององค์กรที่ติดไวรัส มักจะมี "ปรากฏการณ์" ที่มัลแวร์พยายามติดต่อกับโดเมนของเซิร์ฟเวอร์ C&C ที่ไม่ทำงานมายาวนานอย่างต่อเนื่องโดยไม่มีการแก้ไข DNS ดังนั้นภัยคุกคาม (ที่อาจเกิดขึ้น) เหล่านั้นจะถูกทำเครื่องหมายว่า excessive no such domain (suspicious)
:
ในกรณีที่เส้นทางหนึ่งรับผิดชอบต่อภัยคุกคามมากเกินไป (เช่น ในกรณีของ IP ต้นทางปลอม เช่น ในการโจมตีด้วยการขยาย DNS) ภัยคุกคามที่คล้ายกันทั้งหมดจะถูกจัดกลุ่มภายใต้ภัยคุกคาม flood
เดียว (หมายเหตุ: ID ของภัยคุกคามจะถูกทำเครื่องหมายต่อท้าย 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! CMS CVE-2015-7297, CVE-2015-7857 และ CVE-2015-7858):
ในตัวอย่างต่อไปนี้ การสแกนช่องโหว่ของแอปพลิเคชันเว็บถูกทำเครื่องหมายว่า "น่าสงสัย":
หากเราคลิกที่ไอคอนบับเบิล (เช่น ) เพื่อดูรายละเอียดและคัดลอกและวางเนื้อหาทั้งหมดลงในไฟล์ข้อความ เราจะสามารถเห็นคำขอ 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 ยอดนิยมสำหรับวัตถุประสงค์ที่เป็นอันตราย) ส่งผลให้เกิดภัยคุกคามดังต่อไปนี้:
อย่างไรก็ตาม ผู้ดูแลระบบควรลงทุนเวลาเพิ่มเติมและตรวจสอบ (ด้วยวิธีการอื่น) ว่า "น่าสงสัย" หมายถึงอันตรายหรือไม่ ดังตัวอย่างต่อไปนี้:
บน 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
บน 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
กำหนดสภาพแวดล้อมการทำงาน:
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 ตัวเชื่อมต่อเข้ากับเส้นทาง (เท่านั้น)