瑞星“超级火焰”病毒(Worm.Win32.Flame)技术分析报告
2395 点击·0 回帖
![]() | ![]() | |
![]() | 一、概述 Worm.Win32.Flame又称“超级火焰”病毒,是瑞星最新捕获到的一种新型电脑蠕虫病毒。该病毒结构复杂,破坏力强,比以前发现的Worm.Win32.Stuxnet(超级工厂)和Trojan.Win32.Duqu(毒趣)有过之而无不及。 该蠕虫病毒运行后在感染的机器上安装后门,可以接收来自网络上的多个服务器的指令。病毒运行后会记录用户密码和按键信息,后台录音,并将病毒作者感兴趣的文件等信息发送给远端控制服务器。 病毒主体为一个DLL动态库,文件名为MSSECMGR.OCX。通过命令行rundll32.exe MSSECMGR.OCX, DDEnumCallback 加载病毒。病毒运行后会将自身复制到System32目录下。病毒运行后会向services.exe、winlogon.exe、explorer.exe和iexplore.exe中注入自身并加载。 二、详细分析 2.1感染现象 1. 病毒创建的目录:C:Program FilesCommon FilesMicrosoft SharedMSSecurityMgr 2. 病毒生成的文件: C:WINDOWSEf_trace.log C:WINDOWSsystem32mssecmgr.ocx C:WINDOWSsystem32nteps32.ocx C:WINDOWSsystem32boot32drv.sys C:WINDOWSsystem32advnetcfg.ocx C:WINDOWSsystem32ccalc32.sys C:WINDOWSsystem32msglu32.ocx C:WINDOWSsystem32soapr32.ocx C:WINDOWStemp~HLV473.tmp C:WINDOWStemp~HLV927.tmp C:WINDOWStemp~HLV084.tmp C:WINDOWSTemp~mso2a0.tmp C:WINDOWSTEMP~dra53.tmp C:WINDOWSTEMP~rf288h.tmp C:Program FilesCommon FilesMicrosoft SharedMSSecurityMgrmscrypt.dat C:Program FilesCommon FilesMicrosoft SharedMSSecurityMgrssitable C:Program FilesCommon FilesMicrosoft SharedMSSecurityMgrrccache.dat C:Program FilesCommon FilesMicrosoft SharedMSSecurityMgrlmcache.dat C:Program FilesCommon FilesMicrosoft SharedMSSecurityMgrntcache.dat C:Program FilesCommon FilesMicrosoft SharedMSSecurityMgrdstrlogh.dat 3. 病毒新增的注册表项:HKLMSYSTEMCurrentControlSetControlLsaAuthentication Packages = " mssecmgr.ocx" 4. 病毒访问的网络地址: 65.55.57.*:443 91.135.66.*:80 2.2模块列表 mssecmgr.ocx为病毒主模块,资源中存放着所有的功能模块。蠕虫运行后释放出的功能模块如下: ![]() ![]() ![]() 2.4模块详细分析 1.MSSECMGR.OCX模块 MSSECMGR.OCX是主模块,该模块会被注入到不同的进程中(services.exe,explorer.exe等),该模块的主要功能有: 1. 控制整个病毒的运行流程 2. 解密释放出其他各功能模块 3. 远程注入功能的实现,详细分析见技术细节 4. 开启HTTP服务,处理HTTP请求。使用Windows提供的HTTP Server系列函数完成HTTP服务功能 ![]() ![]() ![]() ![]() ![]() ![]() 通过调用bthprops.cpl导出的一下函数进行蓝牙设备的搜索和可连接性判断: BluetoothFindFirstRadio BluetoothFindRadioClose BluetoothIsConnectable BluetoothIsDiscoverable BluetoothFindDeviceClose BluetoothFindFirstDevice BluetoothFindNextDevice ![]() 该蠕虫接收命令后会通过局域网共享、移动介质和系统漏洞进行传播。目前可以确定的是利用了MS10-061漏洞,提醒用户安装相应补丁。 ![]() ![]() Nteps32.dll被services.exe通过通用的注入手法注入到winlogon.exe和explorer.exe中,并常驻运行。Nteps32.dll加载后会将自身与boot32drv.sys这两个文件的时间(创建、访问、写入)同步成与kernel32.dll一样。除此之外,nteps32.dll不主动执行任何动作。Nteps32.dll包含以下行为: 1. 针对卡巴斯基软件做了特别详细的检测 独立检测了avp.exe进程,同时也检测了相关的注册表键: HKLMSOFTWAREKasperskyLab HKLMSOFTWAREKasperskyLabAVP6 HKLMSOFTWAREKasperskyLabprotectedAVP7 2. 检测大多数(超过50多个进程)的反病毒、防火墙以及其他泛安全产品的进程。以下列举一部分,主要为国外流行的反病毒软件 netmon.exe,mpsvc.exe,licwiz.exe,kavmm.exe,kav.exe,ike.exe,fprottray.exe,fpavserver.exe,emlproxy.exe,emlproui.exe, elogsvc.exe,configmgr.exe,cclaw.exe,avpm.exe,avp.exe,avgupsvc.exe,avgrssvc.exe,avginet.exe,avgfwsrv.exe,avgemc.exe, avgcc.exe,avgamsvr.exe 目前还无法确定是否会有主动结束这些安全软件的行为。 3. 有选择性地记录键盘记录 键盘记录的相关输出文件为: %WINDIR%tempHLV473_tmp或%WINDIR%temp~HLV927.tmp。 键盘记录功能的实现较为简单,主要通过调用以下API实现: GetForegroundWindow GetKeyState GetKeyboardLayout MapVirtualKeyExA MapVirtualKeyA ToUnicodeEx 4. 有选择性地截取活动窗口图像 配置数据存放于boot32drv.sys,该文件由services.exe创建。 输出文件:%WINDIR%temp~HLV084.tmp或%WINDIR%temp~HLV294.tmp。 屏幕截取功能的实现较为简单,主要通过调用以下API实现: GetForegroundWindow GetWindowTextW CreateCompatibleDC CreateCompatibleBitmap BitBlt 当计算机进入屏幕保护状态时,截屏功能将停止。 5. 收集internetExplorer中的电子邮件地址 通过创建CLSID_ShellWindows来枚举InternetExplorer窗口,并搜索包含以下关键字的邮件地址: ymail.com rocketmail.com yahoo.com gawab.com maktoob.com gmail.com live.com hotmail.com 3.rpcns4.ocx模块 主要负责搜集系统信息,收集的信息可以用来识别用户计算机可被用来进行网络攻击的切入点。具体的信息如下: 1. 获取系统进程信息 ![]() 2. 获取磁盘卷信息、计算机名称 ![]() ![]() ![]() 4. 通过遍历用户文档目录来获取所有用户信息,通过遍历程序安装目录获取用户安装的程序信息 用户目录信息如: Administrator/All Users/Default User/LocalService/NetworkService 5. 通过注册表获取系统自带软件相关信息,获取的注册表位置如下(部分) SOFTWAREMicrosoftInternet ExplorerVersion SOFTWAREMicrosoftOutlook ExpressVersion InfoCurrentOutlook.ApplicationCurVer SYSTEMCurrentControlSetControlNlsCodePageMACCP OEMCP 6. 获取用户系统服务配置信息 SYSTEMCurrentControlSetControlTerminal ServerfDenyTSConnections SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TcpPortNumber SYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicyDomainProfile SYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicyDomainProfileGloballyOpenPortsList SoftwareMicrosoftTerminal Server ClientDefault 7. 获取网卡信息、网络协议、网络配置信息、网络共享信息等 ![]() ![]() SoftwareMicrosoftWindowsCurrentVersionInternet Settings GlobalUserOffline SoftwareMicrosoftInternet Connection Wizard Completed httpshellopencommand C:Program FilesInternet Exploreriexplore.exe" -nohome" 9. 获取系统已安装的防御软件信息 SOFTWARETiny SoftwareTiny Firewall" SOFTWAREKerio SOFTWAREFarStoneFireWall SOFTWAREKasperskyLabavp6settings SOFTWAREKasperskyLabavp6settings SOFTWARESymantecSymSetupInternet security SOFTWARESymantecInstalledApps 10. 获取的信息加密后保存到系统临时目录中 ~mso2a0.tmp ~mso2a2.tmp 4. advnetcfg.ocx模块 经分析判断,advnetcfg.ocx模块中包含如下功能: 1. 获取磁盘上黑客感兴趣的文件信息 2. 窗口屏幕的截取 3. DLL注入功能模块 三、技术细节 “超级火焰”病毒的注入方法 “超级火焰”病毒注入DLL的方式是采用常规的远程线程的方法。首先通过OpenProcess获取目标进程句柄,然后通过WrietProcessMemory向目标注入代码,最后通过CreateRemoteThread创建远程线程实现DLL的加载。 步骤 1. 在目标进程中注入模拟DLL卸载的ShellCode 2. 在目标进程中注入模拟DLL加载的ShellCode 3. 在目标进程中注入远程线程所要用到的数据 4. 创建远程线程,线程地址为模拟加载DLL的ShellCode起始地址,线程参数为注入到目标中的数据的起始地址 特点 1. Shellcode构造得很精妙 2. 隐藏DLL模块,通用性好 3. 内存加载,不会产生文件 4. 手动模拟DLL加载,而且还模拟DLL卸载 注入详细分析 经过分析,“超级火焰”病毒中注入DLL功能模块有两套,功能基本相同,只是在代码上有少许不一样,猜测应该是在编译的过程中有些地方没有使用最新的注入模块所造成的。 ![]() 模块(一) ![]() 模拟系统DLL加载的功能代码分析 该功能代码在“超级火焰”病毒中发现有两个版本,一个大小为0x70C字节,另一个版本是0x603字节,经分析发现两个版本的代码实现的步骤功能相似,只是在代码上有所差别。实现功能如下: 1) 通过参数指定的配置数据中找到是否要借用系统的shell32.dll映像名来隐藏自己,如果指定,则映射shell32.dll,并将其内存数据全部清零,将要加载的PE文件按内存粒度对齐后拷贝到shell32.dll所处的那块内存中。 ![]() ![]() ![]() ![]() 从目前分析的情况看,“超级火焰”是一款从事间谍活动的病毒。它盗取的信息包罗万象,包括各种文档、截屏、录音、按键信息等,其复杂度大大超过目前已知的所有病毒。 | |
![]() | ![]() |