勒索软件作者们似乎都喜欢神话生物。我们已经看到嵌合体,现在我们来看看Cerber。它们都是以强大的野兽命名的,都是以专业的方式准备的敏感的州(), Cerber出售给分销商在地下俄罗斯论坛。

此恶意软件通常通过漏洞套件分发(阅读更多这里).

更新:检查点发布了一个解密工具,用于某些情况下的Cerber

分析样品

行为分析

在部署后,它消失并运行它的删除副本(重命名为[一个随机字].exe从隐藏文件夹中创建% APPDATA %.文件夹的名称特定于特定样本–在分析的样本中,它是:{bd674cfa - 429 - 0 - acf a3f2 c895d363964e}

一些观察到的文件名:csrstub.exe.dinotify.exe, ndadmin.exe, setx.exe, rasdial.exe, RelPost.exe, ntkrnlpa.exe

删除的文件有一个编辑过的创建时间戳。

丢弃的应用程序

它还创建了一个链接到丢弃的恶意软件:% APPDATA % /微软/ Windows开始菜单/程序/启动

捷径

通过Process Explorer查看,我们可以看到被删除的示例部署了新的实例(使用它是为了分配加密文件的工作)。

新实例

注册表键值

恶意软件在Windows注册表中进行更改。

两个条目(Component_00,Component_01)删除在打印机\默认值中:

reg_components

组件\u 01在base64中包含一些二进制数据:

COMPONEL1.

持久性的注册表项被添加到不同的地方,例如:

HKEY_USERS ->[当前用户SID]:

  • “软件\\Microsoft\\Windows\\CurrentVersion\\Run”
  • 微软“软件\ \ \ \ Windows \ \ CurrentVersion \ \ RunOnce”
  • “软件\\ Microsoft \\ Windows \\ CurrentVersion \\ Policies \\ Explorer” - >“运行”
  • “软件\\ Microsoft \\命令处理器” - >“autorun”

但是,当加密成功完成时,删除的样本将被删除。

加密过程

Cerber可以在脱机模式下加密文件–这意味着它不需要从CnC服务器获取密钥。已加密的文件将完全重命名,并附加此勒索软件的典型扩展名:.cerber..名称模式:[0-9a-zA-Z_ -] {10} .cerber

Cerber_encrypted

加密内容的熵很高,没有可见的模式square.bmp:left–原件,右侧使用Cerber加密:

enc_square1_bmpenc_lWhlum3IUD

加密文件的内容在每次加密时都不同 - 可能是动态生成键。在文件内容的加密大小增加到大约384字节* - 它可以建议,即RSA加密的AES密钥被附加到文件(*取决于文件,该值可能因各种填充而变化,可能会有所不同)。

在执行之后,它以两种形式显示赎金通知:HTML和TXT。该说明只有英文版本。在下面的例子:

cerber_page

C E R B E R您的文件、照片、数据库等重要文件已被加密!

在勒索信的底部,袭击者用拉丁语写道:“…Quod me non necat me fortiorem facit.”(“那些杀不死我的,只会让我更强大”)。我们只能猜测他们想表达什么——分享他们自己的座右铭,还是安慰袭击的受害者?

它还带有一个VB宏,应该在本地文本到语音仿真器的帮助下说出消息:

Set SAPI = CreateObject("SAPI. spvoice ")说“注意!注意!注意!”对于i = 1到5的SAPI。说“您的文件、照片、数据库和其他重要文件已被加密!”下一个

受害者网站

每个受害者都有一个可通过Tor访问的网页。虽然赎金说明只有英文版本,但Tor网站可以定制为多种语言:

cerber_website1.

这些页面包含对受害者的进一步指示和对管理付款的支持。赎金上涨的时间是从第一次访问这个网站开始计算的。

enc_cerber_website

要解密你的文件,你需要购买特殊的软件- <>。

网络通信

Cerber可以在没有CnC的情况下很好地管理,并在离线状态下完成任务。但是,如果有机会,它可以与CnC进行交流,以便从加密过程中发送统计数据。

首先,它通过查询一个真实的服务获取本地计算机的地理位置信息(JSON格式):http:/ipinfo.io/json

然后,我们可以观察到发送UDP请求到预定义的IP地址范围:

发送

内部

Cerber的样品由一些人包装地穴/这,所以一开始代码是不可读的。即使当我们打开核心(即。9 a7f87c91bf7e602055a5503e80e2313),只有少数字符串是可读的。这是因为作者决定在使用前对字符串进行加密和解密。例如:

解密字符串解密函数接受以下参数:

解密字符串(字符*input_buffer,德沃德input_lenght,德沃德关键BOOL,is_unicode

少数几个没有加密的字符串之一是针对反恶意软件供应商的检查(其中之一是Malwarebytes)。必威平台APP供应商列表是JSON格式的——这种格式已经被Cerber广泛使用。

反_AV.

另一个有趣的未加密字符串是一个日志,显示来自加密的统计信息(如果在调试模式下部署恶意软件,则使用的功能):

stat_log

配置文件

Cerber有一个加密资源,存储为RC数据.它由一个专用函数解密:

解密_Resource.

解密后,它变成了JSON格式的配置(您可以完整地看到它)这里):

decrypted_res

配置有丰富的选项。包含即:

经销商可以定制很多东西在配置文件的帮助下。更改恶意软件攻击的扩展,赎金说明甚至加密文件的完整外观 - 可以使其如新产品。这种灵活性让我想知道同一个包裹是否没有在不同的广告系列中分发 - 而不是作为Cerber,而是在某些其他名称下。

分析样品的分销商决定排除几个国家形成攻击(亚美尼亚、阿塞拜疆、白俄罗斯、格鲁吉亚、吉尔吉斯斯坦、哈萨克斯坦、摩尔多瓦、俄罗斯、土库曼斯坦、塔吉克斯坦、乌克兰、乌兹别克斯坦)。它还将保留默认的Windows目录,浏览器比特币钱包

加载的关键

这个示例附带了一个公共RSA密钥在配置文件中发货(上一节已描述)。

以下 - 从Base64解密公钥:

base64_pkey
使用函数导入键cryptimportpublickeyinfo.

import_pkey.

配置提到:rsa_key_size.576-但结果是一个2048位的密钥(BLOB大小- 276字节)

RSA_KEY.

装置

丢弃样本的文件名是以一种非常有趣的方式创建的。它不是完全随机的,而是基于系统中存在的某个文件的名称,该文件在系统中使用随机过滤器进行搜索(格式:“[random char]*[random char].exe”,即“p*h.exe”):

find_name_candidate

发现的文件与一些内置黑名单进行比较。当它通过检查时,它就会被选为丢失的恶意软件副本的新名称。

为了防止用户通过创建时间戳发现恶意文件,将其更改为的时间戳kernel32.dll存在于本地系统上。

成功安装后,初始的恶意软件样本将终止并部署丢失的副本。

create_process

UAC旁路

Cerber使用技巧绕过窗户用户帐户控制(UAC)并以更高的权限部署自己。它可以通过以下步骤实现:

  1. 在C:\ Windows \ System32中搜索可执行文件,可以自动提升它的权限。
  2. 在它的导入表中搜索一个可以被劫持的DLL
  3. 将DLL复制到%TEMP%文件夹并打补丁——在新的部分和补丁入口点添加代码,以便在那里重定向执行。它将被用于以提升权限运行cerber样本。它使用:WinExec(“[cerber_path]eval 2524“,SW_SHOWNORMAL)
  4. 将代码注入explorer.exe–它负责执行UAC旁路。在C:\Windows\system32中创建一个新文件夹,并将两个文件(EXE和修补的DLL)以原始名称复制到该文件夹中,然后它部署EXE,导致DLL加载并执行恶意代码。
  5. 当UAC旁路成功执行时,通过设置属性向原始cerber样本发送信号cerber_uac_状态加入Shell_TrayWnd。然后,原始示例删除已删除的文件并退出。否则,它对不同的EXE + DLL尝试相同的技巧。

看看下面它的实际效果:

首先,它搜索可用于提升特权的应用程序。检查是基于应用程序清单中的字段:

真正< autoElevate > < / autoElevate > < requestedExecutionLevel水平= " requireAdministrator " / >

autoelevete_候选者

其中的进口DLL,它搜索适合被劫持的候选人。将此DLL复制到%温度%文件夹

copy_to_temp

然后,它创建一个暂停的进程资源管理器,在它的上下文中分配内存并注入自己的代码。下面给出细节。

资源管理器的注入可通过以下几个步骤执行。第一—恶意软件是将内存从当前进程的上下文中复制到上下文中资源管理器.CITBER样本的当前图像被复制到0x70000以浏览器分配的内存中。同样,包含填充数据的页面在Explorer中以偏移0x91000复制。

探索者1

为了在explorer.exe恢复时运行注入的代码,恶意软件会对运营商的入口点进行修补:

探索者2

现在,Explorer的执行从调用注入代码开始。它是Cerber样本的一个函数——在RVA 0x55E1,用一个参数0x91000调用——指向包含各种动态加载数据的内存页的指针,比如函数的处理程序,要使用的文件的路径,等等。
从注入资源管理器的这段代码中,为UAC旁路修补的DLL将以原始名称复制,同时复制相应的EXEShellExecuteExW),与此同时,补丁的DLL也会运行。

uac_pair

d3d9.dll.用于以提升的权限运行Cerber示例。DLL的入口点通过跳转到新节进行修补。

patched_EP

新部分包含执行Cerber示例的代码:

added_code
通过设置名为“的属性,通过设置名为”cerber_uac_状态"在班级找到的窗口"Shell_TrayWnd“。初始Cerber样本等待此状态更改。如果超时已过,但未更改,则会使用另一对(EXE+DLL)重新尝试UAC旁路。否则,它会清理环境并终止。感染从提升的样本内部进行。
inject_into_explorer

如果UAC级别设置为默认(或更低),Cicber可以静默地绕过它。但是,如果它设置为最高,则弹出以下警报:

uac_notification

在用户单击“是”之前,它会一直重新出现:

结论

Cerber是一个非常强大的勒索软件写的很注重细节。这一分析只突出了一些元素。它有丰富的定制选项和各种技巧,使分析更加困难。虽然这个产品最近才出现,但它的作者肯定不是恶意软件开发领域的新成员。我们可以期待它会越来越受欢迎,并可能在未来带来一些新的技巧。

附录