W32/Kankan –中国IT疫情播报

 
在今天部落格当中, 我们将向各位介绍一款软体, ESET防毒软体将其检测为W32/Kankan。该软体之所以近期引起我们的注意, 主要原因是:
  • - 它能够将自身注册为Office外挂, 本身并不具备Office软体功能, 只做维持续依附于电脑系统的一种方式。
  • - 当Android系统手机接入电脑之后, 它能够通过USB故障排查模式, 在Android手机上秘密安装手机应用程式。
  • - 该软体拥有中国着名公司 - 迅雷网路科技公司的数位签章。该公司因其所开发的BT用户端, 成为全球用户数量最多的下载软体而声名显赫。
我们首先从说明这款程式的相关背景着手, 接着探讨这一发现震惊大量中国用户的原因, 然后再对软体功能进行一番深入剖析, 最后讨论迅雷科技公司涉嫌参与其中的证据。
 
背景
本文所讲述的情况, 最早始于去年6月份, 当时中国各大论坛上相继出现反映一家中国企业 – 迅雷网路科技公司涉嫌开发可疑程式的投诉。 这消息迅速传播, 最终出现在许多中国网站的头版的头条。
为便于更好了解引起媒体关注的原因, 就有必要首先介绍相关背景知识, 其中奥妙, 恐怕多数国外读者尚为陌生。 迅雷网路科技公司的主要业务, 就是开发迅雷用户端软体, 该软体能够帮助用户提高各类文件的下载速率(影音、pdf档、可执行档等等), 其功能类似于Orbit Downloader, 但在中国非常普遍。
 
说起该软体广受欢迎的原因, 就不得不提起该下载工具的工作原理。 简单来说, 迅雷用户端能够
建立并时时更新已知文件路径列表, 每当用户使用浏览器或BT用户端开始下载文件时, 迅雷用户端将根据实际网路传输速度, 选最佳下载来源以提升下载速率。 为优化软体性能, 迅雷网路科技公司开发了一套颇为复杂的软体应用环境, 在软体内部集结了共享文件搜寻引擎、 多协定BT用户端, 甚至自行开发了专有点对点通讯协定。 有兴趣的读者, 可点击这里阅读Dhungel等人于2012年编撰的迅雷网路综合研究报告。
 
如上所述, 该软体中国用户数量及其庞大。TorrentFreak网站2009年分析报告,甚至将迅雷用户端列为世界第一的BT下载软体, 分享用户超过一亿人, 而uTorrent最多用户数量为9200万人。另一方面, 由于官方网站位提供该工具英文版下载, 虽然一些业余爱好者曾推出非官方外文版, 但中国境外几乎没有用户使用。 由此我们可以推测, 迅雷公司的实际用意,  就是在中国境内发展。
 
剖析
以上背景故事, 说明了中国用户在电脑上所发现的可疑程式, 居然由迅雷公司数位签章时的那种惊讶。 相关数位证书, 如下图所示。
 
\
 
我们接下来讨论一下该软体被列为可疑程式的原因。
安装文件
该程式为Windows系统安装包, 通常文件名为INPEnhSetup.exe, 基于Nullsoft脚本安装系统编写。
简单来说, 该安装程式就是一个附带安装脚本的压缩档。程式在安装开始时, 会联络写死的域名kkyouxi.stat.kankan.com, 报告安装初始化。之后将在系统上安装三个文件: INPEn.dll、INPEnhUD.exe与INPEnhSvc.exe。 随后系统加载资料库文件INPEn.dll, 并调用DllRegisterServer函数。 最后, 安装文件再次联络域名kkyouxi.stat.kankan.com, 报告安装过程结束。
 
Office外挂
INPEn.dll首先将自身复制安装为Word、Excel与PowerPoint外挂, 文件名不变, 外挂名称则是InputEnhance。 在安装过程中, 安装程式会自动新增Windows登入档, 使Office应用程式调用INPEnh.dll资料库文件作为外挂(详细说明, 请点击这里查看)。新建的部分登入档, 如下图所示。
 
\
 
我们不难看到, LoadBehavior键值设置为3, 这意味着每当相关程式启动时, 外挂将自动加载。 有趣的是, 这只是该软体依附于系统之中, 但用户是无法察觉奇存在的。 除此之外, 该软体还在系统后台自动执行以下操作:
  • - 获取文件conf.kklm.n0808.com/tools.ini,其主要内容如下所示:
    \
    该文件包含多项参数, 例如以base64编码的安全分析工具列表以及StatServer伺服器位址,在撰写本文时仍为kkyouxi.stat.kankan.com。
     
  • - 检查上文所提到的二进制分析工具是否已经运行: 如正在运行, 则立即停止执行Office外挂。最新解码后的列表, 如下所是。
    \
     
