[安全]东信和平USIM卡破解原理及Linux下智能卡渗透笔记

[安全]东信和平USIM卡破解原理及Linux下智能卡渗透笔记

推测dx.exe的工作流程为:点击USIM专用工具单次授权版后:

程序先检查电脑是否连接PS/SC读卡器,否则报错;

尝试与USIm卡建立通信,发送00A40000023F00等指令,读取卡上存储的私有信息(2F50/2F51处的),如果不成功,报错;

根据读取的信息,通过计算模块(IDA中看到一处结构很像加解密模块)计算出ADM key。

简单来讲,ADM(Administrative) key是智能卡(Smart Card)文件权限控制中最高级别的key,类似还有PIN(Personal Identification Number), PUK(PIN Unblocking Key),权限递增。

如果获得了USIM卡的ADM key,则可以读出Ki,这便是东信和平USIM卡的破解原理: 使用“内部流出”的ADM计算工具获得USIM卡的ADM key,通过ADM key读取卡中的关键信息,如Ki。

由于时间有限,未完整逆向出ADM key的计算流程。“USIM_Explorer改iccid软件.zip”下载链接在此,如果你有兴趣逆向dx.exe,欢迎留言或邮件交流。

Linux下智能卡渗透笔记

Linux系统通过PC/SC Lite支持使用PC/SC(Personal Computer/Smart Card)标准。

个人主要使用基于Python的pyscard及基于此的pySim与USIM卡交互。

pySim

pySim支持串口与PC/SC两种读卡器

Option

Parameter

-d

Serial Device fo SIM Access [default: /dev/ttyUSB0]

-p

Which PS/SC number for SIM access

注意PS/SC number是执行pcsc_scan后得到的,如:

Scanning present readers...

0: Identiv SCR35xx USB Smart Card Reader [CCID Interface] (xxxxxxxxxxxxxx) 00 00

中的0。

ADM key

之前的博文Build a LTE Network with srsLTE and Program Your Own USIM Card中提到了写USIM卡的软件需要和卡配套,其实不完全是这种情况。

正如前文所讲,写卡最主要的是对ADM key的鉴权,之后写卡命令大部分情况下都是符合智能卡标准的,为pySim增加某些USIM卡写卡支持需要解决两个问题:

ADM key获取及ADM key鉴权(某些卡的鉴权方法非标准);

某些非标准参数(通常是Ki)的读写。

此处的“非标准”指文件位置或者写卡命令非标准,然而在APDU层面都是标准的(此层以下厂商没有私有的必要,需要花费太多研发精力)。

分析pySim的pySim-prog.py可以看到,pySim支持的如sysmoUSIM-GR1, sysmoUSIM-SJS1等,其实是实现了对这些卡的ADM鉴权及参数写入。

我们在之前博文中使用的私有写卡软件SIM Personalize tools(Copyright: GreenCard Co.,Ltd Ver 3.1.0很容易逆向,通过strings的搜索,很容易得到此类卡的鉴权APDU,写参数APDU等。

该软件“支持的”卡其实是ADM key是&&&&&&&&,即3838383838383838长度为16个十六进制数字的值。

手中的另一个NB-IoT USIM卡的ADM key是22222222,即3232323232323232,ADM key的长度为8 bytes,在APDU中转换成ASCII值,也有某些USIM的ADM值直接以16个十六进制呈现,且没有对应的字符,如上面使用的东信和平USIM卡。

Reference

https://cyberloginit.com/2018/05/14/eastcompeace-usim-exploit-and-notes-on-smart-card-pentest-for-linux.html

https://blog.csdn.net/s762888517/article/details/52980312

https://www.eftlab.co.uk/index.php/site-map/knowledge-base/118-apdu-response-list

http://cardwerk.com/smart-card-standard-iso7816-4-section-6-basic-interindustry-commands/

https://blog.csdn.net/A493203176/article/details/65445775

https://osmocom.org/projects/pysim/wiki

https://sourceforge.net/p/openlte/wiki/Programming%20you%20own%20USIM%20card/

TS 31.102

相关推荐

世贸天阶 Attractions
365网络科技有限公司是做什么的

世贸天阶 Attractions

📅 08-03 👁️ 608
淘宝店铺关联怎么弄(淘宝店怎么关联店铺)
365体育投注下载

淘宝店铺关联怎么弄(淘宝店怎么关联店铺)

📅 07-21 👁️ 8864
500大洋的WPC unnurella晴雨伞,你会买单么?
365网络科技有限公司是做什么的

500大洋的WPC unnurella晴雨伞,你会买单么?

📅 08-21 👁️ 219
win11摄像头灯不亮怎么办?如何检查和修复?
365体育投注下载

win11摄像头灯不亮怎么办?如何检查和修复?

📅 10-09 👁️ 1289