?

Log in

No account? Create an account
Linux USB security - Журнал Восставшей Машины [entries|archive|friends|userinfo]
ArkanoiD

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Linux USB security [Aug. 21st, 2014|02:44 pm]
ArkanoiD
[Tags|, , ]

Как мы знаем, Linux из коробки имеет дурную привычку подключать USB-устройства сразу и без вопросов. Что, разумеется, может быть использовано для rogue HIDs и прочей гадости. Настраивать udev руками всем лень. Кому интересно, есть готовый рецепт:

The BadUSB attack bases on the fact that computers allow and enable HID devices on all usb ports. Faked network adapters are no real danger. My answer tries do describe how to use udev to temporarily disable the addition of new HID devices. I'm no udev expert, but I've tested my approach, and it works for me.

For preparation, create a file /etc/udev/rules.d/10-usbblock.rules with the content:

#ACTION=="add", ATTR{bInterfaceClass}=="03" RUN+="/bin/sh -c 'echo 0 >/sys$DEVPATH/../authorized'"

If you want to block other classes too, then look up the class number, and copy the line, and change the class.

Now you can block all new HID devices using the command

sed -i 's/#//' /etc/udev/rules.d/10-usbblock.rules; udevadm control --reload-rules

and unblock with:

sed -i 's/^/#/' /etc/udev/rules.d/10-usbblock.rules; udevadm control --reload-rules

Before you shut down, always unblock, as the setting is persistent, and your "good" HID devices would be rejected on reboot.

I don't know whether you can edit the temporary rules directory, but if changes there affect the behaviour, you should edit that instead, as then you don't need to unblock before shutdown.

(from https://security.stackexchange.com/questions/64524/how-to-prevent-badusb-attacks-on-linux-desktop/64552#64552 )

Понятно, что block/unblock можно вставить в стартовые скрипты. Хоть бы кто еще нарисовал гуекнопки для всего этого, желательно, с более умными whilelists при загрузке.
linkReply

Comments:
[User Picture]From: _slw
2014-08-21 11:15 am (UTC)
я предлагаю полностью забанить подключение клавиатур и мышек, а для разблокировки требовать ввода рутового пароля.
(Reply) (Thread)
[User Picture]From: sporaw
2014-08-21 12:38 pm (UTC)
unrar.rar
(Reply) (Parent) (Thread)
[User Picture]From: egorfine
2014-08-21 12:04 pm (UTC)
Я вообще считаю что "BadUSB" — это такая неудачная затянувшаяся шутка.
(Reply) (Thread)
[User Picture]From: arkanoid
2014-08-21 12:42 pm (UTC)
Ну проблема-то с rogue devices безотносительна badusb.
(Reply) (Parent) (Thread)
[User Picture]From: egorfine
2014-08-21 12:42 pm (UTC)
На фоне прямого доступа thunderbolt или PCI к оперативной памяти BadUSB не только меркнет, он вообще исчезает.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: za1chas
2014-08-21 12:23 pm (UTC)

ох блять мне бы эти проблемы...

Все устройства USB система видит и подключает у него, видите ли... ;) И ручками в консоли предлагается помудохаться, чтобы не видела и не подключала, ага :)))
(Reply) (Thread)
[User Picture]From: za1chas
2014-08-21 12:27 pm (UTC)
Я тут, помнится, целый вечерок с грамотным советчиком по аське поебался с lsusb и udev, который usb-программатор Ардуины кагбэ видел, но кагбэ позволял с ним работать только в одном из режимов avr-dude, а не во всех, что было нужно... И без результата. Хотя я сменил когда-то любимый АльтЛинукс на Убунту именно ради этого: чтобы никогда не тратить время на подключение чего-либо, чтобы всё было давно отлажено и описано миллионами леммингов... Ан хуй там.
(Reply) (Parent) (Thread)
[User Picture]From: nicka_startcev
2014-08-21 03:19 pm (UTC)
софт для программатора был "искароппки" или "свежий с сайта"? лично я несколько лет назад натыкался на чудеса и в бинарнике и в конфиге avreal - он шил примерно в 30 раз медленнее, чем аналогичный avreal на соседней машине с федорой.

при этом "ардуиновская гуйня" притащила отдельный свой программатор и конфиг, которые работали правильно.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: Evgeny Kolesnikov
2014-08-22 08:08 am (UTC)
Остался без ответа самый главный вопрос: где ты хочешь видеть эту кнопку и как вообще ей пользоваться?

Как я себе представляю тут вообще кнопки не нужны, а твои надежные устройства должны быть вбиты в то же rule. Надо что-то новое подключить? Будь добр отредактировать rule через sudo. Навернулась клава? Загрузись с rescue диска и поправь rule.

Впрочем, менеджер whitelist'a, наверное, не помешал бы. И место ему где-нибудь в System Settings, а оне нынче у всех свои.
(Reply) (Thread)
[User Picture]From: arkanoid
2014-08-22 08:16 am (UTC)
Где-то там, да. Но людям нужен гуй.
(Reply) (Parent) (Thread)
[User Picture]From: Evgeny Kolesnikov
2014-08-22 08:50 am (UTC)
А может быть просто спрашивать при подключении? Ну типа вот ща мы включим: 1) Storage: Transcend 2GJF8, 2) HID Device: SuperEvil Keyboard 3) Network Adapter: Huivei 3G и по результатам опроса чекбоксов — в бан или в полезные. Ну и менеджер листов в настройках.

Но тут надо над udev думать на тему вкорячивания диалога в процессе подключения. Но я уже видел на эту тему что-то.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: arkanoid
2014-08-22 04:22 pm (UTC)
В system settings, с вариантами: allow -- deny -- ask.
(Reply) (Parent) (Thread)
[User Picture]From: auto194419
2014-08-22 03:51 pm (UTC)
более убийственных аргументов против говно-систем ваших придумать трудно.
(Reply) (Thread)
[User Picture]From: arkanoid
2014-08-22 04:21 pm (UTC)
Можно подумать, в винде все это делается удобнее.
(Reply) (Parent) (Thread)
[User Picture]From: Evgeny Kolesnikov
2014-08-23 02:24 am (UTC)
До 7-ки ЕМНИП — вообще никак. В 7-ке, через эту консоль полайси (udev rules просто детский сад по сравнению). Но общий смысл тот же — надо руками, где-то под капотом.

Спрашивать при втыкании там так же не принято. И дрова скачивает и ставит сама, если не нашлось локально.
(Reply) (Parent) (Thread) (Expand)