Maltrail是一种恶意流量检测系统,利用包含恶意和/或一般可疑踪迹的公开可用(黑)列表,以及从各种 AV 报告和自定义用户定义列表编译的静态踪迹,其中踪迹可以是域名中的任何内容(例如zvpprsensinaix.com
对于 Banjori 恶意软件)、URL(例如hXXp://109.162.38.120/harsh02.exe
对于已知的恶意可执行文件)、IP 地址(例如185.130.5.231
(已知攻击者)或 HTTP User-Agent 标头值(例如,用于自动 SQL 注入和数据库接管工具的sqlmap
)。此外,它还使用(可选)高级启发式机制,可以帮助发现未知威胁(例如新的恶意软件)。
正在使用以下(黑)名单(即提要):
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
网络调用进行提取这允许通过定期拉取 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
。在后一种情况下,网址将为: /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
持有源端口(例如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
)的所有威胁可以稍后分组:
在下面的部分中,我们将通过现实生活中的案例来描述一些“常见嫌疑人”场景。
大规模扫描是一种相当普遍的现象,个人和/或组织赋予自己每天扫描整个 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路径连接器(仅限)