值得一提的是, 该列表包含Windows任务管理器、OllyDebugger等在内的分析工具与一个WiFi网路管理工具, 并不包含任何防毒产品。因此, 该程式的目的是躲避安全检测设备。
  • - 通过尝试联络一些中国境内常见域名, 例如baidu.com与qq.com等, 检查是否存在有效网路连接。设备未连网时, 该程式将转入循环模式, 定期检查是否存在网路连接。
     
  • - 当以上检查项目全部通过后, 该外挂将StatServer伺服器发送Windows系统版本与应用程式(例如WINWORD.exe)名称等讯息, 然后执行INPEnhUD.exe。
     
  • - 最后进入任务管理循环模式, 这一环节中的相关任务由另一程式完成, 因此我们稍后说明。
更新
接下来继续执行INPEnhUD.exe, 其作用大致相当于更新工具, 尤其是能够获取写死的网址
update.kklm.n0808.com/officeaddinupdate.xml,其最新数据如下图所示。
\
 
该XML文件包含文件地址列表以及MD5杂凑值。更新程式会逐各下载文件, 校验杂凑值开在确认符合后执行。
留意的读者应该已经注意到上图中的网址指向Uninstall.exe程式, 这一问题留待我们稍后讨论。
最后一步, 更新程式执行所生的文件INPEnhSvc.exe。
 
服务
INPEnhSvc.exe文件, 是三程式架构的核心。该服务像针对Office外挂中的分析工具运行同样测试之后, 将获取一个XML配置文件, 其中包含七项指令, 每项指令均附带一系列参数。 相关指令可大致可划分为两类:
  • - 本机指令:scanreg、scandesktop、scanfavorites
  • - 外部指令:installpcapp、installphoneapp、setdesktopshortcut、addfavorites、setiestartpage
正如指令名称所示,本机指令由服务向直接执行:scanreg用以搜寻特定登入档,向StatServer伺服器反馈是否存在或缺失;scandesktop与scanfavorites分别用来在桌面与收藏夹中搜寻快捷方式档(扩展名.lnk)与网路连结档(.url)。
 
另一方面,当程式接收到外部指令之后,会与Office外挂沟通,由后者负责执行相关指令。通讯通过配置文件tasklist.ini进行,分为三栏位:正在执行、已完成与完成日期。此外,两者均包含毒有的标示代码(GUID),并分别与任务相关连。更确切的说, 整个沟通过程如下:
  • - 当外挂接收到外部指令之后,服务项目会在正在通讯一栏写入附属GUID与参数(网址等)。
  • - 在任务管理循环环节,Office外挂读取GUID之后,检查文件tasklist.ini中已完成或完成日期一栏是否缺少该GUID。如只要正在执行一栏存在GUID,则开始执行相关编码函数。
  • - 运行完毕后,Office外挂会在已完成一栏中写入GUID。此外,还在完成日期一栏中写入installpcapp与installphoneapp指令的GUID。这样做的目的,可能是需要定期重新执行相关指令。
整个架构可以归纳如下, 蓝色矩形代表过程, 黄色则代表文件。
\ 
 
 
读取需运行任务GUID。任务执行完毕,写入GUID。 Office外挂INPEnh.dll 获取
配置文件
Tools.ini
    执行  
本地任务文件tasklist.ini 更新程式INPEnhUD.exe 获取
更新文件
Officeaddinupdate.xml
    执行  
写入任务GUID 服务项目INPEnhSvc.exe 获取
命令文件
Config.xml
 
 
外部指令名称一目了然,无需详细说明,当然出人意料的installphoneapp指令不在此限
 
手机应用程式
如名称所示,installphoneapp指令是通过Office外挂下载Android系统程式(APK文件),当任何Android系统的手机接入电脑后实现自动安装。首先,服务项目下载AndroidAndroid故障连接埠(ADB)二进制文件,即Android系统SDK安装包的一部分,以及程式所需的资料库文件。接下来,Office外挂将根据XML指令文件所提供的网址,下载APK文件。最后,再借助ADB命令devices列明接入电脑的Android设备,并通过install命令,在每一台连入的手机设备上安装相关APK文件。
 
尽管如此,该安装方式仅在相关Android设备启用了USB故障排查模式后方为有效,该模式可通过手机设定选项进行设置。系统开发商之所以集结此功能,是便于系统开发目的而设, 但特定类别的应用程式往往需要此功能方可正常工作(例如截屏类软体),Android手机根目录权限破解或安装用户自定义ROM,也需要用到该功能。值得注意的是,通过该方式安装程式时,手机萤幕上并不显示通常安装软体时的Android系统权限界面,因此用户对安装过程毫不知情。换而言之,但凡启用USB故障排查模式的Android手机,一旦接入电脑,相关应用程式将自动完成后台安装,并不给出任何提示。
 
