介绍

Zeppelin是一款基于Delphi的“恶意软件即服务”(RaaS),其前身为勒索软件Vega(VegaLocker),两者在代码和功能上多有重合,但Zeppelin所涉及的攻击场景则与Vega明显不同。

Vega样本于2019年初首次发现,曾在俄罗斯在线广告网站Yandex.Direct上与其他金融恶意软件捆绑分发,主要针对俄语用户,目标广泛没有强针对性。在这一年中,Vega也出现了几个新变种,每个版本都有不同的名称(Jamper,Storm,Buran等),其中一些有在地下论坛上出售。

Zeppelin是Vega的最新变种,首批观测到的Zeppelin样本编译时间戳在2019年11月6日之后,其目标是欧洲和美国的少数科技及医疗公司。所有Zeppelin样本在检测到机器为俄罗斯或其他前苏联国家/地区后都会退出运行。

Zeppelin具有高度适配性,可以部署为EXE、DLL,或封装在PowerShell加载程序中。样本托管在水坑攻击过的网站,PowerShell则托管在Pastebin上。有一些攻击是通过mssp(安全管理服务提供商)进行的,这与最近另一场Sodinokibi勒索软件的攻击事件具有很高的相似性。

攻击目标从俄语国家到西方国家的重大转变,以及受害者选择和恶意软件部署方法的差异,表明这种新的Vega勒索软件变种最终落到了不同黑客的手中,并被他们重新开发加以利用。

混淆

Zeppelin二进制文件中的所有敏感字符串都使用一个不同的伪随机32字节RC4密钥进行混淆,密钥在每个加密字符串之前:

图1:混淆后的字符串

字符串混淆是一种粗糙的多态性机制,因为每个生成样本都使用不同的RC4密钥。此举是帮助Zeppelin逃避检测并使分析复杂化。

尽管大多数样本都没有加壳,但研究人员也发现了具有额外多层混淆处理的Zeppelin可执行文件,混淆有三层:

使用一组随机API(通常与良性软件相关联)和卡住循环来改变代码大小,以欺骗启发式算法并超出沙箱范围。

第一阶段Shellcode,使用从硬编码DWORD值派生的静态1字节密钥进行简单的XOR编码。解码有效负载二进制文件和加载程序时,shellcode再使用1字节密钥进行XOR操作,但密钥在每一轮解密时都会发生变化。

第二阶段shellcode将有效负载二进制文件注入内存并执行:

图2:第一阶段混淆中的卡住循环示例

图3:解码有效负载

配置

勒索软件配置功能如下:

ID 名称 描述
1 (none) 作为DLL运行时:对所有驱动器和共享进行加密(与EXE相对); 与“Startup”选项不兼容。
2 IP Logger 使用IPLogger服务(iplogger [.] ru或iplogger [.] org)跟踪受害者的IP地址和国家/地区代码。
3 Startup 将自身复制到另一个位置,设置持久性,并使用“ -start”参数启动。
4 Delete backups 执行指定的命令; 用于停止某些服务,禁用恢复,删除备份和卷影副本等。
5 Task-killer 杀死指定的进程。
6 Auto-unlock busy files 尝试解锁在加密过程中似乎已锁定的文件。
7 Melt 退出之前,将自删除线程注入notepad.exe(删除可执行文件以及所有添加的注册表值)。使用0xDEADFACE代码退出。
8 UAC prompt 重新运行时,尝试提权(仅在设置为“Startup”时使用)。

上表这些功能选项,连同RSA公钥及其他可配置字符串,可在生成勒索软件二进制代码期间从Zeppelin builder的用户界面进行设置:

图4:配置示例

所有可配置的数据都存储在Zeppelin二进制文件的.itext节中,包括:

· 硬编码的公钥(模数和指数分开)

· GUID(每个样本有所不同)

· IPLogger签入的URL地址

· 排除的文件夹列表

· 排除文件列表

· 排除的扩展名列表

· 杀死进程列表

· 要运行的命令列表

· 自述文件名

· 自述文件内容

执行

勒索软件二进制文件可以使用以下参数执行:

参数 描述
<path to an existing file> 加密一个文件
<path to an existing directory> 加密指定目录中的文件
-start 跳过安装并执行恶意代码的第二阶段(即文件加密)
-agent <int> 作为代理运行; 在HKCU / Software / Zeppelin / Paths密钥下的值中指定的路径中加密文件,其中<int>是值的名称(连续数字以0开头)
(no parameters) 默认加密例程

安装

初始执行时(不带参数),恶意软件将检查机器国家/地区代码,以确保其不在以下国家运行:

· 俄罗斯联邦

· 乌克兰

· 白俄罗斯

· 哈萨克斯坦

根据构建过程中设置的选项,它将检查机器的默认语言和默认的国家调用代码,或者使用在线服务获取受害者的外部IP地址:

图5:检查受害者的国家

恶意软件在%TEMP%目录中创建一个空文件,扩展名为“ .zeppelin”,其名称为恶意软件路径的CRC32哈希。

如果设置了“Startup”选项,恶意软件将使用从活动进程列表中随机选择的名称将自身复制到%APPDATA%\Roaming\Microsoft\Windows目录中(忽略使用“install”或“setup”命令行参数)。

然后,使用随机生成的32字节RC4密钥对选定的名称进行加密,并对其进行base64编码(连同前缀密钥),将其保存到HKCU\Software\Zeppelin下的注册表值“ Process”。

通过注册表中的HKCU\Software\Microsoft\Windows\CurrentVersion\Run项设置持久性后,勒索软件将使用“ -start”参数从新路径重新执行自身。如果设置了“ UAC prompt”选项,它将尝试提权运行。

如果设置了“Melt”选项,则将自删除线程注入到新生成的notepad.exe进程中,并且该恶意软件将以代码0xDEADFACE退出。否则,它将仅以代码0退出。

网络通讯

像其前身一样,Zeppelin允许攻击者通过IPLogger Web服务跟踪受害者的IP地址和位置。如果设置了相关选项,则它将尝试将GET请求发送到硬编码URL(由IPLogger URL Shortener服务生成)进行签入。User-Agent字段id设置为“ZEPPELIN”,而referrer字段包含唯一受害者id,是在密钥生成阶段创建的:

图6:带有自定义标头的GET请求

为了防止受害者多次签入,HKCU\Software\Zeppelin下编写了一个“Knock”值0x29A(666),恶意软件通过检查该值是否存在来判断是否需要联系URL。

攻击者可以使用IPLogger Web服务查看受害者列表,并使用URL短链接将用户重定向到其他恶意内容。

密钥生成

与先前版本的Buran相比,加密算法没有实质性改变。它采用了对称文件加密和随机生成每个文件密钥的标准组合(CBC模式下为AES-256),以及用于保护会话密钥的非对称加密(使用自定义RSA实现,可能是内部开发的)。

首先,恶意软件将为受害者生成一对512位RSA密钥,并将它们以以下格式保存到内存中:

<N>{privatekey_modulus_hexstr}</N><D>{privatekey_exponent_hexstr}</D>
<N>{publickey_modulus_hexstr}</N><E>{publickey_exponent_hexstr}</E>

图7:加密密钥示例:攻击者的公共密钥(蓝色),生成的受害者的公共密钥(绿色)和私钥(红色),其加密版本和base64编码版本(黄色)

密码对中的私钥将使用攻击者的2048位RSA公钥进行加密,RSA硬编码在二进制文件的.itext部分中。然后使用随机生成的32字节RC4密钥(使用base64编码,连同前置的RC4密钥)进一步混淆受害人的RSA加密私钥及其对应的公共密钥,并将其保存到HKCU \ Software \ Zeppelin \ Keys下的注册表中。分别作为“Public Key”和“Encrypted Private Key”:

图8:受害者的私钥加密

然后使用受害者的RSA公钥模数的前11个字节创建唯一的受害者ID,并将第三个和第七个字符替换为破折号“-”。上面显示的密钥的示例ID为389-04C-3D7。

文件加密

Zeppelin将枚举所有驱动器和网络共享上的文件,以建立目录列表。根据二进制类型,它将使用WNetEnumResource API(如果以EXE形式运行)或以下命令(如果以DLL形式运行):

chcp 1250 && net view

对于排除文件/扩展名列表不匹配的每个文件,恶意软件将执行以下操作:

1. 将原始文件属性和访问时间保存到内存,并设置FILE_ATTRIBUTE_ARCHIVE

2. 在纯文本文件前添加“ 666”字符串

3. 生成随机的32字节AES对称密钥和16字节的初始化矢量(IV)

4. 在CBC模式下使用AES-256加密文件(仅前0x10000字节,其余文件内容保持未加密状态)

5. 使用受害者的公共RSA密钥对AES密钥进行加密,然后使用随机生成的32字节RC4密钥进一步对其进行混淆:

图9:AES密钥加密

6. 在加密文件前加上硬编码标记字符串,以及8字节长度的加密数据和8字节长度的原始数据(包括先前添加的3字节“ 666”字符串):

图10:加密的文件头;标记字符串(绿色)和文件大小(红色),后跟加密内容

7. 在加密文件内容之后附加以下信息:

长度 描述
4 下一个字段的长度
0x28 (40) 32字节RC4密钥,后跟8个加密的零字节
4 下一个字段的长度
0xBB (187) RC4混淆,RSA加密的AES密钥
4 下一个字段的长度
0x4F4 (1268) 受害者的私钥与攻击者的公钥不对称加密
4 要加密的数据的大小
8 原始文件大小
4 所有附加数据的大小

图11:加密的文件页脚

8. 重命名文件,附加受害者的唯一ID作为扩展名

9. 将文件属性和访问时间设置回原来的值

10. 继续下一个文件

如果Zeppelin作为可执行文件运行,则勒索软件首先将对当前逻辑驱动器上的文件进行加密,并使用“ -agent”参数生成许多后续进程。这些进程负责加密其他驱动器和网络共享上的文件。所有加密路径都存储在HKCU \ Software \ Zeppelin \ Paths注册表项下。

有趣的是,某些样本将仅加密前0x1000字节(4KB),而不是0x10000(65KB),这可能是个意外错误,或者是攻击者故意为之,加快加密过程的同时使大多数文件无法使用。

加密所有文件后,Zeppelin将植入赎金通知文件并将其显示在记事本中。文件名和内容可由攻击者配置。研究人员发现了几种不同的版本,从简短的通用消息到量身定制的都有。所有消息均指示受害者通过提供的电子邮件地址与攻击者联系。攻击者使用了几个与勒索软件有关联的安全电子邮件提供商,例如firemail [.] cc,Protonmail和Tutanota。此外,也有赎金票据提供了与.onion域相关联的电子邮件地址,该电子邮件地址只能通过Tor进行访问。

结论

勒索软件曾经一度衰落,但由于威胁行为者的创新努力,现在又重新崛起。Zeppelin背后的行动者通过对IT和医疗部门的目标进行高调打击,也在说明当前勒索软件的流行趋势是从个人转向组织。此外。勒索软件攻击的不断发生也在提醒我们,有效的网络安全解决方案应该是主动的、预测的、自适应的和半自治的。

