Maltrail

引言

马特里是一种恶意流量检测系统,它利用包含恶意和/或一般可疑路径的公开可用(黑色)列表,以及从各种AV报告和自定义用户定义列表编译的静电路径,其中路径可以是域名(例如zvpprsensinaix.comBanjori恶意软件)、URL(例如hXXp://109.162.38.120/harsh02.exe对于已知的恶意executable)、IP地址(例如185.130.5.231对于已知攻击者)或HTTP User-Agent标头值(例如sqlmap用于自动SQL注入和数据库接管工具)。此外,它还使用(可选)高级启发式机制,可帮助发现未知威胁(例如新的恶意软件)

Reporting tool

正在使用以下(黑色)列表(即提要):

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中描述的配置节)

Architecture diagram

服务器的主要作用是存储事件详细信息并为报告Web应用程序提供后端支持。在默认配置中,服务器和传感器将在同一台计算机上运行。因此,为了防止传感器活动可能中断,前端报告部分基于“Fat client”架构(即所有数据后处理都在客户端的Web浏览器实例中完成)。所选(24小时)期间的事件(即日志条目)将传输到客户端,其中报告Web应用程序单独负责演示部分。数据以压缩区块的形式发送到客户端,并在那里按顺序进行处理。最终报告以高度浓缩的形式创建,实际上允许呈现几乎无限数量的事件

注:服务器组件可以完全跳过,只使用独立的传感器在这种情况下,所有事件都将存储在本地日志目录中,而日志条目可以手动检查或由某个CSV读取应用程序检查

演示页面

可以找到功能齐全的演示页面,其中包含收集到的真实威胁here

要求

为了正确运行马特里,Python2.62.73.x*nix/BSD系统上需要,以及已安装的软件包pcapy-ng传感器组件至少需要1 GB的RAM才能在单进程模式下运行,如果在多进程模式下运行,则需要更多内存,具体取决于选项的值CAPTURE_BUFFER另外,传感器组件(一般情况下)需要管理/root权限。服务器组件没有任何特殊要求。

快速入门

下面的一组命令应该会获取您的Maltrab传感器启动并运行(开箱即用,默认设置和监控接口为“Any”):

  • 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
git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
sudo python3 sensor.py
  • SuSE/openSUSE
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
  • 码头工人可以找到环境说明here

Sensor

要启动(可选),请执行以下操作服务器在同一台机器上,打开一个新终端并执行以下命令:

[[ -d maltrail ]] || git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
python server.py

Server

要测试一切是否正常运行,请执行以下命令:

ping -c 1 136.161.101.53
cat /var/log/maltrail/$(date +"%Y-%m-%d").log

Test

此外,要测试DNS流量的捕获,您可以尝试以下操作:

nslookup morphed.ru
cat /var/log/maltrail/$(date +"%Y-%m-%d").log

Test2

停下来传感器服务器实例(如果在后台运行)执行以下命令:

sudo pkill -f sensor.py
pkill -f server.py

访问报告界面(即客户端)通过访问http://127.0.0.1:8338(默认凭据:admin:changeme!)从您的Web浏览器执行以下操作:

Reporting interface

管理员指南

传感器

传感器的配置可以在maltrail.conf文件的部分[Sensor]

Sensor's configuration

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)

  • 用于选项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_INTERFACEmaltrail.conf)并将事件写入配置的日志目录(选项LOG_DIRmaltrail.conf文件的部分[All])或远程将它们发送到日志记录/报告服务器(选项LOG_SERVER)

Sensor run

检测到的事件存储在服务器的日志目录(即选项LOG_DIRmaltrail.conf文件的部分[All])以易于阅读的CSV格式(注意:空格‘’用作分隔符)作为单行条目,包括:timesensorsrc_ipsrc_portdst_ipdst_portprototrail_typetrailtrail_inforeference(例如"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):

Sample log

服务器

服务器的配置可以在maltrail.conf部分[Server]

Server's configuration

选项HTTP_ADDRESS包含Web服务器的侦听地址(注意:使用0.0.0.0以侦听所有接口)。选项HTTP_PORT包含Web服务器的侦听端口。默认侦听端口设置为8338IF选项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)表示可用于过滤显示的事件的逗号分隔的硬过滤,具体取决于用户帐户。默认条目如下:

Configuration users

