Комментарии 112
То есть схема атаки понятна:
<...>
3. На исполнение автоматически запускается скрипт, который представляет собой одну конкретную последовательность нажатий клавиш.
С этого места, пожалуйста, поподробнее: он запускается через autorun.inf или это магия "драйвера" "клавиатуры"?
скрипт не на хосте запускается, а на самой флешке. Скрипт просто посылает коды нажатия клавиш хосту
Это я все понимаю, не понимаю другого: почему он запускается? Каков механизм запуска исполняемого кода с устройства, идентифицирующего себя как боевой вертолет клавиатура?
Флешка представляется клавиатурой и отправляет набор клавиш на комп - Win+R → powershell.exe → Enter → <...>
Сам ПК при этом абсолютно уверен что к нему подключена клавиатура, на которой просто кто-то что-то набирает.
Скрипт сам исполняется флешкой, её встроенным процессинг юнитом.
А, там свои мозги, которые закипают запускаются по подаче питания... теперь понял, спасибо!
В любой флешке свои мозги, которые запускаются при подаче питания. Просто нормальные флешки представляются системе накопителем
Не обязательно. Она может представиться композитным устройством стандартных классов (mass storage + HID). в 00х были флешки со датчиком дактилоскопии. При этом, сканер отпечатка пальца мог использоваться как для разблокировки накопителя без участия компа, так и как обычный сканнер отпечатка для использования самой системой. Хм, они до сих пор продаются, причём на приличный объём:
Win+R → powershell.exe → Enter →
А что же UAC?
Дисклеймер про необходимость знать про атакуемую систему неспроста написали.
Как вы поступаете, когда вылезает UAC?
Нажимаете кнопку Y? Вот и новая клавиатура "выплевывает" Y и подтверждает UAC, что все в порядке, можно выполнять.
Я проверял, это прекрасно работает. Даже на мини Windows планшете с тачскрином и клавиатурой (в данном случае такой флешкой), подключаемой через OTG.
Другое дело, что у подобных систем принципиальная проблема - они выплевывают код клавиши. В точности, как клавиатура. А какой символ появится на экране - это уже вопрос к ОС,
Соответственно, если включена русская раскладка, после Win-R будет в строке будет появляться не cmd
, а сьв
. Не powershell
, а зщцукырудд
. Ну или на руской винде UAC будет ждать Д, а не Y...
Alt+коды на цифровой клавиатуре.
Насколько это замедлит процесс? Скорость передачи вроде максимум по 30 кодов в секунду, а тут на каждый символ потребуется 10 (вроде бы) скан-кодов вместо 2-4 обычных.
Верно говорите, есть варианты. Но это надо учитывать (в какой-то степени таргетированная атака).
И таки подтвердить запрос UAC вполне можно. Про различие Y или Д я не думал, возможно проще послать стрелочку вбок и Enter.
В скрипт по идее можно добавить момент выбора языка клавиатуры, с русского на английский а дальше по схеме.
а юзер в это время сидит и смотрит? ) я бы понял, если бы оно внешне выглядело на 100% как флэшка и умело поначалу работать как флэшка большого объема, отслеживать что n минут не было активности за ПК и лишь потом переключаться в режим клавы. Тогда хоть какие-то шансы есть на улов
Угу, а еще определять записываемые исполняемые файлы и встраивать туда разнообразных зловредов...
При всем желании, клавиатуре недоступно содержимое экрана или факт нажатия на другие клавиши на другой клавиатуре.
...и понимание, в какой ОС она работает. А у описываемой версии этот функционал заявлен чуть не как одна из главных новинок. Вероятно, теперь это не просто клавиатура, а что-то более сложное...
может, потому что это и не флешка, и не клавиатура, а очень маленький компьютер? Как только он запитывается от 5V USB, грузит свою нехитрую ОС, анонсит себя как клаву хосту и шлёт в порт коды нажатия клавиш, согласно захардкоженному списку (скрипту)
флешкой это названо только из-за внешнего вида. технически это микроконтроллер, который может делать что угодно, в том числе прикинуться клавиатурой и сэмулировать нажатие клавиш. устройство, в которое это вставили не сможет отличить его от реальной клавиатуры
В протоколе USB существует возможность посылать запросы устройству по нулевой конечной точке, при том, что подключаемое устройство не объявляет нигде о том, что их поддерживает.
Флешкой это названо, потому что атакуемый принимает её за флешку. Хотя в кавычках было бы правильнее.
>потому что атакуемый принимает её за флешку
а почему атакуемый принимает ее за флешку?)
А почему нет? Если это выглядит как флешка, определяется (в том числе!) как флешка, и позволяет хранить файлы - это флешка!
Тот факт, что это на самом деле составное устройство USB, пользователь может и не заметить. Например, воткнуть, увидеть, что это флешка, там пусто, и оставить в компе. А на самом деле, в устройствах можно увидеть, что подключилась и флешка и USB клавиатура. В продвинутых случаях вполне можно сделать задержку, чтобы из составного устройства подключилась как обычная флешка, а через, скажем, пару часов, уже подключалась дополнительно как клавиатура, и начала набирать свои последовательности.
это просто клавиатура. как толькоее распознала ОС как клаву, то с нее начинают нажиматься кнопки.
Считай, что злоумышленник сел за физическую консоль.
вариант для бедных (или прагматичных) - взять какую нить arduino pro mini (с atmega32u4), и самому упаковать ее в корпус флешки. эмуляция клавиатуры есть в примерах ардуины. бюджет - менее 5 долларов.
Всё это почему-то всё больше и больше напоминает сеттинг Вархаммер 40к, где тоже нельзя было просто так включать найденную флешку технологию, потому что в ней могли содержаться вирусы, и только специалисты по информационной безопасности техножрецы могли с помощью магии ритуалов постараться минимизировать возможный ущерб. Но для большей надёжности старались либо уничтожить, либо не трогать вообще.
Например, новая Ducky может определить версию операционной системы (Windows или Mac), выполнить соответствующий код для каждой системы или отключиться, если цель не соответствует условиям.
Каким образом это возможно? Компьютер разве передаёт какую-либо информацию клавиатуре?
Как минимум - передаётся состояние "лампочек"
И не только - там чуть ли не десяток команд, которые хост может отправить клавиатуре (управление задержками, сброс состояния...), и это только официально описанные. Но я не уверен, что их можно из powershell отправлять.
Ну вообще можно с компа жертвы инфу и отправлять, запросом на сервер например, или, ну не знаю, по почте - если в браузере открыть ссылку mailto:адрес-почты то браузер сам откроет почтовый клиент который юзер использует, и с нее отправить любые данные на почту хакеру, можно хоть файл прикрепить.
Ну значит если очень любопытно, подключать её с поднятой виртуальной машиной, уже на этом этапе будет понятно, флешка ли это. Ну и посмотреть её содержимое в виртуалке. Наверно лучше, чтобы она ещё и флешку из себя изображала, с интересным содержимым, чтобы отвлечь от дальнейшей безопасности.
зачем вообще подключать найденную на улице флешку? они сейчас копейки стоят, да и не нужны особо в эпоху облачных хранилищ. А посмотреть, есть ли там что-то интересное, можно и с применением защитных мер, да
Например, чтобы понять, кто её потерял. Или.... а вдруг там "весёлые картинки"? ))
а еще можно замаскировать под Ledger или какой-нибудь другой криптокошелёк, а внутрь положить wallet.dat или какой-нибудь софтварный кошель, перечисляющий 10 баксов...
в таком раскладе её не просто когда-нибудь вставят, а немедленно побегут вставлять)
Для проверки можно ли подсоединять разлогинившись? Будет заметно, что это не флэшка или это в устройстве предусмотрено, чтоб не палиться?
Устройство к кибер оружию ещё не приравняли? Что произойдёт, к примеру, на таможне при обнаружении ? ;)
А разлогинившись как вы поймёте что это за флэшка?
Во «флешку» может быть встроено что-то более грубое, чем просто эмулятор клавиатуры. Например, USB-killer, который подаёт на плату принимающего устройства большое напряжение, и то приходит в негодность. Поэтому лучше не совать в свой компьютер ничего непонятного.
Ну, с "потерянными" флешками всё понятно и ожидаемо.
У меня вот один из честно купленных на алике type-c хабов со стандартным набором фич (hdmi, 3 usb, microSD, ethernet, PD) стал инсталлить в систему HID мышь и клаву, которых у него никогда не было. Пока отключил его и подписал, некогда разбираться откуда ноги растут, но прецедент интересный
очень интересный хаб.
Скорее всего атавизм от другой модели с кнопкой включения, как у lenovo USB-C Dock. Но если не он, было бы очень интересно глянуть на активность в http://bentiss.github.io/hid-replay-docs/ .
У меня есть вполне легально проданная в крупном магазине мышка беспроводная, которая, как оказалось, на самом деле является составным устройством, в составе которого есть клавиатура. Я ей пользовался несколько лет, никаких действий она не делает. Но разок принёс на работу, где в касперском настроена защита от BadUSB - и он определил как клавиатуру, потребовал, чтобы я ввёл на этой "клавиатуре" код, который он вывел на экран. Я ничего не ввёл, каспер заблокировал, но мышка продолжила работать :) Правда, под виндой я не знаю как пользоваться доп кнопками на ней, возможно, для них так реализовано. Кнопки стандартные в принципе, вперёд-назад, и ещё какие-то вроде были.
интересно. У меня купленный на али dac/усилитель наушников, имеющий usb-c — на макос определился как клавиатура…
Это позволяет проводить необычные атаки, которые сложно обнаружить с помощью антивируса.Антивирус не может отследить, что к системе подключается вторая клавиатура (что явно не стандартная ситуация) и не может ее заблокировать до подтверждения администратором?
Кажется, есть мыши и клавиатуры, которые располагаются как два или более устройства с целью обхода ограничений HID, так что ситуация не такая уж и нестандартная
Вполне логично в данном случае запросить подтверждение и добавить после в разрешенное.
Например, старая клавиатура сломалась. Вместе с мышкой. Как подключить новую? В смысле, как подтвердить, что всё ок?
Да элементарно - окошко с обратным отсчётом секунд на 30 - "Подключена новая клавиатура, она станет активна через XX секунд. Если Вы ничего не подключали - нажмите Отмена".
Нажать где? Старая клавиатура уже не работает, новая ещё не работает. Если сделать так чтобы новая клавиатура немного работала - будут атаки в этом направлении.
Ну, допустим, скрипт в флешке справится с этой ситуацией. Сценарий "Гомер Симпсон нашел флешку и вставил в самый главный компьютер на работе" выглядит фантастично, а вот сценарий "агент 007 попросил уборщицу вставить на пару минут вот эту штуку в комп секретарши главного босса" - может прокатить.
Так я предлагаю нажать, чтобы не подключать новую клавиатуру. А если не нажать ничего в течение N секунд - она подключится. Т.е. в сценарии "старая клавиатура не работает и новую подключили" - всё будет ОК, после небольшого ожидания новая клавиатура подключится. А в сценарии "со старой клавиатурой всё ОК, а вставленная флэшка прикидывается новой клавой" у пользователя будет время не дать ей подключиться.
Т.к. при вставке новых флэшек пользователь обычно на экран смотрит-таки, то нормальный сценарий. При заблокированном компьютере (на случай той самой уборщицы) запрос показывать только после разблокировки (а кто оставляет незаблокированный - тот и без хакерских флэшек ССЗБ). Единственный проблемный сценарий - это если клава сломалась и нельзя ввести пароль для разблокировки. Ну в таком прискорбном случае можно просто перезагрузить комп кнопкой питания, а клавиатуры, изначально подключенные на момент запуска системы, не блокировать (но предупреждать, если в их составе что-то изменилось).
Можно вывести на экран код, который надо набрать на новой клавиатуре.
Кстати не плохой вариант.... мы как-то с коллегами этот вариант атаки обсуждали и тоже пришли к этому варианту как почти единственному рабочему и не слишком обременительному со стороны пользователя.
bluetooth-клавиатуры так и спариваются.
Касперский так и проверяет. Выдаёт код на экран и требует ввести с ЭТОЙ клавы.
круто, касперски получается таки очень злобственный антивирь. Ни в одном западном антвире я такой функцональности не видел, приходится городить белые списки устройств, но это поддерживать в крупной сети очень тяжело, почти гиблый номер.
И от чего это должно помочь? Допустим, я сначала каким-то образом узнаю правильный vid/pid/etc id. Думаю, их можно склонировать с правильной клавиатуры в такую же, но с кейлоггером, или виртуальную клавиатуру внутри флешки.
Не знаю точно, как он детектит. Но думаю, что если видит клаву в составном usb устройстве. Обычная клава не определяется как составное устройство. Хотя наверняка можно обойти и это.
Правильнее было бы блокировать появление второй активной клавиатуры, при наличии уже одной. Не могу представить кейса, где надо иметь 2 клавиатуры.
А если эту штуку «вшить» в клавиатуру? И продавать на Алике со скидкой
А как нажать отмену? Вот допустим мышка сломалась, я домохозяйка по кнопкам только мышкой тыкаю. Купил новую мышь, а она не работает, кликнуть по отмене никак.
В смысле, как подтвердить, что всё ок?Вывести форму ввода пароля администратора (с пояснением что именно происходит) и не давать клавиатуре делать ничего кроме ввода пароля, пока пароль не введен пользователем.
Ну вот у меня есть ноутбук. У него есть своя родная клавиатура, и плюс постоянно подключена беспроводная. Что в этом нестандартного?
У нас на рабочих ноутах при вставке новой клавиатуры всегда сначала выводилось окошко "обнаружена новая клавиатура. Введите с неё это число, чтобы её активировать". И снизу 4 случайных цифры. Так что методы борьбы с таким давно известны.
Для защиты можно аппаратно или программно блокировать подключение новых устройств по USB. Например, такая функция поддерживается в Qubes OS.
Или поставить антивирус. В касперском точно есть блокировка новых клавиатур. В остальных, полагаю, тоже.
новая Ducky может определить версию операционной системы (Windows или Mac)
Это что linux опять забыли, обидно прям....
Здесь не та ситуация, когда обидно, что linux опять забыли)
Потому на линуксе придется в любом случае вычислять окружение жертвы (начиная с хоткея открытия терминала), и это определение будет бесполезно
....и система радостно предложит ввести логин с паролем
Ну и кстати, у меня например дефолтный арч там иксы запускает :D
При желании вроде на ардуино подобных микроконтроллерах такое можно реализовать.
Я правильно понимаю, что при включении этой 'флешки' начнет выскакивать командная строка и прочие окошки?
Да помню была статья про клавиатуру которая не распознается антивирусом где бы ее теперь найти
Прагматичный и простой подход. Достаточно "модифицировать" мышку (клавиатуру) и подключить их вместо штатных, и дело в шляпе. Тут можно даже небольшую точку доступа реализовать, чтобы удобно бродить по данным из соседнего кабинета...
Думаю, что только производитель ОС (или ядра ОС) может с полной уверенностью сообщить или умолчать факт сбора данных. Или кому-то из вас не лень сниффить траффик 24/7 ¿
Я не понял, мы однажды чтобы наш драйвер подписать в майкрософте ходили кругами как бабка по собесу, и получилось только через знакомых. А этим кто драйвер подписал?
Или она эмулирует по PID уже имеющийся в системе драйвер?
А можно в ей кроме флешки и клавы сделать еще юсб сетевой адаптер, подключаешь, он устанавливается, затем скрипт пишет маршрут с этого адаптера на GW, и потом рапортует на управляющую ботнетом машину - вот она я. Или даже лучше, просто вайфай адаптер, подключаешь, он устанавливается, скрипт получает от винды точки доступа и пароли - вуаля.
Сейчас уже вариантов этих "уточек" миллион плюс один. Любой может сделать себе сам на любой вкус. Например, мне нравится вариант с симкой и управлением через сотовую связь.
Такое может быть в любой клавиатуре с завода. Как выше писали, минимальная защита - при подключении новой клавиатуры потребовать на ней внести защитный код
На сколько законно её приобретение в РФ?
На сколько я знаю, за всякие шпионские гаджеты, купленные на алике, можно получить реальный срок. Какое отношение законодательства к этому девайсу?
Флешка Rubber Ducky стала ещё опаснее