披着破解补丁外衣的 Steam 盗号木马分析

in 恶意软件 with 13 comments

0x01 前言

原本以为 2019 的元宵节,可以休息一下,然而...

SmallSO Labs. 于 2019/2/19 下午,捕获到一利用“Tencent QQ 群垃圾邮件”进行自我传播的恶意盗号木马样本。该盗号木马样本,试图伪装成包括但不限于“UU 加速器破解补丁”、“QQ 刷钻器”等,诱导用户运行。

其利用“Tencent QQ 群垃圾邮件”进行自我传播的垃圾邮件样本如下图所示:

QQ 群邮件原文

PS:上图中所示的群邮件发件人,并非该恶意软件的开发者 & 最初传播者。其为已中招且被利用于该恶意软件自我传播的 Tencent QQ 用户。

之后,我们尝试访问 QQ 群邮件中所述链接 http://www.laohe788.com/

访问盗号木马样本传播网站

从上图中,我们可以看到,该恶意软件的传播者试图以木马样本的可执行二进制文件是使用“易语言”编写为由(误报),诱导用户在下载 & 使用前退出安全软件,以免被查杀或在进行“作案”时被发现 & 拦截。

从这封群垃圾邮件的主题中,不难看出恶意软件传播者期望 / 诱导用户下载一款名为“UU 加速器破解补丁”的软件(包)并运行。因此,本文也以这款软件(包)展开分析。

基本信息

我们尝试通过在其恶意软件传播网页下载木马样本,得到名为 UU加速器无限试用5.32.rar.rar 的压缩包文件,解压包后的目录 & 文件结构如下:

ZIP 解包后目录下文件

恶意软件传播者,尝试将包含恶意代码的盗号木马二进制可执行文件命名为“第一步先点我破解”,以提升“作案”成功率,避免被用户所忽略。

在该目录中,涉及到的二进制可执行文件共 2 个,相关信息如下:

文件名 开发商 数字签名 安全性 SHA1
UU-2.10.13.exe NetEase(Hangzhou) Network Co. Ltd. 有效 可信 F6DD6D69D96208AB1E07998061293BAD696359D2
第一步先点我破解.exe 未知 木马 CB5FF3EEF8DE1A3491E4F84AA915B711161C8477

二进制可执行文件 UU-2.10.13.exe,为 NetEase 旗下产品“UU 加速器”的安装包,我们在其中未找到任何恶意代码。

0x02 基础分析

本文将以基础的静态 & 动态调试的方式,针对上述盗号木马样本进行分析。由于类似的样本(生成器)已有从事个人终端安全的互联网安全服务提供商发布过相关较为全量的分析文章,因此本文将不做过多的样本分析阐述。

Tips: 本文不涉及与该盗号木马样本的相关黑产链 & 社会关系分析。

动态行为

检测二进制可执行文件安全性的最快、最佳方式,即为观测其运行时行为。当然,有些恶意软件样本会试图规避行为分析环节(反调试 & 反虚拟机)。例如,针对检测到行为分析环境时,执行一些正常的垃圾操作或直接退出自身进程实例,甚至破坏当前运行环境。

我们将恶意软件压缩包中提供的 第一步先点我破解.exe 放置在行为分析环境中,并将其重命名为 1.exe 后运行。

从上图我们可以看到,二进制可执行文件(盗号木马样本) 1.exe 运行后,在 C:\Users\xiaoy\AppData\Local\Temp\E_N60005\ 目录下,尝试释放其运行时所需的易语言运行时支持库(动态链接库,DLL)文件。

因此,我们可以推断该盗号木马样本,是使用易语言编写 & 编译的。而易语言支持多种编译方式,其中“独立编译”的方式,即为对自身所需的易语言运行时支持库进行打包,最终封装为单个二进制的可执行文件。当使用易语言“独立编译”的二进制可执行文件运行时,即会在当前用户的临时目录下释放自身所需的易语言运行时支持库文件,并将其加载 & 映射进当前进程实例的虚拟地址空间中,以便后续能正常调用其依赖功能。

PS:值得注意的是,并非仅有易语言编译的二进制可执行文件,才可以加载这些易语言运行时支持库(动态链接库,DLL)文件。一些恶意软件可能会利用此行为特征,试图伪装成易语言独立编译的二进制可执行文件。

截至上图所示的最后一条关键行为记录条目,我们发现其行为也仅仅是打开了一些系统设备对象、遍历进程,并未发现较为可疑之处。

静态分析

先前,动态行为分析并未发现恶意行为。因此,我们尝试对该盗号木马样本的二进制可执行文件进行静态分析,试图在其中查找恶意代码。

