Формирует правила для udev, системного демона, который следит за устройствами в системе. Правила формируются так, что добавление неизвестных ранее usb-устройств или извлечение определенных заранее вызывает некоторые действия, например выключение компьютера, затирание файлов и т.п. Простыми словами, для примера, если кто-то воткнет без вашего ведома флешку, компьютер взрывается на хуй выключается.
Вдохновлялся usbkill, у которого есть ряд недостатков. В частности, usbkill постоянно висит в памяти, что избыточно при наличии udev. Также мое решение учитывает больше параметров для устройств, поэтому для атакующего будет недостаточно иметь например флешку той же модели, нужно будет узнать и подделать серийник.
Написано на баше, только для линупса, только хардкор
Живет сия годнота на гитхабе, устанавливается примерно так:
wget https://raw.githubusercontent.com/trpt/usbdeath/master/usbdeath
chmod +x usbdeath
Конфиг
Скрипт
поставляется в безопасном режиме, когда просто пишется лог. Для
отключения нужно закомментировать соответствующую строку (demo='yes') в
самом скрипте, а также по желанию переопределить, что будет запускать
скрипт при срабатывании (по умолчанию это две команды sync и poweroff).
Помимо этого есть еще несколько параметров, которые можно поменять,
смотрите код.
Как пользоваться
usbdeath action
где action:
o, on - активировать usbdeath
x, off - временно деактивировать usbdeath
j, eject - добавить правило на извлечение usb устройства
g, gen - сгенерировать или обновить белый список устройств
d, del - удалить правила udev
e, edit - вручную редактировать файл правил
s, show - показать инфу о подключенных устройствах
Желательно
положить скрипт в PATH и не перемещать/переименовывать его после
активации, т.к. правила пишутся с учетом абсолютного пути до скрипта.
Это поведение можно изменить, см. код.
Примеры
Выясняем, что подключено, на всякий случай
usbdeath show
Первый запуск, генерируем белый список устройств из уже подключенных
usbdeath on
Также добавляем правило на извлечение устройства, выбираем из списка
usbdeath eject
Итак, usbdeath активирован. Но тут нам надо вставить доверенное устройство, так что временно вырубаем usbdeath
usbdeath off
И тут мы понимаем, что неплохо бы подключенное устройство добавить в белый список
usbdeath gen
После чего опять активируем usbdeath
usbdeath on
Мы же мамкины хацкеры, поэтому думаем, что можем редактировать правила udev вручную
usbdeath edit
Но тут пришла младшая сестра и все запорола, нихера не работает и т.д. Удаляем правила совсем и начинаем все с чистого листа
usbdeath del
Зависимости
bash
современный линупс дистр с udev и, вероятно, systemd
Тестировалось в Arch Linux
Вдохновлялся usbkill, у которого есть ряд недостатков. В частности, usbkill постоянно висит в памяти, что избыточно при наличии udev. Также мое решение учитывает больше параметров для устройств, поэтому для атакующего будет недостаточно иметь например флешку той же модели, нужно будет узнать и подделать серийник.
Написано на баше, только для линупса, только хардкор
Живет сия годнота на гитхабе, устанавливается примерно так:
wget https://raw.githubusercontent.com/trpt/usbdeath/master/usbdeath
chmod +x usbdeath
Конфиг
Скрипт
поставляется в безопасном режиме, когда просто пишется лог. Для
отключения нужно закомментировать соответствующую строку (demo='yes') в
самом скрипте, а также по желанию переопределить, что будет запускать
скрипт при срабатывании (по умолчанию это две команды sync и poweroff).
Помимо этого есть еще несколько параметров, которые можно поменять,
смотрите код.
Как пользоваться
usbdeath action
где action:
o, on - активировать usbdeath
x, off - временно деактивировать usbdeath
j, eject - добавить правило на извлечение usb устройства
g, gen - сгенерировать или обновить белый список устройств
d, del - удалить правила udev
e, edit - вручную редактировать файл правил
s, show - показать инфу о подключенных устройствах
Желательно
положить скрипт в PATH и не перемещать/переименовывать его после
активации, т.к. правила пишутся с учетом абсолютного пути до скрипта.
Это поведение можно изменить, см. код.
Примеры
Выясняем, что подключено, на всякий случай
usbdeath show
Первый запуск, генерируем белый список устройств из уже подключенных
usbdeath on
Также добавляем правило на извлечение устройства, выбираем из списка
usbdeath eject
Итак, usbdeath активирован. Но тут нам надо вставить доверенное устройство, так что временно вырубаем usbdeath
usbdeath off
И тут мы понимаем, что неплохо бы подключенное устройство добавить в белый список
usbdeath gen
После чего опять активируем usbdeath
usbdeath on
Мы же мамкины хацкеры, поэтому думаем, что можем редактировать правила udev вручную
usbdeath edit
Но тут пришла младшая сестра и все запорола, нихера не работает и т.д. Удаляем правила совсем и начинаем все с чистого листа
usbdeath del
Зависимости
bash
современный линупс дистр с udev и, вероятно, systemd
Тестировалось в Arch Linux