标签归档:security

Maltrail – 恶意流量检测系统

引言

马特里是一种恶意流量检测系统,它利用包含恶意和/或一般可疑路径的公开可用(黑色)列表,以及从各种AV报告和自定义用户定义列表编译的静电路径,其中路径可以是域名(例如zvpprsensinaix.comBanjori恶意软件)、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

要求

为了正确运行马特里,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

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

[[ -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)

  • 用于选项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)

检测到的事件存储在服务器的日志目录(即选项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):

服务器

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

选项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)表示可用于过滤显示的事件的逗号分隔的硬过滤,具体取决于用户帐户。默认条目如下:

选项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):

用户指南

报表界面

当进入服务器的报告界面(即通过选项定义的地址HTTP_ADDRESSHTTP_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_iptrail就像来自外部的攻击一样):

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是信息提供商):

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

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

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

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

真实案例

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

大规模扫描

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

更糟糕的是,像这样的组织ShodanZoomEye通过搜索引擎免费提供(对其他潜在攻击者)可用的所有结果。在下面的屏幕截图中,您将看到一天内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的情况),所有类似的威胁都将分组到一个floodThreat(注意: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)导致以下威胁:

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

最佳实践

  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个使用(仅限)小径

Hosts-🔒整合和扩展来自多个精心管理的来源的HOSTS

具有基本扩展名的统一HOSTS文件

这个存储库整合了几个信誉良好的hosts文件,并将它们合并到删除重复项的统一主机文件中。提供了各种定制的主机文件

所有主机文件变体的列表

此存储库提供15 different host file variants,除了基本变体之外

这个非GitHub镜像是用于某些主机文件管理器的链接,如Hostsman for Windows不适用于GitHub下载链接

主机文件配方 自述文件 原始主机 唯一域 非GitHub镜像
统一主机=(广告软件+恶意软件) Readme link 81747 link
统一主机+假新闻 Readme link 83,942 link
统一主机+赌博 Readme link 84,204 link
统一主机+色情 Readme link 107,898 link
统一主机+社交 Readme link 84,562 link
统一主机+假新闻+赌博 Readme link 86,399 link
统一主机+假新闻+色情 Readme link 110,093 link
统一主机+假新闻+社交 Readme link 86,757 link
统一主机+赌博+色情 Readme link 110,355 link
统一主机+赌博+社交 Readme link 87,019 link
统一主机+色情+社交 Readme link 110,712 link
统一主机+假新闻+赌博+色情 Readme link 112,550 link
统一主机+假新闻+赌博+社交 Readme link 89,214 link
统一主机+假新闻+色情+社交 Readme link 112,907 link
统一主机+赌博+色情+社交 Readme link 113,169 link
统一主机+假新闻+赌博+色情+社交 Readme link 115,364 link

期望值:这些统一主机文件应服务于所有设备,而与操作系统无关

此变体中统一的主机数据源

已更新hosts来自以下位置的文件始终是统一的并包含在其中:

主机文件源 描述 主页 原始主机 更新频率 许可证 问题
史蒂文·布莱克的特别名单 当我遇到其他草图域时 link raw 偶尔 麻省理工学院 issues
阿达维 Adaway是一个开源的Android广告拦截器,使用的是Hosts文件 link raw 经常 将CC提高到3.0 issues
add.2o7Net 207Net跟踪站点基于hostsfile.org内容 link raw 偶尔 麻省理工学院 issues
add.Dead 基于以下条件的死点hostsfile.org内容 link raw 偶尔 麻省理工学院 issues
add.Risk 基于以下条件的风险内容网站hostsfile.org内容 link raw 偶尔 麻省理工学院 issues
add.Spam 基于以下内容的垃圾网站hostsfile.org内容 link raw 偶尔 麻省理工学院 issues
AdGuardTeam cname跟踪器 CNAME-伪装的跟踪滥用 link raw 偶尔 麻省理工学院 issues
Mitchell Krog‘s-Badd Boyz主持 来自My Nginx和Apache Bad Bot的粗略域名和不良推荐人和垃圾邮件推荐人拦截器 link raw 每周一次 麻省理工学院 issues
主机VN 主持挡路越南语广告 link raw 偶尔 麻省理工学院 issues
KADhosts 欺诈/广告软件/诈骗网站 link raw 经常 CC BY-SA 4.0 issues
MetaMask ETH-网络钓鱼-检测 针对以太用户的钓鱼域名 link raw 频繁 不要做一个混蛋的公共执照 issues
我的世界-主持人 与“我的世界”相关的跟踪器主机 link raw 偶尔 CC0-1.0 issues
MVP主机文件 此站点的目的是为用户提供高质量的自定义主机文件 link raw 每月一次 CC BY-NC-SA 4.0 issues
orca.pet 这是用于阻止网络钓鱼和恶意软件站点的域列表 link raw 频繁 ISC issues
osint.digitalside.it DigitalSide威胁-英特尔恶意软件域列表 link raw 每天 麻省理工学院 issues
阴暗的-主机 分析、广告和活动监控主机 link raw 偶尔 CC0-1.0 issues
丹·波洛克-someonewhocares 如何让互联网不那么糟糕 link raw 经常 具有归属的非商业性 issues
Tiuxo主机列表-广告 用于基于DNS的内容阻止的分类主机文件 link raw 偶尔 CC增加4.0 issues
取消检查广告 Windows Installers ADS源站点基于https://unchecky.com/内容 link raw 偶尔 麻省理工学院 issues
URLHaus 来自以下项目的项目abuse.ch以共享恶意URL为目标 link raw 每周一次 CC0 issues
yoyo.org 使用广告服务器和跟踪服务器主机名阻止 link raw 经常 issues

扩展部分

统一主机文件是可选的可扩展文件。扩展用于按类别包括域。目前,我们提供以下类别:fakenewssocialgambling,以及porn

扩展名是可选的,可以通过各种方式与基本主机文件组合。组合后的产品存储在alternates文件夹

扩展模块的数据存储在extensions文件夹。您可以通过管理此文件夹树来管理扩展模块,您可以在其中找到以下文件夹树的数据fakenewssocialgambling,以及porn我们为您维护和提供的扩展数据

生成您自己的统一主机文件

您有两个选项可以生成自己的主机文件。您可以在自己的环境中完成,也可以在Docker容器中完成。我们将首先报道码头,因为这是一个很短的部分

选项1:在Docker容器中生成

我们提供一个Dockerfile您可以使用它来创建一个包含您需要的一切的Docker容器。容器将包含Python 3及其所有依赖项要求,以及此资料档案库的最新版本副本

如下所示构建Docker容器:

docker build ./

通过如下方式访问终端:

docker run -it (containerid) bash

选项2:在您自己的环境中生成它

要生成您自己的合并主机文件,您需要Python 3.5或更高版本

首先,使用以下命令安装依赖项:

pip3 install --user -r requirements.txt

注意事项我们建议您将--user在用户级别安装所需依赖项的标志。有关它的更多信息可以在pip上找到。documentation

与您的开发环境无关的通用步骤

运行单元测试在顶级目录中,运行:

python3 testUpdateHostsFile.py

这个updateHostsFile.py脚本将根据本地中的源文件生成统一的主机文件data/子文件夹。该脚本将提示您是否应获取更新的版本(从update.json每个源文件夹中的文本文件)。否则,它将使用hosts已经在那里的文件

python3 updateHostsFile.py [--auto] [--replace] [--ip nnn.nnn.nnn.nnn] [--extensions ext1 ext2 ext3]

命令行选项:

--help,或-h:显示帮助

--auto,或-a:在没有提示的情况下运行脚本。什么时候--auto被调用,

  • 主机数据源(包括扩展模块)将更新
  • 默认情况下不包括分机。使用--extensions-e标志以包括您想要的任何内容
  • 您的活动主机文件是替换,除非您将--replace旗帜

--backup,或-b:在覆盖现有主机文件时对其进行备份

--extensions <ext1> <ext2> <ext3>,或-e <ext1> <ext2> <ext3>:下面的子文件夹的名称extensions包含要包括在合并中的其他类别特定主机文件的文件夹。示例:--extensions porn-e social porn

--flush-dns-cache,或-f:跳过刷新DNS缓存的提示。仅在以下情况下才处于活动状态--replace也处于活动状态

--ip nnn.nnn.nnn.nnn,或-i nnn.nnn.nnn.nnn:用作目标的IP地址。默认值为0.0.0.0

--keepdomaincomments,或-ktrue(默认)或false,保留与域显示在同一行上的注释。默认值为true

--noupdate,或-n:跳过从主机数据源获取更新

--output <subfolder>,或-o <subfolder>:将生成的源文件放入子文件夹。如果子文件夹不存在,则会创建子文件夹

--replace,或-r:触发器替换您的活动主机

--skipstatichosts,或-sfalse(默认)或true,省略顶部的标准部分,包含如下行127.0.0.1 localhost这对于在本地网络上配置最接近的DNS服务很有用

--nogendata,或-gfalse(默认)或true跳过用于生成readme.md文件的readmeData.json文件的生成。如果您正在生成具有附加白名单或黑名单的主机文件,并且希望保持此存储库的本地签出不被修改,则此功能非常有用

--compress,或-cfalse(默认)或true压缩主机文件忽略不必要的行(空行和注释),并在每行中放置多个域。减少主机文件的行数可提高Windows(启用DNS客户端服务)下的性能

--minimise,或-mfalse(默认)或true,就像--compress,但将每个域放在单独的行上。这是必要的,因为许多URL拦截器实现依赖于hosts文件不符合允许在单行上有多个主机的标准

--blacklist <blacklistfile>,或-x <blacklistfile>:将给定的HOSTS格式的黑名单文件追加到生成的HOSTS文件中

--whitelist <whitelistfile>,或-w <whitelistfile>:使用给定的白名单文件从生成的主机文件中删除主机

使用NixOS:

要在您的计算机上安装主机文件,请将以下内容添加到您的configuration.nix

{
  networking.extraHosts = let
    hostsPath = https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts;
    hostsFile = builtins.fetchurl hostsPath;
  in builtins.readFile "${hostsFile}";
}
  • 注:更改hostsPath如果您需要其他版本的主机文件
  • 注意:调用fetchurl是不纯洁的。使用fetchFromGitHub如果您希望始终获得相同的结果,请使用精确提交

我如何控制哪些源是统一的?

添加一个或多个附加内容源文件,每个源文件都位于data/文件夹,并指定url键入ITSupdate.json文件

添加一个或多个可选扩展名,这些扩展名源自extensions/文件夹。同样,中的urlupdate.json控制此扩展模块查找其更新的位置

创建一个可选blacklist文件。此文件的内容(包含中的其他域列表hosts文件格式)在更新过程中被附加到统一主机文件。一份样品blacklist包括在内,并且可以根据需要进行修改

  • 注:blacklist不会被git跟踪,因此当您执行以下操作时,您所做的任何更改都不会被覆盖git pull此回购来自origin在未来

如何包含我自己的自定义域映射?

如果您有自定义主机记录,请将它们放入文件中myhosts在更新过程中,此文件的内容将作为统一主机文件的前缀

这个myhosts文件不会被git跟踪,因此当您执行以下操作时,您所做的任何更改都不会被覆盖git pull此回购来自origin在未来

如何防止包含域?

中列出的域whitelist文件从最终的主机文件中排除

这个whitelist使用部分匹配。所以如果你把白名单google-analytics.com,则该域及其所有子域不会合并到最终的主机文件中

这个whitelist不会被git跟踪,因此当您执行以下操作时,您所做的任何更改都不会被覆盖git pull此回购来自origin在未来

我如何贡献主机记录?

如果您发现您认为应该包含在这里的粗略域名,这里有一些贡献它们的方法

选项1:联系我们的一位主机来源

包含新域名的最佳方式是向主页为以下内容的任何数据提供商提交问题listed here这是最好的,因为一旦您提交新的域名,它们将由维护这些源的专职人员进行管理和更新

选项2:分叉此存储库,将您的域添加到Steven Black的个人数据文件中,然后提交拉取请求

分叉此主机此回购并将您的链接添加到https://github.com/StevenBlack/hosts/blob/master/data/StevenBlack/hosts

然后,提交拉取请求

警告:这比方案1更不可取,因为正在进行的管理落在我们身上。所以这给我们带来了更多的工作

选项3:在GitHub上创建您自己的主机列表作为回购

如果您能够策划您自己的粗略域名集合,那么就策划您自己的主机列表。然后发出回购存在的信号,如下所示a new issue当我们创建新版本时,我们可能会将您的新回购包括到我们拉取的资源集合中

什么是主机文件?

一个HOSTS文件,名为hosts(不带文件扩展名)是所有操作系统用于将主机名映射到IP地址的纯文本文件

在大多数操作系统中,hosts文件优先于DNS因此,如果域名由hosts文件,则请求永远不会离开您的计算机

拥有一个聪明的hosts文件在阻止恶意软件、广告软件和其他刺激物方面大有裨益

