бридке каченя

флешку

бридке

Xakep #239. Розкрити та вивчити

бридке

Xakep #238. Забутий Android

каченя

Xakep #237. Даркнет 2018

флешку

бридке

Xakep #235. Відродження експлоїт-китів

Бридке каченя. Перетворюємо звичайну флешку на USB Rubber Ducky

бридке

Зміст статті

Якось давно ми робили в журналі огляд девайсів, які було б бажано мати у своїй валізці хакера. Серед інших девайсів там був і USB Rubber Ducky - пристрій, що зовні нагадує звичайну флешку, який прикидається клавіатурою і при підключенні до комп'ютера швиденько набирає всі задані в ньому команди. Штука крута і дуже корисна при проведенні пентестів, але навіщо викладати за неї 40 баксів (та ще й за поточного курсу), якщо аналогічним трюкам можна навчити звичайну флешку?

Передмова

Торішній Black Hat приніс багато цікавих доповідей. Серед найбільш обговорюваних була доповідь, присвячена невиправній вразливості USB-пристроїв, що дозволяє перетворювати звичайні флешки на інструмент поширення шкідливих програм. Атаку назвали BadUSB, але пізніше в Мережі з'явилися жарти на тему USBola, що порівнюють цю атаку з відомим вірусом.

Передумови

Але як вона це робить?

Пристрій Flash накопичувачів

Насправді, ОС нічого не знає про пристрій, що підключається. Їй доводиться чекати, поки аксесуар сам не повідомить, до якого класу пристроїв він належить. Якщо взяти найпростіший приклад, коли ми встромляємо флешку в USB-роз'єм, то флешка повідомляє операційну систему не тільки що є накопичувачем, а й свій обсяг. Тут відразу згадуються хитрожовті китайські товариші, які таким чином навчилися випускати флешки підвищеної ємності (зустрічалися мало не на парутерабайт). Щоб розібратися, як таке можливо, давай згадаємо (або дізнаємось), як система розпізнає USB-пристрої.

бридке
Флешка без гарної обгортки

Алгоритм ініціалізації USB пристроїв

Призначення USB-пристроїв визначається кодами класів, які повідомляються USB-хосту для завантаження необхідних драйверів. Коди класів дають змогу уніфікувати роботу з однотипними пристроями різних виробників. Пристрій може підтримувати один або кілька класів, кількість яких визначається кількістю кінцевих точок (USB endpoints). У момент підключення хост запитує у пристрою ряд стандартизованих відомостей (дескрипторів), на підставі яких приймає рішення, як працювати з цим пристроєм. Дескриптори містять відомості про виробника та тип пристрою, на підставі яких хост підбирає програмний драйвер.

Звичайна флешка матиме код класу 08h (Mass Storage Device — MSD), тоді як веб-камера, забезпечена мікрофоном, буде характеризуватись вже двома: 01h (Audio) та 0Eh (Video Device Class).

флешку
Класи пристроїв

Якщо розкрити корпус флешки, то крім пам'яті (Mass Storage), видимого користувачеві, на платі буде ще й контролер, що відповідає за описані вище дії.

бридке
Єдина частина пристрою, видима користувачеві

Bad USB або трохи історії

Отже, на конференції Black Hat минулого року двоє дослідників (Karsten Nohl та Jakob Lell) поділилися з громадськістю досвідом, як перепрошити контролер флешки своєю прошивкою. Через деякий час така флешка реєструвалася як клавіатура і набирала задані команди. Через серйозність проблеми хлопці не викладали код експлойту. Однак, через деякий час, двоє іншихдослідників (Adam Caudill і Brandon Wilson) вже на конференції Derbycon представили світові працездатний РоС, заточений під мікроконтролер Phison 2251-03. Код доступний на github.

Трансформація

Як ти зрозумів, сьогодні ми спробуємо перетворити звичайну флешку на секретну зброю пентестера!

Насамперед нам знадобиться відповідний девайс. Так як код викладено тільки для конкретного мікроконтролера, то у нас є два варіанти - або знайти флешку, керовану цим контролером, або провести дуже непросту роботу з дослідження та перепрошивки будь-якого іншого мікроконтролера. На цей раз ми виберемо більш легкий шлях і спробуємо знайти відповідну флешку (а ось і список обладнання, що взяв). Контролер досить поширений, тож навіть якимось дивом у мене вдома серед десятка флешок знайшлася підходяща.

Починаємо чаклувати

Продовження доступне лише передплатникам

Варіант 2. Купи один матеріал