如何从非接触式卡和Apple Pay窃钱

如何从口袋里的非接触式卡中偷钱?PayPass和Apple Pay的安全性如何?

本文以真实的POS终端,PayPass / payWave卡和具有Google Pay / Apple Pay功能的电话为例,探讨了非接触式支付欺诈的流行神话和场景。

涵盖的主题:

  • 将POS终端机放在口袋里真的有可能偷钱吗? -我们将尝试使用真实的POS终端和实际情况下的支付卡从头到尾完全重现这种欺诈情况。
  • 物理和虚拟Apple Pay卡有什么区别? -实体卡和Apple Pay令牌如何链接,以及为什么Apple Pay比普通卡安全得多。
  • 我们使用硬件NFC嗅探器(ISO 14443A) -我们将使用HydraNFC设备在POS终端和卡之间拦截数据。 考虑可以从拦截的流量中提取哪些敏感数据。
  • 我们分析EMV协议 -卡与POS终端交换什么数据,使用的请求格式,防止欺诈和重播攻击的机制。
  • 我们研究无卡情况下的操作(CNP,MO / TO) -实际上在什么情况下(!),您可以从卡中窃取资金,只读取详细信息而无需联系,这是不可能的。

注意!

本文通过欺诈者的眼光,从头到尾详细描述了欺诈的假想方案,以涵盖所有培养神话和错误的方面。 尽管标题具有挑衅性,但本文的主要结论是, 非接触式付款非常安全,对其进行攻击费时又无利可图

本文中的材料仅供参考。 所有舞弊现场都是在有关各方同意的情况下上演和执行的。 从卡中扣除的所有钱都退还给其所有者。 盗窃卡上的钱是刑事犯罪,应受到法律制裁。

如何运作?


首先,请考虑以下基本概念:使用支付卡进行的任何货币转移都只能通过连接到支付系统的中介(例如VISA或MasterCard)进行。 与个人之间的转帐不同,从银行卡中借记的钱仅适用于与银行达成购买协议的法人实体(商人)。


通过POS终端付款时的交易阶段

上图显示了通过POS终端的经典付款方案。 当在结帐处付款后,您正在等待终端上的确认时,就会发生此操作序列。

  1. 买方申请/持有/将卡插入POS终端;
  2. POS终端通过互联网将数据发送到收单行;
  3. 收单银行通过国际支付系统(MPS)与发卡银行联系,并询问特定的持卡人是否可以为购物付款;
  4. 开证行确认或拒绝购买,然后打印单据(第二张支票)。

该方案也有例外,例如离线交易,我们将对其进行进一步考虑。 另外,如果收款银行和发卡银行是同一银行,则在同一银行内执行步骤2和4。

卖方 (商人)-提供商品或服务的个人或组织

收单行是通过银行卡为卖方提供付款接受服务的银行。 在这家银行中,通常会有一个卖家的银行帐户,将从卡中借记的钱记入贷方。

发卡银行- 发卡的银行。 它包含持卡人的帐户,从该帐户中扣除钱款。

国际支付系统 (MPS)是世界各地银行之间的国际中介系统,它使银行之间可以进行结算,而无需与每个银行分别达成协议。 连接到铁道部的所有银行都同意按照相同的规则进行工作,从而大大简化了互动。 例如,Visa,万事达卡,银联,美国运通, MIR (否,MIR在国外不起作用)。

持卡人 -与发卡银行订立了卡服务协议的人。

Apple Pay或Google Pay的普通卡有什么区别?


由于流程的不可理解性,将银行卡链接到Apple Pay或Google Pay系统的过程经常会引起误解,即使在IT专业人员中也是如此。 我听说过许多关于这项技术的神话。

