Osmocom SIMtrace简介

Posted learnfromnow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Osmocom SIMtrace简介相关的知识,希望对你有一定的参考价值。

简介

Osmocom SIMtrace是用于被动跟踪SIM卡和手机之间SIM-ME通信的软件和硬件系统。
技术分享图片
技术分享图片
技术分享图片

它通过使用支持USB的AT91SAM7微控制器的T = 0兼容USART工作。

USART在SIM卡和手机之间的ISO 7816-3 / TS 11.11接口上交换时被动接收字节。 接收到的字节通过USB发送到PC,PC上的程序称为simtrace从USB设备收集数据,解析APDU并通过GSMTAP将它们转发到wireshark协议分析器。

特征

  • 完全无源扫描仪
  • RST和ATR检测
  • 支持PPS / PTS自动波特率
  • APDU的分割
    SIMtrace可以用于监视ME-SIM通信,但也可以模拟手机或SIM卡,也可以是MitM。
    虽然硬件支持所有这些模式,但只有监控方面已经在软件中实现。

TODO

SIMtrace是一个社区项目,帮助不仅仅是欢迎。

有些任务需要不需要电子或SIM卡协议方面的知识,只需要非常基本的C编程技能:

  • 使用libusb热插拔API来保持程序跨SIMrtace断开连接
    一些任务不需要微控制器编程技巧:
  • 扩展/完成SIM协议的wireshark解剖器。
    以下是其他一些可以改进的方面:
  • 检查奇偶校验错误
  • 验证TCK / PCK校验字节
  • 实施MITM

硬件

第一种实现方式使用Olimex SAM7-P64开发板,其中一些I / O线连接到来自RebelSIM_Scanner的机械SIM卡适配器。 如果使用RebelSIM扫描仪,即使只使用线路,也要连接USB。 它需要供电,否则真正的读者往往无法初始化卡。

现在我们有专门的PCB设计。 原理图和Gerber文件是作为开源硬件发布的,并且可以由所有人制作。

但是,那些对从零开始构建它不感兴趣的人可以从http://shop.sysmocom.de/products/simtrace 购买完整的工厂生产,测试和闪存PCB组件

它也可以通过一个独立的适配器与全尺寸SIM卡连接. 链接

SIMtrace_Hardware提供更多详细信息

固件

AT91SAM7S器件的固件是通过重复使用OpenPCD的许多代码编写的RFID阅读器。 详细信息可在SIMtrace固件上找到。

文档

请检查用户手册的附件。 在那里,你会发现一些提示安装现成的软件包
你最喜欢的Linux发行版。

主机PC软件

simtrace程序是git://git.osmocom.org/simtrace.git存储库的一部分。 它将绑定到USB设备并使用UDP / IPv4发送GSMTAP帧到localhost:4729。

前提条件
libosmocore和头文件(simtrace_usb.h)。

其他软件包:

1
sudo apt-get install libusb-1.0-0-dev

 

编译:

1
2
3
git clone git://git.osmocom.org/simtrace.git
cd simtrace/host/
make

 

访问它
添加udev规则,以便能够使用simtrace并以非root用户身份访问设备(只需要在osmocom组中)

1
2
3
4
5
6
7
8
sudo groupadd osmocom
sudo adduser $USERNAME osmocom
sudo tee /etc/udev/rules.d/10-osmocom.rules << EOF
# to use, install this file in /etc/udev/rules.d as 10-osmocom.rules
# rule to grant read/write access on SIMtrace to group named osmocom.
SUBSYSTEM=="usb", ATTR{idProduct}=="0762", ATTRS{idVendor}=="16c0", MODE="0660", GROUP="osmocom"
EOF
sudo service udev reload

 

您必须注销并重新登录才能生效。

使用它
简单地开始simtrace。
它将发送GSMTAP帧到UDP / IPv4 localhost:4729。

它还会将帧的hexdumps打印到控制台,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sudo ./simtrace
APDU: (9): a0 a4 00 00 02 6f 07 9f 0f
APDU: (22): a0 c0 00 00 0f 00 00 00 09 6f 07 04 00 15 00 15 01 02 00 00 91 78
APDU: (9): a0 a4 00 00 02 6f 38 9f 0f
APDU: (22): a0 c0 00 00 0f 00 00 00 09 6f 38 04 00 15 00 55 01 02 00 00 91 78
APDU: (16): a0 b0 00 00 09 ff 3f ff ff 00 00 3f 03 00 91 78
APDU: (9): a0 a4 00 00 02 6f ad 9f 0f
APDU: (8): a0 b0 00 00 01 00 91 78
APDU: (9): a0 a4 00 00 02 6f 07 9f 0f
APDU: (16): a0 b0 00 00 09 08 49 06 20 11 49 00 11 06 91 78
APDU: (9): a0 a4 00 00 02 6f 7e 9f 0f
APDU: (18): a0 b0 00 00 0b ff ff ff ff 64 f0 00 ff fe 00 03 91 78
APDU: (9): a0 a4 00 00 02 6f 78 9f 0f
APDU: (9): a0 b0 00 00 02 00 01 91 78
APDU: (9): a0 a4 00 00 02 6f 74 9f 0f
APDU: (23): a0 b0 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 91 78
APDU: (9): a0 a4 00 00 02 6f 20 9f 0f
APDU: (16): a0 b0 00 00 09 ff ff ff ff ff ff ff ff 07 91 78
APDU: (9): a0 a4 00 00 02 6f 30 9f 0f
APDU: (22): a0 c0 00 00 0f 00 00 00 f0 6f 30 04 00 11 00 55 01 02 00 00 91 78

 

