Взлом
Уважаемые гости! При посещении нашего сайта просим вас ознакомиться с разделами форума, прежде чем оставлять ваши объявления и т.п., а также при обращении за помощью просим быть внимательными: на сайте есть как проверенные специалисты, так и непроверенные. Если вы обратились к специалисту, который проверку НЕ проходил, рекомендуем воспользоваться услугой гарант-сервиса. Спасибо, что посетили форум хакеров.

Как сделать фейковую флешку на терабайт, и при чем тут BadUSB

Moder

Модератор
Команда форума
Пользователь
Неактивированный
Регистрация
27 Июн 2016
Сообщения
105
Реакции
4
Баллы
0
article-3ef2489f1edc75b6.png


Память снова в цене, причем буквально. За последний год цены подскочили так, что SSD от более-менее именитого производителя стал, скорее, предметом роскоши, чем «базовым минимумом». И в то же время на маркетплейсах можно найти сказочное изобилие: флешки известных брендов с огромным объемом продаются практически за бесценок. Кажется, здесь есть какой-то подвох…

Привет, меня зовут Денис Астафиев, я ведущий специалист аппаратных исследований в Бастионе. Конечно, про фейковые флешки писали уже не раз и на Хабре, и за его пределами, но по большей части рассматривая их со стороны потребителя: как вычислить контрафакт, как определить ее реальный объем и всё в этом же духе. Мне же более интересен другой подход: как недобросовестным производителям удалось достигнуть такого результата, и что они могут сделать, кроме изменения одного поля в конфигурации контроллера. И, как вы понимаете, был только один способ это узнать…

Вскрытие покажет?

article-a3a42701bc7f3a34.png


Испытуемое устройство приехало ко мне достаточно быстро. Внешне к нему не подкопаешься: флешка определяется в системе, корпус покрыт похожей на реальную маркировкой, а в свойствах съемного носителя заявлен ровно терабайт.

article-1cf28bacc7229752.png


Единственное, что может слегка насторожить, — с завода накопитель отформатирован в ExFAT. Возможно, не лучшее решение, но не нам судить.

Получается, нас нигде не обманули, так?

Очевидно, эта иллюзия рушится после первого же теста — скорость записи никак не соответствует заявленному USB 3.0.

article-8082f53caf42c9f5.png


Копирование самого простого файла занимает неприличное количество времени.

Увидев, что импровизированными тестами тут не обойдешься, я незамедлительно перекинул флешку в ПК на Linux и прогнал через тесты из пакета f3 — Fight Flash Fraud (на macOS f3 идет в сильно урезанном виде).

И действительно, подтвердились худшие опасения — реально доступного места на ней всего около одного мегабайта.

article-f05f359795a4a3f6.png


Сами понимаете, после такого исследовательский интерес зажегся во мне с новой силой. А потому с использованием подручного инструмента флеш-накопитель был нещадно разорван на отдельные составляющие.

article-b644a585bb9d5786.png


Внутри помимо пластика, который занимает не менее 80% объема, был обнаружен скромный набор из пары микросхем и обвязки. А где же терабайт? Его тут никогда и не было — единственный чип, который может хранить в себе данные, оказался SPI-флешкой на 16 Мбит.

Что ж, негусто… Обычно в подобные экземпляры ставят NAND-память хотя бы на пару гигабайт, но нам, видимо, повезло в крупном размере, и вместо хоть мало-мальски юзабельного устройства нам досталась комплектуха, продающаяся на развес. В общем, саму флешку можно использовать лишь как брелок.

Конечно, ради академического интереса память была выпаяна, сдамплена и изучена (адаптер USON8 4x3, чип GD25LQ16, если кто-то решит повторить эксперимент). Но информация в ней не отличается от того, что мы уже видели раньше:

FieldValue
bLength0x12 / 18
bDescriptorType0x01 / DEVICE
bcdUSB0x0200 / USB 2.00
bDeviceClass0x00 / class defined per interface
bDeviceSubClass0x00
bDeviceProtocol0x00
bMaxPacketSize064
idVendor0x2013
idProduct0x0917
bcdDevice0x0000

