04.07.2021 22:05
Occul
 
А какие сущес­тву­ют методы защиты от вре­донос­ных фле­шек и как их мож­но обой­ти? Сей­час раз­берем­ся!

В этой статье мы рас­смот­рим, как устро­ена защита USB (Mass Storage Class — Removable Media) и как обма­нуть сис­темы огра­ниче­ния по белому спис­ку устрой­ств с помощью соз­дания кло­нов. Зву­чит инте­рес­но? Хочешь натянуть сов­ремен­ные средс­тва защиты? Тог­да доб­ро пожало­вать в мир увле­катель­ных экспе­римен­тов!
КАК БЛОКИРУЮТ ФЛЕШКИ

За­чем их бло­киро­вать? Что­бы ты не занес в ИТ‑инфраструк­туру ком­пании вирус‑шиф­роваль­щик, не тас­кал информа­цию домой и не при­носил игрушки в офис. В раз­ных кон­торах адми­ны и безопас­ники дей­ству­ют по‑раз­ному. В самых печаль­ных слу­чаях пор­ты физичес­ки отклю­чают­ся, залива­ются эпок­сидкой или опе­чаты­вают­ся. В слу­чаях поп­роще пор­ты отклю­чают­ся через BIOS/UEFI (что‑то вро­де USB Controller = Disabled).

Ес­ли адми­нам лень жал­ко ломать желез­ку, на помощь при­ходят нас­трой­ки реес­тра и груп­повые полити­ки вин­ды. Нап­ример, для пол­ной бло­киров­ки USB-носите­лей открой вот эту вет­ку реес­тра:

Код:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR
Ес­ли ты выс­тавишь у парамет­ра Start зна­чение 4, твои флеш­ки перес­танут под­клю­чать­ся. В груп­повых полити­ках (gpedit.msc) обыч­но смот­рят в сто­рону оснас­тки «Кон­фигура­ции компь­юте­ра → Адми­нис­тра­тив­ные шаб­лоны → Сис­тема → Дос­туп к съем­ным запоми­нающим устрой­ствам».




Су­щес­тву­ют ли спо­собы более изыс­канно и кра­сиво огра­ничить под­клю­чение нежела­тель­ных носите­лей к ком­пу? Ком­пании побога­че исполь­зуют допол­нитель­ные средс­тва защиты информа­ции (СЗИ) — тот же KAV (и иные анти­виру­сы), DLP-сис­темы, Secret Net (СЗИ от НСД) и про­чие. Кто‑то даже уста­нав­лива­ет драй­вер для про­вер­ки носите­ля по белому спис­ку, кто‑то про­веря­ет устрой­ство в момент его мон­тирова­ния.

Нас­трой­ки СЗИ могут зап­ретить под­клю­чение вооб­ще всех устрой­ств, толь­ко устрой­ств из чер­ного спис­ка или раз­решить под­клю­чение девай­сов из белого спис­ка. На пос­леднем вари­анте мы с тобой и оста­новим­ся попод­робнее.

А КАК ИХ РАЗЛИЧАЮТ?

Как отли­чить одну флеш­ку от дру­гой? Понят­ное дело, что у фле­шек есть про­изво­дитель, объ­ем, дру­гие парамет­ры... Но обыч­но про­изво­дите­ли снаб­жают каж­дую флеш­ку уни­каль­ным серий­ным номером, про­писан­ным в ее про­шив­ке.

Что­бы пос­мотреть его в вин­де, можешь исполь­зовать такую коман­ду Windows Management Instrumentation — WMIC (пред­варитель­но под­клю­чив флеш­ку):

Код:
wmic path win32_usbhub Where (Caption="Запоминающее устройство для USB") get DeviceID
По­луча­ем при­мер­но такой вывод коман­ды:
Код:
DeviceID
USB\VID_13FE&PID_4200\070867948D560839
По­лучен­ный DeviceID содер­жит:

VID — Vendor ID, иден­тифика­тор про­изво­дите­ля. 13FE — Kingston Technology Company Inc.;
PID — Product ID, иден­тифика­тор изде­лия. 4200 — Platinum USB drive mini;
Serial — уни­каль­ный серий­ный номер флеш­ки 070867948D560839.

VID и PID исполь­зуют­ся опе­раци­онкой для поис­ка дров. Пол­ный спи­сок мож­но пос­мотреть, нап­ример, на сай­те Linux USB.

По DeviceID флеш­ка про­писы­вает­ся в реес­тре:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_13FE&PID_4200\070867948D560839