Wireshark集成

有一个实验补丁,也是simtrace.git软件包的一部分。 它也包含在wireshark开发者版本中(因为wireshark 1.7.1)。

在wireshark中查看APDU:

  • 在本地主机上SIMtrace自动在本地打开一个UDP接收器,不需要做任何事情
  • 在另一台机器上获取数据

    • 在另一台机器上启动一个用于GSMTAP的UDP接收器(不要在netcat“连接”时使用)

      1
      socat -u udp-recv:4729 / dev / null
    • 告诉SIMtrace要转发哪台机器

      1
      ./simtrace -i 192.168.0.1

技术分享图片

协议解析远远没有完成,补丁总是受欢迎的!

其他软件

simlabTrace似乎能够使用MITM,并且似乎也有一个使用SIMtrace作为读卡器的CCID驱动程序。

联系人/邮件列表

对于任何与开发或使用有关的问题,都有一个邮件列表[mailto:[email protected]],您可以在http://lists.osmocom.org/mailman/listinfo/simtrace 订阅/取消订阅它并阅读 档案在http://lists.osmocom.org/pipermail/simtrace/

请确保您在开始发布之前阅读MailingListRules。

Osmocom SIMtrace Hardware

此页面专门用于Osmocom SIMtrace的硬件,如下所示:
技术分享图片
技术分享图片

您可以在sysmocom商店购买该设备。

连接器

  • USB:USB mini-B连接器。主要连接器。主机软件通过USB与电路板进行通信(嗅探,…)。它也可以用来闪存微控制器(使用DFU)。
  • 串行:2.5毫米插孔串行电缆,由osmocomBB使用。用于调试设备的端口(printf去那里)。
  • 调试(P2):与串行相同,但使用FTDI串行电缆。建议在将电缆插入simtrace之前,先切断6pin FTDI连接器的电压线。
  • jtag(P1):JTAG 20针连接器,用于进行硬件辅助调试。
  • BT1:电池连接器(4.5-6V DC)。通常USB提供电源,但电池端口可用于自主使用SIMtrace。嗅探的数据可以保存在闪存(U1)中。
  • FFC_SIM(P3):将扁平柔性电缆与SIM端连接起来用于电话。
  • SIM(P4):将您的SIM卡放在那里(而不是在手机中)
  • 重置(SW1):重置主板(不擦除固件)。如果你太懒惰拔掉并重新插上USB。
  • 引导加载程序(SW2):用于启动引导加载程序以使用DFU闪存设备。插入USB时按下。
  • 测试(JP1):使用SAM-BA使用跳线短路闪烁。
  • 擦除(JP2):使用跳线短路以完全擦除固件。

电路图

技术分享图片
原理图,Gerber文件等可以在simtrace.git存储库的’hardware’子目录中找到:
http://cgit.osmocom.org/cgit/simtrace/tree/hardware (网页浏览)
git://git.osmocom.org/simtrace(git clone URL)
我们使用Kicad作为EDA工具。大部分关于原理图和Gerber文件的工作都由Kevin Redon完成,基于Harald Welte的原始设计。

最新原理图的PDF格式图也可作为此页的附件。

互连

硬件原理图非常非常简单:

  • 将SIM-RST与PA7连接
  • 将SIM-I / O与PA6和PA1连接
  • 将SIM-CLK与PA2和PA4连接
  • 将SIM-GND与GND连接

操作模式

AT91SAM7S的USART能够T = 0。文档只提及它在时钟主模式,就像你一样会在智能卡读卡器中运行,积极与智能卡通话。但是,通过使用USART输入时钟多路复用器,您可以使用外部生成的CLK,如手机SIM卡插槽中的那个。

不幸的是,USART的Rx超时功能在T = 0模式下不工作,所以我不得不重新实现Rx超时(等待时间)
通过TC(定时器/计数器)模块0进行处理。由于技术限制,我们将等待最多一个字节(12 etu)比我们应该。

Modi

SIMtrace可以用作:

  • 嗅探器
  • 读卡器
  • 卡模拟器
  • 人在这方面的中间人
    SAM7S提供2个T = 0的USART端口。
    一个连接到手机(PA21-PA27),另一个连接到SIM(PA1-PA7)。
    线路通过总线开关从手机传输到SIM卡(IC4 = CB3Q3244)。
    总线交换机提供4条线路的2条总线:
  • 第一个用于转发RST,CLK和VPP(在SIM和电话之间)。它由SC_SW(PA20)控制,
  • 第二个用于转发I / O(在SIM和电话之间)。它由SC_I / O(PA19)控制,
    各种修改需要中断不同的线路:

SW_SC(PA20)|SC_I / O(PA19)|描述|方式

L| L|电话和SIM直接连接|嗅探器(使用任何USART端口)
L| H|只有I / O中断|MitM(使用两个USART端口)
H| H|手机和SIM卡未连接|读卡器,仿真器(使用每个USART端口)
截至目前,仍然只有嗅探器在固件中实现

SIM卡支持各种类别(电压等级):A类= 5.0V,B类= 3.0V,C类= 1.8V。
SIMtrace v1.x仅支持B类(3.0V),所有实际SIM卡和手机也支持。
为确保使用B类,SIMtrace通过将VCC线保持在该电压下强制3.3V(在3.0V±10%规格内)。
SIMtrace v2将支持所有3个类。



































































































以上是关于Osmocom SIMtrace简介的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介创建消息生产者创建消息消费者自定义消息通道分组与持久化设置 RoutingKey)(代码片段

C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段

react简介

react简介