BlackTech间谍组织是一支针对东亚地区进行网络攻击的犯罪团伙,其主要目的是窃取机密信息。自2012年以来,BlackTech已经针对多个国家的政府机构和私营机构进行了大量攻击,他们发起的行动中,有三类最为出名,代号分别为Waterbear、PLEAD和Shrouded Crossbow。本文将主要介绍Waterbear的新攻击动向。

“Waterbear”的命名源自攻击行动中使用的恶意软件功能。Waterbear采用了模块化的处理方式,加载模块执行后将会连接到C&C服务器下载主后门程序,随后将后门程序加载到内存中。之后发现的版本利用服务器应用程序作为加载模块,主后门程序通过加密文件加载,或者从C&C服务器下载。然而在其最近的一项活动中,趋势科技发现了一个新的Waterbear有效负载,能通过API钩子技术对特定的安全产品隐藏其行为。这些安全供应商都是基于亚太地区,与BlackTech的目标国家/地区一致。

挂钩特定的API可能意味着攻击者熟悉这些安全产品,知道如何在其客户端的端点和网络上收集信息,而且由于API钩子shellcode采用了一种通用的方法,类似的代码片段将来可能会用于针对其他安全产品,从而使Waterbear活动更难检测。

近看Waterbear

新Waterbear样本采用了模块化方法,利用DLL加载器解密并执行有效负载(RC4加密),有效负载通常是第一阶段的后门,后门用于从外部接收并加载其他可执行文件。

第一阶段的后门可以分为两种:第一,用于连接到命令和控制(C&C)服务器;第二,用于侦听特定端口。有时,加密后的有效负载的硬编码文件路径不在Windows本机目录下(比如在安全产品或第三方库的目录下),这可能表明攻击者已经事先知晓了目标环境。攻击者也有可能使用Waterbear作为辅助负载,以在获得对目标系统的一定级别的访问权限后帮助维持存在。证据表明,Waterbear经常使用内部IP作为其自己的C&C服务器(例如,样本b9f3a3b9452a396c3ba0ce4a644dd2b7f494905e820e7b1c6dca2fdcce069361使用内部IP地址10[.]0[.]0[.]0[.]]211作为其C&C服务器)。

典型Waterbear感染链

图1.典型的Waterbear感染链

如图1所示,Waterbear感染从恶意DLL加载程序开始,DLL加载程序有两种触发技术:一种是修改合法的服务器应用程序以导入和加载DLL加载器,第二种技术是执行虚拟DLL劫持和DLL端加载。有些Windows服务会在启动过程中尝试使用硬编码的DLL名称或路径加载外部DLL,但如果DLL是旧版DLL(即Windows不再支持的DLL)或第三方DLL(即不属于原始Windows系统DLL的第三方DLL),则攻击者可以将其恶意DLL授予DLL硬编码的DLL名称,并在DLL加载过程中将其放置在搜索到的目录之一下。恶意DLL加载后,它将获得与加载它的服务相同的权限级别。

在近期Waterbear活动中,我们发现DLL加载程序加载两个有效负载,且有效负载执行了其他Waterbear活动中从未见过的功能。第一个有效负载将代码注入特定的安全产品中隐藏后门,第二个有效负载是典型的Waterbear第一阶段后门,我们将根据在分析过程中观察到的特定情况对其进行剖析。

Waterbear的第一阶段后门

我们在%PATH%环境变量的其中一个文件夹中看到了名为“ ociw32.dll”的Waterbear加载器,DLL文件的名称在“ mtxoci.dll”中进行了硬编码,“ mtxoci.dll”由MSDTC服务在启动期间加载。 “ mtxoci.dll”首先尝试查询注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI” ,查看值“ OracleOciLib”是否存在。如果存在,则将检索其中的数据并加载相应的库;如果该值不存在,则“ mtxoci.dll”会尝试加载“ ociw32.dll”。在调查过程中,我们注意到从受害者的计算机中值“ OracleOciLib”被删除了,如图2所示,恶意加载程序“ ociw32.dll”在主机上加载并成功执行。

图2.值“ OracleOciLib”在受害者主机上删除

注意:左图显示了普通计算机上DLL的正常样式,右图展示了受害者计算机上的DLL的显示方式。因为没有“ OracleOciLib”值,所以它将加载硬编码的DLL“ ociw32.dll”,从而触发恶意的Waterbear DLL加载器。

Waterbear DLL加载程序执行后,它将搜索硬编码路径,并尝试解密相应的有效负载,有效负载是一段加密的Shellcode。解密算法为RC4,它采用硬编码路径来形成解密密钥。如果解密后的有效负载有效,它将选择一个特定的现有Windows服务——LanmanServer(由svchost.exe运行),并将解密后的shellcode注入到合法服务中。在大多数情况下,有效负载是第一阶段的后门,它的主要目的是检索第二阶段的有效负载——通过连接到C&C服务器或打开一个端口来等待外部连接和加载传入的可执行文件。

第一阶段后门的配置

Waterbear的第一阶段后门配置包含正确执行和与外部实体通信所需的信息。

· 偏移量0x00,大小0x10:函数的加密/解密密钥

· 偏移量0x10,大小0x04:0x0BB8(保留)

· 偏移量0x14,大小0x10:版本(例如0.13、0.14、0.16等)

· 偏移量0x24,大小0x10:互斥或保留字节

· 偏移量0x34,大小0x78:C&C服务器地址,由密钥0xFF进行XOR加密。如果后门打算在特定端口上侦听,则此部分将填充0x00。

· 偏移量0xAC,大小0x02:端口

· 偏移量0xAE,大小0x5A:保留字节

· 表:有效负载的函数地址表。该块最初以0x00填充,并将在运行时传播。

· 表:函数大小

· 表:API地址表。该块最初用0x00填充,并且在运行时将用已加载的API地址填充。

· 表:用于动态API加载的API哈希

· DLL名称和要加载的API数量的列表

图3.第一阶段后门的配置结构

Shellcode有效负载的反内存扫描

为了避免在运行时进行内存扫描,有效负载会在执行实际的恶意例程之前对所有函数块进行加密,每当需要使用函数时,再解密相应函数执行,之后再次对函数加密,如图4所示。如果在执行过程中不使用某个函数,它可以通过另一个混淆函数将其打乱,如图6所示。混淆函数用随机值混淆字节,并使输入块不可恢复。这样做的目的是进一步避免被安全解决方案检测到。

图4. Shellcode执行例程中的解密-执行-加密流程

图5.用于函数块加密和解密的函数

图6.有效负载的混淆函数

相同的Waterbear,不同的故事

此次Waterbear活动与我们之前见过的大多数都不同。这次DLL加载器加载了两个有效负载,第一个有效负载将代码注入特定的安全产品中进行API钩子,隐藏后门,绕过检测;第二个有效负载则是典型的Waterbear第一阶段后门。

Figure 7. An unusual Waterbear infection chain

图7.非常规的Waterbear感染链

两种有效负载均被加密并存储在受害者的磁盘上,并注入到同一服务中,在本例中为LanmanServer。我们观察到加载器试图从文件中读取有效载荷,对其解密,并在以下条件下执行线程注入:

如果在磁盘上找不到第一个有效负载,则将终止加载程序而不会加载第二个有效负载。

如果第一个有效负载被成功解密并注入到服务中,那么不管第一个线程发生了什么,第二个有效负载也将被加载并注入。

在第一个注入的线程中,如果找不到来自安全产品的必要可执行文件,则该线程将被终止,而无需执行其他恶意例程。请注意,只有线程终止,但服务仍将运行。

无论是否执行了API钩子,第二个后门在成功加载后仍将执行。

利用API钩子逃避检测

为了隐藏第一阶段后门(即第二个有效负载),第一个有效负载使用API钩子技术来避免被特定的安全产品检测到。它挂钩了两个不同的API——“ ZwOpenProcess”和“ GetExtendedTcpTable”来隐藏特定进程。有效负载只修改安全产品进程内存中的函数,因此原始系统DLL文件保持不变。

有效负载由两阶段的Shellcode组成:第一阶段的shellcode使用硬编码名称查找特定安全产品的进程,并将第二阶段的shellcode注入进程。然后,第二阶段的shellcode在目标进程内部执行API钩子。

隐藏进程标识符(PID)

要隐藏的进程标识符将存储在共享内存“Global\<computer_name>.” 中。如果共享内存不存在,它将采用第一阶段Shellcode嵌入的PID。在本例中,恶意代码的目的是对安全产品隐藏Waterbear的后门活动。因此,第一阶段的shellcode采用Windows服务的PID(第一阶段的shellcode和随后的后门都注入该服务)隐藏目标进程,并将PID嵌入第二阶段的shellcode。

图8.将当前PID注入第二阶段shellcode的代码

在ntdll.dll中挂钩“ ZwOpenProcess”

挂钩“ ZwOpenProcess”的目的是为了防止安全产品访问特定的进程。每当调用“ ZwOpenProcess”时,注入的代码将首先检查打开的进程是否命中了受保护进程ID列表中的任何PID。如果是,它将修改进程ID,该进程ID应在另一个Windows服务PID上打开。

首先,它构建钩子函数并将函数写入“ ntdll.dll”的末尾。该函数包括两部分,如图9所示:

1.PID检查程序。它递归检查由“ ZwOpenProcess”打开的PID是否在受保护进程ID的列表中。如果是,它将用另一个由Waterbear加载程序在开始时写入的Windows服务PID替换要打开的PID。

2.在执行PID检查程序之后,它将执行原始的“ ZwOpenProcess”并返回结果。

图9.“ ZwOpenProcess”的函数钩子,用于检查和修改函数的输出

其次,它在原始“ ZwOpenProcess”地址的开头写入“ push <ADDRESS> ret”。因此,当调用“ ZwOpenProcess”时,将执行“ ZwOpenProcess”的修改版本。

图10.修改后的“ ZwOpenProcess”

仅当主机上存在“%temp%\KERNELBASE.dll”时,才会触发挂钩到“ ZwOpenProcess”的API。这种检查可能是根据它所针对的安全产品的性质设计的。

iphlpapi.dll中的“ GetExtendedTcpTable”和“ GetRTTAndHopCount”挂钩

API钩子的第二部分位于“ GetExtendedTcpTable”上。“ GetExtendedTcpTable”用于检索包含该应用程序可用的TCP端点列表的表,该表经常用于某些与网络相关的命令,例如netstat。挂钩的目的是删除某些PID的TCP端点记录。为了实现这一点,它修改了两个函数:“ GetExtendedTcpTable”和“ GetRTTAndHopCount”。第二个函数“ GetRTTAndHopCount”充当放置已插入的钩子代码的位置。

“ GetExtendedTcpTable”仅在函数开头写入对“ GetRTTAndHopCount”的跳转。 API“ GetExtendedTcpTable”的代码的仅前5个字节被更改,如图11所示。

 

图11.“ GetExtendedTcpTable”中仅更改了5个字节