流行的Apple Pay神话


  • 卡已复制到手机
    事实并非如此,微处理器卡包含一个受保护的存储区,该存储区具有在发行卡后无法提取的密码信息。 因此,根本无法以任何方式复制芯片卡。 公平地讲,必须说这种攻击是可能的,但其代价超过了本文大多数读者一生所花费的总金额。
  • 付款期间手机每次连接到Internet
    在通过POS终端付款时,Google Pay / Apple Pay无法连接到Internet。 所有必要的信息都存储在本地电话中。
  • 每次付款都会生成一个新的卡号(PAN)
    如果您阅读Apple关于Apple Pay技术的新闻稿,则可能看起来是这样。 但这是对令牌概念的错误解释。 实际上,虚拟卡的详细信息很长一段时间都保持不变,您可以在付款时通过发票(银行支票)中卡号的最后一位数字进行检查。
  • 通过Apple Pay / Google Pay付款时,需要支付额外费用
    情况并非如此,您将按照与您所链接的发卡行的发卡行的协议条款,完全按照价格标签上的指示付款。
  • 钱可以借记两次
    这个神话不仅适用于Google Pay / Apple Pay,而且适用于普通银行卡。 我相信它的出现是由于公共交通支付系统的出现,在该系统中,候机楼每次出示票时都会从票中扣除钱,因此,如果您携带卡不正确,则可以两次或多次借记。 对于POS终端,这种风险不存在,因为一旦接收到必要的数据,终端就会停止与卡进行交换。



将实体卡与手机中的令牌相关联

像Apple Pay这样的系统都由EMV Payment Tokenisation Specification支持 。 尚未公开描述将实体卡和电话与Apple Pay关联的过程,因此我们将基于已知数据来分析该过程:

  1. 提供者(Google,Apple,Samsung)接收地图信息;
  2. 提供商通过MPS要求此卡(发卡行)是否支持EMV令牌化;
  3. 在MPS端,会生成一个虚拟卡(令牌),该虚拟卡将下载到手机中的安全存储中。 我不知道虚拟卡的私钥到底是在哪里生成的,无论是通过Internet传输还是通过电话本地生成,在这种情况下都没有关系。
  4. 生成的虚拟令牌卡出现在电话上,发卡行将其解释为第一张物理卡上的操作。 在阻止物理卡的情况下,令牌也将被阻止。


Apple Pay允许您读取虚拟卡的详细信息。 PAN编号和到期日期与俄罗斯Alfa-Bank的链接卡不同。 虚拟卡的BIN(480099)由MBNA AMERICA BANK确定。

通过电话付款时,POS终端会看到常规的VISA或MasterCard,并以与物理卡相同的方式与之通信。 虚拟令牌卡包含常规卡的所有属性:PAN号,有效期等。 同时,虚拟卡号和有效期与随附的原始卡不同。

方案1-常规POS终端



POS终端欺诈者

普通人心目中最流行的欺诈情节:终端已打开的欺诈者在人群中被压向他们,并注销了金钱。 我们将尝试在现实中重现这种情况。

条件如下

  • 欺诈者具有一个正常运行的普通POS终端 ,该终端连接到收单银行,与商店和快递公司一样。 终端的固件未修改。 在我们的案例中-Ingenico iWL250。 这是带有GPRS调制解调器的便携式POS终端,该终端支持非接触式付款,依靠电池供电并且完全可移动。
  • 欺诈者不使用其他技术手段,仅使用POS终端
  • 根据银行系统的所有规则,借记的资金将记入欺诈者的活期帐户中

法人实体




首先,我们需要一个拥有经常账户并获得关联的法人实体。 我们像真正的骗子一样,不会以我们的名义冒名顶替,而是尝试购买现成的法律实体。 网站上的同一骗子用户。 为此,请在Google第一页上的“ buy ip”和“ buy ooo”广告中查看。


出售骗子的现成公司的报价(可点击)

在黑市上有经常账户的公司的价格在20到30万卢布之间。 我设法从200,000卢布中找到几个带有POS终端的LLC的要约。 这样的公司被假人框住,买主收到整包文件以及“缓存卡”-这是与虚拟公司的结算帐户绑定的银行卡。 有了这样的卡,欺诈者就可以在ATM机上兑现资金。

为简单起见,我们假设LLC +银行帐户+收单以及POS终端将使欺诈者花费100,000卢布 。 实际上更多,但我们将简化假想诈骗者的生活,降低攻击成本。 毕竟,攻击成本越低,实施起来就越容易。

让我们偷钱


因此,欺诈者获得了一个POS终端,并准备去一个拥挤的地方,靠着受害者,从他的口袋里偷钱。 在我们的实验中,所有受害人都被预先告知了我们的意图,所有勾销金钱的企图都是在他们的同意下进行的。 如果受试者没有自己的非接触式银行卡,则要求他们将我们的卡放在钱包中。 以前,受检者准确地知道了他们存储卡的位置和方式,因此欺诈者预先知道了非接触式卡在袋子/口袋中的位置。