Так­же ты можешь получить всю эту информа­цию с помощью прог­раммы USBDeview.



В некото­рых, осо­бо изыс­канных и нез­доровых слу­чаях в качес­тве иден­тифика­тора флеш­ки при­меня­ется Volume Serial Number (VSN, он же так называ­емый серий­ный номер тома), который мож­но получить коман­дой vol или dir.



По­чему исполь­зовать VSN (в Linux он называ­ется UUID) для иден­тифика­ции фле­шек — идея не очень? Дело в том, что дан­ные мет­ки иден­тифици­руют логичес­кие тома фай­ловой сис­темы. Что­бы изме­нить VSN слу­чай­ным обра­зом, дос­таточ­но отформа­тиро­вать раз­дел. Понят­но, что для жес­тких дис­ков это про­цеду­ра срав­нитель­но ред­кая, но флеш­ки фор­матиру­ют доволь­но‑таки час­то.

Что делать с ноунеймом

Для китай­ских noname-фле­шек, про­изво­дите­ли которых «кла­дут» на соот­ветс­твие девай­са все­воз­можным рекомен­даци­ям и стан­дартам, такой серий­ник будет менять­ся в зависи­мос­ти от USB-пор­та, в который ты под­клю­чил устрой­ство, и, разуме­ется, положе­ния звезд на небе. Если твою флеш­ку безопас­ники про­пишут в белый спи­сок толь­ко на одном пор­те, то на дру­гом ты ее исполь­зовать не смо­жешь.

Вот при­мер такой флеш­ки:
Код:
DeviceID=USB\VID_23A9&PID_EF18\6&45CEA456&0&2
Пер­вое, что бро­сает­ся в гла­за, — серий­ник содер­жит нес­коль­ко амперсан­дов. На самом деле у этой флеш­ки нет серий­ника вооб­ще. Ког­да & — вто­рой сим­вол серий­ного номера, это озна­чает, что сис­тема каж­дый раз при под­клю­чении генери­рует псев­досерий­ник сама, то есть он динами­чес­кий. Про­верим это, прос­то под­клю­чив флеш­ку в дру­гой порт:
Код:
DeviceID USB\VID_23A9&PID_EF18\6&45CEA456&0&1
Как ты видишь, при изме­нении пор­та в серий­нике меня­ется номер это­го пор­та (&2 в кон­це прев­ратилось в &1). Так что нуж­но или добав­лять в спи­сок номер такой флеш­ки на всех пор­тах, или исполь­зовать толь­ко выделен­ный порт для ее под­клю­чения.

В некото­рых СЗИ исполь­зуют иные свой­ства фле­шек. Все дос­тупные свой­ства ты можешь прос­мотреть, щел­кнув на знач­ке флеш­ки пра­вой кла­вишей мыши и выб­рав в кон­текс­тном меню «Свой­ства → Обо­рудо­вание → Све­дения». В выпада­ющем спис­ке наибо­лее полез­ные све­дения содер­жатся в стро­ках «Понят­ное имя», «Путь к экзем­пля­ру устрой­ства» и «Родитель» (тот же DeviceID).




У китай­ских фле­шек эти парамет­ры меня­ются, как генера­тор слу­чай­ных чисел. Нап­ример, путь к экзем­пля­ру устрой­ства для пер­вого и вто­рого USB-пор­та выг­лядит так:

Код:
USBSTOR\DISK&VEN_AI&PROD_MASS_STORAGE&REV_\7&6266D645&0
USBSTOR\DISK&VEN_AI&PROD_MASS_STORAGE&REV_\7&977ABD2&0
Для нор­маль­ной флеш­ки здо­рово­го челове­ка дан­ный иден­тифика­тор ста­билен:
Код:
USBSTOR\DISK&VEN_JETFLASH&PROD_TRANSCEND_8GB&REV_1100\BBPIX7EB2VMBFI48&0
Здесь:
JETFLASH — про­изво­дитель;
TRANSCEND_8GB — наз­вание устрой­ства;
1100 — номер ревизии;
BBPIX7EB2VMBFI48 — серий­ный номер.

У раз­ных фле­шек из одной пар­тии менять­ся будет толь­ко серий­ник.

КАК ПАЛЯТ?

Да­вай пос­мотрим, какими спо­соба­ми адми­ны могут выявить, что к сис­теме под­клю­чили флеш­ку. В Windows име­ется целый пул средств для отсле­жива­ния под­клю­чаемых носите­лей. Если хочешь поковы­рять­ся сам — смот­ри вот эти две вет­ки реес­тра:
Код:
HKLM\SYSTEM\CurrentControlSet\Enum\USB
HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR
Там хра­нит­ся спи­сок иден­тифика­торов под­клю­чаемых устрой­ств, при этом информа­ция в этих вет­вях реес­тра не затира­ется стан­дар­тны­ми про­цеду­рами в пла­ниров­щике задач вин­ды, то есть дан­ные хра­нят­ся сколь угод­но дол­го.

Ес­ли ты пред­почита­ешь готовые решения, то к тво­им услу­гам клас­сичес­кий USBLogView , который в реаль­ном вре­мени регис­три­рует под­клю­чение и отклю­чение флеш­ки. В форен­зике для ком­плексно­го ана­лиза под­клю­чений рекомен­дуем пос­мотреть в сто­рону USB Detective и USB Forensic Tracker.

USB Detective извле­кает информа­цию из реес­тра, логов, иных источни­ков, а так­же может сни­мать информа­цию с Live-сис­темы (в вер­сии Pro), при этом выпол­няя кор­реляцию и верифи­кацию дан­ных.

USB Forensic Tracker извле­кает все арте­фак­ты под­клю­чений незави­симо, поэто­му для каж­дого источни­ка дан­ных ты име­ешь свою таб­лицу под­клю­чений USB-устрой­ств (кор­реляции, к сожале­нию, он не дела­ет).



Нап­ример, прос­матри­вая дан­ные по нашей китай­ской флеш­ке, мы выяс­нили, что ее отоб­ража­емый серий­ник на пер­вом пор­те — 388e987, на вто­ром — 3с69e2с9. Пос­ле фор­матиро­вания они ста­ли 4247e754 и 966cde2 соот­ветс­твен­но.

Во внеш­них СЗИ име­ются фун­кции прос­мотра и бло­киро­вания под­клю­чен­ных фле­шек в реаль­ном вре­мени или на осно­ве ранее под­клю­чен­ных устрой­ств.

ПРАКТИЧЕСКИЙ ПОДХОД К СБИТИЮ ПАРАМЕТРОВ ФЛЕШЕК

Часть 1. VSN (UUID)

Ес­ли тебе повез­ло и в тво­ей орга­низа­ции бло­киру­ют флеш­ки через VSN/UUID, то сущес­тву­ет мас­са год­ных вари­антов. Все пред­став­ленные ниже кей­сы не изме­няют основные парамет­ры флеш­ки, такие как серий­ный номер и информа­ция о модели. Одна­ко пом­ни, что иног­да VSN при­меня­ется при лицен­зирова­нии ПО и изме­нение VSN может пов­лиять на его работос­пособ­ность. Зато, научив­шись менять VSN, ты смо­жешь давать вто­рую жизнь лицен­зион­ным про­гам, которые жалу­ются на сме­ну жес­тких дис­ков и не хотят работать.

WARNING

Ма­нипу­ляции пред­став­лены для демонс­тра­ции. При­меняя их, будь осто­рожен и вни­мате­лен, пос­коль­ку при некор­рек­тном под­боре команд, прог­рамм, про­шивок ты рис­куешь окир­пичить флеш­ку, за что мы, конеч­но, ответс­твен­ности не несем. Не сто­ит упо­минать, что на тес­тиру­емых флеш­ках не сле­дует дер­жать цен­ную инфу.

Вариант 1. Форматирование

Дан­ный вари­ант исполь­зует­ся, ког­да акти­вен толь­ко чер­ный спи­сок фле­шек, пос­коль­ку фор­матиро­вание меня­ет иден­тифика­тор раз­дела. Одна­ко задать кон­крет­ный иден­тифика­тор в дан­ном слу­чае не получит­ся.

Нап­ример, флеш­ка с FAT32 до фор­матиро­вания име­ет VSN 4652-F858, а пос­ле быс­тро­го фор­матиро­вания — 76DA-6C78. Для NTFS ситу­ация в целом ана­логич­на.

Как ты видишь, вари­ант пре­дель­но прос­той, но совер­шенно некон­тро­лиру­емый. Это нам как‑то не очень под­ходит, поп­робу­ем менять парамет­ры на избран­ные нами зна­чения.

Вариант 2. Смена VSN через утилиты

Су­щес­тву­ют готовые ути­литы для сме­ны VSN, нап­ример VolumeID от ком­пании Sysinternals или более при­ятная на вид гра­фичес­кая ути­лита Volume Serial Number Changer. Во вто­ром слу­чае нуж­но прос­то запус­тить ути­литу, выб­рать мет­ку дис­ка, вбить новый иден­тифика­тор, нажать Change Serial number, вынуть‑вста­вить флеш­ку, и все готово.






Вариант 3. Сделай сам

Ты хочешь пол­ностью поз­нать дзен фле­шек? Не воп­рос. Пред­варитель­но опре­делись с фай­ловой сис­темой. Открой любой HEX-редак­тор и перета­щи туда зна­чок флеш­ки из про­вод­ника. Для FAT32 VSN находит­ся по сме­щению 0x43, для NTFS — на 0x48.

Про­верим это.





На­шел­ся серий­ник 6666-6666. Что ж, испра­вим его и сох­раним резуль­тат. Пом­ни, что порядок чте­ния бай­тов — спра­ва налево (little endian).





Для FAT32 ситу­ация пол­ностью ана­логич­на.





Итак, теперь ты уме­ешь менять VSN (UUID). Но для по‑нас­тояще­му серь­езных вещей и соз­дания поч­ти пол­ноцен­ного кло­на нуж­но еще нем­ного углу­бить­ся в тему.

Часть 2. VID, PID, Serial

Что­бы менять мак­сималь­ное количес­тво парамет­ров, тре­бует­ся переп­рошить кон­трол­лер флеш­ки. Про­цеду­ра эта срав­нитель­но нес­ложная, но опас­ная — в слу­чае ошиб­ки ты рис­куешь сде­лать флеш­ку нерабо­тос­пособ­ной (одна­ко ошиб­ка чаще все­го воз­ника­ет при неудач­ном выборе про­шив­ки или про­шиваль­щика).

Пред­ста­вим, что у тебя есть исправ­ная флеш­ка (которая работа­ет в офи­се без проб­лем), а так­же ты при­обрел дру­гую флеш­ку — потен­циаль­ный клон. Если ты купишь флеш­ку точ­но той же модели, то при некото­рых обсто­ятель­ствах смо­жешь обой­ти СЗИ, в которых идет про­вер­ка толь­ко по VID и PID.

На прак­тике луч­ше най­ти флеш­ки, которые лег­че все­го переп­рошивать, нап­ример фир­мы Silicon Power или Transcend с USB 3.0 — в них час­то исполь­зует­ся SMI-кон­трол­лер. Хотя в целом тебе могут попасть­ся флеш­ки с кон­трол­лерами AlcorMP, Phison и дру­гие. Для них тоже есть про­шив­ки.

Об­щий алго­ритм про­шив­ки девай­са сле­дующий:

- Вы­ясни тип иден­тифика­тора, который исполь­зует­ся для опре­деле­ния флеш­ки в СЗИ, или исполь­зуемые сос­тавля­ющие на осно­ве дан­ных флеш­ки (опци­ональ­но), запиши их для пос­леду­ющей под­делки.
- Оп­редели кон­трол­лер флеш­ки.
- Под­бери ути­литу для про­шив­ки, под­ходящую под кон­крет­ную вер­сию кон­трол­лера.
- В про­шиваль­щике задай необ­ходимые парамет­ры, иден­тичные ори­гиналь­ной флеш­ке.
- Про­шей флеш­ку‑клон и про­верь ее работу. В слу­чае неудач­ной про­шив­ки — пов­тори шаги, начиная со вто­рого. Если флеш­ка окир­пичилась, пос­тупай ана­логич­но.

Шаг 1. Так слу­чилось, что на пер­вой про­тес­тирован­ной нами машине сто­ял анти­вирус Comodo с воз­можностью кон­тро­ля устрой­ств. Недол­го думая, вклю­чаем бло­киров­ку для USB и добав­ляем флеш­ку‑ори­гинал в исклю­чение. Анти­вирь любез­но показы­вает нам исполь­зуемый иден­тифика­тор флеш­ки.





В свой­ствах обо­рудо­вания находим, что эта стро­ка соот­ветс­тву­ет опции «Путь к экзем­пля­ру устрой­ства». Запишем иден­тифика­тор как целевое зна­чение, которо­му наша флеш­ка‑фейк дол­жна соот­ветс­тво­вать:

Код:
USBSTOR\DISK&VEN_&PROD_USB_DISK_2.0&REV_PMAP\070867948D560839&0
На вся­кий слу­чай запом­ним и DeviceID:

Код:
USB\VID_13FE&PID_4200\070867948D560839
Бы­вает, СЗИ нап­рямую не показы­вают иден­тифика­тор (уга­дай почему), а опре­деля­ют толь­ко некото­рые свой­ства под­клю­чен­ного устрой­ства. В таких слу­чаях иден­тифика­тор обыч­но скла­дыва­ется из видимых полей и свой­ств. Для нас это неп­ринци­пиаль­но, пос­коль­ку, под­гоняя дан­ные фей­ка под ори­гинал, мы задей­ству­ем те же самые дан­ные и фор­миру­ем такой же иден­тифика­тор.

Шаг 2. Для опре­деле­ния кон­трол­лера флеш­ки‑фей­ка вос­поль­зуем­ся про­гой ChipGenius (ее мож­но ска­чать с сай­та USBDev. Кста­ти, рекомен­дуем сайт как наибо­лее полез­ный рус­ско­языч­ный ресурс по про­шив­ке фле­шек. Мож­но вос­поль­зовать­ся ана­логом — Flash Drive Information Extractor. Интерфейс прог­рамм прос­той — вста­вил флеш­ку, получил резуль­тат — см. иллюс­тра­цию ниже.



Срав­ни с выводом ChipGenius для нашего будуще­го фей­ка:

DeviceID
USB\VID_090C&PID_1000\CCYYMMDDHHMMSS000000
Description: [H:]Запоми­нающее устрой­ство для USB(SMI USB DISK)
Device Type: Mass Storage Device
Protocal Version: USB 2.00
Current Speed: High Speed
Max Current: 500mA
USB Device ID: VID = 090C PID = 1000
Serial Number: CCYYMMDDHHMMSS000000
Device Vendor: SMI Corporation
Device Name: USB DISK
Device Revision: 1100
Manufacturer: SMI
Product Model: USB DISK
Product Revision: 1100
Controller Vendor: SMI
Controller Part-Number: SM3257ENBA - ISP 131128-AA-
Flash ID code: 98DE8493 - KIOXIA TC58TEG6DCJBA00 - 1CE/Single Channel [MLC-16K] → Total Capacity = 8GB

Итак, мы видим, что у нас кон­трол­лер семей­ства SMI (Silicon Motion) с номером SM3257ENBA. Теперь най­дем про­шиваль­щик для него!

Шаг 3. Хотя ChipGenius даже дает ссыл­ку для про­шиваль­щика, на сай­те по этой ссыл­ке все на китай­ском, поэто­му про­ще ска­чать его с UsbDev. При этом обя­затель­но в вер­сии, под­держи­вающей наш кон­трол­лер SM3257ENBA. Для дан­ного кон­трол­лера исполь­зуют­ся про­шиваль­щики SMI MPTool и Dyna Mass Storage Production Tool. Нам боль­ше по душе вто­рая (работа­ет дол­го, но качес­твен­но и поч­ти со все­ми под­видами дан­ных кон­трол­леров). Находим нуж­ную вер­сию, кача­ем Dyna Mass Storage Production Tool, встав­ляем флеш­ку‑фейк, запус­каем про­гу.

Шаг 4. Не пугай­ся, не все так слож­но. Все про­шиваль­щики име­ют прак­тичес­ки иден­тичный набор парамет­ров, поэто­му общие прин­ципы и изме­няемые парамет­ры у всех схо­жи, незави­симо от брен­да и модели кон­трол­лера. Убе­дись, что флеш­ка появи­лась в прог­рамме.



В пра­вой час­ти жми над­пись Settings, ввод пароля про­пус­каем нажати­ем Enter (в некото­рых ути­литах он тоже есть, обыч­но лег­ко гуг­лится на форумах), в качес­тве дефол­тно­го кон­фига ука­зыва­ем файл в кор­не катало­га про­шиваль­щика — NDefault.INI.

Кста­ти, все эти опе­рации могут вос­ста­новить твой любимый неис­прав­ный USB-гад­жет путем переп­рошив­ки с дефол­тны­ми зна­чени­ями, глав­ное — не накося­чить с опре­деле­нием прог­раммы и кон­трол­лера. Ну а мы про­дол­жаем. В появив­шемся окне перехо­дим на вклад­ку DeviceConfig.



Ме­нять здесь нуж­но сов­сем нем­ного. В поле SN Method выбира­ем Static SN (ина­че наш серий­ник будет пус­той, как в noname-флеш­ках). В дан­ном слу­чае мы зада­ем стой­кий, как швей­цар­ский банк, серий­ник, который не будет менять­ся от сис­темы к сис­теме.

В сек­ции USB чуть ниже выс­тавля­ем парамет­ры, как у флеш­ки‑ори­гина­ла:

VID → 13FE, PID → 4200, bdcDevice (номер ревизии) → PMAP

Имя про­изво­дите­ля и про­дук­та в нашем кей­се не исполь­зует­ся, можем не менять. Одна­ко в некото­рых мажор­ных СЗИ они так­же при­меня­ются для фор­мирова­ния сиг­натуры устрой­ства. Если ты вооб­ще не зна­ешь, какие парамет­ры и куда вво­дить, то рекомен­дуем пов­торить шаги с пер­вого и вот до это­го мес­та на флеш­ке‑ори­гина­ле, ско­пиро­вать все парамет­ры в про­шиваль­щик флеш­ки‑фей­ка и про­дол­жить чте­ние. Ори­гинал про­шивать не нуж­но.

В поля SN Begin No., SN End No. и SN Mask забива­ем серий­ник флеш­ки‑ори­гина­ла: 070867948D560839.

Да­вай еще раз пос­мотрим на целевую стро­ку:

Код:
USBSTOR\DISK&VEN_[пустой]&PROD_USB_DISK_2.0&REV_PMAP\070867948D560839&0
Мы уже перенес­ли номер ревизии (PMAP) и серий­ник — циф­ровую часть в кон­це.

В сек­ции Inquiry очи­щаем поле Vendor, в поле Product про­писы­ваем USB DISK 2.0. VID и PID мы поменя­ли, что­бы серий­ный номер (Device ID) был так­же иден­тичен ори­гина­лу. В пра­вом вер­хнем углу жмем Save и в глав­ном окне нажима­ем Start. Начина­ется переп­рошив­ка флеш­ки.



В нашем слу­чае глу­бокая переп­рошив­ка занима­ет 35 минут. А при исполь­зовании SMI MPTool мож­но задей­ство­вать более быс­трый спо­соб переп­рошив­ки, ког­да с кон­трол­лера счи­тыва­ется CID-регистр (Card Identification; откры­вает­ся через меню Debug → Read CID\Write CID), в нем по ана­логии с редак­тирова­нием в HEX вруч­ную про­писы­вают­ся нуж­ные дан­ные (но опять же нуж­но уста­новить кон­троль­ные бай­ты дли­ны, не забывать вби­вать зна­чения спра­ва налево и так далее, что неудоб­но).



Шаг 5. Пос­ле успешной (мы наде­емся) переп­рошив­ки оста­ется про­верить нашу фей­ковую флеш­ку и узнать, нас­коль­ко она хороша. Пос­мотрим детали с помощью ChipGenius и выделим отли­чия от ори­гина­ла:

Description: [H:]Запоми­нающее устрой­ство для USB(USB DISK 2.0)
Device Type: Mass Storage Device
Protocal Version: USB 2.00
Current Speed: High Speed
Max Current: 500mA (у ори­гина­ла — 200 mA, мож­но поменять через свой­ство USB Power — см. позап­рошлый скрин, но при заниже­нии силы тока устрой­ство может отка­зать­ся работать)
USB Device ID: VID = 13FE PID = 4200
Serial Number: 070867948D560839
Device Vendor: SMI Corporation (у ори­гина­ла отсутс­тву­ет, меня­ется через панель USB → Vendor String)
Device Name: USB DISK (у ори­гина­ла USB DISK 2.0, меня­ется через панель USB → Product String)
Device Revision: 4200 (у ори­гина­ла 0100, дан­ный параметр не изме­няет­ся)
Product Model: USB DISK 2.0
Product Revision: PMAP
...(осталь­ное по кон­трол­леру и так раз­лича­ется)...

Те­перь срав­ним DeviceID флеш­ки‑ори­гина­ла, фей­ка до кло­ниро­вания и фей­ка пос­ле про­шив­ки.



От­крыв свой­ства обо­рудо­вания, про­веря­ем путь к экзем­пля­ру‑кло­ну:

Код:
USBSTOR\DISK&VEN_&PROD_USB_DISK_2.0&REV_PMAP\070867948D560839&0
Це­левой путь:

Код:
USBSTOR\DISK&VEN_&PROD_USB_DISK_2.0&REV_PMAP\070867948D560839&0
Те­перь встав­ляем фейк в тес­товую машину с вклю­чен­ным белым спис­ком для флеш­ки‑ори­гина­ла.



Сра­бота­ло! Флеш­ка откры­вает­ся и работа­ет. Про­буем под­клю­чить ори­гиналь­ную флеш­ку вмес­те с фей­ком — облом, про­исхо­дит кон­фликт, поэто­му работа­ет толь­ко пер­вая вот­кну­тая флеш­ка. Так что под­клю­чай их по одной.

Для пол­ного соот­ветс­твия копии ори­гина­лу рекомен­дуем изме­нить осталь­ные парамет­ры, отформа­тиро­вать фейк, дать ему мет­ку ори­гина­ла. И не забудь изме­нить VSN — как это сде­лать, ты уже зна­ешь.

Да­вай про­верим фейк на надеж­ном анти­виру­се — нап­ример, Kaspersky Endpoint Security 10.



Смот­рим, что исполь­зует­ся в качес­тве иден­тифика­тора флеш­ки‑ори­гина­ла.



Это путь к экзем­пля­ру устрой­ства, добав­ляем его в белый спи­сок, про­веря­ем на какой‑нибудь левой флеш­ке.



И вот тут мы сло­вили хох­му — флеш­ка отоб­ража­ется в про­вод­нике (осо­бен­ность «Кош­мар­ско­го»), про­веря­ется анти­виру­сом, но при попыт­ке обра­тить­ся к ней получа­ем вот такое окно.



Но флеш­ка‑фейк пред­ска­зуемо работа­ет без каких‑либо проб­лем.

Схо­жим обра­зом мы про­тес­тирова­ли ряд ком­мерчес­ких DLP-сис­тем, СЗИ под Linux и ниг­де не встре­тили ни отпо­ра, ни попыток вос­пре­пятс­тво­вать ата­ке кло­нов.

И тут статью мож­но было бы закон­чить, но...

Часть 3. Извращения

Со­вер­шенно слу­чай­но ока­залось, что в зависи­мос­ти от СЗИ мож­но исполь­зовать и допол­нитель­ные методы обхо­да USB-бло­киро­вок.f

Дискетка

Пу­тем фор­матиро­вания флеш­ку мож­но прев­ратить в клас­сичес­кую дис­кету с воз­можностью чте­ния и записи, объ­емом все­го в 1,38 Мбайт. Хва­тит, что­бы потихонь­ку перета­щить на работу игрушку? Раз­ве что по час­тям в нес­коль­ко заходов. Вот как это сде­лать. Берем новую флеш­ку, дей­ству­ем по зна­комо­му алго­рит­му. В этот раз нам попалась флеш­ка Transcend 8 Gb USB 3.0 с кон­трол­лером SMI SM3267AB (возь­мем про­шиваль­щик для него — SMI MPTool V2.5.51 v7 P0920v1). Итак, про­шиваль­щик, окно Settings, вклад­ка Multi-Lun Settings.



Ус­танав­лива­ем гал­ки на Floppy и фор­матиро­вании, про­шива­ем. Резуль­тат выг­лядит при­мер­но так.





Floppy-дис­ковод работа­ет, зачет :).

