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中包含一个额外的行:
<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 build 17[.]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
本文翻译自 welivesecurity.com, 。如若转载请注明出处。