今年五月份发现的Flame病毒(又名Flamer、Skywiper或火焰病毒)对伊朗能源部门进行了猛烈的网络攻击,Flame病毒的出现引起了人们对于网络间谍活动和网络战争的高度关注。伊朗方面认为,Flame病毒与之前针对工业系统的臭名昭著的Stuxnet(震网)病毒和Duqu病毒有密切的关联。
面对这一高危病毒,迈克菲实验室第一时间对该病毒的相关功能和主要特性进行了深度分析和持续研究,以助力业界更好地了解这一威胁并找出应对措施。
根据迈克菲实验室的分析,Flame病毒是一种模块化的、可扩展和可更新的,具有广泛隐蔽性和很强攻击性的威胁。目前,迈克菲防病毒产品已经可以从感染的系统中检测到这一威胁并进行清除。通过迈克菲的初期数据显示,目前这一威胁还存在多种变体。
Flame病毒强大的攻击能力
以下是迈克菲发现的Flame病毒的部分攻击能力(实际上,Flame病毒的攻击能力还远不止于此):
◆扫描网络资源
◆窃取指定信息
◆能够侦测到100多种安全防护产品(包括反病毒软件、反间谍软件和防火墙等)
◆进行屏幕截图
◆记录语音通话
◆利用 PE 加密资源
◆像 Stuxnet 和 Duqu 一样把自己隐藏为名为 ~ 的临时文件
◆使用已知漏洞,如被Stuxnet利用的Print Spooler 和 lnk漏洞
◆通过 USB 闪存和局域网攻击新系统(缓慢传播)
◆使用 SQLite 数据库存储收集到的信息
◆使用自定义数据库来构建攻击模块(这很罕见,但显示了这一恶意软件的模块化构造和可扩展性)
◆运行于Windows XP、Windows Vista 和 Windows 7 系统
◆随 Winlogon.exe 一起加载并注入IE和服务项中
◆复杂的内部功能能够调用Windows APC、操控线程启动并对关键进程进行代码注入
◆往往位于临近的系统上并通过局域网进行总控和发起目标注入攻击
◆通过 SSH 和 HTTPS 协议与总控服务器通信
◆同时使用内核模式和用户模式逻辑
总体而言,Flame病毒在一些工作原理上与 Stuxnet 和 Duqu 十分类似,但代码库和具体实施上则差别很大,因为Flame病毒更加复杂,攻击能力更强。
Flame病毒极其复杂的结构
迈克菲通过反编译操作发现,其主模块包含 65 万行 C 语言编写的代码。所有迹象都表明,这并非这一恶意软件的所有代码,预计最高可能达到 75 万行以上。鉴于此,迈克菲已着手展开长期分析,以确定其完整的功能和特性。
根据截至目前所获得的数据及分析结果,迈克菲使用IDA(一款专业反汇编和反编译工具)完成了跟踪工作,并绘制了以下代码关系图:
这个像龙卷风一样的代码关系图展示了Flame病毒庞大的代码群及代码间复杂的关系。令人惊叹的是,这只是主模块的代码!仅仅这一个模块就调用了大约 4400 多次字符串反混淆例程。本质上讲,如果代码中存在容易引起关注的字符串,例如"flame::beetlejuice::BeetleJuiceDataCollector,"或"flame::gator::GatorCmdFetcher,",它就会把信息封装在一个密封函数中。这使得本已十分庞大的代码进一步"增肥",要成功辨识更是难上加难。
代码中用到的混淆字符串量超乎寻常,这保证了可执行文件的功能不仅难于理解,而且即使代码被他人捕获也无法轻易用于其他目的。
代码中包含了其所需的全部库代码:SSH、ZLib 例程、Web 服务器代码等。从这点来说,代码中至少涉及几十种加密函数,例如,Blowfish 算法、MD5/MD4 函数等。