“百合一”盗号木马分析报告

0x1 前言

近日,360互联网安全中心捕获到一枚窃取国外用户个人信息的木马程序。该木马外壳使用c#语言编写,经过两次代码解密操作后完成“金蝉脱壳”,执行最终的功能代码。在木马的运行过程中,关键代码只在内存中执行,并没有“落地”,这也增强了木马的隐蔽性。木马的主要功能是盗取用户计算机中超过一百种敏感信息,包括浏览器中自动保存的账号密码,facebook账号密码,本机登陆账号密码等,真正的大合集盗号木马:
53aae50dN4e266a0f

0x2 样本执行流程

不好意思刚才乱入了一些奇怪的东西,现在我们说回木马本身。木马程序的执行过程分三步走。第一步是外壳程序触发按钮加载事件执行对应的处理函数,处理函数解密代码执行;第二步是解密另一段代码并注入同名进程执行;第三步是主要功能的执行,获取用户敏感信息。程序执行流程图如下所示。

1

0x3 样本具体分析

1.第一层外壳程序

程序首先创建一个radiobutton控件,并为该按钮控制设置加载事件处理程序,一旦按钮被加载就会执行处理程序。在创建按钮完成之后,作者调用ResumeLayout方法和PerformLayout方法来更新布局并显示布局,而显示布局时会加载按钮,处理程序也因此被调用。

2

图1 通过按钮加载处理程序执行下一步代码

        然后从内存中读取解密key并通过CreateDecryptor方法创建解密密钥,用于下一步的解密操作。

3

图2 创建解密密钥

        接着程序利用上一步获得的密钥解密数据,得到一个完整的PE文件。

44

图3 解密数据

5

6

图4 解密前(上)和解密后(下)对比

        通过dump工具可以提取出解密后的pe文件,是一个名为OlympicWorker的可执行程序,拥有一个和奥运会有关的名称又在奥运期间出现,不禁让人浮想联翩。

7

图5 解密出的PE文件

        接着程序调用Load方法将解密后的PE文件加载进内存,并确定入口点,从入口点开始执行。这一步生成的PE文件没有“落地”,直接在内存中执行。

1

图6 执行解密得到的PE文件

        至此,第一层外壳程序完成所有任务,将接下来的任务转交给第二步外壳程序。

2.第二层外壳程序

首先通过创建互斥体判断是否只运行一个实例,如果已存在其他实例则退出进程。

1

图7 判断是否只运行一个实例

        接着根据自身配置信息来确定要注入的程序,如果参数为0则注入“csc.exe”,参数为1则注入“svchost.exe”,参数为2则注入“applaunch.exe”,参数为3则注入自身。

1

图8 根据配置信息确定注入对象

        确定注入目标后,程序先创建挂起的进程,然后开始进行注入操作,将代码分块写入注入目标内存中。

1

图9 将代码拷贝进注入目标内存

1

图10 注入的代码

        注入的代码是完整的PE文件,程序完成注入操作之后调用delegate方法恢复被挂起的进程,执行注入的代码。

1

图11 恢复挂起的进程以执行注入代码

3.主功能执行程序

第二层外壳程序完成注入操作之后,程序主要功能才得以开始执行。该部分程序使用UPX进行加壳处理,并在每一个函数执行功能的指令前插入若干个字节的混淆指令,用于躲避静态分析。

1

图12 混淆指令

        除了插入混淆指令之外,程序对于需要使用的敏感API采用加载动态链接库获取地址后调用的动态调用方式,这样做也是为了躲避杀软的静态检测。

1

图13 获取敏感API的地址

        程序进行提权操作,使程序拥有“SeImpernatePrivilege”权限,以保证程序最后通过枚举方式爆破管理员密码成功后可以成功登陆系统。

1

图14 提升权限

        除此之外,程序还尝试获得诸如“SeDebugPrivilege”等其他木马运行时所需的权限,此处不再详细说明。

在结束提权操作后,程序利用COM创建用于存储信息的流,锁有从用户计算机盗取的信息都会存放在流中,这也保证在程序进行盗取信息的过程中不会有任何文件产生,也不会造成任何文件的修改,以此来躲避杀软的动态追踪。

1

图15 创建流用以存放数据

        自此,程序开始进行信息窃取工作,窃取内容如下:

1.获取当前计算机用户名。

1

图16 获取计算机用户名

2.获取计算机中安装的软件。值得一提的是,程序利用了一个巧妙的方法来获取计算机中安装的软件,即通过获取系统卸载面板对应的注册表项中的信息来获得所安装软件的信息。

1

图17 打开卸载面板对应注册表项

1

图18 获得程序相应路径和名称

3.获取系统版本,国家及语言信息,硬件ID等系统基本信息。

1

图19 获取系统版本号

1

图20 判断系统是32位还是64位

1

图21 获取国家和语言信息

1

图22 获取硬件ID

1

图23 获取系统信息

4.通过检索注册表或检索文件路径等方式获得计算机中与FTP Client相关或带有FTP 上传功能的软件的信息,涉及的软件有几十款。

1

图24 利用检索注册表的形式获取信息

1

图25 利用检索路径的方式获取信息

1

图26 被盗取信息的FTP相关软件列表

5.利用COM获取包括IE,Chrome等多款浏览器网页历史记录和自动保存的账号密码,并对这些账号密码进行解密,和所在网址的哈希值一一对应,存入数据流中。由于IE,Chrome等主流浏览器都是以明文或者弱加密方式存储用户账号密码,因此浏览器自动保存的账号密码极其不安全,建议用户莫要允许浏览器保存一些较为重要的账号密码。

1

图27 获取IE访问网址的哈希值

1

图28 根据哈希值检索注册表中获得自动保存的账号密码

1

图29 获得Chrome自动保存的账号密码

1

图30 遭盗取账号密码信息的浏览器列表

6.获取本地存储的证书信息。

1

图31 获取本地证书信息

7.获得存储在本地的用户电子邮箱信息。除了诸如outlook等主流邮箱的信息的盗取,程序还盗取一些小众邮箱的用户信息。

1

图32 获得Windows Mail用户信息

捕获

图33 遭盗取用户信息的电子邮箱软件列表

8.获得本地存储的诸如比特币,点点币等虚拟货币相关的信息。

1

图34 获得本地比特币钱包信息

1

图35 获得本地点点币钱包信息

1

图36 遭盗取信息的虚拟货币钱包软件列表

9.尝试使用不同密码登录计算机,用来进行爆破的密码多为国外用户较常使用的弱口令,一旦爆破成功则保存密码,方便后续对计算机进行入侵。

1

图37 尝试爆破密码

1

图38 用来爆破的弱口令

        完成信息的获取之后,程序将保存在数据流里的用户敏感信息发送到地址“hxxp://jhonsway.com/folder/gate.php”。至此,该盗取用户信息的木马完成了所有的任务,结束进程并删除自身,不留任何痕迹。

1

图39 将信息发送到服务器

0x4 总结

虽然该木马无论从获取信息的内容还是目标都是针对外国用户,但获取信息量之大无不让人骇然,而国内用户也不应该掉以轻心,其中盗取浏览器自动保存的账号密码等功能还是会威胁到国内用户计算机的安全。在远控木马泛滥的如今,用户可能对远控木马有较高的警惕性,但同样也会忽视诸如此类盗取用户信息的木马的存在。但无论如何,提高警惕是最为重要的。在遇到来历不明或者功能不明确的程序时切忌盲目双击运行,如果一定要运行请在确认杀软开启的情况下运行,以确保用户计算机的安全能够得到保障。