视频:一个骗子在购物中心肆虐

如果成功注销,则通过终端菜单取消交易,并将钱退还给对象的帐户。 在整个实验过程中,我们试图从购物中心大楼和大街上的20个对象中“窃取”金钱。 测试结果如下所述。

问题:无PIN的交易限额


可以在POS终端本身(需要CVM的限制)和银行一侧设置最大交易金额的限制,而无需使用PIN码进行确认。 在俄罗斯,这项限制等于1000卢布。



UPD在卡设置中,可以将授权持卡人验证方法(CVM)的类型设置为支票上的签名。 在这种情况下,无需PIN码即可进行任何金额的非接触式交易。



我们的欺诈者决定一次注销999.99卢布。 如果要求您在短时间内再次注销低于限额的金额,还将要求您输入PIN码,在大多数情况下,将无法连续多次注销999.99卢布。 因此,最佳策略是从一张卡中收取不超过一笔费用。

POS终端机,金额为999.99

在俄罗斯,没有PIN码的最大借方金额为1000卢布。

实际上,在短时间内大量注销999.99卢布的金额可能会触发收单行方面的反欺诈系统,因此该策略对于欺诈者而言并非最佳选择。 因此,在现实生活中,他将不得不选择更多不同的金额,从而减少潜在的收入。

顺便说一句,许多与此俄语主题有关的文章都说,您可以手动设置自己的非接触式交易限制,而无需输入PIN码。 在主要的俄罗斯银行中我找不到这样的选择。 也许您知道这种可能性? 它是关于非接触式付款,而不是任何芯片和密码交易。

问题:钱包中有多张卡


在这种攻击情况下,这一点很重要,因为实际上几乎没有人在口袋里携带一张卡 。 在大多数情况下,卡与旅行卡或其他银行卡等其他非接触式卡一起存储在钱包中。

卡肿的的钱包

具体而言,我的Igenico iWL250终端在操作字段中检测到多个卡且SAK表示支持14443-4协议时,返回错误:“出示一张卡”。

但是,并非所有终端都可以这样做。 例如,VeriFone Sberbank POS终端从几张中选择一张随机卡。 如果有多个卡,某些终端会简单地忽略所有卡,而不会显示错误消息。


试图读取钱包中的多张卡。 POS终端返回错误。

防撞ISO 14443-3


从物理上读取一张特定的卡并非易事。 为了解决这个问题,存在一种防冲突的机制。 如果一次收到多张卡片的响应,则可以选择一张卡片。 这是在ISO-14443A协议中与非接触卡建立联系的第一步。 在此阶段,读者无法弄清所提供的哪些银行卡。 唯一的选择是根据SAK(选择确认)的响应选择与银行卡大致相同的货币。

SAK响应中的位值

因此,例如,莫斯科公共交通中使用的Troika卡(Mifare标准)的值SAK = 0x08(b00001000) ,其中第六位为零。 对于SAK响应中的所有银行卡,第六位为1,这表示支持ISO 14443-4协议。

因此,当同时检测到几张卡时,终端所能做的就是排除不支持ISO 14443-4的卡,并选择与银行类似的卡。 顺便说一下,对ISO 14443-4协议的支持不能保证此卡将是银行卡,但是很可能在普通人的钱包中不会有其他类型的卡支持ISO 14443-4。


防冲突协议流程图

根据个人经验:尽管存在防冲突协议,但是如果您的钱包中至少有三张非接触式卡,那么很难成功地读取所需的卡。 大多数尝试都会导致读取错误。 依附在别人的口袋和书包上,在奔跑中做这件事甚至更加困难。

但是,我们将认为我们的欺诈者是非常幸运的,而且这一限制不会打扰他。

离线与在线交易


在令人恐惧的新闻报道中,他们谈论的是地铁车厢中带有POS终端的骗子,他们马上就把钱记在口袋里。 这些故事没有提到骗子从地铁车厢那里获得移动互联网的地方。 也许他的终端支持离线交易?

EMV规范允许脱机交易。 在这种模式下,发生借记时没有发卡行的在线确认。 例如,这可以在莫斯科和圣彼得堡的公共交通中使用。 为了不使公共汽车入口处排队,航站楼在完成在线确认时,他们让您立即进入,而无需检查您的帐户中是否有足够的钱来支付车费。 最终,当Internet出现在终端上时,已签名的交易将发送到发行银行。 如果事实证明这时您没有钱支付车费,则该卡将被添加到城市所有航站楼的停靠站中。 您可以通过卡号通过您的个人帐户偿还债务。 了解更多有关在圣彼得堡购买公交车的信息。