例如,要使对某些Doubleclick.net服务器的请求无效,可以将以下行添加到主机文件中:

# block doubleClick's servers
0.0.0.0 ad.ae.doubleclick.net
0.0.0.0 ad.ar.doubleclick.net
0.0.0.0 ad.at.doubleclick.net
0.0.0.0 ad.au.doubleclick.net
0.0.0.0 ad.be.doubleclick.net
# etc...

我们建议您使用0.0.0.0而不是127.0.0.1

传统上,大多数主机文件使用127.0.0.1,即环回地址,建立到本地计算机的IP连接

我们更喜欢用0.0.0.0,它被定义为用于指定无效、未知或不适用的目标的不可路由的元地址

使用0.0.0.0在经验上更快,可能是因为不需要等待超时解决方案。它也不会干扰可能在本地PC上运行的Web服务器

为什么不使用0而不是0.0.0.0

我们试过了。使用0并不是普遍有效

主机文件的位置

要修改您的当前hosts文件中,在以下位置查找该文件,然后使用文本编辑器对其进行修改

MacOS(10.14.x之前的MacOS Mojave)、iOS、Android、Linux/etc/hosts文件

MacOS Catalina:/private/etc/hosts文件

窗口%SystemRoot%\system32\drivers\etc\hosts文件

根图(Gentoo)

Gentoo用户可以找到sb-hosts在……里面::pf4publicGentoo覆盖

在Windows上更新主机文件

(注意:另请参阅下面列出的一些第三方主机管理器。)

在Linux和MacOS上,运行Python脚本。在Windows上,由于兼容性问题需要做更多工作,因此最好按如下方式运行批处理文件:

updateHostsWindows.bat

此文件必须以存储库目录中的管理员权限在命令提示符下运行。除了更新HOSTS文件之外,它还可以替换现有的HOSTS文件,并重新加载DNS缓存。不用说,要想让它起作用,你必须连接到互联网上。

要以管理员身份在资料库目录中打开命令提示符,请执行以下操作:

Windows XP:Start→Run→cmd

Windows Vista,7:开始按钮→类型cmd→右键单击命令提示符→“以管理员身份运行”

Windows 8:Start→Swipe Up→All Apps→Windows System→右键单击命令提示符→“以管理员身份运行”

Windows 10:开始按钮→类型cmd→右键单击命令提示符→“以管理员身份运行”

您还可以参考“第三方主机管理器”部分,了解来自第三方的更多推荐解决方案

警告:使用此hostsWindows中的文件可能需要禁用DNS缓存服务

Windows对较大的主机文件有问题。Windows10安全方面的最新变化拒绝通过除注册表黑客之外的其他工具访问更改的服务。使用disable-dnscache-service-win.cmd文件对Windows注册表进行适当更改。完成此操作后,您将需要重新启动设备。请参阅the comments within the cmd file有关更多详细信息,请参阅

正在重新加载主机文件

您的操作系统将缓存DNS查找。一旦新的主机文件就位,您可以重新引导或运行以下命令来手动刷新DNS缓存

|Google Chrome浏览器可能需要手动清除其DNS缓存chrome://net-internals/#dns页,然后查看主机文件中的更改。请参见:https://superuser.com/questions/723703

窗口

使用管理员权限打开命令提示符,然后运行以下命令:

ipconfig /flushdns

Linux操作系统

打开终端并以root权限运行:

Debian/Ubuntusudo service network-manager restart

Linux铸币厂sudo /etc/init.d/dns-clean start

带systemd的Linuxsudo systemctl restart network.service

Feddora Linuxsudo systemctl restart NetworkManager.service

带网络管理器的Arch Linux/Manjarosudo systemctl restart NetworkManager.service

带Wicd的Arch Linux/Manjarosudo systemctl restart wicd.service

RHEL/CentOSsudo /etc/init.d/network restart

FreeBSDsudo service nscd restart

要启用nscd守护程序最初,建议您运行以下命令:

sudo sysrc nscd_enable="YES"
sudo service nscd start

然后修改hosts在您的/etc/nsswitch.conf文件保存到以下位置:

hosts: cache files dns

其他:咨询this Wikipedia article

MacOS

打开终端并运行:

sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder

版本管理

此存储库使用release-it,一个用于GitHub repos和NPM包的优秀CLI发布工具,可自动创建releases这就是为什么package.json.release-it.json文件捆绑在一起

此统一主机文件的目标

