Kodi是一个免费的开放源代码媒体播放器软件应用程序。由于其开源和跨平台特性,且以C ++编写的核心代码而被广泛应用。该软件最近因侵权问题关闭了第三方附加组件XvBMC,而在这个组件被关闭之后,有研究人员发现这个第三方扩展库中包含了恶意代码,这其中所关联的恶意行为可以追溯到2017年12月。这是第二个公开的通过Kodi附加组件大规模分发病毒的情况,也是第一个公开的通过Kodi平台发起的经过加密的恶意活动。攻击者将Linux或Windows特定的二进制文件推送到Kodi粉丝的操作系统上。
媒体播放器软件Kodi本身并不提供任何内容,但是用户可以通过安装在官方Kodi库和众多第三方库中找到各种附件来扩展软件功能,因此用户很可能下载到恶意软件。但到目前为止,除了有攻击者将DDoS模块添加到第三方附加组件以外,暂时还没有任何证据表明有人通过Kodi添加了恶意软件。
攻击调查
研究人员发现,在2017年12月和2018年1月分别有恶意软件被添加到了第三方库Bubbles和Gaia(Bubbles的一个分支)中。由于没有安全防范意识,该恶意软件被迅速传播到了kodi的系统中。
该恶意软件使用了攻击链形式,使人们很难根据其最终被投递的有效载荷(cryptominer)而追踪到对应组件。cryptominer运行在Windows和Linux系统上,目的是挖掘加密货币Monero(XMR),暂未发现针对Android或macOS设备的在野版本。触发恶意软件的方式为:
1.用户将恶意存储库的URL添加到他们的Kodi安装列表中,以便下载一些附加组件。只要他们更新了Kodi附加组件,就会安装恶意加载项。
2.用户安装了现成的Kodi版本,该版本本身包含恶意存储库的URL。只要他们更新了Kodi附加组件,就会安装恶意加载项。
3.用户安装了一个现成的Kodi版本,该版本包含一个恶意插件,但没有链接到存储库以进行更新。但是如果安装了cryptominer,它将驻留在设备中并接收更新。
ESET的遥测结果显示,受这种威胁影响最大的前五个国家分别是:美国,以色列,希腊,英国和荷兰。这并不奇怪,因为这些国家均属于“最大交通国家”。根据最近的非官方的Kodi Addon社区统计数据。对地理分布的其他可能解释是:区域性使用的Kodi包含了恶意存储库,而这些库原先就有一定的用户基础,例如荷兰存储库XvBMC。
截止至9月13日,传播恶意软件的库有的已经消失(如Bubbles),有的已经不再含有恶意代码(如Gaia)。但是已经安装过cryptominer的受害者仍会受到影响。该活动的时间顺序表为:
技术分析
运行步骤
受害者将恶意存储库添加到他们的Kodi安装列表后,恶意存储库会提供一个比合法版本高一个版本的同名伪装组件,如合法的3.4.0含有script.module.simplejson组件,攻击者就会伪造一个同名的3.4.1版本。由于Kodi依赖于版本号进行更新检测,因此所有启用了自动更新功能的用户(这是一种常见的默认设置)都会自动从恶意存储库接收到恶意组件。伪装的恶意组件在addon.xml中包含一个额外的<requires>行:
<import addon=”script.module.python.request”version=”2.16.0/”>
这条命令的含义是让Kodi下载并安装一个名为script.module.python.requests的附加组件,版本为2.16.0以上版本。它是对合法加载项script.module.requests的修改,其中包含了恶意Python代码。
Python代码会酌情下载执行Windows或Linux的二进制文件。此文件是一个下载程序文件,用于获取并执行最终恶意内容,即可执行的加密程序。如果cryptominer安装成功,则恶意Python代码将自我删除。
Python代码
混淆的恶意代码位于文件script.module.python.requestslibrequestspackagesurllib3connectionpool.py的第846-862行。
经过反混淆和注释后,代码为:
该脚本会检测正在运行的操作系统类型(仅支持Windows和Linux;不支持Android和macOS),随后连接到C&C服务器,下载执行对应操作系统的二进制下载程序。
Windows二进制文件写入路径为:C:Users[username]AppDataRoamingMicrosoftWindowsStart MenuProgramsStartupTrustedInstaller.exe, Linux二进制文件写入路径为:/tmp/systems/systemd
检索并运行二进制下载程序模块后,Python脚本(此处为connectionpool.py)进行自我删除。而恶意代码被特殊标记了# – + -和#-_-#。在成功执行二进制下载程序后会打开此Python文件,找到这些特殊标记并删除它们以及它们之间的所有内容,然后保存已清理过的Python文件,因此很难追溯到附加组件是什么。
Cryptominer可执行文件
由Python代码检索到的下载程序包含了第二阶段载荷的加密配置和下载链接。二进制下载程序会在受密码保护的ZIP文件中获取匹配受害者操作系统的第二阶段载荷(用于不同GPU的加密器和启动/更新模块)。这些二进制文件是针对64位Windows和64位Linux编译的,并且基于开源加密软件XMRStak。
密码系统的配置如下:
{“monero”:{“default”:{“wallet”:”49WAk6TaCMX3HXN22nWPQAfBjP4J3ReUKg9tu3FoiPugcJs3fsnAvyGdrC41HZ4N6jcHEiwEGvH7z4Sn41PoZtLABFAVjm3″,”password”:””,”name”:””,”email”:””,”weight”:1,”format”:{“rig”:””,”address”:”%w%.%n%/%e%”,”password”:”%p%”}},”pools”:[{“host”:”xmr-us-east1.nanopool.org:14444″},{“host”:”xmr-eu1.nanopool.org:14444″},{“host”:”xmr-asia1.nanopool.org:14444″}]}}
结论
虽然传播这些恶意软件的第三方库已经被关停,但是已经中毒的设备仍深受其害,由下图可知,许多设备仍在挖掘Monero。
根据Nanopool提供的恶意软件作者的Monero钱包入账情况显示,至少有4774名受害者受到恶意软件的影响,并且已生成62,57 XMR(约5700欧元或6700美元)的利益。
因此在第三方库中下载过插件的kodi用户应及时查杀此病毒。
IOC
github[.]com/yooperman17/trailerpark/blob/master/repository/repository.bubbles.3/repository.bubbles.3-4.2.0[.]zip
github[.]com/yooperman17/trailerpark/blob/master/repository/common/script.module.urllib.3/script.module.urllib.3-1.22.3[.]zip
github[.]com/josephlreyes/gaiaorigin/blob/master/common/script.module.python.requests/script.module.python.requests-2.16.1[.]zip
github[.]com/josephlreyes/gaiaorigin/blob/master/common/script.module.simplejson/script.module.simplejson-3.4.1[.]zip
github[.]com/XvBMC/repository.xvbmc/tree/b8f5dd59961f2e452d0ff3fca38b26c526c1aecb/Dependencies/script.module[.]simplejson
github[.]com/XvBMC/repository.xvbmc/tree/b8f5dd59961f2e452d0ff3fca38b26c526c1aecb/Dependencies/script.module.python[.]requests
github[.]com/XvBMC/repository.xvbmc/blob/b8f5dd59961f2e452d0ff3fca38b26c526c1aecb/Dependencies/zips/script.module.python.requests/script.module.python.requests-2.16.3[.]zip
github[.]com/XvBMC/repository.xvbmc/blob/b8f5dd59961f2e452d0ff3fca38b26c526c1aecb/Dependencies/zips/script.module.simplejson/script.module.simplejson-3.4.1[.]zip
archive[.]org/download/retrogamesworld7_gmail_Kodi_20180418/kodi[.]zip
archive[.]org/download/DuggzProBuildWithSlyPVRguideV0.3/DuggzProBuildWithSlyPVRguideV0.3[.]zip
ukodi1[.]xyz/ukodi1/builds/Testosterone%20build%2017[.]zip
C&C URLs
openserver[.]eu/ax.php
kodinet.atspace[.]tv/ax.php
kodiupdate.hostkda[.]com/ax.php
kodihost[.]rf.gd/ax.php
updatecenter[.]net/ax.php
stearti.atspace[.]eu/ax.php
mastercloud.atspace[.]cc/ax.php
globalregistry.atspace.co[.]uk/ax.php
meliova.atwebpages[.]com/ax.php
krystry.onlinewebshop[.]net/ax.php
Windows的下载模块:
openserver[.]eu/wib
kodinet.atspace[.]tv/wib
kodiupdate.hostkda[.]com/wib
kodihost.rf[.]gd/wib
updatecenter[.]net/wib
bitbucket[.]org/kodiserver/plugin.video.youtube/raw/HEAD/resources/lib/wib
gitlab[.]com/kodiupdate/plugin.video.youtube/raw/master/resources/lib/wib
www.dropbox[.]com/s/51fgb0ec9lgmi0u/wib?dl=1&raw=1
Linux的下载模块:
openserver[.]eu/lib
kodinet.atspace[.]tv/lib
kodiupdate.hostkda[.]com/lib
kodihost.rf[.]gd/lib
updatecenter[.]net/lib
bitbucket[.]org/kodiserver/plugin.video.youtube/raw/HEAD/resources/lib/lib
gitlab[.]com/kodiupdate/plugin.video.youtube/raw/master/resources/lib/lib
www.dropbox[.]com/s/e36u2wxmq1jcjjr/lib?dl=1&raw=1
Cryptominer二进制文件(Windows版本):
updatecenter[.]net/wub
openserver[.]eu/wub
glocato.atspace[.]eu/wub
oraceur.hostkda[.]com/wub
dilarti.1free-host[.]com/wub
utudict.vastserve[.]com/wub
encelan.atspace[.]cc/wub
Cryptominer二进制文件 (Linux版本):
updatecenter[.]net/lub
openserver[.]eu/lub
glocato.atspace[.]eu/lub
oraceur.hostkda[.]com/lub
dilarti.1free-host[.]com/lub
utudict.vastserve[.]com/lub
encelan.atspace[.]cc/lub
恶意组件的hash:
B8FD019D4DAB8B895009B957A7FEBAEFCEBAFDD1
BA50EAA31441D5E2C0224B9A8048DAF4015735E7
717C02A1B040187FF54425A64CB9CC001265C0C6
F187E0B6872B096D67C2E261BE41910DAF057761
4E2F1E9E066D7D21CED9D690EF6119E59CF49176
53E7154C2B68EDBCCF37FB73EEB3E042A1DC7108
FF9E491E8E7831967361EDE1BD26FCF1CD640050
3CC8B10BDD5B98BEA94E97C44FFDFB1746F0C472
389CB81D91D640BA4543E178B13AFE53B0E680B5
6DA595FB63F632EE55F36DE4C6E1EB4A2A833862
9458F3D601D30858BBA1AFE1C281A1A99BF30542
B4894B6E1949088350872BDC9219649D50EE0ACA
79BCC4F2D19A394DD2DB2B601208E1D1EA57565B
AAAEDE03F6C014CEE8EC0D9C0EA4FC7B0E67DB59
C66B5ADF3BDFA87B0731512DD2654F4341EBAE5B
F0196D821381248EB8717F47C70D8C235E83A12E
7CFD561C215DC04B702FE40A199F0B60CA706660
密码管理器和下载器模块的哈希(Windows版本):
08406EB5A8E75F53CFB53DB6BDA7738C296556D6
2000E2949368621E218529E242A8F00DC8EC91ED
5B1F384227F462240178263E8F2F30D3436F10F5
B001DD66780935FCA865A45AEC97C85F2D22A7E2
C6A4F67D279478C18BE67BEB6856F3D334F4AC42
EE83D96C7F1E3510A0D7D17BBF32D5D82AB54EF3
密码管理器和下载器模块的哈希 (Linux版本):
38E6B46F34D82BD23DEACD23F3ADD3BE52F1C0B6
90F39643381E2D8DFFF6BA5AB2358C4FB85F03FC
B9173A2FE1E8398CD978832339BE86445ED342C7
D5E00FB7AEA4E572D6C7C5F8D8570DAB5E1DD156
D717FEC7E7C697D2D25080385CBD5C122584CA7C
DF5433DC7EB272B7B837E8932E4540B216A056D8