我个人无法获得支持此功能的POS终端,因此在具有“平民” POS终端的情况下,我们将不考虑离线借记的可能性。 除了攻击者需要在终端上使用Internet之外,这没有任何改变,因此,例如在地铁中的攻击要复杂得多。
有支持WiFi的终端模型,从理论上讲,我们的诈骗者可以在都会区中使用WiFi,此前他曾负责为其POS终端的MAC地址购买无广告访问权,因此不需要通过强制门户进行身份验证,因为在POS上终端无法做到这一点。

计算利润


在我们的方案中,攻击成本为100,000卢布。 这意味着,为了至少收回投资,我们的英雄需要完成至少100笔交易,每笔交易额为1000卢布。 想象一下,他足够敏捷,整日在城市中奔波,紧紧抓住所有人,因此到一天结束时,他成功注销了120笔。 我们将不考虑收购佣金(平均2%),兑现佣金(4-10%)和其他佣金。

他可以使用绑定到活期账户的卡成功兑现吗?

实际上,并非一切都那么简单。 仅几天之内,资金就会存入欺诈者的帐户! 在此期间,我们的欺诈者应该希望一百二十个受害者中没有一个会挑战交易,这是极不可能的。 因此,实际上,欺诈者的帐户甚至在将钱记入帐户之前都将被冻结。

如果某人注意到在他的卡上进行了未购买的交易,则应联系发卡银行并提出索赔。 30 , , — 60 . - -, - , .

, ()

结论


在我们的方案中,攻击的成本为100,000卢布。实际上,它会高出好几倍,因此欺诈者需要付出更多的努力才能获利。

在我们的情况下,欺诈者总是注销999.99卢布,这很可能将使反欺诈系统在收单行一侧运作。实际上,欺诈者将需要注销较小的金额。

为了至少收回投资,欺诈者将需要处理数百名受害者。如果甚至有十几个人联系发卡银行并对交易提出异议,则欺诈者的帐户很可能会被阻止。收购银行与欺诈者勾结的可能性不大,因为与MPS一起使用的许可证的成本远高于此类欺诈带来的任何潜在利润。

在这20个科目中,只有3个设法从卡中注销了钱,占所有尝试成功的15%。这些是人为的情况,口袋里只有一张卡。如果有钱包和几张卡,则终端返回错误。在终端使用修改后的固件并实现防冲突机制的情况下,成功收费的百分比可能会更高。但是,即使在使用防冲突的情况下,在运行中的实际条件下,也很难从一张数中计算一张,因此可以认为在这种情况下成功借记是幸运的。实际上,成功注销的份额几乎不会超过尝试次数的10%。

, , , . - , .

2 — POS-


假设我们的骗子在带有移动POS终端的商店或快递员的结帐处工作。在这种情况下,他有机会捕获卡数据,在某些情况下,这些数据可能足以在Internet上支付。

首先,让我们弄清楚非接触式交易的外观,以及卡与POS终端交换什么样的数据。由于我们太懒了,无法阅读数千页的EMV非接触式规格文档,因此我们只需要使用HydraNFC嗅探器在物理层上拦截交换即可。

万事达卡PayPass和Visa payWave的EMV规范之间存在一些差异。这是签名格式和某些数据的区别。但这对我们来说不是必需的。

NFC嗅探器



HydraNFC是一个ISO-14443A完全开源的独立嗅探器,可将截获的APDU命令保存到SD卡。嗅探天线位于终端和卡之间,并被动地捕获所有传输的信息。

有关HydraBus和HydraNFC防护板的网站
固件来源


演示使用Apple Pay拦截POS终端和电话之间的交换

展望未来,我必须说,在这个级别上,通过电话和普通塑料卡付款没有什么不同。对于POS终端,这是常规的VISA卡。但是,通过电话付款比使用实体卡安全得多,然后我们将分析原因。

EMV协议解析


这是使用Apple Pay支付总价值142.98卢布的巧克力和一瓶水时所记录的转储的样子:

从嗅探器(开放扰流器)接收到的原始数据

()