该例程的其余部分全部放在“ GetRTTAndHopCount”中。在代码的第一部分中,它将[“ GetRTTAndHopCount” + 0x3E]作为返回地址,然后执行原始“ GetExtendedTcpTable”函数的前四条指令(已由图11中的跳转指令代替)。之后,它跳转到“ GetExtendedTcpTable”以正常执行该函数并捕获其返回值。代码如图12所示。

图12.在“ GetRTTAndHopCount”中注入的代码的第一部分,执行“ GetExtendedTcpTable”并返回到下一条指令

在执行“ GetExtendedTcpTable”并且过程返回到代码的第二部分之后,它迭代地检查返回的Tcp表中的每个记录。如果任何记录包含要隐藏的PID Waterbear,它将删除相应的记录,修改表中的记录编号,并继续检查后续记录。最后,它返回修改后的表。

图13.在“ GetRTTAndHopCount”中注入的代码的第一部分,执行“ GetExtendedTcpTable”并返回到下一条指令

使用API钩子的方法不是直接禁用这两个函数,而是使恶意行为检测变得更加困难,因为这两个函数仍然可以正常工作并返回正常结果。虽然受影响的进程是在第一阶段的Shellcode中指定的,但API钩子逻辑非常通用,可以使用同一段Shellcode来挂钩其他安全产品。

结论

这是我们第一次看到Waterbear试图隐藏其后门活动。通过产品的硬编码名称,我们可以推断出攻击者了解受害者的环境以及他们使用的安全产品。攻击者可能还知道这些安全产品是如何在客户端的端点和网络上收集信息的,进而知道要挂接哪些API。由于API钩子shellcode采用的是通用方法,因此将来可能会使用类似的代码段来针对其他安全产品,使得Waterbear活动更难检测到。

当今,人们对安全措施必要性的整体认识正在增强,因此也反向促使着网络犯罪分子不断精进他们的攻击目标。回顾过去三年,在所有被恶意软件攻击的用户中,勒索软件的占比似乎呈现出下降趋势——2017年上半年的比例为3.53%,2019年上半年比例为2.94%。虽然这一变化看似不大,但现实中勒索软件往往能够造成严重的损害,我们也不应掉以轻心。

image.png

图1.受勒索软件攻击的用户在被恶意软件攻击的所有用户中占比

卡巴斯基观察到,每半年间大约有90万至120万的用户受到勒索软件攻击。

image.png

图2.2017年上半年至2019年上半年受到勒索软件攻击的用户数量

各类形形色色的勒索软件其原理都是共通的:将计算机上的文件转换为加密数据,并要求受害者赎金换取文件解密。加密文件的密钥通常由攻击者创建,没有密钥,就无法操作感染设备。勒索软件既有可能由其创作者分发,也有可能交给“外包”团队来负责。

卡巴斯基观察到,2019年,这一类威胁的最新的攻击趋势是市政机构。今年最出名的勒索软件攻击事件恐怕要归“巴尔的摩勒索攻击事件”莫属,该市于5月份遭受了一场大规模的勒索行为,攻击者破坏了多个市政系统,并要求政府支付11.4万美元的赎金。

据卡巴斯基统计数据显示,2019年至少有174个市政组织受到过勒索软件攻击,与一年前报告的数量相比增加了大约60%。要求的赎金范围在5,000美元至5,000,000美元之间,平均每例1,032,460美元,数字差异很大,往往是由攻击目标的大小和影响范围来决定。

但现实中,攻击造成的实际损失通常不等同于攻击者要求的赎金金额。首先,市政机构和网络供应商对这类事件一般都预先买有保险,这可以算是一种成本补偿;其次,及时的事件响应一般也是可以消除此类攻击;最后,并非所有城市都决定向攻击者服软,以巴尔的摩为例,政府宁愿花费1800万美元来恢复IT基础架构,也不愿向犯罪分子妥协,支付这11.4万美元,他们认为支付赎金只是一种短期的解决方案,会鼓励犯罪分子继续作恶。要知道,一旦城市的IT基础架构遭到破坏,需要进行严格的审查才能预防类似事件再次发生,此外还需要实施强大的安全解决方案,这也会带来额外的成本。

虽然勒索软件的攻击场景各不相同,比如可以通过不受保护的远程访问来实施攻击,但就市政机构而言,攻击途径一般是有两个:社交媒体和软件漏洞。卡巴斯基观察到,每季度在用户设备上最经常被阻止的勒索软件是WannaCry——哪怕微软早就发布了相应补丁,但WannaCry仍然影响了全球数十万台设备,且仍在持续发展壮大中。2019年第三季度数据表明,在WannaCry的感染高峰过去了两年半之后,仍有五分之一的勒索案例中出现WannaCry的身影。

还有一种情况是,攻击者利用人为因素——这可以说是当前最被低估的攻击手段,因为对员工的安全普及远未达到应有水平。恶意软件安装程序和网络钓鱼的垃圾邮件能轻易突破员工这一关,有些可能还是管理公司的帐户财务的关键角色,许多行业由于这类员工而损失了巨大损失。

在2019年遭受攻击的市政组织中,最被针对的无疑是教育组织,约占所有攻击的61%,有105多个学区受损,530所学校成为目标;市政厅和市政中心约占案件总数的29%;其次是医院,占所有攻击的7%;还有2%是市政公用事业服务机构或其承包商。

接下来我们看看在针对市政机构的攻击中一直活跃使用的恶意软件类型。

恶意软件类型

Ryuk

虽然并非每个组织都公开了攻击相关细节,但Ryuk勒索软件(检测名称:Trojan-Ransom.Win32.Hermez)确是常出现的一类。Ryuk首次出现在2018年下半年,以攻击大型组织、政府和市政网络而闻名,在整个2019年Ryuk一直在积极进化和传播。

· 地理分布

image.png

前十名国家:

image.png

*全球范围内,各个国家/地区受到Ryuk攻击的用户比例

可以看到,Ryuk的影响范围遍及全球大多数国家。根据卡巴斯基的统计数据,德国占比第一(8.6%),其次是中国(8%)和阿尔及利亚(6.8%)。

· 分发

Ryuk采用了多阶段传播机制:初始阶段通过Emotet bot(检测名称:Trojan-Banker.Win32.Emotet)感染大量计算机。此步通常由发送带有恶意宏的文档的垃圾邮件来实现,宏执行后自动下载Emotet。

图4.附有恶意文件的垃圾邮件

图5.恶意文件

感染的第二阶段,Emotet接收服务器的命令,下载并安装Trickbot(检测为Trojan.Win32.Trickster)。Trickbot能使攻击者进行网络侦察。

如果犯罪分子发现他们已渗透进一个大型机构,比如市政网络或公司,则很可能会继续进行感染的第三阶段,并将Ryuk勒索软件部署到受影响网络中的众多节点。

· 技术简介

Ryuk自诞生以来一直在进化,二进制文件有32位的也有64位的,选择注入的进程、加密方案有时也因样本的不同而不同。

我们以在2019年10月下旬发现的最新版本之一进行描述(MD5:fe8f2f9ad6789c6dba3d1aa2d3a8e404)。

文件加密

此版Ryuk使用了混合加密方案,该方案采用AES算法对文件进行加密,同时用RSA算法对AES密钥进行加密。Ryuk使用Microsoft CryptoAPI提供的加密例程的标准实现。

木马样本中包含攻击者嵌入的2048位RSA密钥。Ryuk为每个文件生成一个新的唯一256位AES密钥,此密钥将用于加密文件内容。AES密钥再由RSA加密,并保存在加密文件的末尾。

Ryuk加密本地驱动器和网络共享。加密后的文件附加扩展名为.RYK,赎金通知则保存在加密文件附近。

图6.赎金票据

附加功能

这种Ryuk变种使用了一种我们未曾在其他勒索软件家族中见过的技术:试图唤醒其他处于睡眠状态、但已配置为使用网络唤醒技术(Wake-on-LAN,WOL)的机器。

Ryuk这样做是为了最大化攻击面:驻留在休眠pc上的网络共享上的文件无法访问,但是如果设法唤醒它们,就将能够加密这些文件。为此,Ryuk从受感染系统的本地ARP缓存中检索附近机器的MAC地址,并将以魔术值{0xff,0xff,0xff,0xff,0xff,0xff}开头的广播UDP数据包发送到端口7唤醒目标计算机。

图7.实现网络唤醒(Wake-on-LAN,WOL)数据包广播的程序片段

相比其他勒索软件,Ryuk也有一些较为传统的功能,比如将代码注入合法进程中以避免检测;试图终止与业务应用程序相关的进程,进而让自己修改这些程序使用的文件;试图终止与业务应用程序和安全解决方案相关的各种服务。

Purga

Purga(也被称为Globe, Amnesia或Scarab)出现在2016年中期,目前也在积极地开发中。除了市政机构外,Purga也会被用于攻击大型公司或是常规用户。

· 地理分布

image.png

前10个国家:

image.png

*全球范围内,各个国家/地区受到Purga攻击的用户比例

· 分发

攻击者使用了各类感染媒介,其中主要的是垃圾邮件和RDP暴力攻击。最常见的攻击情形如下:

1、攻击者扫描网络查找开放的RDP端口

2、尝试暴力破解凭据登录到目标计算机

3、成功登录后尝试使用各种提权漏洞

4、启动勒索软件

· 技术简介

Purga勒索软件是一个高度密集开发的勒索软件示例。在过去的两年中,攻击者对加密算法,密钥生成功能,密码方案等都做了多次更改。

本文将简要介绍最新的修改版本:

命名方案

Purga的每次修改都会更改扩展名,但命名方案只有两种,具体取决于配置:

1.[原始文件名].[原始扩展名].[新扩展名]

2.[加密文件名].[新扩展名]

· 文件加密

Purga使用了一种结合对称和非对称算法的标准方案。每个文件都使用随机生成的对称密钥进行加密,然后使用非对称密钥对这个对称密钥进行加密,结果存储在文件的特定结构中。

Stop

Stop勒索软件(也称为Djvu STOP)于2018年底首次检测到。2019年,Stop攻击了全球2万多名受害者,在最常见的勒索软件中排名第七。

· 地理分布

image.png

 前10个国家:

image.png

*全球范围内,各个国家/地区受到Stop攻击的用户比例

· 分发

主要是跟盗版软件捆绑在一起进行分发。

· 技术简介

对于文件加密,Stop勒索软件使用随机生成的Salsa20密钥,然后使用公共RSA密钥对其进行加密。

图12.文件加密例程中的代码片段

根据C&C服务器的可用性,Stop勒索软件会使用在线或离线RSA密钥。离线公共RSA密钥可以在每个恶意样本的配置中找到。

图13.恶意软件的转储片段

结论与建议

2019年是市政机构遭受勒索软件攻击的一年,这种趋势很可能在2020年继续下去。这类攻击增长的原因有多种。

首先,市政机构的网络安全预算通常更侧重于保险和应急响应,而不是主动防御措施。在这种情况下,唯一可能的解决办法就是向攻击者支付赎金。

其次,市政部门的网络通常由多个组织组成,打击一个就能打击到一片,从而使整个片区的业务流程陷入瘫痪。

此外,存储在市政网络中的数据对于日常流程的运行至关重要,因为它直接关系到公民和地方企业,攻击者也可能借此获利。