Про­верим на Кас­пере. По‑преж­нему бло­киру­ется USB для любых фле­шек, кро­ме доверен­ных, но «дис­ковод» успешно под­клю­чает­ся, мож­но читать‑писать информа­цию. Дос­тупа к фле­шеч­ному раз­делу по‑преж­нему не пред­видит­ся.

Ес­ли срав­нивать информа­цию о Floppy в Кас­пер­ском с информа­цией по USB, то раз­ница зак­люча­ется толь­ко в типе устрой­ства (Дис­кеты vs Съем­ные дис­ки).

При вклю­чении бло­киров­ки дис­кет дан­ный метод, конеч­но, не сра­бота­ет.



CD-привод

Ана­логич­ный под­ход, но теперь поп­робу­ем соз­дать на флеш­ке CD-раз­дел и пред­варитель­но записать на него образ из ISO-фай­ла. Недос­таток оче­виден — мож­но толь­ко счи­тывать инфу с CD-раз­дела, записать на флеш­ку фай­лы ты уже не смо­жешь. Но запус­тить уста­нов­щик любимой игру­ли — без проб­лем. Берем ту же самую флеш­ку на кон­трол­лере SM3267AB и через SMI про­шива­ем CD-раз­дел. В раз­деле Multi-lun Setting выс­тавля­ем галоч­ку Static CDROM Size и ука­зыва­ем раз­мер под твой ISO, который мы будем туда заливать.