R (READER) — POS-
T (TAG) — ( )
R>> 52
R>> 52
R>> 52
R>> 52
R>> 52
R>> 52
R>> 52
T<< 04 00
R>> 93 20
T<< 08 fe e4 ec fe
R>> 93 70 08 fe e4 ec fe dd 6e
T<< 20 fc 70
R>> 50 00 57 cd
R>> 26
R>> 52
T<< 04 00
R>> 93 70 08 fe e4 ec fe dd 6e
T<< 20 fc 70
R>> e0 80 31 73
T<< 05 78 80 70 02 a5 46
R>> 02 00 a4 04 00 0e 32 50 41 59 2e 53 59 53 2e 44 44 46 30 31 00 e0 42
T<< 02 6f 23 84 0e 32 50 41 59 2e 53 59 53 2e 44 44 46 30 31 a5 11 bf 0c 0e 61 0c 4f 07 a0 00 00 00 03 10 10 87 01 01 90 00 4b b3
R>> 03 00 a4 04 00 07 a0 00 00 00 03 10 10 00 bc 41
T<< 03 6f 31 84 07 a0 00 00 00 03 10 10 a5 26 9f 38 18 9f 66 04 9f 02 06 9f 03 06 9f 1a 02 95 05 5f 2a 02 9a 03 9c 01 9f 37 04 bf 0c 08 9f 5a 05 60 08 40 06 43 90 00 1d 66
R>> 02 80 a8 00 00 23 83 21 36 a0 40 00 00 00 00 01 42 98 00 00 00 00 00 00 06 43 00 00 00 00 00 06 43 18 09 18 00 e0 11 01 03 00 f9 14
T<< 02 77 62 82 02 00 40 94 04 18 01 01 00 9f 36 02 02 06 9f 26 08 d6 f5 6b 8a be d7 8f 23 9f 10 20 1f 4a ff 32 a0 00 00 00 00 10 03 02 73 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9f 6c 02 00 80 57 13 48 00 99 72 50 51 17 56 d2 31 22 01 00 00 05 20 99 99 5f 9f 6e 04 23 88 00 00 9f 27 01 80 90 00 af c8
R>> 03 00 b2 01 1c 00 c9 05
T<< 03 70 37 5f 28 02 06 43 9f 07 02 c0 00 9f 19 06 04 00 10 03 02 73 5f 34 01 00 9f 24 1d 56 30 30 31 30 30 31 34 36 31 38 30 34 30 31 37 37 31 30 31 33 39 36 31 36 37 36 32 35 90 00 a7 7b


让我们分别从拦截的转储中解析每一行。

R >>-通过POS终端
传输的数据T >>-通过卡传输的数据(在我们的示例中为带Apple Pay的电话)

14443-A选择


在交换开始时,终端在通道级别与卡建立连接。对于那些熟悉网络和OSI模型的人来说,将其表示为L2级别,并将卡的UID(唯一标识符)表示为主机的MAC地址将很方便。

在ISO-14443标准术语中:
PCD(邻近耦合设备)是读取器的名称,在我们的情况下是PIC终端
PICC(邻近的集成电路卡)是卡,在我们的情况下,电话扮演着这个角色

Apple Pay的常规支付卡之间的重要区别是,该卡始终可读,并且不允许您控制读取过程。可以随意读取衣服,而电话则落入读取器的作用范围,为用户提供了激活虚拟卡的功能。在用户确认之前,电话不会传输任何数据,并且读取器甚至不知道附近有虚拟卡。

R>> 52 // WUPA (wake up)
R>> 52 // WUPA
R>> 52 // WUPA
R>> 52 // WUPA
R>> 52 // WUPA
R>> 52 // WUPA
R>> 52 // WUPA
T<< 04 00 // ATQA (Answer To Request type A) 
R>> 93 20 // Select cascade 1 (Anti Collision CL1 SEL)
T<< 08 fe e4 ec fe // UID (4 bytes) + BCC (Bit Count Check)
R>> 93 70 08 fe e4 ec fe dd 6e // SEL (select tag 0x9370) + UID + CRC16
T<< 20 fc 70  // SAK (Select Acknowledge 0x20) + CRC16 
R>> 50 00 57 cd // HALT (Disable communocaion 0x5000) + CRC16
R>> 26 // REQA
R>> 52 // WUPA
T<< 04 00 // ATQA
R>> 93 70 08 fe e4 ec fe dd 6e // SELECT
T<< 20 fc 70 // SAK
R>> e0 80 31 73 // RATS (Request Answer to Select 0xE080) + CRC16
T<< 05 78 80 70 02 a5 46 // ATS (Answer to select response)

