博客 DomainTools研究

棘手的情况第1部分:信用卡盗刷的普遍性

介绍信用卡Skimmers

焦糖公司标志和品牌的一个变体,可能是由威胁行动者“马扎法克”创造的。

图1:CaramelCorp标志和品牌的一个变体,可能是由威胁行动者“Mazafaker”创建的。

在受感染的电子商务网站上运行的信用卡扫描器继续威胁着金融机构、在线商家和消费者,导致欺诈和受害的周期可能持续数年。即使及时进行检测和补救,被盗数据在网络犯罪社区中被利用和传播的方式(通常在受害者意识到他们的支付细节被非法获取之前很久)只会加剧这个问题。

Skimmers使用看似良性的JavaScript部署在一个合法的,但受到损害的电子商务网站上,“窃取”支付表单数据,并将其发送到恶意主机,然后将表单数据提交给同一电子商务网站,让受害者毫不知情。

事实证明,略读是一种极其有利可图的网络犯罪形式。这一成功催生了一个以“撇脂即服务”提供商为核心的专业地下经济。这些服务提供了有抱负的网络犯罪分子窃取支付表单数据所需的一切——撇码器脚本、部署撇码器的方法,以及跟踪和验证撇码活动的管理面板。浏览服务的重要性不可低估。曾经存在的技术壁垒已经不复存在,这使得浏览变得更加容易。

信用卡窃贼构成的威胁说明了对手的创造力、技术执行力和人类行为之间的相互作用,即在日常活动中利用信任和对安全的感知。

由于略读依赖于运行恶意代码的合法电子商务网站,用户和管理员通常很难发现这些攻击。

即使是最谨慎的用户也经常会在熟悉的网站上放松警惕。与此同时,撇脂攻击背后的威胁行动者也犯了类似的错误。这是这里的情况。

本系列探讨了一些晦涩但优质的服务,这些服务使网络犯罪和在线欺诈得以蓬勃发展和扩大。在这里,我们将探索一个名为CaramelCorp的组织销售的鲜为人知但值得注意的“焦糖”撇片即服务。

一个日益严重的问题

考虑到与更复杂的攻击载体相比,这种攻击的部署相对容易,而且这种攻击通常具有很高的成功率(特别是在大容量卖家的网站上运行时),浏览活动毫不意外地继续受到欢迎。几个因素促成了这一趋势,包括:

  1. 大量易受攻击的电子商务网站很容易成为攻击目标,它们很容易被集体识别,而且往往缺乏专门的安全团队。
  2. 恶意JavaScript注入相对容易,无论是通过编程完成还是使用网站管理面板添加,以及使用网络犯罪社区推广的各种工具和服务的其他技术。
  3. 即使商家及时发现并补救此类攻击,受影响的大批量卖家也可能获得可观的投资回报,这抵消了运行此类操作的风险。
  4. 与复杂的欺诈相比,利用和卸载被盗数据是一种“廉价而简单”的努力,但也可以为高价值、有针对性的欺诈操作提供基础。
  5. 掠瞄行动是灵活的,适应反制防御者的探测方法,包括彻底的混淆和反分析战术,并经常批量部署掠瞄器。

这些略读活动也可以从一个集中的面板进行管理,允许攻击者监控和调整他们的活动,以实现利润最大化。此外,“刷单即服务”使用的集中式管理基础设施可能意味着被盗的支付数据最终落入几个犯罪分子手中,而他们可能并不知情。

焦糖回收船

焦糖管理面板发现在caramelcorp[.]cc。

图2:caramelcorp[.]cc的焦糖管理面板。

CaramelCorp是一家俄语信用卡刷卡服务公司,在网络犯罪论坛上占有重要地位。他们似乎仔细筛选潜在客户,不愿与非俄语人士互动。像其他谨慎的网络犯罪服务,CaramelCorp似乎使用流利和熟悉的现代惯用语言和文化参考作为初步审查机制.此外,焦糖公司通常拒绝向没有经验的持卡人出售许可证,可能是为了减轻因客户不称职而引起的潜在风险。这种不情愿可能是Caramel避免安全供应商和研究人员严格审查的原因之一。然而,他们所谓的选择性似乎与这次调查中发现的一些文物相矛盾。

如果焦糖公司同意出售,终身订阅焦糖的价格为2000美元。他们的营销声称有许多有价值的功能来支持信用卡浏览活动。这些功能大致分为四组:(1)部署,(2)收集,(3)管理,(4)反检测措施。同样值得注意的是它们的数据处理和泄露的灵活性。代码注释表明不止一个开发人员在开发Caramel skimmer。

推销焦糖撇脂机的俄语帖子。

图3:推广焦糖撇脂器的俄语帖子。

