freeBuf
主站

分类

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

特色

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

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

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

FreeBuf+小程序

FreeBuf+小程序

针对信用卡的PIN码绕过攻击
2023-07-20 19:00:28
所属地 北京

本研究展示了如何利用完整性保护缺失(missing integrity protection)来绕过万事达卡交易的PIN码验证。为了进行概念验证,研究者构建了一个PoC安卓程序,可以修改未受保护的银行卡源数据,包括与持卡人验证相关的数据。通过该PoC程序,可以欺骗现实世界的终端,将 PIN 码验证降级为无持卡人验证或(纸面)签名验证。该研究的调查结果已向供应商披露,并已建议发卡机构拒绝任何离线数据身份验证失败的交易,相关代码已开源:https://github.com/EMVrace/auth-failure-attack

0x01 简介

EMV(Europay, Mastercard, Visa)是现代智能卡支付的标准协议,全球流通着超过90亿张EMV卡。由于其重要性,该协议受到深入且持续的研究,最近的研究表明该标准的非接触式版本容易受到各种严重攻击。

EMV交易的安全性依赖于支付设备(例如信用卡/借记卡、智能手机或智能手表)对交易数据进行离线和在线验证的加密计算。在在线情况下,终端使用与发卡机构共享的对称密钥生成MAC,并使用该MAC向发卡机构请求对交易进行授权。会话密钥用于生成MAC,并通过会话密钥与发卡机构进行通信。在离线情况下,终端使用PKI验证银行卡的RSA签名,其中根CA证书从终端的内部数据库检索。

