USB storage » History » Version 1
Karsten, 11/11/2014 03:31 PM
1 | 1 | Karsten | h1. USB Storage |
---|---|---|---|
2 | |||
3 | h2. Overview |
||
4 | |||
5 | There are a few reasons why many USB Sticks have an upgradeable firmware: |
||
6 | * There is no additional cost for a rewriteable storage for the firmware, it can be placed on the big NAND flash chip with a small bootloader in ROM |
||
7 | * The flash chip market is evolving quickly and not all chips are fully compatible. Many compatibility issues can be fixed in firmware. |
||
8 | * Some vendors want to implement special features such as CD Emulation or a Write-Protect Switch |
||
9 | * There are many leaked tools |
||
10 | |||
11 | The Russian sites below are best viewed with Chrome due to the built-in translation feature. |
||
12 | |||
13 | Overview of USB Sticks with information about contained chip and matching tool: |
||
14 | http://flashboot.ru/iflash/ |
||
15 | |||
16 | Overview of available leaked tools: |
||
17 | http://flashboot.ru/files/ |
||
18 | |||
19 | Unfortunately the existence of a leaked tool for a given chip does not necessarily mean that the firmware can be upgraded. Some tools only provide other features such as the following: |
||
20 | * Change configuration data (Product Name, VID, PID) so that it matches for the OEM Vendor |
||
21 | * Enable CD Emulation |
||
22 | * Change capacity of stick (Sticks are typically sold with 4/8/16/32/64 GB capacity and a stick with enough good blocks for 25 GB is often software-limited to 16 GB. |
||
23 | * Do a low-level format |
||
24 | |||
25 | Some leaked firmware images appear to be partial and do not contain USB descriptors and no 8051 interrupt table. |
||
26 | Partial firmware images probably are nothing more than a fancy way to abstract differences in |
||
27 | flash geometry, where a simple static table would not be expressive enough. |
||
28 | It is conceivable that they also implement block management functions as this is an area where |
||
29 | new features might be developed to improve the product while access to a given hardware |
||
30 | can be expected to be reasonably efficient and generic enough so as to not require firmware |
||
31 | update. High level features such as volume management and USB vendor/product/serial IDs |
||
32 | should be found in the updated part too. |
||
33 | With a little bit of dedication one can probably figure out how to get information in |
||
34 | and out and thus dump the whole of the firmware (for example 4 bytes of firmware per |
||
35 | USB descriptor read in the VID/PID |
||
36 | |||
37 | h2. Popular chips |
||
38 | |||
39 | h3. Phison USB2 / USB3 controllers |
||
40 | |||
41 | All vulnerable -- see "BlackHat talk":https://www.youtube.com/watch?v=nuruzFqMgIw and "Psychson":https://github.com/adamcaudill/Psychson/ |
||
42 | |||
43 | h3. ALCOR AU698X |
||
44 | |||
45 | * Leaked tool: ALCOR MP_v14.01.24.00.zip |
||
46 | Contains many .bin files, which actually contain hex data |
||
47 | * Unpacking hex data results in raw 8051 code with interrupt table, code mapped at 0xC000 |
||
48 | * No USB Descriptors found, it is possible that the upgradeable code is only used for interfacing the NAND Flash |
||
49 | * => %{color:orange}Probably vulnerable% |
||
50 | |||
51 | h3. SMI SM325X/SM326X |
||
52 | |||
53 | * Many variants of recovery tool available, downland RecoverTool_V2.00.33_L1224.exe |
||
54 | http://www.usbdev.ru/files/smi/ |
||
55 | * Exe file contains rar with 500 .BIN files |
||
56 | * Examined two example files, found 8051 code starting at 0x800 in file, mapped at 0x8000 in address space |
||
57 | * USB Descriptors found |
||
58 | * => %{color:red}Most likely vulnerable% |
||
59 | |||
60 | h3. Skymedi SK62XX SK66XX |
||
61 | |||
62 | * Available tool: http://flashboot.ru/files/file/4/ |
||
63 | SK6211_PDT_20090828.rar |
||
64 | * Contains ihex files with valid 8051 code, but no USB Descriptors found |
||
65 | * => %{color:orange}Probably vulnerable% |
||
66 | |||
67 | h3. Solid State System SSS6677, SSS6690 and SSS6691 |
||
68 | |||
69 | * Tool available: |
||
70 | http://flashboot.ru/files/file/270/ |
||
71 | SSS_MP_Utility_v2162.rar |
||
72 | * Contains valid 8051 code, but no USB Descriptors found |
||
73 | * => %{color:orange}Probably vulnerable% |
||
74 | |||
75 | h3. Innostor IS903-A2, IS903-A3 |
||
76 | |||
77 | * Tool available: |
||
78 | http://flashboot.ru/files/file/379/ |
||
79 | Innostor_IS903_MP_Package_V105_04_1303281.7z |
||
80 | * Found valid 8051 code, but no USB descriptors |
||
81 | * => %{color:orange}Probably vulnerable% |