终端不断发送0x52唤醒(WUPA)命令,并且一旦卡出现在操作字段中,终端就会以“应答请求类型A(ATQA)”命令做出响应,在本例中为0x04 0x00。 ATQA响应可能因芯片制造商而异。

在接收到ATQA响应之后,终端开始冲突检测过程,以确定在行动领域中是否存在多于一张卡。0x93 0x20选择级联级别1(SEL CL1)命令要求操作字段中的所有卡报告其UID的第一部分。

卡的响应为0x08 0xFE 0xE4 0xEC 0xFE,前四个字节是Apple Pay虚拟卡的UID,最后是0xFE位计数检查(BCC)。

收到卡标识符后,读取器将使用命令0x93 0x70(SELECT)访问特定卡。对于一个团队是UID卡0x08的0xFE的0xe4 0xec + 0xFE时的BCC + 0xdd 0x6e CRC16。

卡以0x20选择应答(SAK)+ 0xfc 0x70 CRC16进行响应

如果在此步骤中收到了多个SAK响应,则读取器可以减少SELECT命令中UID的长度,直到单个卡响应为止。但是,如上所述,如果在此阶段检测到冲突,即同时存在多个卡,则某些POS终端拒绝继续操作。

UID 4, 7 10 . , , Apple Pay, UID 4 . , Apple Pay UID , , UID . , , , UID .

阅读器发送命令0x50 0x00 HALT + 0x57 0xcd CRC16。这是一个终止命令。

然后再次重复该过程,读取器再次唤醒卡(WUPA),但是在不检查冲突的情况下,立即执行SELECT。为什么这样做-我不知道,也许这是确定碰撞的更可靠的方法。

阅读器第二次已发送命令0xE0 0x80选择选择应答(RATS)+ 0x31 0x73 CRC16。

卡响应0x05 0x78 0x80 0x70 0x02选择响应的答案(ATS)+ 0xA5 0x46 CRC16。

选择答案-答案类似于联系人卡片的重置答复(ATR)。它包含有关最大帧大小和链路层参数的信息。

在此阶段,“通道”级别完成,然后根据卡上包含的应用程序,在更高级别的协议上开始交换。SELECT操作对于ISO 14443A标准的所有非接触卡都是相同的,包括NFC标签,公共交通票等。

申请可用的应用程序-SELECT PPSE


官方描述:EMV非接触式规范-用于安全元素

PPSE和应用程序管理与EMV卡进行通信的始端始终是通过阅读PPSE(付款系统环境)来进行的。终端询问卡上有什么支付应用程序。

通常,这是一个应用程序,例如我们的示例-VISA。但是,有些卡具有多个付款应用程序,例如,有些特殊的家用MIR卡内部有两个付款应用程序。由于MIR支付系统无法在国外使用,因此第二张支付应用程序集成到了卡中,实际上是第二张卡。这可以是JCB或银联支付系统应用程序。这样的卡称为cobaging。

APDU SELECT PPSE命令

'00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00'
  00 A4 04 00 //  select 
   0E //  command data (14 )
    32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 // command data 2PAY.SYS.DDF01
    00 //  

回复SELECT PPSE

'6F 23 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 11 BF 0C 0E 61 0C 4F 07 A0 00 00 00 03 10 10 87 01 01 90 00'

为了方便起见,我们将使用TVL iso8583.info/lib/EMV/TLVs格式的在线解析器来分析答案。解析器处理的答案相同:

EMV SELECT PPSE VISA RESPONE已解析
在所有这些中,我们仅对支付应用程序标识符(AID)感兴趣。在这种情况下,此值为A0000000031010,表示Visa International。

AID用4F标记标记。令牌后的第二位是它包含的数据的长度。尽管AID的长度可以在5到16个字节之间变化,但在大多数情况下为7个字节。

AID大清单:eftlab.co.uk/knowledge-base/211-emv-aid-rid-pix

一些流行的AID

A0000000031010 Visa International
A0000000032020 Visa International
A0000000041010 Mastercard International
A0000000043060 Mastercard International United States Maestro (Debit)

