Não a nada pior que ter bons amigos…rss
Num dia desses, eu estava trabalhando normalmente, quando Ulisses Castro, Erick, Douglas e o Roberto Espreto, estavam próximos da minha mesa, quando de repente, aparecesse com arduino Teenspy USB (http://www.pjrc.com/teensy/) 😉
Eu já tinha ouvi falar desse equipamento em 2008 (confesso que queria ter comprado, mas não tinha cartão de crédito na época), que através de uma porta USB, pode “exploitar” qualquer equipamento, desde que preparado para isso.
A primeira vez que eu conheci, foi em uma opção que tinha no framework Social-Engineer Toolkit (SET).
De algumas semanas para cá, comecei a reparar que quando eu espetava um pendrive USB no meu laptop e em qualquer outro com Linux (Debian/Ubuntu e outros que tem autorun por udev ou qualquer outro abistrador de hardware) ele abria automaticamente o conteúdo do pendrive, possivelmente fazia uma execução de comandos, se estivesse implementado.
Via muito isso acontecer com Thunar e Nautilus, que são gerenciadores de arquivos.
Fui buscar algo no /sys/ que dá para setar “on the fly” e restaurar se necessário a opção default.
Ai achei essa linha de comando, que
$ cat /sys/bus/usb/devices/usb1/authorized
$ 1
Sendo que “1” é ligado e “0” desligado, imaginei que podesse setar esse opção, então fiz:
$ echo 0 > / sys/bus/usb/devices/usb1/authorized
Dei um cat:
$ cat /sys/bus/usb/devices/usb1/authorized
$ 0
Então, espetei um pendrive, não houve execução automatica.
O problema é que no meu caso só tenho 3 USBs, mas no /sys/bus/usb/devices/usb haviam 6 USBs (então as outras 3 são webcam, fingerprint e outro dispositivo que não sei determinar ainda, apesar de não serem removíveis, o sys, entende com USB) e ai fui tentando cada entrada USB, com os comandos que passei acima, apenas mudando o device, para usb2,usb3,usb4,usb5 e usb6 até acertar as outras entradas USB.
Perfeito! Estava, vamos dizer, com hardening físico e logico nessas entradas USB.
Mas havia um problema. Depois que reiniciasse o laptop, as entradas USB, voltavam para opção default que é “1” e o problema aparecia de novo.
Então, tinha 2 opções:
1ª) Não tão inteligente – > adicionar echo 0 > / sys/bus/usb/devices/usb1/authorized de cada entrada USB no arquivo /etc/init.d/rc.local
Problema dessa abordagem, é que se o atacante desligar seu laptop e iniciar com o TeenSpy na porta USB, após descompactação em memória, iria executar várias outras coisas e bem depois a sequencia /etc/init.d/rc.local, ou seja, já “exploitado”.
2ª Mais inteligente – > adicionar no /etc/sysctl.conf não tentei ainda, mas muita coisa, inclusive hardening de conf de kernel é feita pra ficar fixo lá. Eu imagino que logo que o kernel é descompactado, já são lidos as instruções de lá.
Vou testar mais sobre isso e faço um post aqui
@firebitsbr