选项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阻塞机制(例如fail2baniptablesipset)通过定期从远程位置拉取列入黑名单的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_DIRmaltrail.conf文件的部分[All]),并提供用于向最终用户显示这些相同条目的Web报告界面(注意:不需要安装第三方Web服务器软件包,如Apache):

Server run

用户指南

报表界面

当进入服务器的报告界面(即通过选项定义的地址HTTP_ADDRESSHTTP_PORT),将向用户显示以下身份验证对话框。用户必须在配置文件中输入由服务器管理员设置的正确凭据maltrail.conf(注意:默认凭据为admin:changeme!):

User login

一旦进入,用户将看到以下报告界面:

Reporting interface

顶部包含滑动时间线(注意:单击当前日期标签和/或日历图标后激活Calendar icon),其中用户可以选择过去事件的日志(注意:将鼠标悬停在事件上将触发工具提示的显示,并显示当前日期的大致事件数)。日期按月分组,其中4个月的数据周期显示在小部件本身内。但是,通过使用提供的滑块(即Timeline slider)用户可以轻松访问前几个月的活动

Timeline

单击日期后,应加载该特定日期的所有事件,并由客户端的Web浏览器表示。根据事件数量和网络连接速度的不同,加载和显示记录的事件可能需要几秒到几分钟的时间(例如,100,000个事件总共需要大约5秒)。在整个处理时间内,动画加载器将显示在禁用的用户界面上:

Loader

中间部分包含所显示事件的摘要。Events框表示选定24小时内的事件总数,其中红线表示基于IP的事件,蓝线表示基于DNS的事件,黄线表示基于URL的事件。Sources框以堆叠柱状图的形式表示每个顶层源的事件数,顶部是源的总数。Threats框以饼形图的形式表示最大威胁的百分比(注意:灰色区域包含每个威胁在总事件中所占比例小于1%的所有威胁),威胁总数位于顶部。Trails框以饼形图的形式表示顶部轨迹的百分比(注意:灰色区域包含每个轨迹在事件总数中小于1%的所有轨迹),顶部包含轨迹总数。这些框中的每一个都处于活动状态,因此单击其中一个框将显示更详细的图形

Summary

底部以分页表的形式保存记录事件的浓缩表示。每个条目都包含单个威胁的详细信息(注意:由一对唯一标识(src_ip, trail)(dst_ip, trail)如果src_iptrail就像来自外部的攻击一样):

Single threat

threat持有威胁的唯一ID(例如85fdb08d)和颜色(注意:从威胁ID挤出),sensor保存已触发事件的传感器名称(例如blitvenica),events保存当前威胁的事件总数,severity保存评估的威胁严重程度(注意:根据中的值计算inforeference列,对恶意软件生成的流量进行优先级排序),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_ipdst_ip表格条目、信息工具提示与详细的反向DNS和WHOIS信息一起显示(注意:RIPE是信息提供商):

On mouse over IP

活动详细信息(例如src_portdst_portproto等)在同一威胁条目内不同信息被浓缩为泡沫图标(即Ellipsis)。执行此操作是为了获得具有尽可能少行的可用报告界面。将鼠标移到此类图标上将导致显示信息工具提示,其中包含所有项目(例如,所有正在扫描的端口号attacker):

On mouse over bubble

单击其中一个这样的图标将打开一个新对话框,其中包含准备复制粘贴的所有存储项目(注:未压缩形式),以供进一步分析:

Ctrl-C dialog

将鼠标指针悬停在威胁的踪迹上几秒钟时,将产生一个由结果组成的帧,该框使用该踪迹作为针对执行的搜索项Search Encrypt搜索引擎。在许多情况下,这提供了有关威胁本身的基本信息,从而消除了用户手动搜索威胁的需要。在打开的框架窗口的右上角有两个额外的按钮。通过单击第一个(即New tab icon),则生成的框架将在新浏览器的选项卡(或窗口)内打开,而通过单击第二个选项卡(即Close icon)将立即关闭框架(注意:将鼠标指针移出框架边界即可实现相同的操作):

On mouse over trail

对于每个威胁,都有一个列tag可以用任意的“标签”来紧密描述共享同一踪迹的所有威胁。此外,这也是单独描述威胁的一种很好的方式,因此所有的威胁都共享同一个标签(例如yahoo)可以稍后分组:

Tags

真实案例

在接下来的章节中,我们将通过真实的案例来描述一些“常见嫌犯”的场景。

大规模扫描

大规模扫描是一种相当常见的现象,个人和/或组织有权每天扫描整个0.0.0.0/0 IP范围(即整个互联网),但他们会声明,如果您不喜欢,那么您应该私下联系他们,以便在以后的扫描中跳过

Shodan FileZilla results

更糟糕的是,像这样的组织ShodanZoomEye通过搜索引擎免费提供(对其他潜在攻击者)可用的所有结果。在下面的屏幕截图中,您将看到一天内Shodan扫描的详细信息

以下是“攻击者”地址的反向DNS和WHOIS查找:

Shodan 1

将鼠标指针悬停在trail列的内容(IP地址),您将看到来自Search Encrypt在那里您可以找到有关“攻击者”的更多信息:

Shodan 2

dst_ip列中,如果您的组织很大,您将看到扫描的IP地址的大列表:Shodan 3

dst_port列中,您将能够看到已通过此类大规模扫描扫描的所有端口:

Shodan 4

在其他类似情况下,您将看到来自列入黑名单的单个攻击者的相同行为(在本例中为cinsscore.com):

Known attacker

另一种常见行为是扫描整个0.0.0.0/0IP范围(即,因特网)以搜索一个特定端口(例如,在以下情况下的TCP端口443Heartbleed已找到)。在下面的屏幕截图中,您将发现之前被列入黑名单的攻击者的一个或多个这样的案例(在本例中,通过alienvault.com和另外两个黑名单)以UDP端口5060(即SIP)为目标进行搜索misconfigured VoIP devices

SIP scan

匿名攻击者

找出隐藏在Tor匿名网络,Maltrar利用可公开获得的Tor出口节点列表。在下面的屏幕截图中,您将看到潜在攻击者一直在利用ToR网络以可疑方式(通过HTTP)访问我们组织范围内的Web目标(10分钟内总共有171个连接请求):

Tor attacker

服务攻击者

与前一个相当类似的情况是,之前列入黑名单的攻击者试图以非常可疑的方式访问我们组织范围内的特定(例如,非HTTP)服务(即,在不到15分钟内总共尝试了1513次连接):

RDP brute force

如果我们输入ssh attacker发送到Filter字段,我们将能够看到当天发生的所有类似事件,但在本例中是端口22(即SSH):

SSH attackers filter

恶意软件

如果我们组织内受感染的计算机尝试连接到已知的C&C服务器,您将能够找到类似于以下内容的威胁(在本例中Beebone):

beebone malware

在DNS请求包含已知DGA域名、威胁将如下所示(在本例中Necurs):

necurs malware

在以下情况下,从黑名单下载文件(在本例中是通过malwarepatrol.net)个URL已出现:

malware download

如果我们输入特定的恶意软件名称(在本例中Ramnit)进入Filter字段中,将只过滤已知链接到此恶意软件的威胁(向您显示所有受影响的内部计算机):

ramnit malware

更广泛地说,如果我们输入malware进入到Filter字段中,恶意软件(相关)跟踪发现的所有威胁(例如IP地址)将过滤到:

malware filter

可疑的域查找

马特劳尔使用静电热度排行榜domains他们通常被认为与可疑活动有关。大多数这样的人TLD域名来自免费的域名注册商(例如Freenom),因此它们应该受到更严格的审查。在下面的屏幕截图中,我们可以找到这样一个TLD域.cm已被未知恶意软件使用DGA用于联系ITS的算法C&C服务器:

cm DGA

也有完全有效的TLD域(例如.ru)用于可疑活动,例如在本例中(例如long domain name (suspicious))其中的域显然是由未知恶意软件生成的DGA:

Suspicious long domains

马特拉尔使用静电list经常用于可疑活动的所谓“动态域”(例如,经常更改目标IP地址的恶意软件C&C服务器):

Suspicious dynamic domains

此外,马特拉尔使用静电list也经常用于可疑活动的“洋葱”相关域(例如,恶意软件通过使用Tor2Web服务联系C&C服务器):

Suspicious onion

如果旧的和/或过时的恶意软件驻留在组织受感染的内部计算机上而未被检测到,则通常会出现恶意软件在没有任何DNS解析的情况下不断尝试联系停机已久的C&C服务器的域的“现象”。因此,这些(潜在的)威胁将被标记为excessive no such domain (suspicious)