На вклад­ке Main Flow Setting око­ло гал­ки с Make Auto Run зада­ем путь к ISO-обра­зу, нап­ример с Kali Linux — или чем‑нибудь дру­гим. Пос­ле про­шив­ки флеш­ка отоб­ража­ется в про­вод­нике как отдель­ный флеш‑накопи­тель и CD-при­вод. С CD-раз­дела мож­но читать, копиро­вать фай­лы — все как при клас­сичес­ком мон­тирова­нии ISO-обра­за.

Что же на это ска­жут наши бло­киров­щики? В Кас­пер­ском и дру­гих ком­мерчес­ких решени­ях ситу­ация пол­ностью ана­логич­на слу­чаю с дис­кетами: CD-раз­дел успешно под­клю­чен и готов к исполь­зованию.

Покупка мутантов

Есть, кста­ти, готовые флеш­ки, которые содер­жат CD-раз­дел с ути­лита­ми для под­клю­чения «зак­рытого» раз­дела — как, нап­ример, в Jet Flash Transcend 620. Выг­лядит он при­мер­но как CD-раз­дел с прог­рамму­линой + 2 USB-раз­дела — откры­тый и пока зак­рытый, до вво­да пароля. Раз­мер при­ват­ной области нас­тра­ивает­ся.





Так вот, при работе белого спис­ка по USB-накопи­телям в Кас­пер­ском (если CD-при­вод не заб­локиро­ван) такая фле­ха впол­не себе мон­тиру­ет CD-раз­дел — мож­но и запус­кать, и копиро­вать про­ги с него. При попыт­ке смон­тировать защищен­ный раз­дел — отказ в дос­тупе. Что­бы спас­тись от этой напас­ти, нуж­но заб­локиро­вать CD-при­вод, хотя в родите­ле устрой­ства ука­зан все тот же ста­рый доб­рый USB-иден­тифика­тор, что стран­но. В Comodo воз­можность мон­тирова­ния такого недове­рен­ного носите­ля исклю­чена в прин­ципе. Почему? Воп­рос к реали­зации СЗИ и механиз­мам орга­низа­ции белых спис­ков.