在我们分析之时,Android应用程式已不再自动下载,具体原因本文末尾将予以说明,但其中的四款软体在一些中国安全论坛上可以下载。相关应用程式的主界面,如下图所示。
\
 
据我们分析, 所有这些程式均能够为用户提供真实功能。其中有三款是Android市场, 供用户下载各类Android应用程式。我们在这些软件中没有发现明显恶意功能, 但值得一提的是, 其编码非常模糊不清。
 
最后一款软体, 在我们编写本文的时候, Google Play仍提供下载, 允许用户以优惠费率拨打电话。但是该软体有一些可疑的功能, 例如与Android系统广告推送网站进行周期性通知。ESET防毒软体将其侦测为Android/SMSreg.BT变种, 这是一种不良应用程式。
 
总体而言, 推送安装相关手机应用程式的动机尚不明确。
 
后记: 迅雷网路科技公司告白
我们最后需要探讨的问题, 是迅雷网路科技公司在其中所扮演的脚色。 不仅因为该二进制程式拥有迅雷公司的数位签章, 其所指向的域名kankan.com以及其下用做StatServer的二级域名, 也同属迅雷公司线上影音点播网站。 因此, 该公司参与此款软体开发, 是不言而喻的。
 
去年八月, 因用户反应强烈, 迅雷公司官方在新闻发布会上正式承认, 旗下部分员工利用公司资源开发并推广了本程式。该公司解释说, 软体是公司属下某个部门开发的, 并未经过公司同意。迅雷公司表示, 已经解聘了相关负责人, 并做出了公开道歉。
 
正是由于这个原因, 从八月初开始, 迅雷公司提供了由其签名的卸载程式。 软体内的更新功能, 会将卸载程式自动下载到所有染毒的电脑上。 据我们分析, 卸载程式工作正常, 能够清除该软体的所有残留文件。 此外, 所有指向域名仍正常在线上并以最低工作量运行, 以确保卸载程式能够执行。Kankan外挂所有指向域名仍正常在线上并以最低工作量运行,以确保卸载程式能够执行。Kankan外挂的传播过程,通过ESET系列防毒软体八九月份间的检测统计结果可见一斑,详见下图。
\
 
标题: Win32/Kankan当日检测统计结果
 
由此可见, 该程式的传播在8月8日左右达到巅峰值后迅速衰减(卸载程式的数位签章日期为8月9日)。根据ESET疫情雷达系统所采集的统计数据, 该程式的感染地区分布图如下所示。
 
不出意料,中国是大量受该软体感染的唯一国家。
 
结论
假冒Office外挂、常驻程式,背景模式安装Android手机程式以及其所具备的相关后门功能, 证实了许多中国用户的疑虑, 同时也是ESET系列防毒软体将该程式侦测为Win32/Kankan恶意程式的原因所在。
 
目前仍存在一些遗留问题需要探讨, 例如最初的传播途径以及强制安装Android的具体原因。 毕竟, 外部人士很难讲清楚迅雷网路科技公司的实际参与程度。另外, 令我们略为惊讶的是, 就我们所知还没有任何一家中国境外的网站报导过这一事件。
 
鸣谢
感谢Jean-Ian Boutin、Sieng Chye Oh与Alexis Dorais-Joncas参与分析此款恶意程式。
 
分析文件
 
文件下载器
A059D6851013523CDC052A03A91D71D3246A14C2 DB59E003D9F5EBF84EB895B2EE7832AF94D0C93E 722773145CB38249E96CC6A7F0FBC7955ACC5D56
 
Office外挂
688B5B319F0E2F5DCD2EDE7BBE39FAE29B5ED83F B221B71CF14E14FEBC4636DE624A2C6CEE3CE725 089A3BB51C5D5218DF47831489F1D8227E73F4B3
 
更新程式
1EFD454130A658DB83A171A8DCB944CAEADC8D8F 4F29B2A9778C02F6FDB63F9041DC4D2F4668B484
 
服务项目
1C223DA59F4BE7907A2FB00FF756083342166A5B 2D00B2DF8B1CEE7411B2D7B8201B382E2896708C
 
Android应用程式
A439B1EA45769EC2FA0EFC4098EC263662EF40AE(Android市场) 693E15A00B4934EE21A6423DE62C4A01947CE06A (Android市场) 0A1813FB3D1DD8B871D0575B15124543FF2313E1 (Android市场) C6013DE01EC260DC5584FAA2A35EF0580B3BDC89 (电话呼叫)