Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >NFC手机:攻破交通卡

NFC手机:攻破交通卡

作者头像
FB客服
发布于 2018-02-05 03:33:53
发布于 2018-02-05 03:33:53
2.1K0
举报
文章被收录于专栏:FreeBufFreeBuf

AVL移动安全团队最近发现一款利用NFC手机攻击交通卡的恶意软件。将该款恶意软件安装在NFC手机中,窃贼只需将此手机轻轻靠近圣地亚哥交通卡(bip!-card)即可任意篡改卡中的余额。这种攻击方式有可能被黑客应用到其他IC卡攻击上,对其进行盗刷或其他恶意行为。

NFC手机被恶意软件利用

NFC是Near Field Communication缩写,即近距离无线通讯技术。NFC手机是指带有NFC模块的手机,可以应用在生活的很多方面,比如快速获取公交车站站点信息、公园地图等信息、门禁控制、本地支付等等。NFC手机提供了一种简单触控式的解决方案,可以让用户简单直观地交换信息、访问内容和接受服务。

NFC手机在为我们提供许多生活便利的同时,手机恶意软件开发者也早已瞄准NFC手机,读取非接触式IC卡信息并篡改卡中的数据,可能会给用户资金安全造成威胁。

详细分析

开启手机NFC功能

安装了该恶意软件后,程序首先开启手机NFC功能。

图1 初始化NFC功能

篡改交通卡余额

由于该圣地亚哥交通卡的key及金额扇区已被破解泄露,程序可以使用其特定的key对交通卡的数据进行读写操作。

图2 对交通卡进行读写操作

根据上述key和数据信息,最后计算得出修改余额为$10,000(通常在实际金额计算中都会保留小数点后两位,所以这里10,000实际是$100.00)。

图3 修改交通卡余额

该程序还可以显示该交通卡的余额信息。

图4 读取交通卡余额信息

背景介绍

由于该圣地亚哥交通卡的key及金额扇区已被破解泄漏,目前在git上已经出现了对此交通卡的POC(Proof of concept)。详情请参见:https://github.com/elechantelepate/bip_hack

安全建议

交通卡被未经授权的人使用有恶意软件的NFC手机任意读取信息并篡改余额。芯片银行卡也存在着此类安全隐患,比如NFC手机能轻松读取芯片银行卡卡号、身份证号及近十次的交易记录。NFC技术、非接触式IC卡确实给我们带来极大的便利,但其安全性也亟待考验。

安全建议

安天AVL移动安全团队建议:

1 NFC提供的是一种非接触式的通信方式,用户敏感信息有被非法获取的可能。建议持卡人妥善保管好交通卡、银行卡等,勿让其离开自己的视线。或使用屏蔽NFC的安全卡套,加强卡片的自我保护。

2 在使用手机的NFC功能之前,需要事先使用手机杀毒软件AVL Pro,检测手机中是否安装有恶意软件,以免个人信息和资金被盗取。

[本文作者AVL Team(企业账号),原文地址http://blog.avlyun.com,在不影响文章整体质量的情况下可能包含少量商业信息。转载请注明来自FreeBuf.COM]

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2014-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JavaSE基础 (全网最全知识点)
一个位也叫一个bit,8个bit称为1字节,16个bit称为一个字,32个bit称为一个双字,64个bit称为一个四字
不吃紫菜
2023/03/08
7480
JavaSE基础 (全网最全知识点)
Java 大神的十个私藏避坑绝技
答案是: No! 看似正确的判断奇数, 但是如果 i 是负数, 那么它返回值都是false 造成这种现象的是 => 从思想上固化, 认为奇数只在正数范围, 故判断负数将报错, 在C++中也是, 负数取余还是负. 在Java中取余操作定义产生的后果都满足下面的恒等式:
大蕉
2019/09/30
1K0
《编写高质量代码》学习笔记(1)
前言 看大神推荐的书单中入门有这么一本书,所以决定把这本书的精华(自认为很有用的点),或许是我自己现在能用到的点都提炼出来,供大家参考学习。 以下内容均出自《编写高质量代码 改善Java程序的151个建议》——秦小波 著一书。 ---- 建议1:不要在常量和变量中出现易混淆的字母 包名全小写,类名首字母全大写,常量全部大写并用下划线分隔,变量采用驼峰命名法命名等,这些都是最基本的Java编码规范,是每个Javaer都应熟知的规则,但是在变量的声明中药注意不要引入容易混淆的字母。看下面的例子,请思考以下程序
我没有三颗心脏
2018/04/26
1.4K0
【计组不挂科】计算机组成综合习题库(选择题207道&判断题93道&填空题143道)(含答案与解析)
A.输入/输出设备 B.外存储器 C.远程通信设备 D.除了CPU和内存以外的其他设备
YY的秘密代码小屋
2025/01/03
1480
【计组不挂科】计算机组成综合习题库(选择题207道&判断题93道&填空题143道)(含答案与解析)
C语言标准定义的32个关键字保姆级讲解
C语言中的数据类型主要有下面几种。实际上,数据类型可以理解为固定大小内存块的别名,给变量指定类型就是告诉编译器给该变量分配多大的内存空间,而变量相当于是内存块的门牌号。
mindtechnist
2024/08/08
1930
C语言标准定义的32个关键字保姆级讲解
Java基础知识总结(异常机制、集合、JUC、IO)
    3)、第三个是异常信息回答了为什么被抛出。Throwable是所有异常体系的顶级父类,包含了Error类和Exception类。从概念角度分析Java的异常处理机制。