如果这两种身份验证机制中的任何一种失败,人们通常期望终端中止交易。然而,实际情况并非总是如此。例如,万事达卡规范(https://www.emvco.com/wp-content/uploads/documents/C-2-Kernel-2-v2.10.pdf )允许有效执行,在这种情况下,如果离线验证过早失败,终端就不需要中止或拒绝交易,而是忽略交易期间后续的离线验证失败。这一设计的重要性在于,它允许在未引起注意的情况下修改数据,且仅在离线验证时进行检查。

本文描述了针对Mastercard和Maestro卡的一种新型攻击,该攻击利用了无需离线数据身份验证(ODA,Offlfline Data Authentication)的执行方式。该攻击允许修改所有未包含在MAC生成中的数据,并用于在线授权。这些数据包括与持卡人验证过程相关的信息,例如持卡人验证方法(CVM,Cardholder Verifification Method)列表,该列表通知终端卡片支持的CVM方法。对该列表进行了两个修改,这些修改破坏了持卡人验证过程。

  • 修改①:禁用信用卡上的所有持卡人验证功能(即删除列表)。

  • 修改②:将PIN验证方法替换为纸质签名验证方法。

这两种修改都会导致终端错误地认为该卡不支持PIN码验证。因此,进行这些修改的攻击者可以使用被盗的信用卡进行大额购物,而无需输入卡片的秘密PIN码。

image

这种攻击是通过中继架构使用两部智能手机以中间人(MITM)的形式实施的,如上图所示。实际上,攻击者将其中一部手机放置在目标用户的信用卡附近。例如,这可能是因为目标用户丢失了信用卡,攻击者偷走了信用卡,或者攻击者可以简单地靠近目标用户。攻击者将第二部手机出示给终端,也可能出示给收银员。如下图所示,将该手机伪装成正在运行移动支付应用程序。两部手机转发目标用户信用卡与终端之间交换的数据,并对其进行修改,以便终端在不要求输入PIN的情况下接受付款,即使支付金额超出了通常需要PIN码的限制。

image

除了利用身份验证漏洞的中间人攻击,攻击者还通过修改②利用了与纸质签名方法相关的用户界面(UI)漏洞。在这种方法中,当信用卡与终端成功交互后,持卡人被要求在购买收据上进行签名。这个收据可以是物理收据,也可以是显示在触摸屏上、可用电子笔进行签名的数字收据。然后,收银员根据支付设备上的签名进行验证。支付设备可以是实体卡,在这种情况下,签名位于其背面;如果适用,也可以是电子设备,在这种情况下签名显示在其屏幕上,如上图所示。

拥有丢失或被盗信用卡的攻击者无法伪造信用卡上的手写签名。然而,对于基于智能手机的支付,他们只需展示带有持卡人姓名和签名的虚构支付屏幕即可伪造签名。这给攻击者提供了选择。不论使用哪种签名方式(手写与数字键盘),以及是否需要持卡人的身份验证,都要经过收银员的验证。因此,本研究的攻击不仅利用了EMV协议中的设计缺陷,还利用了数字支付方法中的用户界面漏洞。

通过修改②进行的攻击,攻击者展示了如何利用机制从一种环境(例如物理签名在塑料银行卡背面)转移到另一种环境(例如缺少签名的签名图像),从而导致漏洞的利用。

0x02 背景

EMV生态系统涉及多个利益相关者。其核心是支付网络(如万事达卡和VISA),为从持卡人账户到商户账户的支付交易提供基础设施。金融机构(通常是银行)可以通过发行符合EMV标准的卡片成为该生态系统的一部分。销售商品和服务的商家可以运营符合EMV标准并连接到支付网络的支付终端。

为了保护交易并确保网络只接受合法的交易,银行采取了各种安全措施。本研究重点关注EMV通信协议及其元素的安全属性。为确保银行卡、支付网络和发卡银行之间的通信安全,发卡机构建立了一个全球分层的公钥基础设施(基于RSA密钥)。支付网络接受一组根证书颁发机构为发卡机构提供证书,而发卡机构则提供存储在其发行的银行卡上的证书。终端可以通过拥有根证书颁发机构的公钥来验证卡证书的正确性,并验证其是否为合法卡。

除了用于离线验证的非对称密钥外,银行卡还拥有仅与发卡行共享的对称密钥。最后但同样重要的是,持卡人使用PIN码、手写签名或智能手机进行验证,以确保每张银行卡的合法使用。

银行卡支付系统的另一个安全要素是欺诈检测。例如,这可能涉及对客户行为进行分析和异常检测。欺诈检测机制构建了额外的防御层,并可以验证技术上合法的交易。

A. 协议

EMV支持六种提供商特定的非接触式协议,这些协议定义了所使用的数据元素以及发卡机构、终端和集成电路卡(ICC,Integrated Circuit Card)之间数据交换的方式。除了必须支持的六种不同支付网络外,还需要特定于发行方的数据元素,具体取决于ICC的发行方。

集成电路卡和终端之间使用一系列命令-响应进行通信。终端发送命令,在集成电路卡上进行处理,并由ICC生成相应的响应。这些命令和响应作为应用协议数据单元(APDU,Application Protocol Data Unit)发送。

ICC上的数据存储在称为文件的信息项中,并以树形结构在ICC上进行排序。发卡机构负责确保ICC上的数据具有正确的格式。终端可以使用SELECT命令结合相应的文件名来访问文件。使用READ RECORD命令可以读取文件中的记录。一笔交易涉及以下步骤:

1)应用选择:终端和ICC之间就EMV非接触式协议进行协商,该协议作为所谓的内核实现在终端上运行。

2)同步:终端和ICC协商选项,例如要使用的持卡人验证方法(CVM),并且它们交换成功完成交易所需的信息,如发卡机构请求的数据元素。

3)持卡人验证:终端验证购买者是否为持卡人。

4)认证和授权:终端和银行卡采取行动来决定是否应拒绝交易,或者是否需要进一步的验证方法,例如离线数据认证或在线授权。

(1)应用选择

终端通过发送选择字典定义文件(DDF,Dictionary Definition File)的SELECT 2PAY.SYS.DDF01命令来启动交易,DDF是集成电路卡上文件树形结构层次中的一个元素。合法ICC的响应将包含支持的应用程序列表,这些应用程序由其应用程序标识符(AID,Application Identifier)进行标识。

在终端端,接收到的AID(或AID列表)将触发所谓的内核激活。该步骤也可以理解为选择当前交易所使用的协议,以便在ICC和终端之间进行通信。支付系统的 EMV 非接触式规范说明书(https://www.emvco.com/terms-of-use/?u=wp-content/uploads/documents/EMV-Contactless-Book-A-Architecture-and-

# 支付安全 # 身份欺诈 # 信用卡安全 # 身份验证绕过漏洞 # pin码
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录