IndexOffsetRaw descriptor bytesDisplay string
00x00008404 03 09 04English (United States), LANGID 0x0409
10x00008812 03 54 00 35 00 00 00 00 00 00 00 00 00 00 00 00 00T5
20x00009a22 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 00F8
30x0000bc22 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 0011100058758

article-17ea2b80ad143b58.png


Куда пропадают файлы

Конечно, у неискушенного читателя появится закономерный вопрос: «А каким же образом сюда можно копировать крупные файлы? Да еще и так, что они отображаются в проводнике?».

article-f6b178a31ad4af7c.png


Всё дело в самом принципе устройства файловой системы. Если грубо, то под ее капотом — таблица, в которой указано, в каком блоке хранится та или иная информация. При этом файловая система не проверяет реальное наличие данных по указанному адресу. Кстати, а почему бы не продемонстрировать это на примере?

Запишем на флешку набитый нулями тестовый файл speedtest.bin, а следом запишем картинку. В результате новый файл неожиданно тоже оказывается занулен.

article-9a26cc58b00410f7.png


В то время как оригинальный файл выглядит вот так:

article-b7ab1a223201be91.png


В нашем случае устройство лишь делает вид, что произвело запись. Но вообще, так как такое поведение является недокументированным, произойти может всё что угодно: простая перезапись «по кругу», потеря данных, запись без фактической записи и так далее. Результат у этого всего один — данные будут утеряны.

Собираем свой аналог

Раз весь фокус в прошивке, попробуем воспроизвести этот эффект в лабораторных условиях. Для этого возьмем:

  • 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

article-2403487ba41596d2.png


Подготавливаем образ диска нужного объема.

Код:
mkdir -p ~/greatfet-1tb
cd ~/greatfet-1tb
truncate -s 1000000000000 fake-1tb.img
ls -lh fake-1tb.img
du -h fake-1tb.img

Отдельно отмечу: анонсированный объем — 1 ТБ, в то время как фактический объем образа составляет ноль байт.

article-15e628ab94f45b0c.png


Теперь берем готовый пример эмуляции 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-порт платы к компьютеру — и в проводнике появляется диск на терабайт, с которого даже что-то читается (медленно, эмуляция всё-таки).

article-8073dc744f5469db.png


В окне скрипта видно весь USB-обмен между устройствами.

article-49743abb65e9df7e.png


Кстати, а почему мошенники подделывают именно терабайт, а не сразу петабайт? Чего мелочиться? Похоже, дело в том, что для обмена сообщениями используются SCSI-команды, и если для дисков до ~2 ТБ хватает команды READ CAPACITY(10), то для дисков большего размера требуется READ CAPACITY(16), где нужен уже другой размер ответа. Соответственно, приходится переписывать ПО и использовать другие компоненты, что экономически невыгодно.

Что на самом деле мы купили

Через несколько дней после покупки карточка этого товара на маркетплейсе была заблокирована, и теперь ее нельзя даже посмотреть. Но многочисленные аналоги в таком же исполнении и с тысячами фейковых хвалебных отзывов по-прежнему продаются. Нелегальный бизнес продолжается, и обманутых покупателей появится еще немало, что, конечно, радости не добавляет.

article-fbc44e5e5e8e5211.png


Но ладно бы это — потеря пары сотен рублей, конечно, неприятна, но не критична. Но что, если обычная флешка может нести в себе чуть более «полезный» функционал?

Конечно, все мы помним доклад 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 никогда и не был сильно таргетированной атакой, поэтому кто знает, что вы подключите к своему ПК завтра — обычный флеш-накопитель или незаметный бэкдор?

article-c9b81b1fcb4cfcee.jpg

PURP — Telegram-канал, где кибербезопасность раскрывается с обеих сторон баррикад

t.me/purp_sec — инсайды и инсайты из мира этичного хакинга и бизнес-ориентированной защиты от специалистов Бастиона

Источник: habr.com
 
Яндекс.Метрика