Duqu和Stuxnet已经将中东地区的网络战争升级,但是我们现在又发现一种可能是迄今为止结构最为复杂的网络武器。Flame(火焰)网络间谍程序蠕虫进入卡巴斯基实验室专家们的视野缘于一次偶然,联合国机构国际电联向我们寻求帮助,希望我们能找到一种在中东地区删除敏感信息的未知恶意软件,然而,正当我们搜索这个代号为Wiper的恶意代码时,却发现了一个全新的恶意软件——Worm.Win32.Flame。
Flame与臭名昭著的网络武器Duqu和Stuxnet有很多相似之处,但它们的功能却是不一样的。无论攻击目标的位置如何,Flame能够更加精准地对其发起针对性攻击,并利用一些特别的软件漏洞,这些攻击方式看上去都与目前部署在中东地区的“超级武器”相似,而部署这些“武器”的犯罪分子目前尚不清楚。可以说,Flame是迄今发现的结构最为复杂的恶意威胁之一。程序较大且结构极为复杂。它的出现很可能将重新定义网络战争和网络间谍活动的行为。
关于这样一个高级威胁的具体情况,可以从以下几个方面了解…
一般问题
Flame到底是什么?蠕虫?后门程序?它有什么功能?
Flame是一种复杂的攻击工具,远比Duqu的结构复杂。它既是一种后门程序、一种木马,却又具有蠕虫的特点,只要其背后的操控者发出指令,它能够在本地网络、移动设备中进行自我复制。
Flame入侵的起始点目前尚不清楚,我们怀疑它是通过针对性攻击的方式进行部署的。然而,我们还没有发现最初传播的范围。我们推测可能是利用了MS10-033漏洞,但是目前还不能确认。
一旦系统被感染,Flame将开始一系列复杂的行动,包括勘察网络流量,抓取截屏,记录音频对话,截获键盘输入等等。系统中所有的数据都能通过链接传输到Flame的指令与控制服务器,操控者一目了然。
随后,操控者可以选择进一步上传模块,从而扩大Flame的功能。目前发现Flame总共有大约20个模块,但大部分模块的具体功能还在调查之中。
Flame到底有多复杂?
首先,Flame是一个庞大的程序包,全部部署的话,大约为20MB。因为这样的特点,导致对其进行分析的工作极其困难。Flame为什么会这么大?其原因是包含了很多不同的功能,诸如压缩(zlib、libbz2、ppmd)和数据库操控(sqlite3),同时还要一个Lua虚拟设备。
Lua是一种脚本(编程)语言,能容易的进行扩展,并与C代码相互影响。Flame中的很多组件用Lua进行了高度逻辑化的编写,并用C++编译了有效的攻击子程序和路径。
与整体编码比较起来,高效的Lua编码仅占用了很小一部分。我们估计在Lua上的开发消耗了3000多行代码,对于一个普通开发者来说,需要大约一个月的时间来创建故障排除。
http://www.kaspersky.com.cn/KL-AboutUs/news2012/05n/208193530.png
同时,还有含嵌套SQL请求的内部数据库、多个加密方法、多重加密运算法则,使用Windows
Management Instrumentation大量编写脚本及进行其它操作。
运行和解除该恶意程序并不像常规可执行文件那样琐碎,但是有几个DLL文件是在系统启动区加载的。
总的来说,我们可以认定Flame是迄今为止发现的结构最为复杂的威胁之一。
它与其它后门木马有什么不同或者为什么更复杂?它是有什么新的特征吗?
首先,在恶意程序中使用Lua就是非同寻常的,特别是在这么大的一个攻击工具中。一般来说,现代恶意程序大小都偏小,并用紧凑的编程语言进行编写,这样的话能很好的将其隐藏。因此,通过大量的代码实现隐藏是Flame的新特点之一。
记录来自内部话筒音频数据也是相当新的手段。当然,其它一些已知的恶意程序也能够记录音频数据,但是Flame的关键不同是它很全面——能够以各种各样的手段盗取数据。
Flame另外一个令人称奇的特点就是对蓝牙设备的使用。当设备的蓝牙功能开启的时候,Flame可以将配置模块中的相关选项同时开启,当发现有设备靠近被感染的计算机时,就可以收集设备中的信息。有赖于这样的配置,它还能受感染的计算机做为一个“灯塔”,发现通过蓝牙传输的设备,并为背后的操控者提供有关编入到设备信息中的恶意程序状态。
Flame最受关注的信息盗取功能有哪些?
尽管我们还在分析不同的模块,但看上去Flame最大的特点是能够通过话筒(如果受感染设备配备的了话筒)记录音频。并能通过公共资源路径,将记录到的音频以压缩方式储存。
记录后的数据按时通过一个秘密的SSL频道发送至指令与控制中心(C&C)。我们目前还在对这个情况进行分析,更多的信息将会被公布在我们的网站上。
该恶意程序还具有按时抓取截屏的能力,甚至可以只抓取那些它感兴趣的应用程序截屏,例如,即时通讯工具(IM)。截屏以压缩的方式储存,并像音频文件一样按时发送给指令与控制中心(C&C)。
目前,我们仍在分析这些组件,并会将相关信息公布。
Flame是何时被创建的?
Flame的创建者刻意将文件的创建日期进行了篡改,这么做是为了让调查者无法知道真正的创建时间。文件的创建日期有1992年、1994年和1995年,显然这些都是不正确的日期。
我们认为Flame项目的创建时间不会早于2010年,但是具体的启动时间还在调查中。尽管Flame的创建者们不断地在不同的模块中引入变化,但是他们一直使用的是同样的基础结构和文件名。一部分模块在2011或2012年间,要么被创建,要么被更改。
根据我们自己的数据,发现2010年8月Flame有被使用的痕迹。此外,根据收集到的数据,我们可以肯定Flame直到2010年2月或3月之前都还未被列入流行病毒清单,但很可能在此之前,它就以一种早期版本的形式存在,但是我们还没有数据来支持这个判断,但无论如何,可能性都是十分高的。
为什么将其称为Flame(火焰)?它最初叫什么?
Flame恶意程序是一种大型的攻击工具,由众多模块组成。其中最主要的模块被命名为Flame(火焰),这个模块是攻击和感染了众多设备的罪魁祸首。
http://www.kaspersky.com.cn/KL-AboutUs/news2012/05n/208193531.png
是否有一个国家在背后支持这样的攻击?或者是专门的网络犯罪集团或者黑客组织?
目前,开发这个恶意程序的背后主使可能有三大集团:黑客组织、网络犯罪集团和国家机构。然而,Flame并没有被用来盗取银行账户大肆敛财,而它也有别于黑客组织常用的黑客工具。因此,排除黑客组织和网络犯罪集团,我们认为第三个集团是最有可能的背后主使。此外,从Flame攻击的地区(主要在中东地区)和本身的复杂程度来看,无疑是一个国家才能支持这样的研究并进一步实践。
谁是背后的主使?
代码中没有出现这样的信息,否则就可追查到具体的国家。就像Stuxnet和Duqu一样,背后的创建者一直未知。
他们为什么要这么做?
系统地收集一些中东国家的信息,包括伊朗、黎巴嫩、叙利亚、以色列等国。7个受到感染的国家和地区如下:
http://www.kaspersky.com.cn/KL-AboutUs/news2012/05n/208193524.jpg
Flame是否攻击一些特别的组织机构,收集特别的数据用于未来的攻击?攻击者到底在找什么样的数据或信息?
从初步的分析来看,Flame的创建者对各种情报感兴趣,像电子邮件、文档、消息、敏感地区的内部讨论,可以说对所有的信息都收集。我们还没有发现有特别针对某个领域(如能源工业)的攻击现象,我们相信这是一种复杂的攻击工具,执行各种网络间谍活动。
当然,从我们过去的经验来看,像此类高度灵活的恶意程序可以用来部署特别攻击模块,能够攻击SCADA设备、ICS、重要基础设施等。
Flame攻击的行业或机构是哪些?是否是一些工业管理设施/PLC/SCADA?目标是哪些?有多少?
Flame看上去没有明显的特定目标,遭到攻击的有个人、有国家机关,甚至还有教育机构。当然,要想从这些地方收集信息也是比较困难的,因为这些机构都有严格的数据保护,并制定有严格的信息管理政策。
根据分析,是否只有一种Flame的变种,或者还有其它?
根据卡巴斯基安全网络中收集到的信息来看,我们发现还有多个变种版本,大小不同,内容也不同。当然,假定这个恶意程序已经发展了几年,可以说有存在多个变种的很大可能。
此外,Flame由多个不同的插件(至20个)组成,每个插件的功能都不同。Flame的一次感染可能涉及7个插件,另一次感染则涉及15个。关键还是看它想要从受感染设备上找什么样的信息,以及该设备被感染的时间。
Flame的主要指令与控制中心(C&C)是否还在运行?是否不止一个主要的C&C服务器?一旦受感染的设备与C&C服务器连接上以后,会发生什么?
存在有多个C&C服务器,分布在世界各地。我们发现有12个不同的C&C域名,运行在几个不同的服务器上。可能还有其它的域名,该恶意程序可能用到大约80个不同的域名来与C&C联系。也因为这样,要追查C&C服务器部署情况变得相当困难。
这也是由Duqu/Stuxnet的创建团队开发的吗?它们之间是否有相似的源代码或其它共同特征?
从程序大小来看,Flame比Stuxnet要大20倍,包含不同的攻击和网络间谍特征。Flame与Stuxnet/Duqu没有主要的相似之处。
例如Duqu被发现的时候,大家都认定其开发Stuxnet使用的是一个平台“Tilded”。
Flame可能是与Stuxnet/Duqu同期运作的一个项目,并没有使用Tilded平台。但根据一些链接表明,Flame的创建者使用了运用在Stuxnet项目中一些技术,如“autorun.inf”感染方式。因此,Flame的创建者可能也使用了Stuxnet中的漏洞探测程序。
另外一方面,我们还无法排除目前的Flame变种是在Stuxnet被发现以后才开发的。可能的是,Flame的创建者利用了关于Stuxnet传播方式的公共信息,并将其在Flame中实现。
总的来看,Flame和Stuxnet/Duqu可能是由两组不同的人员来创建的。我们可以将Flame看作是与Stuxnet/Duqu同期开发的一个项目。
刚刚提到这个恶意程序其实从2010年3月起就已经启用,这个时间与Stuxnet被发现的时间很相近。是否与S
tuxnet同时开始使用的?因为有意思的是,它们都利用了printer-spooler漏洞。
孤注一掷总是不好的,也许是知道Suxnet和Duqu迟早会被发现,因此需要同时启动一个类似的项目,但应用完全不同的原理。这样一来,就算一个项目被发现,其它的仍然可以继续运作。
因此,我们相信Flame是一个与Stuxnet/Duqu同期开发的项目,做为以防万一的补充。
在对Duqu的分析中,提到了Duqu的“近亲”,一些以其它方式存在的恶意程序,Flame有可能是其中之一吗?
绝对不是。Duqu的“近亲”都是基于Tilded平台的,Stuxnet也用了这个平台。但Flame并没有采用Tilded平台。
看上去Flame也是一种信息盗取工具,与Duqu类似。是否是为了制造更大的网络破坏性武器的情报收集行动之一,就想Stuxnet那样?
Duqu背后的情报收集行动可以说是小规模、集中化的。我们相信全世界被Duqu盯上的目标不超过50个,都是最高级别的信息。
Flame比Duqu传播更为广泛一些,全世界大概有上千台的受感染设备。
其目标也更加广泛,包括学术机构、私营企业、甚至包括个人。
根据我们的观察,Flame的创建者可对受感染设备在一定的持续时期内,人为的控制好设备的数量。其进程具有很好的连续性,首先感染一定数量的设备,通过分析受感染设备上的数据,卸载那些他们不敢兴趣的设备上的Flame,用到关键的设备上。然后再进行新一轮的感染。
Wiper是什么?是否与Flame有联系?它的破坏性如何?也是在同样的地区进行传播?
目前一些媒体报道的Wiper恶意程序还处于尚不明确的状态。Flame是在对Wiper攻击的调查中被发现的,目前还没有证据表明Flame与Wiper攻击有关。当然,就Flame的复杂程度而言,数据删除插件随时可以被部署,但是,我们截至目前还没有发现任何证据。
此外,被Wiper恶意程序感染的系统是完全无法恢复的,破坏程度之高,不留下任何可以追踪攻击的蛛丝马迹。
关于Wiper的信息目前仅在伊朗出现。Flame则在不同的国家和地区被发现,不仅只有伊朗。
关于Flame恶意程序功能和特点的问题
Flame感染计算机的途径是什么?U盘?除了打印多任务缓冲处理器(print-spooler)的漏洞,是否还利用的其它漏洞来绕过检测?是否有零日攻击?
Flame有两个专门应对USB的模块
,被称为“Autorun
Infector”和“Euphoria”。我们还没有发现它们活动的痕迹,可能是在某些配置数据中会变得无效,但无论怎样,它的代码具备感染USB的能力,并采用了两种方式:
- Autorun
Infector:“Autorun.inf”的方法源于Stuxnet,采用了“shell32.dll”加壳把戏。问题的关键在于这种特别的方式之前只被Suxnet使用,其它的恶意程序中未曾出现。
- Euphoria:使用“汇合点”(junction
point)路径在介质中传播,当路径打开后,由恶意程序模块和一个LNK文件引发感染。我们的样本中包含文件名,但是没有LNK。
除此之外,Flame能通过本地网络自我复制。通过以下步骤实现:
-
打印机漏洞MS10-061最初由Stuxnet发现,使用了一个特别的MOF文件,使用WMI在被攻击系统上执行。
- 远程控制任务。
-
当Flame被有域名控制管理权限的用户执行后,它能攻击网络中的其它设备:它可以通过预设定密码创建后门用户账户,然后将自己复制到这些设备中。
http://www.kaspersky.com.cn/KL-AboutUs/news2012/05n/208193529.jpg
目前,我们还没有发现零日攻击。但是,据悉该蠕虫已经能通过网络,感染了全部更新补丁程序后Windows
7系统,表明零日攻击的危险是存在的。
Flame是否能像Stuxnet那样自我复制?或者像Duqu那样具有控制传播的能力?
Flame的自我复制是由背后的操控者决定的。跟Duqu一样,也能控制僵尸程序配置文件。大多数感染路径都有攻击执行的后备方案,并且只集中在少量的攻击中。
为什么这个程序的代码字节长度会是MBs级的?是什么样的功能让它比Stuxnet大了很多?如果这么大,为什么之前一直没有被检测到?
正是因为程序之大,才使得这么久都没有被发现。总的来说,如今的恶意程序都是小而精的。这样的话比大文件更容易隐藏。此外,只有在条件不好的网络中,下载100K的文件比下载6MB的文件成功率大很多。
Flame的所有模块一共占了20MB,功能大部分包括:处理SSL流量、SSH连接,勘察、攻击、截获通讯对话等。可以这样来看,分析仅仅500K代码的Stuxnet让我们花了好几个月的时间,因此,可以想象分析20MB代码的Flame需要投入多大的精力。
Falme是否像Duqu或Stuxnet那样有内嵌的“死亡时间”?
在Flame中有多个内嵌的计时器。他们监测是否与C&C连接成功,某些数据盗取行动的频率,以及攻击是否成功等等。尽管在该恶意程序中没有自杀性计时器,但其操控者能够发送一个专门的恶意程序清除模块(命名为“browse32”),全面从系统中卸载恶意程序,对其存在毁尸灭迹。
JPEG文件或截屏的情况怎么样?它们也没有幸免吗?
该恶意程序具有按时抓取截屏的能力。此外,它只截取自己感兴趣的应用程序截屏。例如,即时通讯工具(IM)。截屏以压缩的方式储存,并像音频文件一样按时发送给指令与控制中心(C&C)。
我们目前还在分析相关的组件,并会及时公布。
更新1 (2012年5月28日):
根据我们的分析,Flame(火焰)恶意程序与“SkyWiper”一样,该程序在CrySys实验室以及伊朗Maher
CERT被称为“Flamer”。
加载中,请稍候......