这项回购的目标是:

  1. 自动组合高质量的主机列表,
  2. 提供适合情况的扩展,
  3. 对得到的组合列表进行去重,
  4. 并使生成的文件保持合理的大小

高质量的信息源在这里被定义为经过积极策划的信息源。主机源应该由其维护人员频繁更新,包括添加和删除。主机文件越大,预期的管理级别就越高

预计此统一的HOSTS文件将在各种操作系统下同时服务于台式机和移动设备

第三方托管经理

  • Unified Hosts AutoUpdate(适用于Windows):Unified Hosts AutoUpdate软件包是专门为此Unified Hosts项目构建的,并且由社区成员积极开发。您可以安装和卸载任何黑名单并自动使其保持最新,并且可以放置在共享网络位置,并通过组策略在整个组织中部署。由于社区成员正在积极开发它,因此非常欢迎您的bug报告、特性请求和其他反馈
  • ViHoMa是一个Visual Hosts文件管理器,由Christian Martínez用Java编写。看看这个!

有趣的应用程序

  • Maza ad blocking是自动更新主机文件的bash脚本。您还可以更新新的副本。并且每次它都会生成与DNSMASQ兼容的配置文件。快速安装,兼容MacOS、Linux和BSD
  • Hostile是一个漂亮的命令行实用程序,可以轻松地在主机文件中添加或删除域。如果我们的主机文件对您来说太过激进,您可以使用hostile来删除域,或者您可以使用hostile在bash脚本中,以便在每次下载主机的新版本时自动执行开机自检过程
  • macOS Scripting for Configuration, Backup and Restore帮助自定义、重新安装和使用MacOS。它还提供了一个script在MacOS上使用此项目安装和更新HOSTS文件。与一个launchd它每x天更新一次主机文件(默认值为4)。要同时安装两者,请下载GitHub存储库并运行install script从上一级目录开始
  • Pi-hole是在网络范围内运行的DHCP服务器和广告拦截器Raspberry PiPI-HOLE使用此存储库作为其来源之一
  • Block ads and malware via local BIND9 DNS server(对于Debian、Raspbian和Ubuntu):使用/etc/bind/named.conf.blocked文件,来源为此处
  • Block ads, malware, and deploy parental controls via local DualServer DNS/DHCP server(对于BSD、Windows和Linux):使用针对DualServer重新格式化的统一主机的功能,为您网络中的每个人设置黑名单。如果您使用的是Windows,该项目还会维护一个更新脚本,使更新DualServer的黑名单变得更加容易
  • Blocking ads and malwares with unboundUnbound是验证、递归和缓存DNS解析器
  • dnsmasq conversion script这个GitHub要点有一个简短的shell脚本(bash,可以在任何“nix”上运行),并使用wget&awk存在于大多数发行版中,用于获取指定的主机文件并将其转换为dnsmasq所需的格式。支持IPv4和IPv6。设计为既可以用作shell脚本,也可以放入/etc/cron.Week(或任何合适的位置)。该脚本简短且易于编辑,还附带一个简短的文档,并附带有关dnsmasq设置的说明
  • BlackHosts – Command Line Installer/Updater这是一个跨平台的命令行实用程序,用于帮助安装/更新在此存储库中找到的主机文件

贡献自己的力量!

请阅读我们的Contributing Guide此外,这还解释了我们如何组织此存储库中的文件和文件夹

我们总是对发现精心安排的宿主来源感兴趣。如果您找到一个,请打开一个issue为了引起我们的注意

在您创建或回应任何问题之前,请阅读我们的code of conduct

Mitmproxy-面向渗透测试人员和软件开发人员的交互式TLS拦截HTTP代理

mitmproxy是一个交互式的、支持SSL/TLS的拦截代理,具有HTTP/1、HTTP/2和WebSocket的控制台接口

mitmdump是Mitmproxy的命令行版本。考虑HTTP的tcpdump

mitmweb是Mitmproxy的基于web的界面。

安装

安装说明如下here如果要从源代码安装,请参见CONTRIBUTING.md

文档和帮助

一般信息、教程和预编译的二进制文件可以在Mitmproxy网站上找到

Mitmproxy的文档可在我们的网站上找到:


如果您有关于如何使用Mitmproxy的问题,请在StackOverflow上询问他们!

贡献

作为一个开源项目,Mitmproxy欢迎各种形式的贡献

另外,请随时加入我们的开发者松弛!