不过,简单的预防措施也可以帮助对抗这类攻击:

· 尽快安装所有安全更新。大多数网络攻击利用的漏洞早已被报告和解决,所以安装最新的安全更新就降低了攻击的机会。

· 通过VPN保护对公司网络的远程访问,并为域帐户使用安全密码。

· 更新操作系统,安装最新的漏洞补丁。

· 重要文件备份,除了储存在物理介质中外,还将它们存储在云中。

· 请记住,勒索软件是刑事犯罪,您不应该支付赎金。如果您不幸成为受害者,请向当地的执法机构报告。也可以自己先尝试先在网上找个解密器来用,比如卡巴斯基免费解密器:https://noransom.kaspersky.com

· 对员工进行网络安全教育。

· 使用安全解决方案,保护企业数据免受勒索软件的侵害。

概要

Emotet是一款于2014年发现的银行木马,经过短短几年的发展已经衍生出各类五花八门的变种。它主要通过大规模垃圾邮件活动来传播,其踪迹遍布全球各地。这些年,Emotet从银行木马演变为模块化的恶意软件加载器,能让攻击者通过Emotet僵尸网络快速传播恶意软件。Emotet运营商还将其僵尸网络作为“恶意软件即服务”(MAAS)提供给其他网络犯罪团伙,让后者自己选择恶意软件进行分发。

Unit42在对Emotet的最新研究中发现,虽然Emotet垃圾邮件活动在今年5月底前已经逐渐消失,但现在整个亚太地区(主要是越南、印度、印度尼西亚、澳大利亚、中国和日本)仍有大量易受攻击的中小企业服务器被攻击者利用,用作恶意软件分发服务器。这类企业往往缺乏对Web服务器安全性的重视度,很少对其更新或修复,另外这类企业大多都有使用WordPress博客软件。

Emotet的破坏力十分巨大,动辄对企业内部造成成千上万美元的损失,因此必须了解Emotet运营商的作案手法才能做好防御准备。本文将对亚太地区中小企业中Emotet的观察情况做介绍。

Emotet活动概述

对Emotet活动而言,很关键的一点就是使用合法的域来托管及分发Emotet的交付文档或可执行文件。查看Emotet活动域时,我们注意到大多数域都是拥有合法业务的中小型企业。由于中小企业资源有限,往往不会更新或修补其web服务器,这就让网络罪犯有了可趁之机。

下图概述了Emotet感染受害者计算机的步骤。攻击者首先在互联网上扫描易受攻击的Web服务器,然后利用这些服务器来托管Emotet变体,再将变体的下载链接放在邮件中诱使受害者点击,还有一种形式是将恶意文档放在邮件附件,受害者打开文档后宏自动执行,下载并执行Emotet payload。

图1.Emotet传播机制

犯罪组织经常使用合法域名的服务器来散布恶意软件,这是一种常见的策略,因为来自合法域的网络不太可能被屏蔽,能让恶意软件的达到率更高。

Emotet的回归

自2019年1月以来,Emotet在亚太地区感染的服务器数量如下图所示,可以看到年初到年中呈增长趋势,五月份到达峰值,之后经历了三个月的沉寂期,在2019年9月16日,Emotet的C2服务器及垃圾邮件活动再次开始活跃。

图2.自2019年1月起,Emotet分发服务器的数量

按国家区域划分,可以看到哪些国家受影响程度最大,从数量上来看,越南、印度、印度尼西亚、澳大利亚、中国和日本排名前列,其次是几个东盟国家,如下图3所示。

图3.按国家划分的分发服务器数量

数据显示,Emotet运营者利用了整个亚太地区大量易受攻击的服务器来分发Emotet变体,这些数据还表明,大量中小企业成为Emotet活动成功的关键部分。

另外还需要注意一点,大多数受感染的域都在运行WordPress博客软件。在漏洞跟踪器网站(例如 CVE Details)上快速搜索WordPress漏洞,显示了WordPress有大量已披露漏洞的存在,在Exploit-DB上进行的类似的搜索也可以看到WordPress每个月都有大量漏洞公布。虽然攻击者对WordPress漏洞的利用也不是一天两天了,但还是需要强调有能用的更新的时候需要尽快更新。

结论

虽然Emotet已经活跃多年,但其活动数量、模块化平台、破坏能力、相关事件以及受害组织的恢复成本都表明它仍是当今时代最不容小觑的网络威胁之一。中小企业在面对此类网络威胁时不可轻心大意,最好能定时对web服务器及相应应用程序检查并更新。

移动技术的兴起不光改变了终端安全的性质,更是开创了网络安全威胁的新时代。无论是过去以电脑为主的传统终端,还是今日大多数人都在使用的智能手机,随着端点数量和种类的增长,传统的基于签名和预编程的安全解决方法已经难以跟上现状,并且各种新兴的威胁类型也在增加,更不用说攻击还可以以多种方式表现出来。

物联网在给企业带来机遇的同时也带来了风险,如何减少这类风险的发生就成了一个不可忽视的问题。根据锡安市场研究公司(Zion Market Research)的数据,人工智能和机器学习投资仅在网络安全领域就飙升至71亿美元。

timg (2).jpg

我们列出了以下三种应用在企业领域的机器学习和AI端点安全技术,看看是否能给您的企业信息安全计划带来参考。

1. 利用机器学习进行端点风险评分

任何给定端点(无论是个人还是设备)的生命周期都会累积大量交互数据。例如,一个人在登录时间、物理交互、设备行为、地理定位、事务、生物测定等方面有特定的行为模式。通过挖掘这些模式,并与更大级别的端点数据进行比较,更能提高决策的准确性。

目前,越来越多的安全公司在使用机器学习来开发基于这些变量的评分系统,用以验证正常用户、检测异常行为、标记差异、防止攻击和确保用户体验的顺利进行等。

2.利用机器学习提高攻击应对性

物联网安全最具挑战性的一个方面就是分布在物理环境中的各个端点。物联网攻击面——即可攻击对象的拓扑结构——可不止挂在企业四面墙上的设备那么简单。根据应用程序的不同,物联网攻击面可能包括大量芯片、传感器、软件、应用程序、设备、路由器、网络、数据传输、数据中心、用户和辖区。

AI端点安全技术可用于检测危险信息或可疑活动的攻击面,并能立即采取补救行动。由于许多公司在给定端点上都使用了多个安全代理,因此可以使用机器学习来扫描这些代理,包括反病毒、检测和响应。此功能能够使公司整合可见性,自动加密并部署相应补丁及保护措施。

3.利用机器学习以实现端点合规性

随着物联网遍及每个行业,设备必须保持合规性才能实现规模化。以医疗健康系统为例,近些年生物识别技术和移动医疗应用的规模正不断扩大,只有对HIPAA(健康保险流通与责任法案)保持遵从才能对行业的良性发展起到关键作用。在此情景下,机器学习可用来自动检测、分类和保护个人健康隐私数据。

机器学习算法不是依靠人工分析来监控这些庞大的、变动的、私密的数据集,而是对数据进行训练,让其暴露出一些不正常的数据。AI端点安全用例也可以应用于金融行业,比如反洗钱或是了解你的客户的潜在价值与风险。

在当前网络威胁日益普遍的环境下,AI端点安全方案提供了新颖的方法,为缓解威胁提供了一定的帮助,但它本身也有局限性,如果用于训练的数据和实际验证的数据不一致,得到的结果很可能南辕北辙,此外,攻击者也在不断开发新的技术挑战AI的安全边际。对于终端安全而言,最好的安全举措也许是AI和人为的结合,才能在不断演变的安全格局中从容应对。

本文作者:Jessica Groopman

一些新面孔

ShaggyPanther工具集

2018年1月,我们在报告“ShaggyPanther – Chinese-speaking cluster of activity in APAC”中介绍了ShaggyPather,它是一个针对台湾和马来西亚的恶意软件和入侵工具集。相关的组件和活动可以追溯到十多年前,类似的代码可以根据时间戳追溯到2004年。此后在另外几个地方也检测到了shaggypanther活动。最近的一次发生在7月份印度尼西亚的服务器上,3月份在叙利亚的服务器上也发现了该活动。2018年和2019年后门代码存在新的混淆功能,不再有明文C2字符串。自最初发布以来,研究人员使用sinochopper/chinachopper从攻击者上识别出了一个初始的服务器端感染载体。sinochopper不仅用于主机识别和后门,还用于电子邮件盗窃和其他活动。

TajMahal APT框架

今年4月,我们发表了关于TajMahal的报告。TajMahal是一个此前不为人知的APT框架,在过去5年中一直很活跃。

TajMahal框架被认为包括两个主要程序包,自称为“Tokyo”和“Yokohama”。Tokyo是两个中较小的一个,包括约3个模块。它包含主要的后门功能,还会定期与命令和控制服务器连接。Tokyo利用PowerShell,即使入侵已经进入第二阶段,它仍然保留在网络中。第二阶段是Yokohama文件包:一个全副武装的间谍框架。Yokohama包括一个包含所有插件,开源和专有第三方库以及配置文件的虚拟文件系统(VFS)。它总共有近80个模块,其中包括载入器、协调器、命令和控制通信器、录音机、键盘记录器、屏幕和网络摄像头抓取器、文档和加密密匙窃取器等。

TajMahal还能够获取浏览器cookie,收集苹果移动设备的备份名单,窃取受害者烧录的CD数据以及打印机队列中的文档。它还能够请求窃取之前见过的USB存储设备上的特定文件,当该USB设备下一次连接到计算机上时,文件就会被窃取。

遥测显示只有一个受害者,一个来自中亚国家的外交机构。这就引出了一个问题,为什么要为一个受害者而费这么大的劲呢?因此我们认为可能还有其他没发现的受害者。目前还不清楚TajMahal的传播和感染途径。

FruityArmor和SandCat 威胁组织

2月,我们的AEP(漏洞利用自动防御)系统检测到有人试图利用Windows中的一个漏洞——这是我们在前几个月发现的连续第四个被利用的Windows本地提权漏洞。

进一步分析后发现,此漏洞是win32k.sys中的0 day漏洞CVE-2019-0797,Microsoft于3月12日修补了此漏洞。我们认为,包括FruityArmor和SandCat在内的几个APT组织都使用了此漏洞。FruityArmor之前使用0 day,而SandCat是我们不久前发现的APT新成员。值得注意的是,FrutiyArmor和SandCat似乎遵循并行的道路,它们都同时具有相同的漏洞利用能力。这似乎说明还有个第三方团体,为这两个组织提供相应工具。

Cloudmid间谍软件

2019年2月,我们观察到了以前未知的恶意软件Cloudmid在俄罗斯南部进行高针对性攻击。该间谍程序通过电子邮件传播,并伪装成俄罗斯知名安全公司的VPN客户端。到目前为止,我们还无法将此活动与任何已知APT组织联系起来。恶意软件本身就是一个简单的文档窃取器,但考虑到它的受害者性和攻击的针对性,即使我们无法将这组活动归因于任何已知的团伙,也认为它应被监视。该操作涉及的OPSEC较低且恶意软件简单,似乎意味着威胁团伙并不高级。

针对印度军事组织的攻击行动

2月,我们确定了一个针对印度军事组织的运动,且无法将其归因于任何已知的威胁团体。攻击者依靠水坑和鱼叉式网络钓鱼感染受害者。具体来说是利用托管分发Netwire RAT变体恶意文档的网站,进而破坏陆战研究中心(CLAWS)的网站。

DADJOKE恶意软件

在第三季度中,我们观察到DADJOKE恶意软件的活动痕迹。该恶意软件于2019年1月首次在野使用,随后进行持续开发。自一月份以来,我们仅在少数活动中使用过这种恶意软件,这些恶意软件均针对东南亚地区的政府,军事和外交实体。八月份进行的最新活动似乎只针对少数为某军事组织工作的人。

隐私问题

1月17日,安全研究员Troy Hunt报告称,有超过7.73亿封电子邮件和2100万个唯一密码记录被泄露。这部分数据被称为Collection #1,在云服务MEGA上共享。Collection #1只是泄露数据的一部分,剩余还有6个部分,在数据交易论坛售卖,总共数据量大约占到了1 TB,包括22亿个被盗的帐户记录。

2月,16家被黑客入侵公司的6.17亿个帐户的详细信息在Dream Market上出售,可通过Tor网络访问。被黑客入侵的公司首先包括Dubsmash,MyFitnessPal,Armor Games和CoffeeMeetsBagel,随后另外八家被黑客入侵公司的数据也被发布。随后在3月,黑客又发布了另外6家公司的失窃数据。

被盗的凭证,以及从数据泄露中获取的其他个人信息,不仅对网络罪犯有价值,对目标攻击者也有价值,包括那些希望跟踪世界各地异见人士和活动人士的人。

我们已经习惯了源源不断的关于电子邮件地址和密码泄露的新闻报道。盗窃这种“传统的”身份验证形式已经够糟糕的了,但是使用其他身份验证方法的后果可能要严重得多。今年8月,两名以色列研究人员在一个可公开访问的数据库中发现了来自Suprema Biostar 2生物特征识别控制系统的指纹、面部识别数据和其他个人信息。生物特征数据的暴露尤其令人关注。密码泄露是可以改变的,但生物特征是终生的。

此外,智能设备在我们生活中的广泛使用为攻击者打开了更大的数据池,这些信息对威胁行为者都非常有价值。

最后

卡巴斯基将持续跟踪所能发现的APT活动,如果您想了解更多信息,请通过[email protected]与我们联系。

在即将过去的2019年,APT组织又做了哪些恶?它们的发展动向是什么?我们又能从其中挖掘出怎样的规律?这些问题想要直白回答并不容易,因为研究人员不可能完全了解所有攻击事件及它们背后的发展动机,但我们可以试着从不同的角度来处理这个问题,以便更好地理解所发生的事情,并从中获得后见之明。

供应链攻击

近年来,供应链攻击是最危险和有效的感染途径之一,越来越多地被用于高级攻击行动中——其中最知名的要当属ShadowPad后门、勒索软件ExPetr和被后门化的工具CCleaner。这种攻击针对了产品生命周期中,从初始开发阶段到最终用户的各个环节,涉及人力、组织、物资和智力资源的种种。哪怕供应商的基础设施是安全的,但其提供商的设施中可能包含漏洞,从而危害到供应链,导致毁灭性和意外的数据泄露事故。

今年1月,我们就发现过一起名为ShadowHammer 行动的供应链攻击事件。攻击者以华硕的实时更新应用程序为感染初始源进行攻击。这种实时更新应用程序是一种预装应用,用于自动进行BIOS、UEFI驱动和应用程序更新。攻击者使用窃取到的华硕数字证书对旧版本的华硕软件进行更改,注入自己的恶意代码,包含木马的华硕应用程序使用了合法的数字签名,并且被放到官方的华硕更新服务器上进行传播和下载,使得大多数安全解决方案无法将其识别。据估计,有 50 万用户通过华硕的自动更新收到了恶意后门,但攻击者只对其中 600 台计算机发动了针对性的后续攻击。

APT组织信息反泄露

今年3月,有人在Twitter上泄露了隶属于伊朗国家背景的APT攻击组织APT34(又名oilrig、HelixKitten)的黑客工具及相关人员信息。安全专家证实泄露信息确实跟APT 34组织有关。公布的信息还包括66个APT34组织受害者,主要是中东地区的政府机构和金融、能源等企业,与之前所掌握关于APT 34组织的情况相符。

4月22日,另一针对中东国家地区的APT组织MuddyWater信息又遭曝光,一个名为Bl4ck_B0X的用户在Telegram频道上公布了MuddyWater组织成员信息,甚至具体到成员的父母和配偶,4月27日还曝光了 其C2服务器的相关信息,但到了5月1日,该频道对公众关闭,状态改为私人,关闭的原因尚不清楚。

之后Hidden Reality网站上又曝光了伊朗RANA研究所数据,这次攻击者选择了任何人都能浏览的网站,披露了RANA机构计算机网络运营相关的内部文档、聊天记录,以及受害者信息等。此前揭秘的信息更多会集中在工具、源代码和配置文件上。

第三季度,中东地区的APT事态发展值得关注,尤其是伊朗短时间内又发生了多起数据泄密事件。

在对泄漏者所使用的材料,基础设施和专用网站的仔细分析后,我们推测上述这些事件可能都与Sofacy / Hades组织有关。

新组织现身

2017年,神秘黑客团体Shadow Brokers泄露了一个名为“ Lost in Translation ”的数据库,据称是从美国国家安全局(NSA)处入侵获得,包含一系列漏洞利用和黑客工具,比如大名鼎鼎的永恒之蓝漏洞和WannaCry勒索病毒。

但重点是,泄露的文件中还有一个名为sigs.py的Python脚本文件,该文件被NSA用作内置的恶意软件扫描程序,可以检查系统是否已被另一个APT组织破坏,即他国网军的攻击痕迹,从而通过是否存在攻击痕迹而执行下一步操作。文件执行的每次检查都是作为在系统中查找唯一签名的函数实现的,例如唯一名称或注册表路径的文件。sigs.py中列出了44个条目,也就是NSA能识别的44个APT组织,其中许多APT组织都尚未曝光于公众面前。

而今年,我们确定了sigs.py文件中标注的第27个APT组织——DarkUniverse。根据代码相关性,我们认为 DarkUniverse 就是操纵ItaDuke 恶意行动的幕后黑手,此次行动针对西亚和非洲东北部的医疗机构、核能机构、军事组织和电信公司进行,共有20多个单位受到影响。他们使用的主要组件是一个相当简单的 DLL,仅具有一个导出的功能,却能实现了持久性、恶意软件完整性、C2 通信以及对其他模块的控制。

移动攻击

移动攻击现在几乎成了每个APT组织的标配了,2019年有许多这样的案例发生。

今年5月,英国《金融时报》报道称,黑客利用了WhatsApp的一个0 day漏洞,能读取用户的加密聊天记录、开启麦克风和摄像头、安装间谍软件等,而利用漏洞的过程只需要攻击者通过WhatsApp给用户打电话即可,通过呼叫触发WhatsApp的缓冲区溢出,进而让攻击者控制应用程序并在其中执行任意代码。WhatsApp很快就发布了一个漏洞补丁。10月,WhatsApp对以色列NSO集团提起诉讼,指控后者对这一漏洞的开发利用行为,并声称NSO将此技术用于20个不同国家的1400多名客户身上,其中包括人权活动人士、记者及其他相关人士,但诉讼遭到了NSO的否决。

7月,我们介绍了在野发现的最新版FinSpy间谍软件。FinSpy是由德国Gamma Group公司制造的间谍软件,通过其在英国的子公司Gamma Group International向全球的政府和执法机构出售,被用于在各类平台上收集用户的私人信息。FinSpy有iOS和Android两个版本,出现在近20个国家。

8月,谷歌的Project Zero团队发表报告分析了至少14个在野发现的iOS 0 day漏洞,这些漏洞被用在5个开发链中,影响从 iOS 10 到 iOS 12 的几乎每一个版本。14个漏洞中有 7 个面向 iPhone 的 Web 浏览器、五个面向内核、两个瞄向单独的沙箱转义。据谷歌报道,攻击者可能从三年前就开始对一些网站发起水坑攻击,但谷歌没有列举被入侵网站的详细信息,只声称这些网站“每周都有成千上万的访问者”,是一种没有针对性的攻击。

9月,“网络军火商”Zerodium公司表示,Android的0 day现在要比iOS的价值高,公司愿意为零点击的Android 0 day支付250万美元的费用,相比该公司之前为远程iOS越狱支付的200万美元的上限有了大幅提高。同一月份,Android媒体驱动程序v412 (Video4Linux) driver被曝出高危0 day漏洞,同时又曝出另一Android漏洞,攻击者可以使用SMS消息完全访问受感染设备上的电子邮件,这一漏洞使超过10亿的三星、华为、LG、索尼等智能手机受到影响。

APT组织的发展动向

Turla

今年在调查中亚的一些恶意活动时,我们确定了一个名为Tunnus的新后门,并将其归于Turla APT组织。Tunnus是基于.NET的恶意软件,能够在受感染的系统上运行命令或执行文件操作并将结果发送到C2。

Turla还创建了一个名为Topinambour的新dropper,用于分发其臭名昭著的恶意软件JavaScript KopiLuwak。恶意软件几乎完全是“无文件的”:只有在感染的最后阶段,将一个用于远程管理的加密木马嵌入计算机的注册表中。Turla组织还用两个跟KopiLuwak类似的恶意软件进行网络间谍活动——.NET RocketMan木马和PowerShell MiamiBeach木马。

Turla的另一款新工具Reductor是COMPfun木马的继承者,攻击者入侵Chrome和Firefox浏览器后可以利用TLS追踪用户。Reductor一个引人注目的方面是,攻击者花了很多精力来操纵已安装的数字根证书,并使用惟一的与主机相关的标识符标记出站TLS流量。该恶意软件将嵌入式根证书添加到目标主机,允许操作员通过命名管道远程添加其他证书。攻击者不需要接触网络数据包,相反,他们分析了Firefox源代码和Chrome二进制代码,修改了其中的PRNG代码,并针对每个用户添加唯一的标识符,从而使TLS流量带有唯一的指纹,导致黑客能够轻易在网络上追踪来自受感染主机的加密流量。

Sofacy

Zebrocy是我们于2015年底发现的一款归属于Sofacy组织的恶意软件家族,由Delphi下载器、AutoIt下载器和Delphi后门组成,主要针对欧亚地区进行间谍活动。今年Zebrocy再次升级,在6月份对东南亚某一外交事务机构的攻击中使用了一个新Python脚本——PythocyDbg,此脚本主要提供网络代理和通信调试功能的秘密收集。

早在2019年初,Zebrocy就改变了开发方向,使用了Nimrod/Nim语言,这是一种语法类似于Pascal和Python的编程语言,可以把目标程序编译为JavaScript 或 C 语言。该组织用于鱼叉式网络钓鱼的Nim下载程序和其他Nim后门代码目前都由Zebrocy生成,并与AutoIT脚本、Go和Delphi模块一起交付。