ВЫВОД

В статье мы рас­смот­рели вари­анты фор­мирова­ния мак­сималь­но прав­доподоб­ного кло­на флеш­ки, который поз­воля­ет обхо­дить все­воз­можные бло­киров­ки. В зависи­мос­ти от сте­пени заморо­чен­ности, мож­но обой­ти поч­ти любой белый спи­сок. Как нам видит­ся, для гаран­тирован­ной защиты от под­мены USB мож­но было бы ука­зывать в СЗИ кон­крет­ные модели фле­шек и заносить в белый спи­сок хеш от CID области, от ком­бинации VID + PID + Serial или добав­лять хеш вывода ChipGenius (ну либо его час­ти). Неп­лохо было бы добав­лять в иден­тифика­цион­ную информа­цию дан­ные о модели кон­трол­лера девай­са.

В свя­зи с тем что мы зна­ем пароч­ку опе­раци­онных сис­тем, которые в качес­тве зна­чений для белого спис­ка исполь­зуют наз­вание про­изво­дите­ля или иные подоб­ные парамет­ры, было бы здо­рово на уров­не ОС кон­тро­лиро­вать под­клю­чаемые носите­ли на пред­мет их под­мены или несо­ответс­твия обыч­ному (ожи­даемо­му) поведе­нию (нап­ример, мож­но срав­нивать VSN/UUID и ловить отли­чия при оди­нако­вом DeviceID).

Бе­зопас­никам мы рекомен­дуем пол­ностью бло­киро­вать под­клю­чение дис­кет и дис­ков в ОС, что­бы исклю­чить опи­сан­ные вари­анты обхо­да защиты. Будем рады получить обратную связь в ком­мента­риях. Может быть, у читате­лей най­дут­ся при­коль­ные решения для защиты от кло­нов или ана­лиза ано­малий при под­клю­чении устрой­ств.
07.09.2021 12:20
LeoWan
 
Добрый день.
Вопрос, если есть "белая" флэшка работающая, то зачем делать её клон?
Если клон большего объёма, то есть польза, но такой трюк с флэшками большего объёма прокатывает, в части той же перепрошивки?
И ещё допустимы ли здесь вопросы по исследованию вариантов отключения блокирующих флэшки драйверов?
07.09.2021 14:28
OlegON
 
Цитата:
LeoWan допустимы ли здесь вопросы
Допустимо все в рамках темы и действующего законодательства. Не забываем, что отключения флешек бывают не только легальными, но и злонамеренными.
Цитата:
LeoWan есть "белая" флэшка работающая, то зачем делать её клон?
Затем, что содержимое "белой" и не очень белой флешек может быть совершенно разным. Более того, оригинальную не всегда есть возможность скопировать, чтобы подменить содержимое на время.
07.09.2021 17:52
LeoWan
 
Ну у меня с белой флешкой только две проблемы - скорость и объём.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.