上图所示,为该盗号木马样本的二进制可执行文件的入口点函数(位于 .text00403861 处)。值得注意的是,使用易语言编写 & 编译的二进制可执行文件,在运行时均会尝试获取当前操作系统的版本信息。此静态特征,也验证了上述我们的推测(该盗号木马样本是使用易语言编写 & 编译的)。

PS:并非仅有易语言编译的二进制可执行文件,才包含该静态特征。其他的二进制可执行文件,也有可能在入口点函数中调用 Win32 API: GetVersion 获取当前操作系统版本信息(例如 C++ 等...)。当然,一些恶意软件可能会利用此行为特征,试图伪装成易语言编写 & 编译的二进制可执行文件。

Tips: 当尝试从一个易语言编写 & 编译的二进制可执行文件中解除外壳(脱壳)时,可以尝试利用此静态特征。当然,对于此静态特征的利用,并非是绝对成功的(视外壳类型而异)。

之后,入口点函数调用 WinMain 函数,进入程序的初始化过程。

若对 Win32 API: Kernel32.dll!CreateFileA 的调用成功,则跳转至 .text00401196 处继续执行,反之则跳转至 .text004014FA 处,弹出报错消息框。此处,我们假定其是成功的。由于初始化代码篇幅较长,且不是本文的重点,因此以下将只对初始化进行简单的分析,省略部分代码片段。

PS:值得注意的是,易语言运行时核心支持库的初始化函数,导出符号名为“GetNewSock”。而其他的易语言运行时扩展支持库(暂且定义 / 称其为“扩展支持库”)的初始化函数,导出符号名为“GetNewInfo”。

如上图所示,执行 call eax 后,将跳转至易语言运行时核心支持库(可执行模块名为 krnln.fnr)领空,并完成易格式的装载后将控制权移交给开发者代码(其函数名为 _启动子程序_启动窗口_...)。

十分抱歉,写到这儿时,有点跑题了。

截至目前,由于完成易格式装载后,程序才从易语言运行时核心支持库领空,将控制权移交给开发者代码。而其中,涉及到动态调用,因此我们不妨直接进行动态调试分析。

动态调试

我们使用动态调试器,加载盗号木马样本(1.exe),并中断于易语言所编译的开发者代码处。

首先,该盗号木马样本(1.exe)试图创建多个窗口:

上述创建窗口的操作完成后,我们可以看到该样本所创建的所有窗口句柄:

而窗口标题中,出现了多个高危关键词。包括但不限于:qq、key、登陆、发消息 等...

之后,该盗号木马样本试图向 Tencent QQ 快速登陆 API 发起 HTTP 请求,以获取当前本地主机上所登陆的 QQ 账号的 SKey。

若成功获得 QQ SKey,则试图向 Tentcent QQ Mail API 发起 HTTP 请求,以获得上一步所得 QQ SKey 所对应 QQ 的群列表。

获取群列表成功后,试图向 Tentcent QQ Mail API 发起 HTTP 请求,以达到向每个群发送群邮件(垃圾邮件,传播自身用途)的目的。

被传播的垃圾群邮件的主题 & 正文内容,是云控的。在执行上述步骤之前,该盗号木马样本会尝试向 http://www.Laohe788.com/zhuti.txthttp://www.Laohe788.com/zhengwen.txt 发起 HTTP/GET 请求,以获得相关内容。前者是垃圾邮件的主题内容;后者是垃圾邮件的正文内容。

在完成上述步骤之后,该盗号木马样本试图在后台监控 Steam 登陆窗口,并显示上述所创建的透明虚拟登陆控件窗口,以试图置顶覆盖 Steam 登陆窗口中的账户、密码和登陆按钮控件处。

通过窗口覆盖,进而让中招者神不知鬼不觉地向盗号木马样本所创建的虚假窗口控件,输入了自己的 Steam 账户凭据。以下,我们尝试随意输入一个无效的 Steam 账户 & 密码,以进一步跟踪其盗号行为。

属性
Steam 账户 test-trojan
Steam 密码 123456

然后,点按由盗号木马样本所创建 & 覆盖的虚假“登陆”按钮。

之后,该盗号木马样本将强制结束当前 Steam 进程实例,并获取当前 Steam 主程序路径后,创建一个全新的 Steam 进程实例,并在命令行处追加 -login 参数,进而使 Steam 自动登陆,以免用户感知。

然后,该盗号木马样本尝试向名为“信易达IP归属地查询”的 API 接口 http://api.guajicun.com/default.aspx 发起 HTTP/GET 请求,以获得当前中招用户终端的公网 IPv4 地址和归属地。

