?

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: arkanoid
2014-08-21 12:46 pm (UTC)
thunderbolt отключается (и даже apple научился его отрубать вообще когда экран лочится), pci не везде доступен и убедить пользователя в него что-то втыкать непросто. Разные сценарии атаки.
(Reply) (Parent) (Thread)
[User Picture]From: egorfine
2014-08-21 12:49 pm (UTC)
Как в линуксе отключить Thunderbolt?

Ну и PCI очень разный бывает. В почти любом ноутбуке PCI торчит наружу в виде удобного разъема (Thunderbolt, ExpressCard). Воткуться туда элементарно.
(Reply) (Parent) (Thread)
[User Picture]From: arkanoid
2014-08-21 01:01 pm (UTC)
не в любом. сейчас полно ноутов без expresscard. а thunderbolt dma на маках в частности отключается через efi password.
(Reply) (Parent) (Thread)
[User Picture]From: egorfine
2014-08-21 03:49 pm (UTC)
Как отключить thunderbolt в линуксе?
(Reply) (Parent) (Thread)
[User Picture]From: arkanoid
2014-08-21 04:02 pm (UTC)
на маке? я так понимаю, что если его через efi отключить, он так и останется отключенным и в линуксе тоже. нет?

а тебе интересно гонять нативный линукс на маке?

Edited at 2014-08-21 04:03 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: egorfine
2014-08-21 07:28 pm (UTC)
Не на маке.

У меня есть 100500 серверов, у них есть thunderbolt и мне нужно закрыть этот вектор атаки.
(Reply) (Parent) (Thread)
[User Picture]From: arkanoid
2014-08-21 07:32 pm (UTC)
а что за железо?
(Reply) (Parent) (Thread)
[User Picture]From: egorfine
2014-08-21 07:33 pm (UTC)
Черт его знает.
Я его в глаза не видел - все в датацентрах стоит. Подозреваю, что все чипсеты интелевые.
(Reply) (Parent) (Thread)
[User Picture]From: ivanaxe
2014-08-21 08:31 pm (UTC)
термоклеевой пистолет.

Нет особого смысла закрывать т-болт на линуксе или маке или вдруг на опенсолярисе если он способен инициализироваться ещё до загрузки ос
(Reply) (Parent) (Thread)
[User Picture]From: egorfine
2014-08-21 08:32 pm (UTC)
ага, и в микросхеме биоса оторвать ноги, отвечающие за перепрошивку. Ага, и до этого снять дамп биоса и убедиться в том, что там нет закладок. И еще снять такой же дамп в чипсете. И в SATA-контролере. И в....

не, мне бы пока просто поры выключить и я был бы счастлив. :)
(Reply) (Parent) (Thread)
[User Picture]From: ivanaxe
2014-08-21 08:57 pm (UTC)
Никакой перепрошивки!
Просто однократно rogue pci device может объявить себя загрузочным диском, однократно же загрузиться (если позволят) и оставить закладок.
А может поизображать из себя таки клавиатуру.
А может чёрта в ступе -- всё зависит от фантазии воображаемого атакующего.

Ну если так уж хочется отключить именно под линуксом -- должно работать отключение pci hotplug.
(Reply) (Parent) (Thread)
[User Picture]From: egorfine
2014-08-22 08:48 am (UTC)
А вот не факт что PCI Hotplug решает. Thunderbolt получает аппаратный доступ к DMA. Никакого hotplug PCI устройства. Аттакер просто подключается, читает память и уходит. Разговоривать с ОС ему не нужно.
(Reply) (Parent) (Thread)