Атака клонов. Ломаем защиту от подключения USB-флешек

Содержание статьи

  • Как блокируют флешки
  • А как их различают?
  • Как палят?
  • Практический подход к сбитию параметров флешек
  • Часть 1. VSN (UUID)
  • Часть 2. VID, PID, Serial
  • Часть 3. Извращения
  • Вывод

Что­бы взло­мать чужую сеть, мож­но при­менить изощ­ренные высоко­тех­нологич­ные методы, а мож­но прос­то под­бро­сить сот­рудни­кам инте­ресу­ющей хакера ком­пании флеш­ку с «сюр­при­зом». В пос­ледние годы популяр­ность это­го спо­соба понем­ногу пада­ет, но он еще встре­чает­ся для про­ник­новения в тех­нологи­чес­кие сети про­мыш­ленных пред­при­ятий. А какие сущес­тву­ют методы защиты от вре­донос­ных фле­шек и как их мож­но обой­ти? Сей­час раз­берем­ся!

В этой статье мы рас­смот­рим, как устро­ена защита USB (Mass Storage Class — Removable Media) и как обма­нуть сис­темы огра­ниче­ния по белому спис­ку устрой­ств с помощью соз­дания кло­нов. Зву­чит инте­рес­но? Хочешь натянуть сов­ремен­ные средс­тва защиты? Тог­да доб­ро пожало­вать в мир увле­катель­ных экспе­римен­тов!

 

Как блокируют флешки

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

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

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesUSBSTOR

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

Рас­положе­ние на вин­де полити­ки, свя­зан­ной со съем­ными носите­лями

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

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

 

А как их различают?

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

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

wmic path win32_usbhub Where (Caption="Запоминающее устройство для USB") get DeviceID

По­луча­ем при­мер­но такой вывод коман­ды:

DeviceID
USBVID_13FE&PID_420070867948D560839

По­лучен­ный 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_MACHINESYSTEMCurrentControlSetEnumUSBVID_13FE&PID_420070867948D560839

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

При­мер вывода прог­раммы USBDeview

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

Вы­вод команд vol и dir

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

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

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

Вот при­мер такой флеш­ки:

DeviceID=USBVID_23A9&PID_EF186&45CEA456&0&2

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

DeviceID USBVID_23A9&PID_EF186&45CEA456&0&1

Как ты видишь, при изме­нении пор­та в серий­нике меня­ется номер это­го пор­та (&2 в кон­це прев­ратилось в &1). Так что нуж­но или добав­лять в спи­сок номер такой флеш­ки на всех пор­тах, или исполь­зовать толь­ко выделен­ный порт для ее под­клю­чения.

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

Свой­ства устрой­ства → Путь к экзем­пля­ру устрой­ства

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

USBSTORDISK&VEN_AI&PROD_MASS_STORAGE&REV_7&6266D645&0
USBSTORDISK&VEN_AI&PROD_MASS_STORAGE&REV_7&977ABD2&0

Для нор­маль­ной флеш­ки здо­рово­го челове­ка дан­ный иден­тифика­тор ста­билен:

USBSTORDISK&VEN_JETFLASH&PROD_TRANSCEND_8GB&REV_1100BBPIX7EB2VMBFI48&0

Здесь:

  • JETFLASH — про­изво­дитель;
  • TRANSCEND_8GB — наз­вание устрой­ства;
  • 1100 — номер ревизии;
  • BBPIX7EB2VMBFI48 — серий­ный номер.

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

 

Как палят?

Да­вай пос­мотрим, какими спо­соба­ми адми­ны могут выявить, что к сис­теме под­клю­чили флеш­ку. В Windows име­ется целый пул средств для отсле­жива­ния под­клю­чаемых носите­лей. Если хочешь поковы­рять­ся сам — смот­ри вот эти две вет­ки реес­тра:

HKLMSYSTEMCurrentControlSetEnumUSB
HKLMSYSTEMCurrentControlSetEnumUSBSTOR

Там хра­нит­ся спи­сок иден­тифика­торов под­клю­чаемых устрой­ств, при этом информа­ция в этих вет­вях реес­тра не затира­ется стан­дар­тны­ми про­цеду­рами в пла­ниров­щике задач вин­ды, то есть дан­ные хра­нят­ся сколь угод­но дол­го.

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

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

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

При­мер вывода прог­раммы USB Forensic Tracker

Нап­ример, прос­матри­вая дан­ные по нашей китай­ской флеш­ке, мы выяс­нили, что ее отоб­ража­емый серий­ник на пер­вом пор­те — 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, вынуть‑вста­вить флеш­ку, и все готово.

Ра­бота с ути­литой Volume Serial Number Changer и ее резуль­татВариант 3. Сделай сам

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

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

Ис­ходный VSN устрой­ства с фай­ловой сис­темой NTFS

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

Из­менен­ный VSN устрой­ства с фай­ловой сис­темой NTFS

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

Из­менен­ный VSN устрой­ства с фай­ловой сис­темой FAT

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

 

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

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

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

Источник: xakep.ru

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *