9月6日,英国航空公司( British Airways,以下简称英航)发布声明称因遭黑客攻击从而导致其乘客数据被盗。在BBC的采访中,英航指出,经初步调查,约有38万乘客数据在此交数据泄露事件中受到影响,这些被盗数据信息包括个人基本信息和付款记录,但不包括个人护照信息。
随后,英航在其网站上发表了一篇文章,解释了该事件的相关细节和一些乘客担心的问题,该篇文章涉及的技术细节较少,但包括了以下信息:
通过英航官网进行付款操作的乘客相关信息受到影响
通过英航手机APP应用进行付款操作的乘客相关信息受到影响
受影响的付款乘客时间段大约为2018年8月21日晚22:58至2018年9月5日晚21:45
英航在文中表明,攻击者从其官网和移动应用程序中窃取了以上乘客数据信息,但并未提及更多数据库或服务器被入侵的有价值线索。因为英航的被盗信息仅与乘客的付款记录相关,考虑到信用卡数据窃取的前科,我们对臭名昭著的网络犯罪集团Magecart有了怀疑。
在此之前,英国老牌票务网站Ticketmaster就报告过一起与英航类似的数据泄露事件,之后,我们RiskIQ调查清楚了整个事件。因为我们可以对涉事方官网进行网页抓取和互联网行为分析,因此我们团队可以扩展涉事时间段,发现比一些公开报告更多的被攻击网站。本文中,我们将对9月6日公开的英航数据被盗事件,进行前后15天的时间线扩展调查。
Magecart: 一个臭名昭著的网络犯罪集团
自2016年以来,RiskIQ对进行网络信用卡窃取的组织Magecart进行了多次报道。传统上来说,犯罪份子会使用一种卡片读取器的东西,隐藏附加在我们平时用到的ATM机、加油站和其它刷卡设备中,以此来窃取用户信用卡信息,并进行卡片盗刷或个人信息转卖。而现在,Magecart使用的是各种在线电子窃取方式来实现用户信息盗取。
Magecart会对一些在线用户支付网站注入脚本,或入侵一些支付相关的第三方供应商网站,以此来窃取用户数据。近期,Magecart攻击者就通过入侵了一个第三方功能应用,然后在英国票务网站Ticketmaster上植入了一个在线的信用卡读取脚本,从而导致了Ticketmaster大量数据泄露。证据表明,在Ticketmaster之后,Magecart把攻击目标转向了英国航空公司(British Airways)。
英航数据泄露事件调查
网站用户信息窃取
调查刚开始,利用我们自己的Magecart检测模式,我们把Magecart和英航数据泄露事件进行了适配关联。对我们来说,Magecart的攻击非常常见,以至于在调查刚开始,几乎每小时都能响应到Magecart向英航网站植入的卡片读取代码。
对RiskIQ的分析后端来说,其页面抓取规模是一项值得肯定的能力,我们每天的网页抓取量会达到20亿页,并能自动累积,另外由于很多现代网站倾向于使用JavaScript来实现架站服务,所以,我们只需加载英航公司网站的20个左右脚本和30个左右的预订子页面就可以了。30个页面虽然不多,但其中大多都是缩小的有数千行代码的脚本页面。
在该事件分析中,我们决定集中精力识别英航公司网站上的每个脚本,验证网站上的所有独特脚本,并在该过程中检查脚本的各种变化行为。最终,我们捕获到了其中一个脚本modernizr-2.6.2.min.js的变化行为,根据抓取记录显示,该脚本是Modernizr JavaScript库2.6.2的一个更改版文件,英航公司网站的乘客行李认领页面会加载该脚本。modernizr-2.6.2.min.js的加载流程如下:
该脚本明显的变化在其底部代码,这是攻击者惯用的修改JavaScript文件,实现功能破坏目的的技术。其中一些小的脚本标签引起了我们的注意(红框部分):
之后,我们在英航公司网站服务器发送的“服务器头信息”中发现了更多证据,其中的 ‘Last-Modified’ 表明了文件静态内容的最近一次修改时间。根据我们的抓取记录显示,正常的英航公司网站modernizr-2.6.2.min.js文件的头信息中,‘Last-Modified’日期为2012年12月18日。
但在英航公司当前网站的,经过修改的恶意modernizr-2.6.2.min.js文件中,其头信息中的 ‘Last-Modified’ 时间戳与英航调查后给出的数据泄露时间点一致-2018年8月21日:
以下是恶意的modernizr-2.6.2.min.js脚本文件图示,它只有22行JavaScript代码,但却让38万乘客数据遭到窃取:
实际来说,该脚本非常简单实用,文件中的每个元素加载完成之后,将会进行以下操作:
用以下回调代码把mouseup和touchend事件捆绑到submitButton按钮上:
用id为paymentForm的形式将数据序列化到一个字典中
用id为personPaying的形式把页面条目序列化,并归类为paymentForm信息,并归入之前的同一个字典中
用这些序列化数据制作出一个文本字符串文件
用JSON形式把文件数据发送到攻击者架设的baways.com网站
在实际操作中,mouseup和touchend事件代表了在线用户在网页或手机APP中,点击或提交了某个按钮操作,然后放开鼠标或离开手机屏幕之后的操作。也就是说,一旦用户点击了英航公司网站或APP进行付款按钮提交之后,其付款表单中的信息将会被恶意代码提取,会复制一份发送到攻击者的架设服务器baways.com中。
与我们过去对Magecart组织的行为分析相比,这种攻击是一种简单极具针对性的操作。其中植入的信用卡窃取器代码能完全与英航公司网站付款页面适配生效,可以看出,Magecart没有采用常规的植入代码,对该网站的入侵攻击完全有着精心的考虑。
经调查发现,攻击者在此次攻击中使用的网络架构,完全是为英航公司独身打造部署的,它把恶意脚本与付款功能进行了完美融合,大大避免了被发现怀疑的可能。我们在攻击者架设的服务器 baways.com上发现了一些证据和废弃路径,该服务器托管在罗马尼亚IP地址89.47.162.248上。但实际上,该IP属于立陶宛VPS供应商Time4VPS所有,攻击者使用SSL证书进行服务器登录。更有意思的是,为了看起来像个合法的服务器,攻击者未用免费的LetsEncrypt 证书,而是使用了一个付费的Comodo证书。
这个Magecart使用的付费证书是8月15日颁发的,间接表明了,Magecart攻击者可能在8月21日前的很长时间范围内就能入侵控制英航公司网站了。由于对自身网络资产没有明确的识别判断,英航公司最终没能检测到这种网站入侵攻击。
移动APP的用户数据窃取
在英航公司的安全公告中,它强调网站渠道和移动应用APP渠道的付款用户都受到了信息泄露影响。我们识别出了攻击者对网站用户数据的窃取方式,那么对移动端的窃取方式又是什么呢?我们先来看看英航公司的官方Android应用APP:
通常,开发者在开发一个移动APP时,会预留一个空白的shell区以便从其它地方把内容加载进来。在这里的英航APP中,有一部份APP组件是原生的,但大部份功能都是从英航官网加载过来的。该移动APP中应用了一组不同的通讯主机与英航官网服务交流:
www.britishairways.com (英航官网)
api4-prl.baplc.com (英航的一个API服务端)
api4.baplc.com (英航的另一个API服务端)
使用API的目的在于,APP为了在UI上进行快速的数据更新,但要进行一些搜索、预订和管理航班操作,APP就得调用英航官网服务了,比如调用英航官网的一个路径如下:
http://www.britishairways.com/travel/ba_vsg17.jsp/seccharge/public/en_gb
该调用页面功能为,乘客选择了不同国家不同机场之后的费用请求,它显示的页面如下:
现在,我们来认真看看这个页面的源代码,可以发现一个非常有意思的地方-该页面和英航官网的组成一样,都是由CSS和JavaScript组件构成的,也就是其设计和功能与英航官网完全类似。关键是这里仍然被植入了之前我们分析的恶意脚本modernizr-2.6.2.min.js,攻击者就是利用这个脚本再次实施了对移动APP用户的数据窃取:
值得注意的一点是,Magecart攻击者利用了之前的 touchend 回调事件实现了数据窃取,所以,本质上来讲,这种攻击简单高效也非常实用。
总结
正如在以上攻击事件分析中所看到的那样,Magecart通过订制的,有目的的网络架构资源,与英国航空公司网站功能完美融合,伪装得尽乎天衣无缝。目前,我们无法得知攻击者在英国航空公司网站服务器上的所窃取的具体内容,但他们具备网站资源文件的修改权限是相当可怕的,而且攻击者在真正数据窃取之前就可能已经对网站形成了入侵,这对英航存在漏洞的网络资产来说是个警惕。
自2015年以来,RiskIQ就一直对Magecart组织的攻击和发起了预警,也将继续跟踪报道其可能的攻击事件。Magecart对英航的攻击不像对票务网站Ticketmaster那样的第三方攻击,但却引发了对当前一些支付安全问题的质疑。收集应用个人敏感财务数据的公司应该好好考虑一下自身的信息安全形式,当然还要对用户提交的支付信息进行严格控制。目前,针对英航乘客来说,最好的方式就是重新从其它银行办理一张新卡。
*参考来源:riskiq ,clouds 编译,转载请注明来自 FreeBuf.COM