Project

General

Profile

Input devices » History » Version 1

Karsten, 11/11/2014 03:28 PM

1 1 Karsten
h1. Input/HID devices
2
3
h2. Disassembled devices
4
5
h3. Truly Ergonomic keyboard 
6
7
* Product page: https://trulyergonomic.com/store/products
8
* Architecture: unknown [TODO, need Windows to run .exe]
9
* has a dip switch to allow/disallow firmware update
10
11
h3. Apple USB Mighty Mouse Model-No. A1152
12
13
* Chip: Cypress cy7c63743
14
* Contains EPROM memory, can only be written once
15
* => %{color:green}Not vulnerable%
16
17
h3. Logitech RX250 optical mouse
18
19
* Chip: Cypress cy7c63813
20
* Product page: http://www.cypress.com/?mpn=CY7C63813-PXC
21
* Datasheet: http://www.cypress.com/?docID=41007
22
* M8C core (a simple 8 bit microcontroller core from Cypress)
23
* 8 KiB flash memory, 256 bytes Ram, 24 MHz clock
24
* Reprogrammable via USB bootloader
25
* Documentation is available from Cypress, it should not be too difficult to write a malicious firmware upgrade
26
* Device should be able to act as a HID keyboard entering a predefined keystroke sequence, e.g. to download a Powershell script from the Internet.
27
28
<pre>
29
Bootloader information:
30
http://www.cypress.com/?rID=12994
31
32
The term "user code" refers to the actual firmware of the device
33
providing the intended functionality such as a USB HID mouse.
34
35
On powerup, the bootloader verifies a 16 bit checksum of the user code.
36
If it matches, it jumps to the user code.
37
38
If it does not match, the device goes to bootloader mode and
39
communicates with the computer via USB. There are commands for reading
40
and writing the flash contents.
41
42
Unfortunately, the bootloder requires an 8 byte bootloader key. However,
43
the key verification is done on a byte-by-byte basis (assembly listings
44
are available in the ZIP file from Cypress) and so it could be
45
incrementally guessed by counting the number of clock cycles until the
46
verification fails. It is likely that the bootloader key is equal for a
47
large number of produced units and so it would probably be enough to
48
extract it in a lab setup for a few units.
49
50
In a lab setup, it is probably possible to make the flash checksum
51
verification fail e.g. via voltage glitching, clock glitching, extreme
52
temperatures or UV/X-Ray radiation so that the device boots into
53
bootloader code. Then the bootloader key can be extracted by guessing
54
bytes and counting the number of clock cycles the verification takes.
55
After that, it should be possible to extract the firmware binary for
56
reverse engineering. Once the firmware is available, it may be possible
57
to find a hidden command which allows switching the device to bootloader
58
mode via a special USB command (so that other identical devices can be
59
reprogrammed via USB).
60
61
*Update:* It looks like the controller itself has a proprietary non-USB 
62
programming protocol. The USB bootloader from http://www.cypress.com/?rID=12994 
63
is optional and I do not know how many actual devices come shipped with a 
64
USB bootloader at all.
65
66
The integrated programming functionality can be accessed with a programmer,
67
which is available for 30$ from Cypress:
68
http://www.cypress.com/?rID=37459
69
70
The following document describes the update process:
71
http://www.cypress.com/?docID=19520
72
73
If there is no bootloader, the chips can still be reflashed via the USB contacts
74
using a custom (non-USB) protocol with a MiniProg programming adapter.
75
76
77
However, the controller does have flash protection fuses. I do not know
78
whether these fuses are set for typical low cost USB devices.
79
80
81
*Update 20141107:*
82
I have tried to read out the chip with a Cypress Miniprog adapter. Unfortunately,
83
the flash protection fuses are set and I could only read one 64-byte block of the
84
flash memory. Since I cannot dump the firmware, I can't tell whether there is a 
85
USB bootloader on the chip or not.
86
</pre>
87
88
h3. USB Mouse Tchibo
89
90
* ApexOne A2624D, Chip is sold as an ASIC just for USB mouse application
91
* datasheet does not indicate that there is any microcontroller.
92
=> %{color:green}Most likely not vulnerable%
93
94
h3. USB Laser Mouse Generalkeys
95
96
* Chip-on-Board, no label
97
98
h3. USB Mouse Logilink
99
100
* Chip without label, could be cypress like in the Logitech mouse
101
102
h3. Noname USB numeric Keypad
103
104
* Chip-on-Board, no label
105
106
h3. Hama mini USB mouse
107
108
* USB + Sensor integrated into one package, Label: A1198 TSP635B
109
* http://nutsandboltsandflyingsparks.blogspot.de/2012_07_01_archive.html => Pin Layout, no more info found
110
* Bus 001 Device 011: ID 062a:0003 Creative Labs
111
112
h3. Noname mini optical mouse
113
114
* 1bcf:0007 Sunplus Innovation Technology Inc. Optical Mouse => Datasheet for Sunplus devices mention that it contains a µC, but no indication about upgradeability or any persistent storage found
115
* Chip label: C2165 => Datasheet available 6502 µC [http://en.wikipedia.org/wiki/MOS_Technology_6502]
116
* No leaked tools
117
118
h3. Microsoft Comfort 2000 keyboard v1.0
119
120
* Chip-on-Board, no label
121
122
h3. Speedlink SL-6535-BK Game pad controller (Mediamarkt 20141106)
123
124
* Chip-on-Board without label
125
* Bus 001 Device 012: ID 0079:0006 DragonRise Inc. Generic USB Joystick
126
* No further info found
127
128
h3. Speedlink ACUTE Presenter (Mediamarkt 20141106)
129
130
* Receiver: SL-6198-RRBK  433.92 Mhz
131
* Chip1: Missing label, 8 pins SOIC, connected to USB
132
* Chip2: 4608\n1320, connected to antenna
133
* Bus 001 Device 014: ID 1223:3f07 SKYCABLE ENTERPRISE. CO., LTD. 
134
* No further info found
135
136
h3. Logitech G5 mouse
137
138
* Was sold from around 2007-20012 for about 35-60 Euro
139
* Official firmware upgrade from Logitech available: G5Update12.exe
140
* Contains large text area with hex format, similar to ihex
141
* Contains valid USB Descriptors and interesting strings after decoding: "D:\Project\Mecha\FW_Current Version\bin\jw32.abs","ICP"
142
* Could be MC68HC908JW32 => architecture M68HC05
143
* %{color:red}=> Most likely vulnerable%
144
145
h3. Logitech G502 Proteus Core Gaming Mouse (launched in 2014, current price: 65 Euro)
146
147
* Official software (Logitech Gaming Software) contains firmware update utility: G502Update_v16.exe
148
* Contains area valid USB Descriptors (Device, Configuration and String descriptors)
149
* http://pclab.pl/art57551-7.html
150
* PCB Shots show chip label: ARM STM32L100\nR8T6 => STM32L100R8
151
* ARM Microcontroller with USB, 64 KiB internal flash, 2 KiB eeprom and 8 KiB RAM
152
=> STM documentation show that the controller does support DFU (Device firmware upgrade) standard
153
* %{color:red}=> Most likely vulnerable%