一个宣传CaramelCorp的威胁分子使用了“letsz0ck3r”的名称,除了在Telegram上的存在外,他还在一些俄语网络犯罪论坛上有重要的存在。这种行动者的网络犯罪活动不仅限于刷信用卡。

“letsz0ck3r”的概要文件头。

图4:“letsz0ck3r”的概要文件头。

论坛后卸载花费和/或低价值帐户凭证给其他论坛成员。

图5:论坛帖子卸载花费和/或低价值帐户凭证给其他论坛成员。

部署

CaramelCorp的营销材料中包括未经证实的说法,称Caramel可以绕过Akamai、Cloudflare和Incapsula等公司的某些服务。此外,CaramelCorp声称可以提供易于部署的网关来接收浏览数据,并能够监控它们的停机时间。此外,CaramelCorp还提供了针对几种电子商务内容管理系统的JavaScript略读方法的快速入门指南。

集合

像其他现代信用卡skimmer一样,Caramel使用setInterval()方法,无论目标是否提交表单数据,该方法都会每秒调用“send”函数。该方法确保即使是部分完成的表单字段也可以进行数据泄露。

从本质上讲,即使是那些决定在网站结账流程中不购买某件商品的目标用户,也会有一部分支付数据丢失给“扫码器”的运营商。

CaramelCorp还声称,他们的撇码器可以使用各种文件类型来帮助逃避检测。

政府

管理面板允许监控和管理受影响的在线商家以及性能跟踪。CaramelCorp还声称提供易于部署的网关来接收浏览数据,尽管他们似乎只提供了一个操作和基本的配置指南。此管理面板通过消除不必要的代码来最小化攻击面,但实际情况可能并非如此。

侦测措施

CaramelCorp声称他们混淆的JavaScript是无法被大多数扫描器检测到的。为了实现这些要求,焦糖公司推荐合法的,尽管被严重滥用的,JavaScript混淆器工具

一个小失误

作为一个React应用程序,CaramelCorp的管理面板包含了几个与身份验证相关的技术失误,以及他们为未经身份验证的访问者选择了哪些静态内容。也许其中最有趣的是CaramelCorp选择在他们的代码中包含的注释。同样值得注意的是表单字段、对多个CMS平台的支持以及这个略读器如何处理数据。

打开包含caramelcorp[.]cc的JavaScript和源地图文件的目录。

图6:包含caramelcorp[.]cc的JavaScript和源映射文件的打开目录。

一个公开的目录,包含一个源地图文件,也显示了焦糖的快速入门指南的至少一部分,以及他们的略读设备的一瞥。

打开包含caramelcorp图像资产的目录。]cc,包括代码截图。

图7:包含caramelcorp图像资产的打开目录。]cc,包括代码截图。

一个额外的开放目录显示了包含在这个快速入门指南中的图像,包括他们声称是一个成功部署的焦糖撇脂在一个受损的尼日利亚电子商务商店。

在焦糖公司发现的截图。]cc打开目录,据称显示了一个正确部署和工作的skimmer部署,似乎是一个受到损害的尼日利亚电子商务网站。

图8:在焦糖酱中发现的截图。]cc打开目录,据称显示了一个正确部署和工作的skimmer部署,似乎是一个受到损害的尼日利亚电子商务网站。

CaramelCorp还上传了一张他们推荐的JavaScript混淆器设置的截图,如下所示。包括这样的截图表明,他们的快速入门指南侧重于支持技术不太熟练的客户。

一个部分截图的首选JavaScript混淆器工具设置隐藏焦糖卡撇。

图9:用于隐藏焦糖卡略读器的首选JavaScript模糊工具设置的部分截图。

JavaScript Obfuscator工具提供了几种使检测和分析更加困难的转换,包括字符串数组旋转、数组变换、字符串数组编码、unicode转义排序、控制流扁平化和死代码注入。最终,这样的功能——尽管很健壮——使得检测和分析更加困难,但它并不一定会阻止它。当威胁行为者特别建议如何将此类工具与信用卡扫描器结合使用时,情况尤其如此。

CaramelCorp管理员还上传了与本报告中分析的JavaScript截图相匹配的截图,特别是baseURL https://caramelcorp[.]cc/api。

由CaramelCorp管理员上传的代码片段截图。

图10:CaramelCorp管理员上传的代码片段截图。

一个代码片段显示了一个mathBA和mathCC函数的示例,Caramel skimmer似乎是围绕这些函数构建的。

图11:一个代码片段显示了一个mathBA和mathCC函数的示例,Caramel skimmer似乎是围绕这些函数构建的。

CaramelCorp似乎推荐了一种极其简单的部署方法:访问CMS管理面板并手动添加脚本。他们的快速入门指南的一部分包括一个Magento管理员面板的截图:

屏幕截图显示,如果Caramel客户可以访问Magento管理员面板,他们应该在哪里添加撇码脚本。快速入门指南似乎主要针对初学者,不包含关于编程代码注入的信息。

图12:屏幕截图展示了如果Caramel客户可以访问Magento管理员面板,他们应该在哪里添加撇码脚本。快速入门指南似乎主要针对初学者,不包含关于编程代码注入的信息。

焦糖源地图和Javascript文件的分析揭示了大量编码的西里尔字符文本,特别是俄语。翻译这篇文章到英语揭示了如何部署焦糖撇脂指南。

编码西里尔字符文本的截图。

图13:编码西里尔字母文本的截图。

我们已经在下面列出了这个快速入门指南的部分内容以及英语翻译。例如,当客户试图使用Magento管理员面板手动部署浏览脚本时,CaramelCorp包括一个严厉的警告:

“НИВКОЕМСЛУЧАЕНЕСТАВИТЬСКРИПТВИСХОДНОМВИДЕ!МОЖЕТ ПРИВЕСТИ КМОМЕНТАЛЬНОМУ ДЕТЕКТУ。”翻译过来就是:“无论如何不要把脚本放在源代码中!”可能会立即被发现。”

焦糖撇脂快速入门指南的其他值得注意的部分包括:

“ФункцииmathCCи数学ваответственнызасозданиянужногомассива,которыйбудетотправленнасервер。Почтивсегдавформеоплатына线上购物используютсятакиенаименованияidкак计费:firstname……Длябиллингаидляоплатыauthorizenet_cC_numberитд。ВситуациикогдаполейнесовпадаютнадотолькопоменятьимяВнутрискобках。”“函数mathCC和mathBA负责创建将发送到服务器的所需数组。在Magento支付表单中,几乎总是使用诸如billing:firstname…这样的id名。对于账单和支付,使用authorizenet_cc_number等。在字段不匹配的情况下,您只需更改括号内的名称。”

CaramelCorp详细阐述了mathCC和mathBA函数的作用:

“ункцияѕеnd,вызываетmathCCи数学вадлясохраненияданныхв2переменныхикодируетсявbase64дляотправкинасервер。Сервердекодируетэтоттокенвнужныйформатдлясохранениявбазеданных。send函数调用mathCC和mathBA将数据存储在2个变量中,并通过Base64编码将其发送到服务器。服务器将此令牌解码为适当的格式,并将其存储在数据库中。”

为了正确部署,CaramelCorp提醒客户将撇脂网关更改为客户控制的网关:

“Дляуспешнойотправкинадопоменятьтолькоссылкувпеременной网关”。“要成功发送,你只需要改变gateway变量中的链接。”

关于购买域名和主机,CaramelCorp有以下建议:

“Рекомендуетсябратьдоменсwww.epik.ComВыборименидоменаважендляпривязкиегокскрипту、гдебудутотсылатьсязапросы…ПрипокупкедоменанезабываемкупитьсиSSLертификат,егоможнокупитьпоадекватнымденьгамнаnamecheap.comТакжедляПОДНЯТИЯГейтанамнужениVPS。Ha bitlaunch。ioконфигураторПозволяетарендоватьпохорошейценеприватныйсерверсовсеминужныминастройки。“建议从www.epik[.]com网站获取域名。”域名的选择对于将其链接到发送请求的脚本非常重要……在购买域名时,不要忘记购买SSL证书。你可以在namecheap[.]网站上以可接受的价格买到它。我们还需要一个副总裁来提升大门。(Bitlaunch)可以让你以合理的价格租用一个拥有所有必要设置的私人服务器。”

我们估计,CaramelCorp和类似的服务将继续扩大他们的客户群,销售工具和能力,以降低高效网络犯罪的进入门槛,尽管他们的营销宣传表明情况并非如此。

附录

焦糖略读器针对的字段示例,跨越焦糖JS文件中的多个CMS平台:

"计费:城市" "计费:country_id" "计费:firstname" "计费:lastname" "计费:postcode" "计费:region_id " "计费:street1" "计费:telephone " "cc_owner " "input-payment-address-1 " "input-payment-city " "input-payment-country " "input-payment- phone " "input-payment-zone " "traycheckoutapi_cc_owner " " authorizenet_cc_cid " " authorizenet_cc_number " " authorizenet_expiration_yr " " authorizenet_expiration " "计费:country_id" " cc_cvv2 " " cc_number " " checkout-step-review " " expiration "" traycheckoutapi_cc_cid " " traycheckoutapi_cc_number " " traycheckoutapi_expiration_yr " " traycheckoutapi_expiration " " traycheckoutapi_expiration "