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