紧接着,该盗号木马样本将所盗取的用户 Steam 账户 & 密码和公网 IPv4 地址,拼接为 HTTP Query 请求 URL 后,向木马后端 Server (IPv4: 103.214.169.225, URI: http://www.laopohehe.top/muma/jianpanjilu.php) 发起 HTTP/POST 请求。

然后,该盗号木马样本尝试连接 & 登陆一台 FTP Server:

属性
主机 IPv4: 103.214.169.225
用户 laopohehe
密码 U2##H##6

将 FTP 会话的当前目录重定向为 /laopohehe/wwwroot/muma/shouquanwenjian/

之后,该盗号木马样本尝试在 Steam 安装目录下,检索 Steam 登陆验证文件 ssfn* 并上传至 FTP Server,以试图突破 Steam 账户安全机制。

数据验证

在上述内容中提到,该盗号木马样本会试图连接 & 登陆远程 FTP Server,而其 User-Name & Password 是硬编码的。

我们使用 FTP 客户端,连接 & 登陆至远程 FTP Server (IPv4: 103.214.169.225):

我们依次进入 wwwroot/muma/ 目录下,可以看到该盗号木马的后端 PHP 脚本:

紧接着,进入 shouquanwenjian/ 目录下,可以看到该盗号木马样本,向后端 FTP Server 所上传的 Steam 登陆验证文件 ssfn*

然后,我们以用于处理来自盗号木马样本,所上传的用户 Steam 账户 & 密码和相关信息的 jianpanjilu.php 脚本文件为例,检查其中所包含的 SQL Database 配置。

从上图中可以看到,其后端 Server 使用 MySQL Database 存储盗号(黑产)数据。并且,与当前 FTP Server 为同一台 Server。经过测试后发现,这台 MySQL Database 并未对公网开放。但既然这些 PHP Script 可以在本机直接访问,我们也可以上传一个 Shell Script 来访问这台 MySQL Database。

从上图可以看到,这台 MySQL Database 包含 2 个 Table,分别是 cunsteam。前者创建于 2019-02-15 22:08:11,最后一次更新于 2019-02-22 19:19:16;后者创建于 2019-02-15 22:11:07,最后一次更新于 2019-02-22 18:35:15

表名 用途
cun 用于记录 QQ SKey 和相关 Steam 账户信息,以便拦截 Steam 相关邮件(包括但不限于密码重置、身份验证类邮件等。)
steam 用于记录 Steam 账户 & 密码和相关信息

PS:根据表 cun 中的 id 字段的值推测,该数据库似乎曾经存储了上万条记录。根据 SmallSO Labs. 的周期监测发现,在 5 天内所堆积的记录量小于 2k 条。因此我们推测,该数据库或表被重建过或包含导入记录。

截至发文前,表 steam 中,共有 1666 条记录。以下随机截取 310:328 范围内的记录,以供参考:

目标 Server 上,所挂载盘符为 C 的驱动器,大致根目录结构如下:

数据清除

本文发布后,我们将尝试对目标 Server 上,所存储的与 Steam 相关的数据进行清除。必要时,我们将尝试重定向对相关 PHP Script 的 HTTP 请求,避免该盗号木马所属黑产团伙进一步盗取用户 Steam 账户。

2019/2/23 更新:
当我们尝试将相关 Steam 账号数据 & 后端 PHP Script 从目标服务器移除时,发生了一件有趣的事儿。

威胁指标(IOC)

在本文中,所涉及的威胁指标(IOC)列表如下:

域名 子域数 关联 IP 数 指向 IP 安全性
www.laohe788.com 1 1 IPv4: 45.203.115.105, 活动的 (×) 检测到木马
www.laopohehe.top 1 1 IPv4: 103.214.169.225, 活动的 (√) 未找到威胁
IPv4 地址 地理位置 开放端口数 关联域名数 关联样本数 服务商 / 类型 服务类型
45.203.115.105 中国 香港 3 8 1 悍铭数据中心 / 虚拟主机 HTTP: 80
103.214.169.225 中国 香港 2 79 1 Rainbowidc / 虚拟专用服务器 (VPS) HTTP: 80, 8080

PS:在上述 IOC 中,IPv4 地址为 103.214.169.225 的 Server 类型,似乎是“虚拟主机”。其 Server 上正在运行虚拟主机管理系统,但未检测到除已被列为 IOC 以外的其他虚拟主机根目录 & 文件。因此,我们暂时将其标记为“虚拟专用服务器 (VPS)”。

文件名 类型 大小 编写语言 复杂度 检测结果 HASH
第一步先点我破解.exe / 1.exe PE32 executable (GUI) Intel 80386, for MS Windows 1924592 byte 易语言 较为初级 (×) 盗号木马 SHA1: CB5FF3EEF8DE1A3491E4F84AA915B711161C8477
姓名 邮箱 电话 地区 隐私保护 置信度
Zhang Yu You 32067986@qq.com +86 157-6458-0494 中国 启用 0.3

PS:在上述 IOC 中,姓名、邮箱和电话的数据来自 WHOIS 数据库,其置信度(0.3)较低,仅供参考。

0x03 下载 & 查询

我们在本文中,仅提供该恶意软件的二进制可执行文件样本下载。若相关安全厂商 & Steam 官方需要获取相关被找到的全量黑产数据,请说明原因(需提供相关资质证明)并邮件至 support@xiaoyy.org 提交工单处理。

值得注意的是,我们不会公开或向任何人提供涉及用户 Steam 账户敏感信息(包括但不限于:密码、验证文件 等...)的数据。

样本下载

您可以在下方找到所需要的病毒样本类型,并进行下载。

样本类型 文件
二进制可执行文件 virus-sample-4ab596dd.zip
后端 PHP Script 需要申请

PS: 任何病毒样本压缩包,均使用密码 smallso-virus-sample 加密。当您对病毒样本压缩包解压缩时,也应使用此密码。为确保这些病毒样本不会被恶意利用,被标记为“需要申请”的病毒样本项,需说明原因并提供相关资质证明后邮件至 support@xiaoyy.org 提交工单处理。

在线检索

您可以前往 Steam 被窃账号公开页面,并检索您的 Steam 账号 ID,以确认您的 Steam 账号是否已被该恶意软件所窃取。请注意,我们无法确保该页面中的 Steam 被窃账号记录是最新的。

上次更新时间:2019/2/23 01:16

0x04 最后...

最后,我们将在下文中总结这类 Steam 盗号木马惯用的“作案”方式并提供安全建议。

作案方式

我们来总结一下这类 Steam 盗号木马的常用“作案”方式:

安全建议

针对近期频发的 Steam 盗号事件,我们提出如下安全建议:

通常情况下,盗号木马传播者正是利用了一些用户喜欢占小便宜、不愿意向服务提供商付费、虚荣心等心理,以诱导用户中招。例如本文所分析的盗号木马样本,也正是利用了用户期望可以免费破解使用 UU 加速器的心里,诱导用户中招,以窃取其 Steam 账号 & 密码。

同时,我们强烈建议您选用正版软件、正规观影渠道并提高上网安全意识,以免让恶意软件有可乘之机。值得注意的是,当您使用软件开发商所提供的商业产品 & 服务时,您应该为您的使用而付费。并且,在您使用一些免费的破解软件 & 服务时,应该考虑其为何免费提供。


若您认为本文有任何描述不当或错误的地方,欢迎在评论中提出质疑并指正。

分享您的想法 (2018/3/7 之前的评论与回复将不再显示) / Cancel Reply
  1. deadfatty

    刚昨天中招……

    回复
  2. 我得nmd

    恐怖如斯,这个软件作者可真是个人才,可惜功夫没用在正道上

    回复
  3. 求大哥放过

    这也是自己贪心

    回复
    1. kk
      @求大哥放过

      这个木马的作者怎样不说,但你们没觉写这篇文章的人是个人才吗? 剖析的这么细,还反过来黑了对方的服务器,这是需要多大的知识储备?PHP 易语言,HTTP协议、个方面软件工具的使用。

      回复
  4. 求大哥放过

    分析的很详细!!!对方是怎么发现被溯源的????

    回复
    1. @求大哥放过

      应该是这边在清除其黑产数据时,对方发现服务不可用时发现的,之后其尝试进行了恢复(应该有备份)。

      回复
  5. kEVIN

    https://zhuanlan.zhihu.com/p/50695585 这篇也不错

    回复
    1. 23333
      @kEVIN

      牛逼啊

      回复
    2. @kEVIN

      是的,这篇更详细地分析了黑产链。

      回复
  6. 乘风破浪

    求大哥放过可还行23333333333(战术后仰~)

    回复
  7. Mr_39

    这篇文章起到了很好的警示作用,还是希望部分网友能摆脱白嫖和伸手的心理,贪小便宜吃大亏讲述的正是这样的道理。

    回复
  8. Kenny

    软件付费必然有其优越的地方,你认为它好才会去用,可是又不愿意付出代价(这不是白嫖吗?),购买正版软件是对于软件的认可,在经济条件允许的情况下可以考虑支持正版,只有这样才能减少盗版的出现同时也是为良好的网络环境出一份力(没有买卖,就没有杀害!可能不是很准确,但是就是这个意思,你懂我意思吧!),本身盗版软件就严重侵害了制作者的利益,如果再没人支持正版,那谁还去做良好优质的软件呢(或许也就某云还在无偿提供优质用户体验了)?

    回复
  9. Kenny

    如果没有一时贪念,就不会给坏人有机可乘

    回复