别先生
2020/04/08
5510
Java基础知识总结(异常机制、集合、JUC、IO)
JAVA入门学习一
(1) JAVA 介绍 詹姆斯.高斯林(James Gosling) JAVA之父,与SUN公司的Patrick/Naughton/Mike Sheridan等人合作开发的一套语言叫”Oak”,后改名JAVA; Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言(Java面向对象程序设计语言和Java平台的总称)。
全栈工程师修炼指南
2020/10/23
3420
JAVA入门学习一
C/CPP基础知识练习题即分析
sqrt()函数在c语言中用于计算一个非负实数的平方根,开根号;其语法为double sqrt(double)。在sqrt()函数中没有sqrt (int),但是返回值可以为int,返回值可以与int类型进行运算。
CtrlX
2022/09/23
1.2K0
C/CPP基础知识练习题即分析
JAVA入门学习五
Scanner的概述:一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串,以默认空格作为分割。 Scanner的构造方法原理:
全栈工程师修炼指南
2020/10/23
5740
JAVA入门学习五
累了,代码异常!
软件开发中遇到异常才是正常,很少有人能写出完美的程序跑在任何机器上都不会报错。但极为正常的软件异常,却经常出自不同的原因,导致不同的结果。怎么样科学地认识异常、处理异常,是很多研发同学需要解决的问题。本文作者根据自己多年的工作经验,撰写了《异常思辨录》系列专栏,希望能体系化地帮助到大家。本文为系列第二篇,本篇文章将主要聚焦面向对象的分析设计和框架设计,欢迎阅读。
腾讯云开发者
2023/12/19
3771
累了,代码异常!
Java并发容器--ConcurrentHashMap
  1、不安全:大家都知道HashMap不是线程安全的,在多线程环境下,对HashMap进行put操作会导致死循环。是因为多线程会导致Entry链表形成环形数据结构,这样Entry的next节点将永远不为空,就会产生死循环获取Entry。具体内容见HashMap随笔。
在周末
2019/09/11
4720
【02】JAVASE-Java基础语法【从零开始学JAVA】
Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。
用户4919348
2024/05/25
1310
【02】JAVASE-Java基础语法【从零开始学JAVA】
Java基础
JAVA语言编译之后会生成一个.class文件,反射就是通过字节码文件找到某一个类、类中的方法以及属性等。反射机制指的是程序在运行时能够获取自身的信息。在JAVA中,只要给定类的名字,那么就可以通过反射机制来获取类的所有信息。Java
花落花相惜
2021/11/24
1.4K0
Hash算法的讲解[通俗易懂]
散列表,又叫哈希表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙。
全栈程序员站长
2022/09/20
2.3K0
Hash算法的讲解[通俗易懂]
从零开始的内存马分析——如何骑马反杀(一)
在某次实战攻防中,有一对儿小马和大马,他们两个通过了层层设备,终于打入了内网,只是在砍杀的过程中,露出了马脚,从巨大的流量中,被挖了出来,可是,真的有这么容易吗?真的如我们所愿吗?随着你的越发深入的对木马,流量进行解密,你的心中越发的不安……
亿人安全
2022/08/30
6.2K0
从零开始的内存马分析——如何骑马反杀(一)
腾讯笔试+查漏补缺 synchronized和ReentrantLock的区别
1 int main() 2 { 3 // 动态规划问题之 --- 在所给出的钱里面凑够i元最少需要多少个硬币 或 张数? 4 // 状态和状态转移方程 5 // d(
林冠宏-指尖下的幽灵
2018/01/03
1.7K0
腾讯笔试+查漏补缺
		synchronized和ReentrantLock的区别
笨办法学 Java(二)
你在上一个练习中已经看到了这一点,但你可以在if语句的主体中放入任何你喜欢的东西,包括其他if语句。这被称为“嵌套”,在另一个if语句内部的if语句称为“嵌套 if”。
ApacheCN_飞龙
2024/01/26
2220
Java基础篇Java基础语法
注释:就是对代码的解释和说明。其目的是让人们能够更加轻松地了解代码。为代码添加注释,是十分必须要的,它不影响程序的编译和运行。
程序员Leo
2023/08/07
7310
Java基础篇Java基础语法
Java 编程问题:一、字符串、数字和数学
本章包括 39 个涉及字符串、数字和数学运算的问题。我们将从研究字符串的一系列经典问题开始,例如计算重复项、反转字符串和删除空格。然后,我们将研究专门用于数字和数学运算的问题,例如两个大数求和和和运算溢出,比较两个无符号数,以及计算除法和模的下限。每个问题都要经过几个解决方案,包括 Java8 的函数风格。此外,我们将讨论与 JDK9、10、11 和 12 有关的问题。
ApacheCN_飞龙
2022/07/11
8580
以太坊智能合约OPCODE逆向之理论基础篇
在我们对etherscan等平台上合约进行安全审查时,常常会遇到没有公布Solidity源代码的合约,只能获取到合约的OPCODE,所以一个智能合约的反编译器对审计无源码的智能合约起到了非常重要的作用。
Seebug漏洞平台
2018/07/12
1.7K0
推荐阅读
相关推荐
JavaSE基础 (全网最全知识点)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档