应用程序优先级指示器-指示支付应用程序的优先级。例如,在内部具有多个付款应用程序的MIR联包卡中,此字段指示两个应用程序中的哪个优先。由于我们只有一个Visa International申请,因此它指向该申请,因此没有优先权。

启动付款应用程序-SELECT AID

'00 A4 04 00 07 A0 00 00 00 03 10 10'
  00 A4 04 00 //  select 
   07 //  command data (7 )
    A0 00 00 00 03 10 10 // AID Visa International

选择了必要的支付应用程序后,终端将启动它。

PDOL(处理选项数据对象列表)


'6f 31 84 07 a0 00 00 00 03 10 10 a5 26 9f 38 18 9f 66 04 9f 02 06 9f 03 06 9f 1a 02 95 05 5f 2a 02 9a 03 9c 01 9f 37 04 bf 0c 08 9f 5a 05 60 08 40 06 43 90 00'

让我们使用解析器


解析答案。为响应支付应用程序的启动,该卡报告了它希望从终端接收的一组参数-PDOL(处理选项数据对象列表)。终端必须严格按照此顺序进行响应。

不同卡的PDOL可能有所不同。PDOL参数的总数为几十个。可在此处找到PDOL参数的完整列表

让我们仔细看看PDOL。标记后指示的长度是从终端到此请求的严格预期的响应长度。空答案将零填充为所需的长度。

PDOL请求解析:

9F 38 18 //   PDOL.  18 (24 ) 
 9F 66 ( 04) // Terminal Transaction Qualifiers (TTQ).    . 
  9F 02 ( 06) //  
   9F 03 ( 06) //  
   9F 1A ( 02) //     ISO3166-1
   95 ( 05) // Terminal Verification Results
    5F 2A ( 02) //  ,    ,   ISO4217
     9A ( 03) //    YYMMDD
      9C ( 01) //   
       9F 37 ( 04) //   

到目前为止,此卡上的任何交易的所有传输数据都是相同的。

收费请求-获取处理选项


'80A8000023832136A0400000000001429800000000000006430000000000064318091800E011010300'
 80 A8 00 00 //  GET PROCESSING OPTIONS (GPO)
  23 //    (35 )
   83 //  PDOL-
    21 //  PDOL- (33 )
     36 A0 40 00 // Terminal Transaction Qualifiers (TTQ)
      00 00 00 01 42 98 //   (142,98 )
       00 00 00 00 00 00 //   
        06 43 //    (643 - )
         00 00 00 00 00 // Terminal Verification Results (TVR)
          06 43 //  (643 - russian ruble) 
           18 09 18 //  (18  2018 )
            00 //  
             E0 11 01 03 //   

该答案清楚地显示了位于俄罗斯的终端如何请求从卡中扣除142.98卢布。我们提请注意结尾处的随机数(E0110103)。这是参数9F37不可预测的数字这是第一次提到密码学。将来,该卡号以及交易数据将必须使用密码签名进行签名。这使终端可以控制卡中签名的相关性,并防止重放攻击。

卡对“获取处理选项”的响应


'7762820200409404180101009F360202069F2608D6F56B8ABED78F239F10201F4AFF32A00000000010030273000000004000000000000000000000000000009F6C02008057134800997250511756D23122010000052099995F9F6E04238800009F2701809000'

此答案包含特定于VISA的数据字段,因此我使用了支持VISA非接触式支付规范(VCSP)的解析器



应用程序交换配置文件(AIP)-包含有关支付应用程序参数的信息。在我们的情况下,AIP为00 40。考虑EMV 4.3规格书3中此参数的值


在我们的示例中,第二个字节中设置了一位,根据该表,该位保留供将来使用(RFU)。我不知道这意味着什么,以及投资Apple Pay的意义何在。

AIP包含有关受支持的付款验证方式(SDA,CDA,DDA)的重要信息。为什么在我的情况下所有这些标志都等于零-我不明白。

应用程序文件定位器(AFL)-包含特定AID中的SFI记录信息范围。基于此响应,终端将生成READ RECORD请求。

让我们更详细地分析AFL答案:

短文件标识符(SFI)为0x18。此参数使用五位而不是八位编码。因此,将值0x18(b00011000)转换为b00000011,得到0x3。
第一条记录= 1
上次纪录= 1
即在“ 3号文件夹”中,存在从1到1的条目,即一个条目。

