典型挖矿家族系列分析二 | TeamTNT挖矿组织
时间 : 2022年12月07日 来源: 安天CERT
1.引言
随着近几年区块链技术和加密货币等虚拟货币的兴起,挖矿木马的开源导致获取挖矿木马的成本下降,大量黑产组织持续运营挖矿木马,也有不少其他黑产组织将目标转向虚拟货币市场,导致挖矿木马的持续活跃。2021年下半年,国家发文整治虚拟货币“挖矿”活动的通知,明确要求整治虚拟货币挖矿活动,打击挖矿活动已然势在必行。在这一年里挖矿整治活动效果显著,政企和高校等企事业单位挖矿木马数量持续降低。虽然今年加密货币行情不及往年,但挖矿木马仍有利可图,2022年还是有很多小型挖矿木马家族兴起。例如Hezb、“1337”和Kthmimu等挖矿木马家族等。
安天CERT将近几年历史跟踪储备的典型流行挖矿木马家族组织梳理形成专题报告,在未来几个月依次发布,并持续追踪新的流行挖矿家族。专题报告将详细介绍挖矿木马家族历史演进、详细分析家族样本迭代版本、历史攻击事件梳理、感染后排查手段以及公布更多的IoCs,另外我们也会不断完善自身安全产品能力,采取有效技术方案解决挖矿木马的检测和清除,帮助政企单位有效防护和清除挖矿木马。
2.挖矿木马简介
2.1 什么是挖矿
所谓挖矿,是指通过执行工作量证明或其他类似的电脑算法来获取虚拟货币,矿代表的是虚拟货币,挖矿的工人通常称为矿工。而挖矿木马是通过各种手段将挖矿程序植入受害者的计算机中,在用户不知情的情况下,利用受害者计算机的运算力进行挖矿,从而获取非法收益。这类非法入侵用户计算机的挖矿程序被称作挖矿木马。
挖矿方式有两种:一种是solo式(直接连入中心网络工作),产出收益均归自己所有;另一种是连入矿池,收益与矿池分成。由于连入矿池的技术难度较低并且收益相对稳定,所以挖矿木马会选择这种方式。挖矿类型也有两种:一种是被动型挖矿,在用户不知情的情况下被植入挖矿程序,获取的虚拟货币归植入挖矿程序的入侵者所有;另一种是主动型挖矿,人员主动利用计算资产运行挖矿程序,获取的虚拟货币归计算资产所有者或使用者所有。挖矿的本质是计算符合条件的hash值并返回,采用的方式为暴力破解式计算,主要特征表现为消耗主机资源,浪费用户电量。
2.2 为什么挖矿活动会日益兴盛?
将其与同样很流行的勒索活动进行对比可以发现,相对于勒索软件,挖矿活动收入更加稳定。在勒索事件中,一方面很难精确定位加密到有重要内容的主机,另一方面用户交付赎金后又不能保证一定得到解锁服务,这就导致了勒索活动的规模和获得的赎金严重不成正比。
而在挖矿活动中,只要运行在计算机上就可以在矿池中获得shares(具体情况要根据矿池的分配模式)并转换成收益。挖矿的难度也比勒索活动要低,其大部分会使用开源的程序并注册一个钱包地址,挖矿过程中不需要投入其他精力便可坐享其成。
另外,虚拟货币的增值性和匿名性也是促使挖矿木马兴盛的原因之一。通过虚拟货币不仅可以逃避现实世界的金融追查手段而且还获得了具有增值潜力的货币,可谓一箭双雕,这也是挖矿木马更喜欢匿名货币(例:门罗币)的原因。
2.3 挖矿木马的危害
通常情况下,受害者会认为挖矿木马只是会让系统卡,并不会对自身造成太大的影响,但是挖矿木马除了会让系统卡顿之外,还会降低计算机设备性能和使用寿命,危害企业运营,浪费能源消耗,不仅如此,最重要的是现在的挖矿木马普遍会留置后门,变成攻击者的僵尸网络,以此作为跳板,攻击其他计算机等。所以现在的挖矿木马已经不单单是挖矿这么简单的操作,已经逐步开始利用挖矿木马谋取更多利益。
3.TeamTNT挖矿组织概述
TeamTNT挖矿组织最早于2019年被发现,主要针对Docker Remote API未授权访问漏洞、配置错误的Kubernetes集群和Redis服务暴力破解进行攻击。入侵成功后,窃取各类登录凭证并留下后门,主要利用目标系统资源进行挖矿并组建僵尸网络。经过近几年发展,该组织控制的僵尸网络规模庞大,所使用的攻击组件更新频繁,是目前针对Linux服务器进行挖矿的主要攻击组织之一。该组织疑似来自德国,其命名方式依据该组织最早使用teamtnt.red域名进行命名。
TeamTNT自发现以来,持续不断扩大自身攻击范围并扩充武器库,从2020年2月只针对Redis服务器的活动,到5月发现针对Docker容器进行攻击,2021年1月发现针对Kubernetes集群发起攻击。从只窃取SSH凭证到开始窃取AWS凭证并持续扩大凭证窃取范围。从只针对受害者的CPU环境发起攻击到开始针对受害者GPU环境进行攻击。从最开始使用的Tsunami恶意软件后,逐渐发现一系列攻击性武器,其中包括后门类、加密类、窃密类、规避安全监控类、共享类、扫描类等。例如,2021年5月,TeamTNT利用Kubernetes集群暴露的API接口,写入并执行恶意脚本,安装门罗币挖矿程序,部署网络扫描工具masscan和banner探测工具Zgrab,后续下载并安装IRC Bot。据统计,有近50000个IP遭受攻击。
4.TeamTNT挖矿组织介绍
TeamTNT挖矿组织首次被发现于2019年10月,其主要针对云主机和容器化环境进行攻击,例如像Docker、Kubernetes和Redis等。该组织在成功入侵目标后,会对目标系统投放僵尸网络程序和挖矿木马,组建僵尸网络并利用目标系统资源进行挖矿。TeamTNT挖矿组织开发脚本能力较高,其攻击能力略高于其他家族挖矿木马。开发的多款工具及代码先后被其他攻击组织使用,如Conti勒索软件团伙使用TeamTNT组织的工具部署Conti勒索软件[1]等。
表4‑1 TeamTNT挖矿组织介绍
组织名称 |
TeamTNT |
首次披露时间 |
2019年10月 |
归属国家 |
德国 |
命名原因 |
最早使用teamtnt.red域名 |
威胁类型 |
挖矿木马、后门 |
针对目标 |
Docker、Kubernetes和Redis |
传播途径 |
错误的配置和SSH凭证等 |
组织武器库 |
Tsunami、Rathole、Ezuri、Punk.py、libprocesshider、tmate、masscan、pnscan、ZGrab、Tiny Shell、Mimipy、BotB、Diamorphine、Docker Escape
Tool等 |
组织擅长技术 |
扫描局域网端口、添加防火墙规则、删除其他竞争对手进程、创建持久性计划任务、窃取服务凭证、收集机器信息、Rootkit隐藏进程、部署挖矿程序和横向移动等 |
推特账户 |
HildeGard@TeamTNT@HildeTNT |
GitHub账户 |
hilde@TeamTNT HildeTeamTNT |
托管网站 |
teamtnt.red |
自2019年首次发现TeamTNT攻击活动后,TeamTNT频繁发起不同攻击活动,其中包括针对Redis的活动、攻击Docker服务、窃取AWS凭证并更新SSH利用技术[2]、利用合法工具进行攻击[3]、针对Kubernetes集群攻击活动[4]、扩大凭据窃取范围[5]、针对GPU环境进行攻击[6]、针对AWS和阿里云发起攻击[7]和发起Kangaroo攻击[8]等。
表4-2 TeamTNT攻击事件时间线
时间 |
事件 |
2019年10月 |
首次发现攻击活动 |
2020年2月 |
针对Redis的活动被上传到VirusTotal |
2020年5月 |
首次发现攻击Docker服务 |
2020年8月 |
窃取AWS凭证并更新SSH利用技术 |
2020年9月 |
使用合法的云监控工具Weave
Scope进行攻击 |
2021年1月 |
针对Kubernetes集群并发现Windows样本 |
2021年5月 |
扩大凭据窃取范围 |
2021年7月 |
继续针对Docker和Kubernetes服务器进行攻击 |
2021年11月 |
针对GPU环境进行攻击 |
2022年4月 |
针对AWS和阿里云发起攻击 |
2022年9月 |
TeamTNT发起Kangaroo攻击 |
TeamTNT攻击事件时间轴。
图4‑1 TeamTNT攻击事件时间轴
5.事件对应的ATT&CK映射图谱
事件对应的技术特点分布图:
图5‑1 技术特点对应ATT&CK的映射
具体ATT&CK技术行为描述表:
表5‑1 事件对应的ATT&CK技术行为描述表
ATT&CK阶段/类别 |
具体行为 |
注释 |
初始访问 |
利用面向公众的应用程序 |
利用Redis、Docker和Kubernetes等 |
执行 |
利用命令和脚本解释器 |
使用shell脚本 |
利用容器管理服务执行命令 |
容器创建后使用shell执行 |
|
部署容器 |
从Alpine镜像中生成一个新的容器 |
|
利用第三方软件部署工具 |
部署tmate终端共享工具等 |
|
持久化 |
创建账户 |
创建hilde账户 |
利用外部远程服务 |
创建SSH公钥持久化 |
|
利用计划任务/工作 |
创建计划任务 |
|
防御规避 |
混淆文件或信息 |
使用base64混淆文件 |
使用Rootkit |
利用Rootkit隐藏进程 |
|
隐藏行为 |
隐藏进程 |
|
削弱防御机制 |
清除防火墙规则 |
|
删除主机中的信标 |
删除恶意脚本和历史命令 |
|
凭证访问 |
从存储密码的位置获取凭证 |
获取SSH凭证 |
操作系统凭证转储 |
操作系统凭证转储 |
|
发现 |
扫描网络服务 |
扫描22端口等 |
收集 |
收集配置库的数据 |
收集AWS凭证文件 |
收集本地系统数据 |
收集主机内存、CPU和用户名等信息 |
|
命令与控制 |
使用应用层协议 |
使用IRC协议传输 |
影响 |
资源劫持 |
占用CPU资源 |
6.防护建议
针对非法挖矿安天建议企业采取如下防护措施:
1.安装终端防护:安装反病毒软件,针对不同平台建议安装安天智甲终端防御系统Windows/Linux版本;
2.加强SSH口令强度:避免使用弱口令,建议使用16位或更长的密码,包括大小写字母、数字和符号在内的组合,同时避免多个服务器使用相同口令;
3.及时更新补丁:建议开启自动更新功能安装系统补丁,服务器应及时更新系统补丁;
4.及时更新第三方应用补丁:建议及时更新第三方应用如Redis等应用程序补丁;
5.加强对Docker的访问控制:对远程访问端口(如:2375、2376、2377、4243、4244)做网络控制限制,关闭外网访问权限。修改docker swarm的认证方式,使用TLS认证;
6.加强对Kubernetes的安全验证:对远程控制端口启用Kubelet身份验证和授权;
7.开启日志:开启关键日志收集功能(安全日志、系统日志、错误日志、访问日志、传输日志和Cookie日志),为安全事件的追踪溯源提供基础;
8.主机加固:对系统进行渗透测试及安全加固;
9.部署入侵检测系统(IDS):部署流量监控类软件或设备,便于对恶意代码的发现与追踪溯源。安天探海威胁检测系统(PTD)以网络流量为检测分析对象,能精准检测出已知海量恶意代码和网络攻击活动,有效发现网络可疑行为、资产和各类未知威胁;
安天服务:若遭受恶意软件攻击,建议及时隔离被攻击主机,并保护现场等待安全工程师对计算机进行排查;安天7*24小时服务热线:400-840-9234。
经验证,安天智甲终端防御系统(简称IEP)可实现对该挖矿木马的有效查杀。
图6‑1 安天智甲实现对用户的有效防护
7.样本分析
TeamTNT挖矿组织迄今为止发起过多次攻击行动,本次样本分析不局限于某次攻击活动,而对该挖矿组织近年来所采取的攻击手段进行分析,梳理出该组织攻击特点,使读者更加了解TeamTNT挖矿组织。
7.1 扫描局域网端口
使用带有zgrab的masscan/pnscan来寻找相关主机。扫描局域网内Docker API对外开放端口(2375、2376、2377、4244和4243),如果能成功访问,远程创建Alpine Linux容器用来托管挖矿程序和DDoS Bot程序。此外,机器上还安装了一个Weave Scope探测器。
图7‑1 扫描局域网端口
7.2 添加防火墙规则
为了防止其他挖矿组织入侵Redis相关主机,TeamTNT挖矿组织设置脚本添加了iptables规则,只接受来自localhost的6379端口的连接。Shell脚本还会向C2服务器执行了一个请求,为了记录被感染机器的IP地址。
图7‑2 添加防火墙规则
7.3 结束存在竞争关系的挖矿程序
结束存在竞争关系的挖矿程序、计划任务和服务等。
图7‑3 清除竞品
7.4 创建计划任务
利用Redis服务器flushall命令创建一个计划任务脚本,定时下载初始脚本。
图7‑4 创建计划任务
7.5 窃取AWS服务凭证
TeamTNT在受感染的机器上扫描用户的主目录,寻找~/.aws/凭证文件。如果发现该文件,它将与/.aws/config文件一起被上传到托管服务器。
图7‑5 窃取AWS服务凭证
7.6 收集感染机器信息
收集感染机器的信息,包括内存、CPU速度、主机运行时间、操作系统位数、Linux版本信息和当前用户的用户名,将收集来的信息存放到tempfile,上传到托管服务器上,最后自删除。
图7‑6 收集感染机器信息
7.7 Rootkit隐藏进程
Diamorphine是一个由Victor Ramos Mello编写的Linux内核模块Rootkit。它托管在GitHub上,支持2.6.x/3.x/4.x/5.x版本的内核。它可以隐藏进程、文件并将特定用户提升为root用户。图示该脚本在安装Diamorphine工具。
图7‑7 Rootkit隐藏进程
7.8 部署挖矿程序
下载挖矿程序、看门狗进程和配置文件。安装过程取决于Shell脚本是否有root权限。如果有,就会下载并执行第二阶段,以进行根目录设置。否则,脚本会下载并安装文件到临时目录中。配置被修改为对每个受感染的主机都是唯一的。根据执行脚本的用户的用户名和机器名称,创建一个工作者ID。
图7‑8 部署挖矿程序
7.9 横向移动
为了找到可用于验证这些机器的密钥,TeamTNT在所有主文件夹中寻找id_rsa文件,并检查定义的IdentityFile配置。此外,还检查了bash历史记录中对SSH和scp的使用。攻击者使用类似技术来寻找更多的服务器来传播。例如,检查其他机器的主机文件、SSH配置文件中定义的HostName、bash历史记录、已知_hosts文件中的项目,以及连接到22号端口的外部IP的进程。类似的方法也被用来确定可用于连接机器的不同用户账户。
图7‑9 横向移动
TeamTNT自发现以来不断扩充自身武器库,这些武器几乎都是开源工具,其中包括后门类如Tsunami、Rathole和Tiny Shell;加密类如Ezuri;窃密类如Punk.py、MimiPenguin和Mimipy;规避安全监控类如libprocesshider和Diamorphine;共享类如tmate;扫描类如masscan、pnscan和ZGrab;其他类如BotB和Docker Escape Tool。
8.TeamTNT挖矿组织现有武器库
表8‑1 TeamTNT挖矿组织武器库
武器名 |
主要功能 |
Tsunami |
远程控制、DDoS攻击和其他恶意攻击。 |
Rathole |
开源Unix后门,支持blowfish加密算法以及进程名称隐藏。 |
Ezuri |
开源ELF加密器,使用密码反馈(CFB)模式下的AES来加密有效载荷。 |
Punk.py |
Unix系统后期开发工具,可以收集用户名,SSH密钥等,然后尝试通过SSH连接到其他机器。 |
libprocesshider |
可以隐藏进程如ps、lsof和top等命令。 |
tmate |
提供了一个简单而安全的方式来共享终端。 |
masscan |
TCP端口扫描器,可以非常快速的扫描IPv4地址空间,并可用于全互联网扫描。 |
pnscan |
可以用来扫描IPv4网络中的SSH、FTP、SMTP、Web、IDENT和其他服务。 |
ZGrab |
基于ZMap无状态扫描的应用层扫描器,可以自定义数据包以及ip、domain之间的关联。可用于快速指纹识别暴力破解等场景。 |
Tiny SHell |
开源Unix类后门shell工具,分为客户端和服务端,支持上传、下载、反弹shell和通信加密。 |
MimiPenguin |
Linux下的密码抓取工具。 |
Mimipy |
可以从内存中的进程中转储密码,从浏览器和HTTP服务器中提取凭证,支持lightDM,以及覆盖密码。 |
BotB |
利用已知的容器漏洞来突破容器,还有识别K8s的密钥并使用、将数据推送到S3存储桶等功能。 |
Diamorphine |
可以隐藏进程、文件并将特定用户提升为root用户。 |
Docker Escape Tool |
识别Docker容器,并尝试使用已知技术逃离容器。 |
9.关联分析
TeamTNT挖矿组织经常活跃在推特上,会发一些当前正在进行的攻击、被感染的服务器和所使用的工具等。该挖矿组织最有可能来源于德国,因为发布的推文中大多都采用德语,而且所使用的攻击脚本的注释中也都采用德语进行解释以及该推特账户定位于德国。
TeamTNT挖矿组织经常活跃在推特上,推特账户为HildeGard@TeamTNT@HildeTNT,创建于2020年8月,根据资料中提供的信息,该挖矿组织定位的地区为德国,托管的恶意域名为teamtnt.red。
图9‑1 TeamTNT挖矿组织推特资料
TeamTNT在GitHub上的存储库,多数为红队工具。
图9‑2 GitHub存储库
该挖矿组织在2020年12月7日发布了一条推特,其中介绍了他们是由12个人组成,不排除之后有人员的增减。
图9‑3 TeamTNT人员组成
2021年11月18日,TeamTNT置顶了一条推文,宣布暂停活动。但实际上,他们的基础设施继续使用旧恶意软件自动感染新受害者,因为他们的工具包括可以扫描和感染新目标的各种蠕虫。一旦获得目标,就会开始新的扫描和感染序列。因此,他们的以往活动仍可继续发起攻击。
图9‑4 TeamTNT宣布退出
10.IoCs
IoCs |
URL |
hxxp://45.9.148.123/COVID19/nk/NarrenKappe.sh |
hxxp://45.9.148.123/COVID19/sh/clean.sh |
hxxp://45.9.148.123/COVID19/sh/lan.ssh.kinsing.sh |
hxxp://45.9.148.123/COVID19/sh/setup.basics.sh |
hxxp://45.9.148.123/COVID19/sh/setup.mytoys.sh |
hxxp://45.9.148.123/COVID19/sh/setup.xmrig.curl.sh |
hxxp://teamtnt.red/dns |
hxxp://teamtnt.red/sysinfo |
hxxp://teamtnt.red/up/setup_upload.php |
hxxps://teamtnt.red |
hxxps://teamtnt.red/BLACK-T/beta |
hxxps://teamtnt.red/BLACK-T/CleanUpThisBox |
hxxps://teamtnt.red/BLACK-T/setup/bd |
hxxps://teamtnt.red/BLACK-T/setup/docker-update |
hxxps://teamtnt.red/BLACK-T/setup/hole |
hxxps://teamtnt.red/BLACK-T/setup/kube |
hxxps://teamtnt.red/BLACK-T/setup/tshd |
hxxps://teamtnt.red/BLACK-T/SetUpTheBLACK-T |
hxxps://teamtnt.red/BLACK-T/SystemMod |
hxxps://teamtnt.red/ip_log/getip.php |
hxxps://teamtnt.red/only_for_stats/dup.php |
hxxps://teamtnt.red/x/getpwds.tar.gz |
hxxps://teamtnt.red/x/pw |
hxxps://iplogger.org/blahblahblah |
hxxps://iplogger.org/2Xvkv5 |
hxxp://128.199.240.129/php/php_8020.sh |
hxxp://128.199.240.129/php/php.sh |
hxxp://128.199.240.129/php/rr/make-rr.sh |
hxxp://128.199.240.129/jpg2awe02je10901/bioset.jpg |
hxxp://128.199.240.129/jpg2awe02je10901/scan |
hxxp://128.199.240.129/jpg2awe02je10901/c.sh |
hxxp://128.199.240.129/jpg2awe02je10901/hide.jpg |
hxxp://128.199.240.129/jpg2awe02je10901/f.sh |
hxxp://205.185.118.246/b2f628/cronb.sh |
hxxp://205.185.118.246/b2f628//b.sh |
hxxp://205.185.118.246/s3f815/s/s.sh |
hxxp://205.185.118.246/bWVkaWEK/xm.tar |
hxxp://205.185.118.246/bWVkaWEK/config.json |
hxxp://205.185.118.246/s3f815/d/d.sh |
hxxp://205.185.118.246/s3f815/d/c.sh |
hxxp://205.185.118.246/bWVkaWEK/p.tar |
hxxp://205.185.118.246/bWVkaWEK/1.0.4.tar.gz |
hxxp://205.185.118.246/bWVkaWEK/zgrab |
hxxp://kiss.a-dog.top/b2f628/b.sh |
hxxp://kiss.a-dog.top/t.sh |
hxxp://dk.zzhreceive.top/b2f628/cronb.sh |
hxxp://oracle.zzhreceive.top/b2f628/cronb.sh |
hxxp://107.189.3.150/b2f628/cronb.sh |
IP |
36[.]7.154.124 |
116[.]62.122.90 |
3[.]215.110.66 |
125[.]254.128.200 |
123[.]56.193.119 |
116[.]62.122.90 |
120[.]26.230.68 |
80[.]211.206.105 |
85[.]214.149.236 |
147[.]75.47.199 |
45[.]9.148.108 |
123[.]245.9.147 |
13[.]245.9.147 |
164[.]68.106.96 |
62[.]234.121.105 |
129[.]211.98.236 |
85[.]214.149.236 |
203[.]195.214.104 |
85[.]214.149.236 |
147[.]75.47.199 |
164[.]68.106.96 |
62[.]234.121.105 |
45[.]9.148.85 |
88[.]218.17.151 |
85[.]214.149.236 |
34[.]66.229.152 |
209[.]141.40.190 |
45[.]81.235.31 |
185[.]239.239.32 |
156[.]96.150.253 |
45[.]9.148.182 |
93[.]95.229.203 |
205[.]185.118.246 |
45[.]9.148.108 |
45[.]9.148.182 |
85[.]214.149.236 |
94[.]130.12.30 |
94[.]130.12.27 |
3[.]125.10.23 |
15[.]236.100.141 |
51[.]195.105.101 |
域名 |
icanhazip[.]com |
teamtnt[.]red |
Borg[.]wtf |
Irc.borg[.]wtf |
Sampwn.anondns[.]net |
irc.kaiserfranz[.]cc |
dl.chimaera[.]cc |
oracle.zzhreceive[.]top |
sampwn.anondns[.]net |
irc.borg[.]wtf |
borg[.]wtf |
kaiserfranz[.]cc |
6z5yegpuwg2j4len.tor2web[.]su |
dockerupdate.anondns[.]net |
teamtntisback.anondns[.]net |
sayhi.bplaced[.]net |
healthmiami[.]com |
rhuancarlos.inforgeneses.inf[.]br |
whatwill[.]be |
chimaera[.]cc |
矿池 |
vps.teamtnt[.]red:33331 |
45.9.148[.]123:33331 |
xmr.f2pool[.]com:13531 |
47.101.30[.]124:13531 |
xmr.bohemianpool[.]com:9000 |
80.211.206[.]105:9000 |
MoneroOcean[.]stream |
Lova.a-dog[.]top:1414 |
Touch.a-dog[.]top:1414 |
194.36.190[.]30:1414 |
HASH |
0BA908EFEF1395288C270C24CDEFC31B |
0DBF7D11B539B1520AF6DA6AE5C9E109 |
0EC7089C149DC14FE57660F0D1D55A23 |
1AEB95215A633400D90AD8CBCA9BC300 |
2D0C62B7AA94E44A4765AE8F2E7C8B98 |
2DDC70BD2686145AF77E8EB7C4E26798 |
3A7D77691D628AC13CA59F5BA7AE805A |
3A56EA8059B353C31EAC028DAB6E34E4 |
3B3012A790DC848F7B1DC63954E2DD9F |
3C8757402E12CA94EB51E81F92B489E3 |
3E2DDA466C247ECA0A88CC86F65219FF |
3E9ECC6032D4509BCB87F687A75322AC |
5DD0FEC29E1EFBE479B50E1652AE736A |
5DE5454A6344654A5505B415C7F003B6 |
5F66AAD0BDCBF86593854D0A89F57B36 |
6BC27B253810BE224BDE0B7259940C84 |
08E0C3D1F73CB491734B78C5588DFDE6 |
8C6681DABA966ADDD295AD89BF5146AF |
8F414184411A51BECC03EBC1B42473B9 |
8FFDBA0C9708F153237AABB7D386D083 |
9E18AA573CB4B6AD9846F3E60944D7F5 |
9F1A9E43A7451002C73A0B638A47AB98 |
9F98DB93197C6DFB27475075AE14E8AE |
11F55245B1505669DD085F8893C330CA |
12A859D78138894439E1DB4A2390734B |
15E26AECC5FD8DBB7EB023ECDCE322CB |
018D88B8203BDEA0FE4DC5B4BAA930C4 |
24D7D21C3675D66826DA0372369EC3E8 |
027FE3C7130EDA03D1D15A77A6647C37 |
31D88147558A09E7EFC31C2A8D8EFAC4 |
35A2C7B957DC347554A617E1FF6AFF64 |
35AC482FAFB1453F993CB7C447FB9525 |
35BBA6D8574D1211E260E5FC014C2B54 |
36AD129F0D47E7128BEAF51EF5FD75B5 |
40CA302B9A28381473D1A529E3DF5E73 |
65A1A7E7B7AD97BF0A21D8174D8C5BE2 |
80BFD7887FB14584A497A3916B163240 |
80C202CED80965521ADF1D63BA6BE712 |
0122F21FE8281793DA4515EF39F564D6 |
181CE51775184FCF1B74973BABF4475B |
234F74F6640BBA7E5C47AED88CF40E51 |
246DDBDB340E183EB183AEBBA5E6F7E4 |
479B6BC7DFC3B65370C9668E5DA6BF0D |
511CF16B5812558E177B7FF0071B81BD |
0547BC34C789786EA74BF0435338431B |
656ECA480E2161E8645F9B29AF7E4762 |
669CF56A43B63776E14E1996F18DE551 |
838A417EE6B60A15A23E73544109B106 |
1505DB9D11DC6207542BBF9F9453F695 |
3686A9B208E6FB661CBAE93CD6E26260 |
4206DBCF1C2BC80EA95AD64043AA024A |
7718E108E8596B459C01E79E4FEB3062 |
9854D563F7C181225FFA402A6A595EBA |
21642B99B3E04F84F7640931CE605DA6 |
45385F7519C11A58840931EE38FA3C7B |
45527B86B620EF3B5AD27971C997CD58 |
63248FFCA814FEC285379D27AACCF2E9 |
70330C23A9027BA0D2D6DD552818D97B |
88878BA5B64102F800DADCBE438A4F89 |
92490C9B9D3BB59ACA5F106E401DFCAA |
216416FEF7F88F0BC84781BA2B8AA267 |
322814C7D0EC63C509BABA4E8BD51B93 |
8890932EC22543E97308302375E50BD5 |
A00BBF635695B13C55E132CA2563755C |
A206A501C794747845F4526E95AFBF2D |
A69548E3A52095897E6CCB18621C8C3A |
ADA6E4CAF35F789535BE8BDB6610380D |
ADD5F824253DC9B2073C2951AFC4C5A1 |
AE8455A31A3780C788D10B177AEBABC7 |
B348ABF1D17F7BA0001905E295B1F670 |
B454597205DAEA1FEA1988FD0EA74178 |
BE520ED048A3C45099679D3C27122EAC |
CF8F93D79D9510AB78DCB4DF994BF958 |
D75339C10669841A4015FDF6876453B3 |
D712533F913BDF3D0EC1EA72E736630E |
DC3DBFB8242CC527AEBE1A0B2AF0185D |
DD89AB7314E13989BDCAE176A82078AC |
DDA9E1ABA66494F530862E51B514CDC2 |
E10E607751F00516C86B35A6A3B76517 |
ECF8740DA06DC072DDFD65391C173045 |
F50A5DE869BB3DD7B6B053AE14F3C9FD |
F126BA85E44DB8352A514C650CA95789 |
F8806CB235CEDC09E6E4F510A69DFF2E |
FC86D8D99C6A96C741327DB7AD90E786 |
FE9D149DEC9CD182254ACE576A332F56 |
D6E169D47A4BED78DFFC184409994FBF |
4206DBCF1C2BC80EA95AD64043AA024A |
B348ABF1D17F7BA0001905E295B1F670 |
7C7B77BFB9B2E05A7A472E6E48745AEB |
ECF5C4E29490E33225182EF45E255D51 |
B7AD755D71718F2ADF3A6358EACD32A3 |
B8568C474FC342621F748A5E03F71667 |
5F5599171BFB778A7C7483FFDEC18408 |
23812035114DBD56599694ED9B1712D2 |
CFA007DC2D02DA9A8873C761AA5A5C8C |
D46B96E9374EA6988836DDD1B7F964EE |
4882879FFDAC39219BEF1146433EC54F |
CB782B40757D1ABA7A3AB7DB57B50847 |
B27EB2159C808F844D60900E2C81A4DF |
455DEF82E047CE41722CC16A39FDFDB7 |
3ACC4BB5971C31C7544378A448FA8FF0 |
75363103BB838CA8E975D318977C06EB |
95136E73D9A8158373D2C8E58069C0D5 |
A315439D6C1A769F7F751B1744A2A075 |
B0DC91D2591C46944976697B3C5B002E |
CDC433224A594395F16FCD637050BFF7 |
AF17866268BA631BA85FAD489DC81B0C |
091EFBE14D22ECB8A39DD1DA593F03F4 |
624E902DD14A9064D6126378F1E8FC73 |
46E66FB290F0C2C44CC224AA4C3E2767 |
84A5AD559FB6214ED41AB6D5148E6FA2 |
FB0CEE9F064F0F526B344D666D6F3ECD |
E41CD335A16FA73C59064E6C6B107047 |
95C1B68C00B4D5AD050DC90C852EC398 |
0E73A72B9F9426687F2A02482B0F4E37 |
550F9F929BCB99AEAA3821779D8DEA62 |
D9F82DBF8733F15F97FB352467C9AB21 |
63CA7110DE616D48FF5CD789B530854A |
9F973A8C596A5E9A3C0A22CD9F40B9E0 |
8007D1507587AF220EBAA4FBF4311A72 |
DF386DF8C8A376686F788CEFF1216F11 |
48858971BB4F5BCD6A972CBDAABFE9EA |
03CA01B07A766F3314AFF2E49F3C6A74 |
705CFA5AF83B1F4F54A908F5E2193CA6 |
492FFED6E5CDC872F00A3F8B7CD3E512 |
39D208EA3E9CE7E0D25C50ADFA3CDB41 |
1238BAAB2E029D86F29FA1E67671A95C |
A2A11EC332DFD8B1B273D62F736C48A3 |
8C5073A491AB099D2601F99D9A45F005 |
C4FB78194BEE0C53C86765F40BC3F674 |
B8568C474FC342621F748A5E03F71667 |
24046B7930EA1C0109A4BA4F207F1ACD |
9B19AE4A815C92D4B1A1FB34DF2B02CC |
7FF12130C168E089AC9F9A541C4A8856 |
64428C7F5D9FA78E9A07F22798B99FED |
859FBBEDEFC95A90D243A0A9B92D1AE9 |
F496E6A4FBDEFB4E27F1A6DD752F2E80 |
3ABC2B93307D9F49FB4E8E9257069317 |
648EFFA354B3CBAAD87B45F48D59C616 |
E4D28A6476FBF735D4D4FF01A1FD4AA6 |
59C60BCFB2BE1A3A1BEB01C1E8D9E3AD |