今年9月,Zebrocy在欧洲多地发起攻击,试图获取电子邮件通信、凭据和敏感文件,此次行动主要针对的是各国的国防和外交机构。

Platinum

6月,我们发现一系列高度复杂的网络间谍攻击行动,其目的是窃取南亚的外交、政府和军事实体的信息。这些攻击行动持续了近六年,对其中使用的工具手段进一步调查后发现,背后的攻击者为PLATIUM组织——一个我们认为已经消失的网络间谍组织。能在如此长的时间里保持行动隐蔽,是因为Platinum使用了一种前所未见的隐写技术。

而今年年末,我们又发现了Platinum的一个新后门——Titanium,该恶意软件与一个称为ProjectC的工具集之间存在某些相似性,说明之前利用ProjectC进行的CloudComputating行动也可以归因于Platinum。

Lazarus

去年,Lazarus组织利用AppleJeus恶意软件对Mac OS用户展开加密货币窃取行动,今年又使用自定义PowerShell脚本来管理和控制Windows/macOS 恶意软件,进一步拓展了加密攻击。

Lazarus更新工具的速度很快,除了加密攻击外,还窃取了韩国某游戏公司的程序源码售卖。到了三季度,又入侵了缅甸一家银行,通过公共登录凭据转储程序和自制的PowerShell脚本进行横向移动来获取高价值主机信息。

Lazarus旗下有两个子组织,分别名为BlueNoroff和Andariel,后者专注于韩国的地缘政治和金融情报的间谍活动。今年,Andariel为易受攻击的weblogic服务器构建新的c2基础设施,攻击者成功后会植入了由韩国安全软件供应商合法签名的恶意软件。由于韩国方面的快速反应,这个签名很快就被撤销了。恶意软件是一种全新的后门,名为Apollozeus,它是由一个具有复杂配置的shellcode启动的。这个后门使用了一个相对较大的shellcode,以使分析变得困难。此外,它还会谨慎地执行最终的有效负载。这个恶意软件的发现让我们找到了几个相关的样本,以及攻击者用来传播它的文档。

DarkHotel

10月,我们发现了一起面向朝鲜的钓鱼攻击事件,主要针对商人,外交实体和人权组织,攻击者使用了高针对性的Ghost RAT恶意软件,可完全控制受害者电脑。据推测,这场行动已经进行了三年多。

Lamberts

Lamberts是一个或多个威胁组织都在使用的工具集,它包括网络驱动的后门、几代模块化后门、信息收集工具以及用于实施破坏性攻击的擦除器。有关Lamberts的更多信息,请参见我们之前“拆解Lamberts工具包”的报告

今年,Lamberts军火库中又添加了几类新武器。Silver Lambert似乎是Gray Lambert的继任者,它是一个成熟的后门,能实现一些特定的NOBUS和OPSEC概念,例如通过检查服务器SSL证书哈希来防止C2 sink-holing ,为孤立实例自动卸载(即C2不可用的地方)和低级文件擦除功能。中国航空部门就受到过Silver Lambert的影响。

Violet Lambert是一种模块化后门,应该是在2018年开发部署的,能在各种Windows版本(包括Windows XP,Vista和更高版本的Windows)上运行,我们在中东地区观察到了它的存在痕迹,同时还发现了另外三种后门——前两个称为Cyan Lambert(包括Light和Pro版本),第三个称为Magenta Lambert,后者重用了较早的Lamberts代码,并且与Green、Black和White Lamberts具有多个相似之处。此类恶意软件能进行网络侦听,等待魔术ping,以及能非常隐蔽地执行payload,而我们一直无法对其进行解密。就在我们发现后不久,所有受感染的电脑都离线了。

LuckyMouse

LuckyMouse组织至少自2018年4月以来便一直针对越南政府和外交实体展开“SpoiledLegacy”攻击行动,此次行动被怀疑是是之前IronTiger行动的继承。攻击者使用Cobalt Strike和Metasploit渗透测试框架,主要以网络服务的漏洞为初始感染媒介,此外也通过钓鱼邮件进行感染。除了渗透测试框架外,攻击者还使用NetBot下载器和内网穿透大杀器——EarthWorm,以及将HTran TCP代理源代码包含到恶意软件中来重定向流量。一些NetBot配置数据包含LAN IP,表明它从本地网络中另一台受感染的主机下载下一阶段文件。

LuckyMouse此次的目标依然是内部数据库服务器。感染的最后阶段,攻击者针对32位和64位系统,分别使用特制的注入系统进程内存的木马。值得强调的是,感染链中的所有工具,都使用了泄漏的HackingTeam代码,动态混淆Win32 API调用。

从2019年初开始,我们在中亚和中东观察到LuckyMouse活动的激增。攻击者似乎将重点放在电信运营商、大学和政府上。感染媒介是鱼叉式网络钓鱼以及可能的水坑攻击。尽管去年有很多文章都讨论了LuckyMouse的TTP,但LuckyMouse并没有对其进行任何更改,仍然依靠自己的工具在受害者的网络中站稳脚跟。在新活动中,他们使用HTTPBrowser作为第一阶段,用Soldier Trojan作为第二阶段。LuckyMouse更改了其基础设施,因为它似乎只依赖于IPv4地址,而不是C2的域名,我们认为这是为了限制相关性。

HoneyMyte

HoneyMyte APT已经活跃好几年了,在过去的几年中采用了多种技术,对缅甸、蒙古、埃塞俄比亚、越南和孟加拉国的政府,以及位于巴基斯坦、韩国、美国、英国、比利时、尼泊尔、澳大利亚和新加坡的外国大使馆发起攻击。今年将目标对准了缅甸自然资源管理相关的政府组织和一个非洲大陆组织,表明HoneyMyte的主要动机之一是收集地缘政治和经济情报。

Icefog

自2011年以来,Icefog一直针对主要位于韩国,日本和亚洲中部的政府机构、军事承包商、航运组织、电信运营商、卫星运营商、工业和高科技公司和大众媒体。在2013年该组织被曝光后,运作速度有所放慢,然而2018年后,Icefog又开始对中亚的政府机构和军事承包商发起了大规模进攻。

在最新一波攻击中,感染始于包含了恶意文件的鱼叉式网络钓鱼电子邮件,利用已知漏洞并最终部署了payload。在2018年到2019年初,最终的payload都是典型的Icefog后门,但自2019年5月以后,攻击者似乎改变了立场,转向使用Poison Ivy后门。Poison Ivy是一类恶意DLL文件,使用了一种称为加载顺序劫持(load order hijacking)的技术,通过合法签名的程序进行加载。这种技术非常普遍,在以前的Icefog活动中也使用过。

在调查过程中,我们还检测到横向运动中使用的工具,我们观察了从GitHub下载的公共TCP扫描器、从系统内存转储凭证的Mimikatz变体、用于窃取敏感信息的自定义键盘记录程序,以及另一个名为Quarian的新版本后门的使用。Quarian后门被用来在受害者的基础设施内创建隧道以避免网络探测。Quarian的功能包括操作远程文件系统、获取受害者信息、窃取保存的密码、下载或上传任意文件、使用端口转发创建隧道、执行任意命令和启动反向shell。

介绍

Phoenix键盘记录器于2019年7月首次出现,短时间内便在网络犯罪分子中快速流传开来,它具有许多信息窃取的功能,这些功能甚至已经超出了按键记录的范畴,所以有人倾向于将其归类为间谍软件。

要点

· 多来源数据窃取:Phoenix采用的是“恶意软件即服务”(MaaS)的模式,能从近20个浏览器、4个的邮件客户端,以及FTP客户端和通讯客户端中窃取个人数据。

· 试图绕过80多种安全产品:Phoenix拥有多个防御和规避机制来避免分析和检测,其中一个反av模块会试图杀死超过80种安全产品和分析工具的进程。

· 目标遍及各大洲:虽然Phoenix发布还不到半年时间,但扩散速度很快,北美、英国、法国、德国以及欧洲其他地区和中东等地都有相应受害者,预计未来将有更多地区将受到影响。

· 通过Telegram过滤隐私数据:Phoenix有常见的SMTP和FTP协议,也支持通过Telegram滤出数据。Telegram是全球流行的聊天应用程序,其合法性和端到端加密功能常被网络犯罪分子利用。

· 与Alpha键盘记录器师出同门:Phoenix由Alpha键盘记录器背后的同一个团队创作。

· 简单易上手:当前MaaS模式在网络犯罪生态系统中的日益流行,易操作性和性价比成了恶意软件快速传播的两个重要要素,预计等到明年的时候会有更多的犯罪新手利用这类MaaS危害社会。

背景

2019年7月底,Cybereason平台检测到一个恶意软件样本,该样本被一些安全产品厂商归类为Agent Tesla,但经过进一步审查后发现并不是,能够确定这类恶意软件是一种全新的未被记录的恶意软件,Cybereason决定将它称为Phoenix键盘记录器。

Phoenix在地下社区中由一位叫“Illusion”的会员售卖,Phoenix推出后不久便在地下社区收获了广泛好评,不少用户称赞其方便好用、售后服务周到。

图1.Phoenix初始服务售价

恶意软件分析

功能

· Phoenix键盘记录器是用VB.NET编写的。它具有许多功能,远远超出了键盘记录本身,包括:

· 键盘记录+剪贴板窃取

· 屏幕截图

· 密码窃取(浏览器,邮件客户端,FTP客户端,聊天客户端)

· 通过SMTP、FTP或Telegram进行数据过滤

· 下载器(用于下载其他恶意软件)

· AV-Killer模块

· 防调试和防VM功能

交付方式

默认情况下,Illusion将Phoenix键盘记录器作为存根提供给买家,买方必须使用自己的方法把存根转移到目标机器上。我们观察到的大多数Phoenix感染都是利用武器化富文本文件(RTF)或Microsoft Office文档进行的钓鱼尝试,使用的都是已知的漏洞,并没有用到更流行的恶意宏技术,其中最常见的是利用了Equation Editor公式编辑器的漏洞(CVE-2017-11882)。

图2.使用武器化文档的Phoenix感染过程树

受感染的系统配置文件

Phoenix成功感染目标计算机后将对计算机进行配置,收集有关操作系统、硬件、运行进程、用户及其外部IP的信息,并将信息存储在内存中直接发送回攻击者,这种做法会更加隐蔽,因为如果不将泄露内容写入磁盘就很难知道泄露的内容。

图3.发送给攻击者的系统分析数据示例

防分析检测功能

很明显,Illussion在Phoenix上花费了很多时间精力,使用几种不同的方法来保护逃过检查:

· 字符串加密:恶意软件使用的大多数关键字符串都经过加密,并且仅在内存中解密。

· 混淆:混淆似乎是由开源ConfuserEx .NET混淆器实现的,用以阻止正确的反编译和代码检查。

Illusion还建议使用额外第三方加密器使其更“混”,虽然大多数在野外捕获的Phoenix样本都装有加密器,但还是会被大多安全产品检测到。

