Maltrail是一種惡意流量檢測系統,利用包含惡意和/或一般可疑踪跡的公開可用(黑)列表,以及從各種AV 報告和自定義用戶定義列表編譯的靜態踪跡,其中踪跡可以是域名中的任何內容(例如zvpprsensinaix.com
對於 Banjori 惡意軟體)、URL(例如hXXp://109.162.38.120/harsh02.exe
對於已知的惡意執行檔)、IP 位址sqlmap
例如對於已知的攻擊者為185.130.5.231
)或 HTTP User-Agent 標頭值(例如對於自動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 或污水坑)的痕跡已手動包含(來自各種 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 基於流量->感測器<->伺服器<->客戶端架構。感測器是一個獨立組件,運行在監控節點(例如被動連接到 SPAN/鏡像連接埠的 Linux 平台或在 Linux 橋上透明內聯)或獨立機器(例如蜜罐)上,在其中「監控」通過的流量對於列入黑名單的項目/路徑(即網域名稱、URL 和/或IP)。如果匹配正確,它將事件詳細資訊傳送到(中央)伺服器,這些詳細資訊儲存在適當的日誌目錄(即配置部分中所述的LOG_DIR
)中。如果感測器與伺服器在同一台電腦上執行(預設配置),則日誌將直接儲存到本機日誌記錄目錄中。否則,它們將透過 UDP 訊息傳送到遠端伺服器(即配置部分中所述的LOG_SERVER
)。
伺服器的主要作用是儲存事件詳細資訊並為報告 Web 應用程式提供後端支援。在預設配置中,伺服器和感測器將在同一台電腦上運作。因此,為了防止感測器活動的潛在中斷,前端報告部分基於「胖客戶端」架構(即所有資料後處理都在客戶端的 Web 瀏覽器執行個體內完成)。所選(24 小時)時間段內的事件(即日誌條目)將傳輸至用戶端,其中報告 Web 應用程式僅負責演示部分。資料以壓縮區塊的形式傳送到客戶端,並按順序處理。最終報告以高度濃縮的形式創建,實際上可以呈現幾乎無限數量的事件。
注意:伺服器元件可以完全跳過,只使用獨立的Sensor 。在這種情況下,所有事件都將儲存在本機日誌記錄目錄中,而日誌條目可以手動或透過某些 CSV 讀取應用程式進行檢查。
可以在此處找到包含收集的現實生活威脅的功能齊全的演示頁面。
要正確運作 Maltrail, *nix/BSD 系統上需要 Python 2.6、2.7或3.x ,並安裝 pcapy-ng 軟體套件。
注意:使用pcapy
lib 而不是pcapy-ng
可能會導致 Maltrail 工作不正確,尤其是在Python 3.x環境中。例子。
感測器組件需要至少 1GB RAM 才能在單進程模式下運行,如果在多處理模式下運行則需要更多 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!
)來存取報告介面(即Client ):
感測器的配置可以在maltrail.conf
檔案的[Sensor]
部分中找到:
如果選項USE_MULTIPROCESSING
設定為true
,則將使用所有 CPU 核心。一個核心將僅用於資料包擷取(具有適當的關聯性、IO 優先權和良好等級設定),而其他核心將用於資料包處理。否則,一切都將在單一核心上運行。選項USE_FEED_UPDATES
可用於完全關閉提要中的追蹤更新(並且僅使用提供的靜態更新)。選項UPDATE_PERIOD
透過使用trails
目錄中的定義包含每次自動追蹤更新之間的秒數(注意:預設值設定為86400
(即一天))(注意:感測器和伺服器都負責追蹤更新)。使用者可以使用選項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
,則所有事件都會遠端傳送到Server ,否則它們將直接儲存到使用選項LOG_DIR
設定的日誌記錄目錄中,該目錄可以在maltrail.conf
檔案的[All]
部分中找到。如果設定了UPDATE_SERVER
選項,則將從給定位置提取所有跟踪,否則將從安裝本身內部的追蹤定義更新它們。
選項SYSLOG_SERVER
和/或LOGSTASH_SERVER
可用來將感測器事件(即日誌資料)傳送到非 Maltrail 伺服器。在SYSLOG_SERVER
的情況下,事件資料將以 CEF(通用事件格式)格式傳送至在給定位址(例如192.168.2.107:514
)監聽的 UDP(例如 Syslog)服務,而在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
目錄中)。初始化後,它將開始監視配置的介面( maltrail.conf
中的MONITOR_INTERFACE
選項)並將事件寫入配置的日誌目錄( maltrail.conf
檔案的[All]
部分中的選項LOG_DIR
)或將它們遠端傳送到日誌記錄/報告伺服器(選項LOG_SERVER
)。
偵測到的事件以易於閱讀的 CSV 格式(注意:空格「」用作分隔符號)作為單行條目儲存在Server的日誌記錄目錄中(即maltrail.conf
檔案的[All]
部分中的選項LOG_DIR
)包括: time
sensor
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
包含 Web 伺服器的監聽位址(注意:使用0.0.0.0
監聽所有介面)。選項HTTP_PORT
包含 Web 伺服器的偵聽連接埠。預設監聽埠設定為8338
。如果選項USE_SSL
設定為true
則SSL/TLS
將用於存取 Web 伺服器(例如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
網路呼叫進行提取這允許透過定期從ipset
位置提取fail2ban
IP 位址iptables
使用 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
。在後一種情況下,網址將為: /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
。
與Sensor相同,當第一次執行伺服器(例如python server.py
)和/或在較長時間未運行後,如果選項USE_SERVER_UPDATE_TRAILS
設定為true
,它將自動從追蹤定義更新追蹤(注意:儲存在trails
目錄中)。它的基本功能是將日誌條目儲存在日誌記錄目錄中(即maltrail.conf
檔案的[All]
部分中的選項LOG_DIR
),並提供 Web 報告介面以向最終用戶呈現這些相同的條目(注意:沒有需要安裝3rd 方Web 伺服器包,例如Apache):
當進入伺服器的報告介面(即透過選項HTTP_ADDRESS
和HTTP_PORT
定義的位址)時,使用者將看到下列身份驗證對話方塊。使用者必須輸入伺服器管理員在設定檔maltrail.conf
中設定的正確憑證(注意:預設憑證是admin:changeme!
):
進入後,用戶將看到以下報告介面:
頂部有一個滑動時間軸(注意:單擊當前日期標籤和/或日曆圖示後啟動),使用者可以在其中選擇過去事件的日誌(注意:滑鼠懸停在事件上將觸發顯示工具提示,其中包含當前事件的大致數量)日期)。日期按月份分組,其中 4 個月的數據顯示在小部件內部。但是,透過使用提供的滑桿(即 ),用戶可以輕鬆存取前幾個月的事件。
點擊日期後,該特定日期的所有事件都應由客戶端的 Web 瀏覽器載入並表示。根據事件數量和網路連線速度,載入和顯示記錄的事件可能需要幾秒鐘到幾分鐘的時間(例如,100,000 個事件總共需要大約 5 秒)。在整個處理時間內,動畫載入程式將顯示在已停用的使用者介面上:
中間部分包含顯示事件的摘要。 Events
框表示選定 24 小時內的事件總數,其中紅線表示基於 IP 的事件,藍線表示基於 DNS 的事件,黃線表示基於 URL 的事件。 Sources
框以堆疊長條圖的形式表示每個頂級來源的事件數,來源總數位於頂部。 Threats
框以圓餅圖的形式表示主要威脅的百分比(註:灰色區域包含所有事件總數 <1% 的威脅),威脅總數位於頂部。 Trails
框以圓餅圖的形式表示頂部路徑的百分比(註:灰色區域包含所有事件總數 <1% 的路徑),路徑總數位於頂部。這些框中的每一個都是活動的,因此單擊其中一個框將產生更詳細的圖表。
底部以分頁表的形式保存記錄事件的壓縮表示。每個條目保存單一威脅的詳細資訊(注意:如果src_ip
與trail
相同,則由一對(src_ip, trail)
或(dst_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
保存一個小迷你圖,表示選定時間段內威脅的活動, src_ip
保存威脅的來源IP(例如99.102.41.102
) ), src_port
保存來源連接proto
(例如44556, 44589, 44601
), dst_ip
儲存目標 IP(例如213.202.100.28
), dst_ip儲存目標連接埠(例如 213.202.100.28), dst_port
儲存目標連接埠(例如(例如) 80 (HTTP)
s),(例如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
)的所有威脅可以稍後分組:
在下面的部分中,我們將透過現實生活中的案例來描述一些「常見嫌疑犯」場景。
大規模掃描是一種相當普遍的現象,個人和/或組織賦予自己每天掃描整個 0.0.0.0/0 IP 範圍(即整個互聯網)的權利,並附有免責聲明,如果您不喜歡那麼您應該私下聯繫他們,以便在以後的掃描中跳過。
更糟的是,Shodan 和 ZoomEye 等組織透過其搜尋引擎免費提供所有結果(向其他潛在攻擊者)。在下面的螢幕截圖中,您將看到一天內 Shodan 掃描的詳細資訊。
以下是「攻擊者」位址的反向 DNS 和 WHOIS 查找:
將滑鼠指標停留在trail
列的內容(IP 位址)上時,您將看到來自 searX 的搜尋結果,您可以在其中找到有關「攻擊者」的更多資訊:
在dst_ip
欄位中,如果您有一個大型組織,您將看到大量已掃描的 IP 位址:
在dst_port
列中,您將能夠看到已通過此類批次掃描掃描的所有連接埠:
在其他類似的情況下,您會看到相同的行為,來自列入黑名單的個人攻擊者(在本例中是 cinsscore.com):
一種更常見的行為是掃描整個 0.0.0.0/0 IP 範圍(即網際網路)以搜尋特定連接埠(例如,當發現 Heartbleed 時為 TCP 連接埠 443)。在下面的螢幕截圖中,您會發現以前列入黑名單的攻擊者(在本例中是由Alivault.com 和另外兩個黑名單)針對UDP 連接埠5060(即SIP)搜尋配置錯誤的VoIP 裝置的此類情況:
為了發現隱藏在 Tor 匿名網路背後的潛在攻擊者,Maltrail 利用公開的 Tor 出口節點清單。在下面的螢幕截圖中,您將看到潛在攻擊者一直在利用 Tor 網路以可疑方式存取我們組織範圍內的 Web 目標(透過 HTTP)(10 分鐘內總共 171 個連接請求):
與前一情況相當相似的情況是,先前列入黑名單的攻擊者嘗試以相當可疑的方式訪問我們組織範圍內的特定(例如非HTTP(s))服務(即在不到15 分鐘內總共1513次連接嘗試):
如果我們在Filter
欄位中輸入ssh attacker
,我們將能夠看到當天所有類似的事件,但在本例中是針對連接埠 22(即 SSH):
如果我們組織內受感染的電腦嘗試連接已知的 C&C 伺服器,您將能夠找到類似於以下內容的威脅(在本例中為 Beebone):
如果 DNS 請求包含已知的 DGA 域名,威脅將顯示如下(在本例中為 Necurs):
在下列情況下,會從列入黑名單的 URL(在本例中為 Malwarepatrol.net)下載檔案:
如果我們在Filter
欄位中輸入特定的惡意軟體名稱(在本例中為 Ramnit),則只有已知與該惡意軟體連結的威脅才會被過濾(顯示所有受影響的內部電腦):
更一般地說,如果我們將malware
輸入到Filter
欄位中,則惡意軟體(相關)路徑(例如IP
位址)發現的所有威脅都將被過濾到:
Maltrail 使用已知經常涉及可疑活動的 TLD 域的靜態清單。大多數此類 TLD 網域均來自免費網域註冊商(例如 Freenom),因此應受到更嚴格的審查。在下面的螢幕截圖中,我們可以找到這樣一種情況,其中一個此類 TLD 域.cm
已被未知惡意軟體使用 DGA 演算法來聯繫其 C&C 伺服器:
在某些情況下,完全有效的 TLD 域(例如.ru
)被用於可疑活動,例如在這種情況下(例如long domain name (suspicious)
),其中域顯然是由未知惡意軟體生成的 DGA:
Maltrail 使用所謂「動態網域」的靜態列表,這些網域經常用於可疑活動(例如,用於經常更改目標 IP 位址的惡意軟體 C&C 伺服器):
此外,Maltrail 使用「洋蔥」相關網域的靜態列表,這些網域也經常用於可疑活動(例如,惡意軟體透過使用 Tor2Web 服務聯絡 C&C 伺服器):
如果舊的和/或過時的惡意軟體未被檢測到組織受感染的內部電腦上,通常會出現一種“現象”,即惡意軟體不斷嘗試聯繫早已失效的C&C 伺服器的網域,而無需任何DNS 解析。因此,這些類型的(潛在)威脅將被標記為excessive no such domain (suspicious)
:
如果一條路徑造成太多威脅(例如,在 DNS 放大攻擊中出現虛假來源 IP 的情況),所有類似的威脅將被分組到單一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 來執行此類下載):
如果來自外部 Web 應用程式安全掃描程式的可疑請求(例如搜尋 SQLi、XSS、LFI 等漏洞)和/或內部使用者對未知網站的惡意嘗試,可能會發現以下威脅(真實案例:攻擊者試圖利用Joomla! CMS CVE-2015-7297、CVE-2015-7857 和CVE-2015-7858 漏洞):
在以下範例中,Web 應用程式漏洞掃描已被標記為「可疑」:
如果我們單擊氣泡圖示(即 )以了解詳細資訊並將整個內容複製並貼上到文字檔案中,我們將能夠看到所有可疑的 HTTP 請求:
在下面的螢幕截圖中,可以在我們的日誌中找到流行的 SQLi 漏洞工具 sqlmap 的運行:
如果對大量不同 TCP 連接埠進行過多的連線嘗試,Maltrail 會根據其啟發式機制偵測對潛在的連接埠掃描發出警告。在下面的螢幕截圖中,可以在流行的連接埠掃描工具 nmap 的運作中找到此類警告:
針對 Web 伺服器基礎架構的一種流行的 DDoS 攻擊是透過對(偽)隨機子網域(例如abpdrsguvjkyz.www.dedeni.com
)進行有效的 DNS 遞歸查詢來耗盡其(主)DNS 伺服器的資源:
各種程式(尤其是基於行動裝置的程式)會呈現惡意軟體(類似)行為,它們會將潛在的敏感資料傳送到遠端信標站。 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路徑連接器(僅限)