引言
马特里 是一种恶意流量检测系统,它利用包含恶意和/或一般可疑路径的公开可用(黑色)列表,以及从各种AV报告和自定义用户定义列表编译的静电路径,其中路径可以是域名(例如zvpprsensinaix.com
为Banjori 恶意软件)、URL(例如hXXp://109.162.38.120/harsh02.exe
对于已知的恶意executable )、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或天坑)的踪迹(来自各种反病毒报告和个人研究):
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基于流量 ->传感器 <->服务器 <->客户端 建筑。传感器 (S)是在监视节点上运行的独立组件(例如,Linux平台被动连接到SPAN/镜像端口或在Linux网桥上透明地内联),或者在其“监视”传递的独立机器(例如,蜜罐)上运行流量 用于列入黑名单的项目/踪迹(即域名、URL和/或IP)。如果匹配成功,它会将事件详细信息发送到(中心)服务器 它们存储在适当的日志目录内的位置(即LOG_DIR
中描述的配置 节)。如果传感器 正在同一台计算机上运行,与服务器 (默认配置),日志直接存储到本地日志目录。否则,它们将通过UDP消息发送到远程服务器(即LOG_SERVER
中描述的配置 节)
服务器 的主要作用是存储事件详细信息并为报告Web应用程序提供后端支持。在默认配置中,服务器和传感器将在同一台计算机上运行。因此,为了防止传感器活动可能中断,前端报告部分基于“Fat client” 架构(即所有数据后处理都在客户端的Web浏览器实例中完成)。所选(24小时)期间的事件(即日志条目)将传输到客户端 ,其中报告Web应用程序单独负责演示部分。数据以压缩区块的形式发送到客户端,并在那里按顺序进行处理。最终报告以高度浓缩的形式创建,实际上允许呈现几乎无限数量的事件
注:服务器 组件可以完全跳过,只使用独立的传感器 在这种情况下,所有事件都将存储在本地日志目录中,而日志条目可以手动检查或由某个CSV读取应用程序检查
演示页面
可以找到功能齐全的演示页面,其中包含收集到的真实威胁here
要求
为了正确运行马特里,Python 2.6 ,2.7 或3.x *nix/BSD系统上需要,以及已安装的软件包pcapy-ng 传感器 组件至少需要1 GB的RAM才能在单进程模式下运行,如果在多进程模式下运行,则需要更多内存,具体取决于选项的值CAPTURE_BUFFER
另外,传感器 组件(一般情况下)需要管理/root权限。服务器 组件没有任何特殊要求。
快速入门
下面的一组命令应该会获取您的Maltrab传感器 启动并运行(开箱即用,默认设置和监控接口为“Any”):
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 python-devel python2-pip procps schedtool
sudo pip2 install pcapy-ng
git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
sudo python 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!
)从您的Web浏览器执行以下操作:
管理员指南
传感器
传感器的配置可以在maltrail.conf
文件的部分[Sensor]
:
IF选项USE_MULTIPROCESSING
设置为true
那么所有的CPU核心都将被使用。一个核心将仅用于数据包捕获(具有适当的亲和性、IO优先级和良好的级别设置),而其他核心将用于数据包处理。否则,一切都将在单个内核上运行。选项USE_FEED_UPDATES
可以用来完全关闭订阅源中的跟踪更新(只需使用提供的静电更新即可)。选项UPDATE_PERIOD
包含每次自动跟踪更新之间的秒数(注意:默认值设置为86400
(即一天))通过使用trails
目录(注:两者传感器 和服务器 注意跟踪更新)。选项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
值,因此可以将来自一个传感器的事件与来自另一个传感器的事件区分开来。IF选项LOG_SERVER
设置,则所有事件都将远程发送到服务器 否则,它们将直接存储到使用OPTION设置的日志目录中LOG_DIR
,可以在maltrail.conf
文件的部分[All]
如果该选项UPDATE_SERVER
,则从给定位置拉出所有轨迹,否则将从位于安装本身内部的轨迹定义更新它们
选项SYSLOG_SERVER
和/或LOGSTASH_SERVER
可用于向非Maltrab服务器发送传感器事件(即日志数据)。如果SYSLOG_SERVER
,事件数据将在CEF中发送(公共事件格式 )格式化为在给定地址监听的UDP(例如,系统日志)服务(例如192.168.2.107:514
),而在以下情况下LOGSTASH_SERVER
事件数据将以JSON格式发送到侦听给定地址(例如Logstash)的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)
{"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格式(注意:空格‘’用作分隔符)作为单行条目,包括: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
IF选项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
侦听所有接口),While选项UDP_PORT
包含侦听端口值。如果启用,则与选项结合使用时LOG_SERVER
,它可以用于不同的(多个)传感器 <->服务器 架构
选项FAIL2BAN_REGEX
包含正则表达式(例如attacker|reputation|potential[^"]*(web scan|directory traversal|injection|remote code)|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
与的相同传感器 ,在运行服务器 (例如python server.py
)第一次和/或在较长时间不运行之后,如果可选USE_SERVER_UPDATE_TRAILS
设置为true
,它将根据轨迹定义自动更新轨迹(注意:存储在trails
目录)。其基本功能是将日志条目存储在日志目录内(即选项LOG_DIR
在maltrail.conf
文件的部分[All]
),并提供用于向最终用户显示这些相同条目的Web报告界面(注意:不需要安装第三方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)
或(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
保存表示选定时段内威胁活动的小迷你图,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
):
单击其中一个这样的图标将打开一个新对话框,其中包含准备复制粘贴的所有存储项目(注:未压缩形式),以供进一步分析:
将鼠标指针悬停在威胁的踪迹上几秒钟时,将产生一个由结果组成的帧,该框使用该踪迹作为针对执行的搜索项Search Encrypt 搜索引擎。在许多情况下,这提供了有关威胁本身的基本信息,从而消除了用户手动搜索威胁的需要。在打开的框架窗口的右上角有两个额外的按钮。通过单击第一个(即 ),则生成的框架将在新浏览器的选项卡(或窗口)内打开,而通过单击第二个选项卡(即 )将立即关闭框架(注意:将鼠标指针移出框架边界即可实现相同的操作):
对于每个威胁,都有一个列tag
可以用任意的“标签”来紧密描述共享同一踪迹的所有威胁。此外,这也是单独描述威胁的一种很好的方式,因此所有的威胁都共享同一个标签(例如yahoo
)可以稍后分组:
真实案例
在接下来的章节中,我们将通过真实的案例来描述一些“常见嫌犯”的场景。
大规模扫描
大规模扫描是一种相当常见的现象,个人和/或组织有权每天扫描整个0.0.0.0/0 IP范围(即整个互联网),但他们会声明,如果您不喜欢,那么您应该私下联系他们,以便在以后的扫描中跳过
更糟糕的是,像这样的组织Shodan 和ZoomEye 通过搜索引擎免费提供(对其他潜在攻击者)可用的所有结果。在下面的屏幕截图中,您将看到一天内Shodan扫描的详细信息
以下是“攻击者”地址的反向DNS和WHOIS查找:
将鼠标指针悬停在trail
列的内容(IP地址),您将看到来自Search Encrypt 在那里您可以找到有关“攻击者”的更多信息:
在dst_ip
列中,如果您的组织很大,您将看到扫描的IP地址的大列表:
在dst_port
列中,您将能够看到已通过此类大规模扫描扫描的所有端口:
在其他类似情况下,您将看到来自列入黑名单的单个攻击者的相同行为(在本例中为cinsscore.com ):
另一种常见行为是扫描整个0.0.0.0/0IP范围(即,因特网)以搜索一个特定端口(例如,在以下情况下的TCP端口443Heartbleed 已找到)。在下面的屏幕截图中,您将发现之前被列入黑名单的攻击者的一个或多个这样的案例(在本例中,通过alienvault.com 和另外两个黑名单)以UDP端口5060(即SIP)为目标进行搜索misconfigured VoIP devices :
匿名攻击者
找出隐藏在Tor 匿名网络,Maltrar利用可公开获得的Tor出口节点列表。在下面的屏幕截图中,您将看到潜在攻击者一直在利用ToR网络以可疑方式(通过HTTP)访问我们组织范围内的Web目标(10分钟内总共有171个连接请求):
服务攻击者
与前一个相当类似的情况是,之前列入黑名单的攻击者试图以非常可疑的方式访问我们组织范围内的特定(例如,非HTTP)服务(即,在不到15分钟内总共尝试了1513次连接):
如果我们输入ssh attacker
发送到Filter
字段,我们将能够看到当天发生的所有类似事件,但在本例中是端口22(即SSH):
恶意软件
如果我们组织内受感染的计算机尝试连接到已知的C&C服务器,您将能够找到类似于以下内容的威胁(在本例中Beebone ):
在DNS请求包含已知DGA 域名、威胁将如下所示(在本例中Necurs ):
在以下情况下,从黑名单下载文件(在本例中是通过malwarepatrol.net )个URL已出现:
如果我们输入特定的恶意软件名称(在本例中Ramnit )进入Filter
字段中,将只过滤已知链接到此恶意软件的威胁(向您显示所有受影响的内部计算机):
更广泛地说,如果我们输入malware
进入到Filter
字段中,恶意软件(相关)跟踪发现的所有威胁(例如IP
地址)将过滤到:
可疑的域查找
马特劳尔使用静电热度排行榜domains 他们通常被认为与可疑活动有关。大多数这样的人TLD 域名来自免费的域名注册商(例如Freenom ),因此它们应该受到更严格的审查。在下面的屏幕截图中,我们可以找到这样一个TLD域.cm
已被未知恶意软件使用DGA 用于联系ITS的算法C&C 服务器:
也有完全有效的TLD域(例如.ru
)用于可疑活动,例如在本例中(例如long domain name (suspicious)
)其中的域显然是由未知恶意软件生成的DGA:
马特拉尔使用静电list 经常用于可疑活动的所谓“动态域”(例如,经常更改目标IP地址的恶意软件C&C服务器):
此外,马特拉尔使用静电list 也经常用于可疑活动的“洋葱”相关域(例如,恶意软件通过使用Tor2Web服务联系C&C服务器):
如果旧的和/或过时的恶意软件驻留在组织受感染的内部计算机上而未被检测到,则通常会出现恶意软件在没有任何DNS解析的情况下不断尝试联系停机已久的C&C服务器的域的“现象”。因此,这些(潜在的)威胁将被标记为excessive no such domain (suspicious)
:
如果一条路径负责太多威胁(例如,在DNS放大攻击中出现假源IP的情况),所有类似的威胁都将分组到一个flood
Threat(注意:Threat的ID将标有后缀F0
),如下例所示:
可疑的ipinfo请求
很多恶意软件都会使用某种ipinfo
服务(例如ipinfo.io )查找受害者的互联网IP地址。在正常情况下,尤其是在非办公时间,应密切监控此类请求,如下例所示:
通过使用过滤ipinfo
我们组织范围内所有可能受感染的计算机都可以列出具有这种可疑行为的计算机:
可疑的直接文件下载
Maltrab跟踪所有可疑的直接文件下载尝试(例如.apk
,.bin
,.class
,.chm
,.dll
,.egg
,.exe
,.hta
,.hwp
,.ps1
,.scr
,.sct
和.xpi
文件扩展名)。这可能会引发大量误报,但最终可能有助于重建感染链(注:合法服务提供商,如Google,通常使用加密的HTTPS来执行此类下载):
可疑的HTTP请求
如果可疑请求来自外部Web应用程序安全扫描程序(例如,搜索SQLI、XSS、LFI等漏洞)和/或内部用户恶意尝试未知网站,可能会发现如下威胁(攻击者试图利用Joomla!CMS CVE-2015-7297、CVE-2015-7857和CVE-2015-7858vulnerabilities ):
在以下示例中,Web应用程序漏洞扫描已标记为“可疑”:
如果我们单击泡沫图标(即 )有关详细信息,并将整个内容复制粘贴到文本文件中,我们将能够看到所有可疑的HTTP请求:
在下面的屏幕截图中,运行了一系列流行的SQLI漏洞工具sqlmap 可以在我们的日志中找到:
端口扫描
如果针对大量不同TCP端口的连接尝试过多,则由于其启发式机制检测,Maltrab将警告潜在的端口扫描。在运行流行的端口扫描工具时,可以在以下屏幕截图中找到此类警告nmap :
DNS资源耗尽
针对Web服务器基础设施的一种流行的DDoS攻击是通过对(伪)随机子域名(例如,)进行有效的DNS递归查询来耗尽其(主)DNS服务器的资源。abpdrsguvjkyz.www.dedeni.com
):
数据泄露
杂项程序(尤其是基于移动的)呈现恶意软件(类似)行为,将潜在的敏感数据发送到远程信标帖子。Maltrail将尝试捕获此类行为,如下例所示:
假阳性
就像在所有其他安全解决方案中一样,Maltrail容易出现“false positives “。在这种情况下,马特劳尔将(特别是在以下情况下)suspicious
威胁)记录常规用户的行为,并将其标记为恶意和/或可疑。在下面的示例中,可以看到黑名单提要提供程序blocklist.de
将常规Google服务器标记为attacker
(S),导致以下威胁:
通过将鼠标悬停在轨迹上,使用来自Search Encrypt 搜索结果显示,这(最有可能)是一个普通的谷歌服务器:
作为另一个示例,访问常规.work
域(恶意用途的流行TLD)导致以下威胁:
不过,管理员应该投入一些额外的时间(用其他方式)检查“可疑”是否表示恶意,如下例所示:
最佳实践
安装Maltrab:
在……上面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 python-devel python2-pip procps schedtool
sudo pip2 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 python /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 python /opt/maltrail/sensor.py -c /etc/maltrail/maltrail.conf; fi
2 1 * * * /usr/bin/pkill -f maltrail
许可证
该软件是在麻省理工学院的许可下提供的。请参阅随附的LICENSE 有关详细信息,请参阅文件
赞助商
开发商
演示文稿
第47次工作组-CSIRT会议,布拉格(捷克共和国),2016年(slides )
黑名单
谢谢
托马斯·克里斯纳
爱德华多·阿库萨·莱斯
詹姆斯·雷
拉迪斯拉夫·巴科(@lacike)
约翰·克里斯托夫(@jtkdpu)
迈克尔·穆恩兹(@mimugmail)
大卫·布鲁什(David Brush)
@Godwottery
第三方集成
1个 使用(仅限)小径