获得基本系统信息后,Phoenix会检查它是否在“敌对”环境中运行,比如虚拟机、调试器,或是装有分析工具和安全产品的计算机。Phoenix具有一组功能,可在管理面板中禁用不同的Windows工具,例如禁用CMD,注册表,任务管理器,系统还原等。

Phoenix说是支持持久性,但分析的大多数样本在感染后并未留存。对此的可能解释可能是攻击者希望将过度暴露的风险降到最低,一旦Phoenix获得了必要的数据,就不需要超时来增加风险。

image.png

图4.Phoenix键盘记录器管理面板,具有禁用其他工具的功能

让我们深入研究Phoenix用于检测“敌对”环境的一些技术。

反虚拟机模块

Phoenix的大多数反虚拟机检查均基于已知技术,我们认为它们很可能是从Cyberbit博客中复制粘贴的。Phoenix在目标计算机中发现以下任何进程或文件时,将执行检查并自行终止:

Phoenix检查的运行进程:

SandboxieRpcSs

Vmtoolsd

Vmwaretrat

Vmwareuser

Vmacthlp

Vboxservice

Vboxtray

检查是否存在以下文件:

c:\windows\System32\Drivers\VBoxMouse.sys

c:\windows\System32\Drivers\vm3dgl.dll

c:\windows\System32\Drivers\vmtray.dll

c:\windows\System32\Drivers\VMToolshook.dll

c:\windows\System32\Drivers\vmmousever.dll

c:\windows\System32\Drivers\VBoxGuest.sys

c:\windows\System32\Drivers\VBoxSF.sys

c:\windows\System32\Drivers\VBoxVideo.sys

c:\windows\System32\VBoxService.exe

禁用Windows Defender

Phoenix试图通过更改以下注册表项来禁用Windows Defender AntiSpyware模块。

 

图5.Phoenix试图禁用Windows Defender

反AV模块

Phoenix的反AV模块会试图终止下列安全产品的进程:

zlclient, egui, bdagent, npfmsg, olydbg, anubis, wireshark, avastui, _Avp32, vsmon, mbam, keyscrambler, _Avpcc, _Avpm, Ackwin32, Outpost, Anti-Trojan, ANTIVIR, Apvxdwin, ATRACK, Autodown, Avconsol, Ave32, Avgctrl, Avkserv, Avnt, Avp, Avp32, Avpcc, Avpdos32, Avpm, Avptc32, Avpupd, Avsched32, AVSYNMGR, Avwin95, Avwupd32, Blackd, Blackice, Cfiadmin, Cfiaudit, Cfinet, Cfinet32, Claw95, Claw95cf, Cleaner, Cleaner3, Defwatch, Dvp95, Dvp95_0, Ecengine, Esafe, Espwatch, F-Agnt95, Findviru, Fprot, F-Prot, F-Prot95, Fp-Win, Frw, F-Stopw, Iamapp, Iamserv, Ibmasn, Ibmavsp, Icload95, Icloadnt, Icmon, Icsupp95, Icsuppnt, Iface, Iomon98, Jedi, Lockdown2000, Lookout, Luall, MCAFEE, Moolive, Mpftray, N32scanw, NAVAPSVC, NAVAPW32, NAVLU32, Navnt, NAVRUNR, Navw32, Navwnt, NeoWatch, NISSERV, Nisum, Nmain, Normist, NORTON, Nupgrade, Nvc95, Outpost, Padmin, Pavcl, Pavsched, Pavw, PCCIOMON, PCCMAIN, Pccwin98, Pcfwallicon, Persfw, POP3TRAP, PVIEW95, Rav7, Rav7win, Rescue, Safeweb, Scan32, Scan95, Scanpm, Scrscan, Serv95, Smc, SMCSERVICE, Snort, Sphinx, Sweep95, SYMPROXYSVC, Tbscan, Tca, Tds2-98, Tds2-Nt, TermiNET, Vet95, Vettray, Vscan40, Vsecomr, Vshwin32, Vsstat, Webscanx, WEBTRAP, Wfindv32, Zonealarm, LOCKDOWN2000, RESCUE32, LUCOMSERVER, avgcc, avgcc, avgamsvr, avgupsvc, avgw, avgcc32, avgserv, avgserv9, avgserv9schedapp, avgemc, ashwebsv, ashdisp, ashmaisv, ashserv, aswUpdSv, symwsc, norton, Norton Auto-Protect, norton_av, nortonav, ccsetmgr, ccevtmgr, avadmin, avcenter, avgnt, avguard, avnotify, avscan, guardgui, nod32krn, nod32kui, clamscan, clamTray, clamWin, freshclam, oladdin, sigtool, w9xpopen, Wclose, cmgrdian, alogserv, mcshield, vshwin32, avconsol, vsstat, avsynmgr, avcmd, avconfig, licmgr, sched, preupd, MsMpEng, MSASCui, Avira.Systray

凭证窃取

Phoenix通过搜索包含敏感信息的特定文件或注册表项来窃取本地存储的凭据和其他敏感信息,包括浏览器,邮件客户端,FTP客户端和聊天客户端。

浏览器包括:Chrome,Firefox,Opera,Vivaldi,Brave,Blisk,Epic,Avast浏览器,SRware Iron,Comodo,Torch,Slimjet,UC浏览器,Orbitum,Coc Coc,QQ浏览器,360浏览器,猎豹;

邮件客户端包括:Outlook,Thunderbird,Seamonkey,Foxmail;

FTP客户端:Filezilla;

聊天客户端:Pidgin。

图6.Phoenix的Outlook模块

图7.Phoenix的Pidgin模块

键盘记录器模块

Phoenix使用了一种常见的挂钩键盘事件的方法来记录键盘录入。它使用Windows API函数SetWindowsHookExA映射按下的键,然后将它们与相应的进程进行匹配。

图9.Phoenix的键盘记录程序钩子函数

图10.Phoenix键盘记录器功能将键盘录入与相关进程相匹配

网络和C2通信

Phoenix检查Internet连接,并通过向ifconfig.me发送GET HTTP请求获得外部IP。

图11.Phoenix使用合法的Web服务确定受感染机器的外部IP

Phoenix可以通过SMTP、FTP或Telegram以明文方式发送窃取数据。

在大多数情况下,Phoenix使用SMTP协议发送被盗数据,作为电子邮件发送到攻击者电子邮箱。

图12.被盗的浏览器数据作为电子邮件发送

某些情况下,Phoenix通过滥用流行的聊天应用程序Telegram API来窃取数据。这种方法非常隐蔽,因为它滥用了Telegram的合法基础结构。

Phoenix向Telegram的聊天机器人发送一个HTTP请求,包括Telegram API密钥、聊天ID窃取数据通过URL编码的文本参数传递。

图13从内存中提取的发送到Telegram的API的HTTP请求

Phoenix使用的Telegram HTTP请求模式:

https://api[.]telegram[.]org/bot[ID]:[API_Token]/sendMessage?chat_id=[ID]&text=[URL_ENCODED_TEXT]

图14.发送到Telegram bot的URL解码文本

Telegram bot的回应方式如下:

{"ok":true,"result":{"message_id":[redacted],"from":{"id":[redacted],"is_bot":true,"first_name":"[redacted]","username":"[redacted]"},"chat":{"id":[redacted],"first_name":"[redacted]","last_name":"[redacted]","type":"private"},"date":[redacted],"text":"}

没有与C2服务器通信

在目前的开发阶段,Phoenix似乎没有使用一个标准的、交互式的C2模型,它不期望收到来自C2服务器的命令。Phoenix的各种任务,比如窃取信息、下载额外的恶意软件、通过USB传播,都是由操作人员在编译之前在配置文件中预先定义好的。Phoenix使用配置文件中预定义的过滤方法来窃取数据。

与Alpha键盘记录器的联系

在调查过程中,我们发现Phoenix键盘记录程序实际上是早期项目Alpha键盘记录程序的一个改进。鉴于其在代码、功能和配置上诸多相似性,我们认为Alpha键盘记录器是由Phoenix键盘记录器背后的同一个团队创作的。Alpha键盘记录器是由用户“Alpha_Coder”于2019年4月在地下市场推出的。

结论

Phoenix键盘窃取器是一种基于恶意软件即服务模式的信息窃取工具。自2019年7月下旬问世以来,因其易用性、性价比和良好的售后服务在地下社区中越来越受欢迎。

Phoenix不仅仅是一个键盘记录程序,它拥有广泛的信息窃取能力和自卫机制。它的流行也标志着“恶意软件即服务”模式在犯罪团伙中越来越流行,从趋势来看,明年这类威胁的加剧将会是意料之中的事。

生物特征数据处理系统最初主要用于警察、海关之类的政府机构,但随着信息技术的快速发展,生物识别技术也开始走入我们的日常生活,除了政府机构和工业自动化系统外,商业办公、笔记本电脑和智能手机也开始将生物识别纳入发展。这类技术逐渐扩大并取代了传统的如基于账号密码的身份验证方法。的确,利用每个人独特的指纹、声音、面部形状或眼睛结构来识别人,似乎是一种显著且方便的办法。

但是,与许多迅速发展的其他技术一样,生物特征认证系统也被证明有明显的缺陷,主要与信息安全问题有关。

在这份报告中,我们将以卡巴斯基收集的2019年第三季度数据为基准,讨论影响生物认证系统的信息安全问题,并评估现有生物认证系统的相关风险。

生物特征数据处理和存储系统所面临的威胁

有种观念认为,能将生物特征数据作为一种无法伪造的唯一个人标识符,但这种概念从根本上来说是错误的,可能会给人一种虚假的安全感。

首先,认证系统对生物特征数据识别的准确性虽然较高,但在许多应用中仍然存在不足,毕竟这种识别不是简单地计算两个散列和是否相等,生物测定系统的假阴性和假阳性结果的概率通常大于零。

其次研究表明,许多人类生物特征可以被造伪,而复制数字化的生物特征数据甚至可能比复制物理特征还要容易。

第三(也是最重要的一点),生物特征数据一旦被泄露,用户是无法像更改密码那样更改被盗指纹的,因此一个人的余生都有可能受到影响。

鉴于上述问题,开发人员如何保障系统和数据安全就显得至关重要,而现实是许多相关技术公司在这方面仍可能存在许多不足。比如今年8月份,安全智能锁平台BioStar 2被曝出存在严重漏洞,能轻易获得Biostar 2 数据库的访问权限,由于数据库缺乏应有的保护,且大多数据处于未加密的存储状态,很容易访问到总量超过 2780 万条(23GB+)的记录,这些数据包括了指纹 / 面部识别数据、未加密的用户名和密码、甚至员工的个人信息。除了敏感信息,安全研究人员还能够轻松监控存储的生物识别数据的实际使用情况。比如实时查看哪个用户通过特定的安全门进入任何设施,甚至能查看管理员账户的密码。而之所以能这么轻易获取到数据,就是因为BioStar 2未采散列式指纹数据存储(无法进行逆向工程),偷工减料地让攻击者能够轻易复制实际的指纹数据、并将之用于恶意的目的。

BioStar 2的状况并非个例,在2015年就曾发生过一起以生物特征数据为目标网络攻击事件,被盗信息中包含近600万美国政府相关人的指纹信息。

随着生物认证系统应用数量的增长,可以容易设想,未来生物特征数据也将会是攻击者所针对的目标之一。

考虑到上述风险,我们决定评估生物特征数据处理系统(处理和存储数据的服务器以及用于收集生物特征数据的工作站)在多大程度上容易受到恶意软件攻击,因此我们分析了卡巴斯基产品在此类系统上检测到的威胁。

研究目标

安装了卡巴斯基产品,用于收集、处理和存储生物特征数据(如指纹、手的几何形状、面部、声音和虹膜模板)的计算机(服务器和工作站)。

数据截取时间

2019年第三季度。

研究结果

根据卡巴斯基安全网络(KSN)的数据,在2019年第三季度,装有收集、处理和存储生物特征数据功能的计算机中,约有37%检测到过恶意软件的存在——也就是说,约有三分之一的计算机存在被恶意软件感染的风险。

从下面的季度数据可以看出,自2019年初以来,尽管检测到恶意软件的计算机的百分比已下降6.6个百分点,但仍处于高位水平。

 image.png

图1.2019年第一季度/第三季度检测到恶意软件的生物识别处理系统计算机的百分比

威胁源

对威胁来源的分析表明,与许多需要加强安全措施的系统(如工业自动化系统、建筑管理系统等)一样,互联网是生物特征数据处理系统的主要威胁源。

image.png

图2.生物特征数据处理和存储系统的主要威胁来源,2019年第三季度

在所有生物识别数据处理系统中,来自互联网的威胁占比达到14.4%。这类威胁包括恶意网站、钓鱼网站以及基于web的电子邮件服务。

可移动设备(8%)和网络文件夹(6.1%)最常用于蠕虫分发,感染计算机后,蠕虫通常会下载间谍软件和远程访问木马以及勒索软件。

至于电子邮件客户端中的威胁,在大多数情况下是典型的钓鱼邮件(比如发货信息、支付发票、RFQ、RFP等),包含恶意网站链接或嵌入恶意代码的附件。

最主要威胁

间谍软件、钓鱼攻击中使用的恶意软件(主要是间谍软件下载器和下载器)、勒索软件和银行木马构成了最大威胁。

image.png

图3.在生物特征数据处理和存储系统上阻止的某些恶意软件类型

恶意软件类型中,5.4%为间谍软件,而钓鱼攻击中使用到的恶意软件以及勒索软件分别占到了5.1%和1.9%。

值得注意的是,银行恶意软件占比为1.5%,但这类恶意程序不太可能以窃取生物特征数据为目标,不过可以预见的是,随着生物识别技术与银行业务关联得越来越紧密,窃取金融系统生物识别数据的大规模分布式恶意软件将在不久后出现。

结论

以2019年第三季度收集到的数据来看,用于收集、处理和存储生物特征数据的计算机中有37%面临着恶意软件感染风险,其中远程访问木马占到了5.4%,网络钓鱼中使用的恶意软件占到了5.1%,勒索软件占到了1.9%,银行木马占到了1.5%。

虽然分析的样本中,恶意软件并不总是以生物特征数据处理系统为目标,但它们中的一些具有这样的技术能力,另外也可能严重影响身份验证系统的可用性和生物特征数据的完整性。

还应该指出的是,生物特征数据处理和存储系统(特别是生物特征数据库)通常部署在与其他系统共享的应用服务器上,而不是专用计算机上。换句话说,如果攻击者破坏了某一组织的使用的邮件服务器或数据库,就很可能也会在同一台服务器上发现生物特征数据库。因此,这类威胁所造成的影响不应被低估。

考虑到上述所有因素,我们认为生物识别数据安全性的现状至关重要,需要引起行业、政府监管机构、信息安全专家、社区以及公众的注意。毕竟,无论其职业,专业背景和技能如何,任何人都可能面临这种风险。

本文将以作者在K7 Security防病毒软件中发现的漏洞为例,简要讨论对这些安全产品进行漏洞研究的方法。

目标选择

俗话说,越危险的地方往往越安全,让网络攻击者们绞尽脑汁的安全产品在部分人眼里也能成为拿来利用的工具,因为这些安全产品无论是在内核(作为驱动程序)中还是在用户环境(作为特权服务)中都是受信任且有权限的,这也意味着如果攻击者以此为突破口侵入用户电脑,就能执行恶意代码或其他恶意操作。

防病毒软件存在于操作系统的低权限空间中,用户通过UI组件执行一些高权限操作,例如启用禁用、添加目录或文件排除项、扫描文件查找恶意软件等,防病毒软件必须访问操作系统对象,并对其操作(例如读取文件、注册表项、内存等)后才能进行恶意软件检测,此外无论在何种情况下,防病毒软件都要能够执行权限操作,以将系统保持在受保护状态。

攻击面

如前所述,防病毒产品位于高低权限边界的两侧,如下图所示:

Example anti-virus's interactions

让我们看看如何理解这个图。用户通过用户界面执行权限操作,命令是以某种形式的进程间通信(IPC)传递给服务进程的,在安全检查通过的情况下,由服务进程代为执行。通过服务进程,用户能够从低权限空间间接地修改高权限对象。例如杀毒软件将其配置存储在HKEY_LOCAL_MACHINE hive注册表中,该hive位于高权限空间中,需要由高权限进程进行修改。

再举一个例子,用户可以通过用户界面扫描恶意软件(如果不允许防病毒软件也就失去了意义),这么一个简单的操作,可能会出什么问题呢?由于执行恶意软件扫描是服务进程的职责,所以界面要将信息传达给服务进程才能指定要扫描的文件。它必须与文件交互才能执行扫描,即它必须在磁盘上找到文件并读取其内容。如果在读取文件数据并对其进行了扫描的过程中发现了恶意软件,并且防病毒软件没有将文件锁定在磁盘上,则可能会将恶意软件替换为指向高特权目录中的文件的符号链接

我们以notepad.exe为例具体说明,当K7杀毒软件扫描完成并且确定恶意软件后,服务进程可以删除恶意文件,但恶意软件被我们替换为了指向notepad.exe的链接,如果杀毒软件检测不到并拒绝符号链接,将毫无疑问地删除notepad.exe。这是“检查到使用时间”(Time of Check to Time of Use,TOCTOU)竞态条件错误的示例。同样,由于服务过程充当代理,来自低权限的用户能够间接修改高权限对象。

漏洞利用

此漏洞允许低权限用户通过防病毒软件设置修改(几乎)任意注册表数据,但权限较低的用户(非管理员)不能对防病毒软件设置做更改。

Admin check

绕过管理检查

为了缩小这种管理检查的执行方式,可以在再次访问设置页面时使用procmon来标识操作系统活动。当当前用户与正在记录的操作系统进行交互时,这将触发防病毒软件重新检查当前用户的管理状态。当然,由于我们的权限较低,而procmon要求的权限较高,因此在实际环境中不可行。但是由于我们控制了测试环境,因此可以在有权访问管理员帐户的情况下允许procmon运行,将promon设置为由进程K7TSMain捕获用户界面进程执行的活动。

procmon%20filter

当procmon开始记录时,尝试访问设置页面将触发procmon立即显示结果:

procmon%20admin%20check

可以看出,防病毒软件将管理检查存储在AdminNonAdminIsValid中的注册表中,即“Event Properties ”,该值将显示0表示禁止非管理员用户。

既然已经知道在哪里执行检查,下一步就是绕过它。procmon显示用户指示的进程在低权限空间中运行,而“integrity”为“medium”表示我们拥有该进程。如果它不受保护,我们只需钩住RegQueryValue函数并修改返回值即可。

Attaching%20to%20K7TSMain

使用x32dbg连接到K7TSMain.exe进程的尝试是可行的,当我们再次访问设置页面时,RegQueryValueExA上的断点已被设置。

Triggering%20RegQueryValueExA%20breakpoint

单击设置页面时,x32dbg捕获断点。要查询的值名称为ProductType,但我们需要AdminNonAdminIsValid,继续操作将触发下一个断点:

Breakpoint%20on%20AdminNonAdminIsValid

现在我们可以看到AdminNonAdminIsValid。修改返回值能让函数一直运行直到返回,但调用函数看起来像RegQueryValueExA的封装器:

RegQueryValueExA%20wrapper%20function

因此再次继续直到返回显示执行检查的函数:

Admin%20check%20function

这里有一个对值1的检查,但是注册表数据当前返回的值是0。这决定了这个函数的返回值,所以我们可以改变[esp+4]或改变返回值来绕过检查:

Bypass%20admin%20check

拦截进程间通信

在Windows中有多种进程间通信方法可用,如邮件槽、文件映射、COM和命名管道。我们必须弄清楚在产品中实现了什么才能分析协议。一种简单的方法是使用API Monitor来记录进程发出的选择函数调用,我们可以看到K7 杀毒软件对命名管道函数的引用:

API Monitor

注意,调用模块是K7AVOptn.dll,而不是k7tsm .exe。如果我们看一下通过TransactNamedPipe传输的数据,可以看到一些有趣的信息:

Extension names

首先,它看起来像是扩展名列表(.ocx,.exe,.com),用|分隔,其中有些具有通配符匹配。这可能是扫描恶意软件的扩展列表。如果我们查看防病毒软件存储配置的注册表,则可以在RTFileScanner项的ScanExtensions值下看到类似的内容:

image

继续往下看,其中一个包含一些非常有趣的数据:

image

看起来杀毒软件似乎是通过指定(特权)注册表项和它们的值的完整键路径来应用值。下一步显然是查看更改其中一个键及其值是否可以使用。这可以通过在x32dbg中的TransactNamedPipe函数上进行断点来完成:

TransactNamedPipe

在这里,找到第二个参数中的输入缓冲区,并修改数据以在HKEY_LOCAL_MACHINE hive中添加或更改键,如下所示:

Changing registry keys and values

如果可以更改此注册表项的值,则将强制高特权进程加载AppInit_DLL中列出的DLL,即我们控制的DLL。要启用此功能,还必须将LoadAppInit_DLLs值设置为1(默认情况下为0)。结果:

Modified registry values

触发有效载荷

你可能已经注意到,注册表项在Wow6432Node内,它是注册表的32位副本(这款产品是32位的),因此Windows将自动重定向注册表更改。在64位Windows中,进程通常是64位的,因此通过appinit_dll加载有效负载DLL的可能性不大。一种可靠的方法是利用杀毒软件的特权组件。最简单的方法就是重新启动计算机,重新加载所有防病毒进程,这种方法并是很实用。在UI上单击,会显示更新函数在NT AUTHORITY\SYSTEM用户下运行K7TSHlpr.exe:

K7TSHlpr update

由于它是32位应用程序,因此Windows会将AppInit_DLLs DLL加载到进程空间中。

image

使用system(“cmd”)作为有效载荷,将通过UI0Detect服务在NT AUTHORITY\ system帐户上下文中提示用户一个交互式会话:

UI0Detect

选择查看消息将显示以下内容:

Interactive session

接下来我们就获得了root权限。自动利用过程请详见GitHub