Locky:席卷整个世界的加密勒索木马

  •   2016-04-26/15:25
  • 2016年2月,互联网遭到一种最新的被称为Locky木马(卡巴斯基实验室产品将其检测为Trojan-Ransom.Win32.Locky)的勒索软件攻击。截止到目前,这种木马仍旧在网络上大肆传播。卡巴斯基实验室产品在全球114个国家都发现了这种木马试图感染用户的行为。

    我们对Locky木马样本进行分析后发现,这种木马是一种全新的勒索软件威胁,是从头开始编写的。那么,Locky木马到底是什么,我们应当如何保护自己,避免遭受其危害呢?

    为了传播这种木马,网络罪犯发送大量包含恶意附件的垃圾邮件信息。

    最初,这些恶意垃圾邮件包含一个DOC文件附件,DOC文件中包含一个宏,能够从远程服务器中下载Locky木马并执行它。

    卡巴斯基实验室产品将这种包含恶意宏的文件检测为Trojan-Downloader.MSWord.Agent 和HEUR:Trojan-Downloader.Script.Generic.

    我们需要指出的是,在较新版本的Microsoft Office中,出于安全考虑,宏自动运行功能被关闭。但是,实践表明,很多用户会手动启用宏,甚至对于来源不明的文件同样如此,这样做很容易导致危害性后果。

    在本文撰写之时,这种恶意垃圾邮件仍然在传播。但是,现在的恶意邮件中不再是使用DOC文件附件,而是使用ZIP压缩包,其中包含一个或多个经过混淆的JavaScript脚本。这种垃圾邮件大多数都使用英语撰写,尽管也发现少量双语版本。

    邮件会提示用户手动启动脚本。

    脚本一旦运行,会从远程服务器下载Locky木马并运行。

    卡巴斯基实验室产品将这种脚本下载器检测为Trojan-Downloader.JS.Agent 以及HEUR:Trojan-Downloader.Script.Generic.

    攻击的地理分布情况

    卡巴斯基安全网络在全球114个国家发现了Locky木马攻击行为。

    受攻击最严重的前十位国家

     

    Country

    国家

    Number of users attacked

    遭受攻击的用户数量

    France

    法国

    469

    Germany

    德国

    340

    India

    印度

    267

    USA

    美国

    224

    Republic of South Africa

    南非

    182

    Italy

    意大利

    171

    Mexico

    墨西哥

    159

    Brazil

    巴西

    156

    China

    中国

    126

    Vietnam

    越南

    107

     

    需要注意的是,这些统计数据仅包括检测到Locky木马的实际案例,不包含早期的恶意垃圾邮件或恶意下载器的检测结果。

    可以看到,这种木马几乎对全球所有地区都进行了攻击。基于网络罪犯在赎金支付页面上所使用的语言列表(详见下面),我们可以猜测网络罪犯首要的攻击国家为哪些。

    木马的原理如何

    Locky木马是一个可执行文件,体积约为100 kb。这种木马是使用C++语言,利用标准模板库(STL)编写,并且在Microsoft Visual Studio中编译的。启动后,木马会将自身拷贝到%TEMP%\svchost.exe,并且从副本文件中删除NTFS数据流的区域标识符(Zone.Identifier)。这样做的目的是确保文件在启动时,Windows不会显示提示信息,否则会显示这个文件是从互联网下载的,可能会具有潜在危险性。之后,木马会从%TEMP%.目录下启动。

    一旦启动,木马会在以下注册表键值中寻找以下内容。

     

    Path

    路径

    Type

    类型

    Value

    键值

    HKEY_CURRENT_USER\Software\Locky\id

    REG_SZ

    Infection ID

    HKEY_CURRENT_USER\Software\Locky\pubkey

    REG_BINARY

    Public RSA key in MSBLOB format

    HKEY_CURRENT_USER\Software\Locky\paytext

    REG_BINARY

    Text shown to the victim

    HKEY_CURRENT_USER\Software\Locky\completed

    REG_DWORD

    Status (whether encryption is completed)

     

     

    如果受感染计算机的注册表键值中已经存在上述内容(这意味着这种木马之前在这台计算机上运行过,但是由于某些原因,没有完全执行完),Locky木马会读取这些数据,继续执行感染过程。

    如果这种木马是第一次在这台计算机上运行,那木马会采取以下行动:

    1. 联系命令和控制服务器,将受感染计算机信息上报到服务器;

    2. 从命令和控制服务器接收一个RSA-2018密匙和一个感染ID,并将其保存在注册表中;

    3. 将受感染操作系统的语言信息发送到服务器,从网络罪犯那里接收向受害者显示的勒索文字内容,并将这些内容保存在注册表;

    4. 在本地磁盘驱动器中查找特定扩展名的文件,并将其全部加密;

    5. 删除隐藏拷贝文件;

    6. 将自己添加到注册表的自启动项目中

    (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run);

    7. 在网络磁盘和没有分配驱动器符号的网络文件资源中查找特定扩展名文件,并对其进行加密;

    8. 向受害者显示网络罪犯的赎金要求;

    9. 终止自身进程,删除自身。

    文件加密

    木马会查找符合列表中列出的扩展名特征的文件。之后,对这些文件进行加密,扩展名列表如下所示。

    对每个符合扩展名列表特征的文件,木马都会生成一个全新的128位密匙,利用AES-128加密算法在CRT模式下对文件内容进行加密。被加密的文件的名称为<16 进制字符形式的ID><随机的16 进制字符>.locky. 之后,在文件末尾添加如下结构:

    在C语言语法中,这种结构可以如下表示:

    C

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    struct file_data

    {

    uint32_t start_marker;          //结构体起始标志= 0x8956FE93

    char id[16];                    //感染ID 

    uint8_t aes_key[256];           //经过RSA-2048加密的AES密匙

    uint32_t name_marker;           //经AES加密后的名字起始标志(= 0xD41BA12A after decryption)

    uint8_t orig_name[520];         //经AES加密后的原始文件名

    WIN32_FILE_ATTRIBUTE_DATA attr; //经AES加密后的原始文件属性

    };

     

    被添加的结构利用C语言语法描述

    赎金要求

    对用户文件进行加密后,木马会向受害者显示以下信息,提出网络罪犯的赎金要求。

    勒索信息中包含网络罪犯的“秘密服务器”地址,上面放置着网络罪犯索要赎金后给受害者的解密程序等相关信息。勒索信息中所有四个链接指向的都是Tor网络中的同一个网站。

    在早期的垃圾邮件传播阶段,赎金要求页面是如下这样的:

    这一页面中,网络罪犯建议受害者以比特币支付赎金,以便找回计算机上被加密的文件。网络罪犯还给出了一些建议,告诉受害者从哪里以及怎样获取加密货币。

    赎金索要页面的内容和设计随着时间的推移在不断变化。现在,这一页面有20种不同的语言版本(可以通过下来菜单选择语言),其界面如下所示:

    如果仔细看一下页面的源代码,可以发现其支持的完整语言列表。很显然,网络罪犯将列表中的国家做为这种勒索软件的主要攻击目标。有趣的是,俄语和其它独联体国家所使用的语言并没有出现在列表中。出于某些原因,网络罪犯好像不喜欢攻击使用这些语言的国家的用户,卡巴斯基安全网络的统计数据同样证明了这一点。

    同命令和控制服务器之间的通讯

    木马的代码中包含一到三个命令和控制服务器的IP地址。此外,代码中还包含一种根据当前日期(日、月和年)生成最新命令和控制服务器的算法(DGA,域名生成算法)。利用这种算法,每天可以生成六个命令和控制服务器地址。展示DGA Locky算法的伪代码如下图所示。

    木马同命令和控制服务器之间的通讯使用HTTP协议。木马以http:///main.php格式向服务器地址发送一个POST请求,传输数据利用简单的对称加密算法进行加密。

    让我们看一下可能出现传输参数类型。

    Notification about infection and request for key. 将感染信息告知服务器,并请求密匙。

    1. id=

    &act=getkey&affid=

    &lang=

    &corp=

    &serv=

    &os=

    &sp=

    &x64=

    根据affid参数判断,Locky木马通过联盟项目或者合作伙伴项目进行传播。

    2. Sending list of encrypted paths. 发送加密路径列表。

    id=

    &act=report&data=

    For each disk drive it has handled, the Trojan sends the C&C a list of all paths to all encrypted files.

    针对每个被加密的磁盘,木马会向命令和控制服务器发送一个包含所有被加密文件路径的列表。

    3. Sending statistics for each handled disk drive. 发送所有被加密的磁盘统计数据。

    id=

    &act=stats&path=

    &encrypted=

    &failed=

    &length=

    需要注意的是,网络罪犯会收集所有感染的详细统计数据。我们之前分析的其它家族的勒索软件在收集统计数据方面,没有如此精细。

    应对措施

    卡巴斯基实验室产品能够在攻击的所有阶段拦截Locky木马:

    · 反垃圾邮件模块能够检测和拦截木马传播者发送的恶意邮件;

    · 电子邮件检测模块和文件反病毒模块能够利用动态和启发式特征分析,检测脚本载器,检测结果为Trojan-Downloader.MSWord.Agent、Trojan-Downloader.JS.Agent和HEUR:Trojan-Downloader.Script.Generic;

    · 文件反病毒模块能够利用特征,将木马的可执行文件检测为Trojan-Ransom.Win32.Locky;

    · 系统监控模块可以将未知的Locky样本检测为PDM:Trojan.Win32.Generic.

    避免感染

    Locky是一种典型的勒索软件木马,其在内部机制和运行原则方面,同其它勒索软件家族没有大的区别。但是,这种勒索软件之所以引起了研究人员的注意,是因为它非常活跃,而且传播范围广泛。根据卡巴斯基安全网络数据,卡巴斯基实验室在全球超过100个国家都拦截到Locky木马攻击。迄今为止,没有其它勒索软件能够一次攻击这么多国家。

    要保护自己免遭勒索软件危害,请遵循以下预防措施:

    · 不要打开来自未知发件人发送的邮件中的附件;

    · 定期对文件进行备份,将备份文件存储在可移动存储媒介或云存储服务空间中,不要保存在本地计算机上;

    · 顶起更新反病毒数据库、操作系统和安装在计算机上的其它软件;

    · 为每个用户创建单独的网络目录,管理共享网络目录的访问权限。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多