- Регистрация
- 27 Июн 2016
- Сообщения
- 105
- Реакции
- 4
- Баллы
- 0
Память снова в цене, причем буквально. За последний год цены подскочили так, что SSD от более-менее именитого производителя стал, скорее, предметом роскоши, чем «базовым минимумом». И в то же время на маркетплейсах можно найти сказочное изобилие: флешки известных брендов с огромным объемом продаются практически за бесценок. Кажется, здесь есть какой-то подвох…
Привет, меня зовут Денис Астафиев, я ведущий специалист аппаратных исследований в Бастионе. Конечно, про фейковые флешки писали уже не раз и на Хабре, и за его пределами, но по большей части рассматривая их со стороны потребителя: как вычислить контрафакт, как определить ее реальный объем и всё в этом же духе. Мне же более интересен другой подход: как недобросовестным производителям удалось достигнуть такого результата, и что они могут сделать, кроме изменения одного поля в конфигурации контроллера. И, как вы понимаете, был только один способ это узнать…
Вскрытие покажет?
Испытуемое устройство приехало ко мне достаточно быстро. Внешне к нему не подкопаешься: флешка определяется в системе, корпус покрыт похожей на реальную маркировкой, а в свойствах съемного носителя заявлен ровно терабайт.
Единственное, что может слегка насторожить, — с завода накопитель отформатирован в ExFAT. Возможно, не лучшее решение, но не нам судить.
Получается, нас нигде не обманули, так?
Очевидно, эта иллюзия рушится после первого же теста — скорость записи никак не соответствует заявленному USB 3.0.
Копирование самого простого файла занимает неприличное количество времени.
Увидев, что импровизированными тестами тут не обойдешься, я незамедлительно перекинул флешку в ПК на Linux и прогнал через тесты из пакета f3 — Fight Flash Fraud (на macOS f3 идет в сильно урезанном виде).
И действительно, подтвердились худшие опасения — реально доступного места на ней всего около одного мегабайта.
Сами понимаете, после такого исследовательский интерес зажегся во мне с новой силой. А потому с использованием подручного инструмента флеш-накопитель был нещадно разорван на отдельные составляющие.
Внутри помимо пластика, который занимает не менее 80% объема, был обнаружен скромный набор из пары микросхем и обвязки. А где же терабайт? Его тут никогда и не было — единственный чип, который может хранить в себе данные, оказался SPI-флешкой на 16 Мбит.
Что ж, негусто… Обычно в подобные экземпляры ставят NAND-память хотя бы на пару гигабайт, но нам, видимо, повезло в крупном размере, и вместо хоть мало-мальски юзабельного устройства нам досталась комплектуха, продающаяся на развес. В общем, саму флешку можно использовать лишь как брелок.
Конечно, ради академического интереса память была выпаяна, сдамплена и изучена (адаптер USON8 4x3, чип GD25LQ16, если кто-то решит повторить эксперимент). Но информация в ней не отличается от того, что мы уже видели раньше:
| Field | Value |
| bLength | 0x12 / 18 |
| bDescriptorType | 0x01 / DEVICE |
| bcdUSB | 0x0200 / USB 2.00 |
| bDeviceClass | 0x00 / class defined per interface |
| bDeviceSubClass | 0x00 |
| bDeviceProtocol | 0x00 |
| bMaxPacketSize0 | 64 |
| idVendor | 0x2013 |
| idProduct | 0x0917 |
| bcdDevice | 0x0000 |
| Index | Offset | Raw descriptor bytes | Display string |
| 0 | 0x000084 | 04 03 09 04 | English (United States), LANGID 0x0409 |
| 1 | 0x000088 | 12 03 54 00 35 00 00 00 00 00 00 00 00 00 00 00 00 00 | T5 |
| 2 | 0x00009a | 22 03 46 00 38 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | F8 |
| 3 | 0x0000bc | 22 03 31 00 31 00 31 00 30 00 30 00 30 00 35 00 38 00 37 00 35 00 38 00 00 00 00 00 00 00 00 00 00 00 | 11100058758 |
Куда пропадают файлы
Конечно, у неискушенного читателя появится закономерный вопрос: «А каким же образом сюда можно копировать крупные файлы? Да еще и так, что они отображаются в проводнике?».
Всё дело в самом принципе устройства файловой системы. Если грубо, то под ее капотом — таблица, в которой указано, в каком блоке хранится та или иная информация. При этом файловая система не проверяет реальное наличие данных по указанному адресу. Кстати, а почему бы не продемонстрировать это на примере?
Запишем на флешку набитый нулями тестовый файл speedtest.bin, а следом запишем картинку. В результате новый файл неожиданно тоже оказывается занулен.
В то время как оригинальный файл выглядит вот так:
В нашем случае устройство лишь делает вид, что произвело запись. Но вообще, так как такое поведение является недокументированным, произойти может всё что угодно: простая перезапись «по кругу», потеря данных, запись без фактической записи и так далее. Результат у этого всего один — данные будут утеряны.
Собираем свой аналог
Раз весь фокус в прошивке, попробуем воспроизвести этот эффект в лабораторных условиях. Для этого возьмем:
- GreatFET One — программируемую плату для работы с USB;
- библиотеку facedancer, которая поднимает USB-устройство прямо из Python.
Ставим окружение:
Код:
python3 -m venv ~/venvs/greatfet
source ~/venvs/greatfet/bin/activate
pip install --upgrade greatfet facedancer Проверяем соединение с GreatFET One:
Код:
greatfet info Подготавливаем образ диска нужного объема.
Код:
mkdir -p ~/greatfet-1tb
cd ~/greatfet-1tb
truncate -s 1000000000000 fake-1tb.img
ls -lh fake-1tb.img
du -h fake-1tb.img Отдельно отмечу: анонсированный объем — 1 ТБ, в то время как фактический объем образа составляет ноль байт.
Теперь берем готовый пример эмуляции mass storage из facedancer и запускаем его на нашем образе:
Код:
curl -L -o mass-storage.py https://raw.githubusercontent.com/greatscottgadgets/facedancer/main/examples/mass-storage.py
export BACKEND=greatfet
python3 mass-storage.py fake-1tb.img Подключаем target-порт платы к компьютеру — и в проводнике появляется диск на терабайт, с которого даже что-то читается (медленно, эмуляция всё-таки).
В окне скрипта видно весь USB-обмен между устройствами.
Кстати, а почему мошенники подделывают именно терабайт, а не сразу петабайт? Чего мелочиться? Похоже, дело в том, что для обмена сообщениями используются SCSI-команды, и если для дисков до ~2 ТБ хватает команды
READ CAPACITY(10), то для дисков большего размера требуется READ CAPACITY(16), где нужен уже другой размер ответа. Соответственно, приходится переписывать ПО и использовать другие компоненты, что экономически невыгодно.Что на самом деле мы купили
Через несколько дней после покупки карточка этого товара на маркетплейсе была заблокирована, и теперь ее нельзя даже посмотреть. Но многочисленные аналоги в таком же исполнении и с тысячами фейковых хвалебных отзывов по-прежнему продаются. Нелегальный бизнес продолжается, и обманутых покупателей появится еще немало, что, конечно, радости не добавляет.
Но ладно бы это — потеря пары сотен рублей, конечно, неприятна, но не критична. Но что, если обычная флешка может нести в себе чуть более «полезный» функционал?
Конечно, все мы помним доклад BadUSB — On Accessories that Turn Evil, представленный на BlackHat 2014, который, по сути, и положил начало знаменитой одноименной атаке. Тогда исследователям удалось перешить Phison 2251-03 — один из самых массовых контроллеров для флеш-накопителей по всему миру, заставив его исполнять команды подобно клавиатуре. Конечно, в нашем случае это не особо применимо, да и сам контроллер опознать мне не удалось ввиду отсутствия даже намека на информативность в маркировке, но пару реальных примеров таких атак найти можно:
- Best Buy, 2008. Цифровые фоторамки собственной марки Insignia еще на этапе производства оказались заражены трояном Mocmex — тот умел глушить больше сотни антивирусов и тянуть файлы из сети. Те же зараженные рамки всплывали в Sam's Club, Target и Costco.
- IBM, 2017. Клиенты IBM вместе с системами хранения Storwize получили установочные флешки, зараженные червем W32.Faedevour!inf. Все флешки были с одним серийником — 01AC585. Как зловред на них попал, в IBM так и не объяснили, а пострадавшим советовали флешку физически уничтожить.
- Силы самообороны Японии, 2024–2025. Почти год (с марта 2024-го) пользовались поддельными китайскими флешками, у которых вместо нормальной памяти стояли дешевые microSD-карты, — и часть из них несла вредонос, связанный с китайской APT, срабатывающий при подключении. Флешки продавались на маркетплейсах за полцены, антивирус их даже не проверял (их просто не было в списке на сканирование). Обнаружили это только в феврале 2025-го — за это время вредоносное ПО уже успело побывать на не менее чем полусотне ПК, часть из которых работала с закрытыми секретными системами.
Конечно, можно возразить: кто будет охотиться за обычными пользователями тех же маркетплейсов? И да, сообщения о подобных инцидентах достаточно редки, но BadUSB никогда и не был сильно таргетированной атакой, поэтому кто знает, что вы подключите к своему ПК завтра — обычный флеш-накопитель или незаметный бэкдор?
PURP — Telegram-канал, где кибербезопасность раскрывается с обеих сторон баррикад
t.me/purp_sec — инсайды и инсайты из мира этичного хакинга и бизнес-ориентированной защиты от специалистов Бастиона
Источник: habr.com