Excessive no such domain name

如果一条路径负责太多威胁(例如,在DNS放大攻击中出现假源IP的情况),所有类似的威胁都将分组到一个floodThreat(注意:Threat的ID将标有后缀F0),如下例所示:

Flood

可疑的ipinfo请求

很多恶意软件都会使用某种ipinfo服务(例如ipinfo.io)查找受害者的互联网IP地址。在正常情况下,尤其是在非办公时间,应密切监控此类请求,如下例所示:

suspicious ipinfo

通过使用过滤ipinfo我们组织范围内所有可能受感染的计算机都可以列出具有这种可疑行为的计算机:

ipinfo filter

可疑的直接文件下载

Maltrab跟踪所有可疑的直接文件下载尝试(例如.apk.bin.class.chm.dll.egg.exe.hta.hwp.ps1.scr.sct.xpi文件扩展名)。这可能会引发大量误报,但最终可能有助于重建感染链(注:合法服务提供商,如Google,通常使用加密的HTTPS来执行此类下载):

Direct .exe download

可疑的HTTP请求

如果可疑请求来自外部Web应用程序安全扫描程序(例如,搜索SQLI、XSS、LFI等漏洞)和/或内部用户恶意尝试未知网站,可能会发现如下威胁(攻击者试图利用Joomla!CMS CVE-2015-7297、CVE-2015-7857和CVE-2015-7858vulnerabilities):

SQLi com_contenthistory

在以下示例中,Web应用程序漏洞扫描已标记为“可疑”:

Vulnerability scan

如果我们单击泡沫图标(即Ellipsis)有关详细信息,并将整个内容复制粘贴到文本文件中,我们将能够看到所有可疑的HTTP请求:

Vulnerability scan requests

在下面的屏幕截图中,运行了一系列流行的SQLI漏洞工具sqlmap可以在我们的日志中找到:

sqlmap scan requests

端口扫描

如果针对大量不同TCP端口的连接尝试过多,则由于其启发式机制检测,Maltrab将警告潜在的端口扫描。在运行流行的端口扫描工具时,可以在以下屏幕截图中找到此类警告nmap

nmap scan

DNS资源耗尽

针对Web服务器基础设施的一种流行的DDoS攻击是通过对(伪)随机子域名(例如,)进行有效的DNS递归查询来耗尽其(主)DNS服务器的资源。abpdrsguvjkyz.www.dedeni.com):

DNS resource exhaustion

数据泄露

杂项程序(尤其是基于移动的)呈现恶意软件(类似)行为,将潜在的敏感数据发送到远程信标帖子。Maltrail将尝试捕获此类行为,如下例所示:

Data leakage

假阳性

就像在所有其他安全解决方案中一样,Maltrail容易出现“false positives“。在这种情况下,马特劳尔将(特别是在以下情况下)suspicious威胁)记录常规用户的行为,并将其标记为恶意和/或可疑。在下面的示例中,可以看到黑名单提要提供程序blocklist.de将常规Google服务器标记为attacker(S),导致以下威胁:

Google false positive 1

通过将鼠标悬停在轨迹上,使用来自Search Encrypt搜索结果显示,这(最有可能)是一个普通的谷歌服务器:

Google false positive 2

作为另一个示例,访问常规.work域(恶意用途的流行TLD)导致以下威胁:

Suspicious domain false positive

不过,管理员应该投入一些额外的时间(用其他方式)检查“可疑”是否表示恶意,如下例所示:

Suspicious .ws

最佳实践

  1. 安装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
  1. 设置工作环境:
    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
  2. 设置运行环境:
    • 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)

黑名单

  • 可以找到Maltrail每日更新的恶意软件相关域名黑名单here它基于在trails/static/malware并且可以安全地用于DNS流量阻止目的

谢谢

  • 托马斯·克里斯纳
  • 爱德华多·阿库萨·莱斯
  • 詹姆斯·雷
  • 拉迪斯拉夫·巴科(@lacike)
  • 约翰·克里斯托夫(@jtkdpu)
  • 迈克尔·穆恩兹(@mimugmail)
  • 大卫·布鲁什(David Brush)
  • @Godwottery

第三方集成

1个使用(仅限)小径

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。