应用程序事务计数器(ATC)是一个增量事务计数器,每当请求GET PROCESSING OPTIONS时,它就会递增1。达到值0xFFFF或0x7FFF后,付款应用程序将被永久阻止。我相信这样做是为了防止卡私钥的暴力破解。在我们的案例中,可以看出带有Apple Pay的iPhone已被用来支付518(0x206)次。

应用程序密码(AC)-卡使用其私钥计算的密码签名。该签名与其余数据一起传输到发卡行,并根据交易的真实性进行验证。由于无法从卡中提取卡的私钥(可访问的方式),因此消除了复制卡的可能性。

发行者应用程序数据(IAD)-包含特定于VISA的专有数据。我没有掌握这种结构的分析,对您有所帮助。

卡交易资格证明(CTQ)-VISA特定的受支持卡规格列表。例如,是否可以将这种非接触式卡用于ATM机中的交易,并且需要哪种确认。

Track 2等效数据-Oppa!该字段包含卡号和有效期,有关此信息的更多详细信息将在后面讨论。

表格事实指示器(FFI)-VISA特定字段。描述付款设备的外形和特性。在我们的案例中,很明显这是一部手机。

密码信息数据(CID)- 我尚未掌握此结构的分析帮助。

读取数据记录查询


'00 b2 01 1c 00'

终端发送请求以读取从AFL接收的记录:


在这种情况下,从字节0x1C开始,读取为两个值,其中前五个位是0x18(b000011)和SFI,后三个位是0x04(d100),并且组成记录号。

回复阅读记录


'70375F280206439F0702C0009F19060400100302735F3401009F241D5630303130303134363138303430313737313031333936313637363235'



应用程序使用控制(AUC)-确定是否允许在国外使用卡付款,以及允许的操作类型。

9F19显然是难以理解的-过时的动态数据身份验证数据对象列表(DDOL)

EMV令牌化,付款帐户参考(PAR)是令牌化(虚拟)卡特有的参数。我没有掌握这种结构的分析,对您有所帮助。

从拦截的交易中可以提取什么?


我们分析了一个带有链接的VISA卡的Apple Pay非接触式交易被拦截流量的具体示例。万事达卡协议略有不同,但总体上相似。从分析中可以看出,该事务受加密签名保护,并且该协议受到了重放攻击的保护。磁条(MSD)模式中有一种过时的非接触式支付协议,对于重播攻击的保护要少得多,但是在本文中,我不会反汇编它,因为据我所知,CIS几乎不支持它,也许我误会了。


从截获的数据中,您可以提取卡号(PAN)和到期日期

如您所见,您可以从拦截的流量中提取出完整的卡号和有效期。尽管CVV不在此转储中,但此数据已经足以在某些在线商店中支付。如果是普通的物理塑料卡,截获的数据将包含与卡本身上标记的相同的PAN和有效期!

不使用CVV的互联网付款(CNP,MO / TO)


在我以前关于基于Apple Pay的ACS的文章“我们使用Apple Pay和Troika卡作为工作通行证”中,我在评论中受到批评,说只有卡的最后10位数字您才能偷钱。在上面的转储中,不仅显示了我的卡的完整编号,而且还显示了到期日期。这些数据足以在Internet上的某些商店中支付。好吧,尝试做到这一点。


亚马逊添加卡表格不需要CVV

如果这是一个实际的卡号,则确实可以偷钱,但是当卡用密码签名对交易进行签名时,Apple Pay令牌数据只能用于“客户存在”(CP)操作。此数据不能用于Internet和其他操作(例如不存在的卡(CNP))(即电话或电子邮件)上的付款。就是这样!

对于所有想验证这一点的人,我通知您,上面截取的Apple Pay转储中的详细信息目前是相关的,并与上面有钱的有效卡相关。在撰写本文时,这是5千卢布。我建议尝试偷他们:)

为什么Apple Pay比普通卡更安全?



Apple Pay与普通非接触式卡

  • Apple Pay ( ) . POS-. , «» , , , , , . Apple Pay , , .
  • — Apple Pay (13,56 ), , . . Apple Pay , .
  • — Card not present (CNP), , .. Apple Pay .
  • — (Cardholder name) . , , . Apple Pay .


. , . .

, Apple Pay . CNP- ( ) , .



:

Source: https://habr.com/ru/post/zh-CN422551/


All Articles