Um tempo atrás, compus um artigo sobre Malduino, um dispositivo BadUsb de código aberto baseado em arduino. Eu descobri o trabalho fascinante, então me inscrevi para uma versão de elite, bem como certeza, o postman amigável deixou-o na minha caixa de correio na sexta-feira passada, o que significa que eu tenho que brincar com isso no fim de semana. Para aqueles que perderam o artigo, Malduino é um gadget USB que é capaz de emular um teclado, bem como injetar pressionamentos de tecla, entre outras coisas. Quando em um invólucro apropriado, ele apenas se parecerá com uma unidade flash USB. É como essas coisas que você vê no cinema onde um cara se conecta em um gadget, bem como o auto hacke o computador. Ele é enviado em duas versões, lite, bem como elite, ambas com base no atmega32u4.

A versão do Lite é verdadeiramente pequena, além do conector USB contém apenas um interruptor, que permite que o indivíduo selecione entre o modo de execução, bem como o modo de programação, bem como um LED, o que indica quando o script concluiu em execução.

Esboço original de elite malduino, bem como protótipo Lite
A versão de elite é maior, inclui um visitante de cartão micro-SD, bem como quatro switches DIP, que permitem que o indivíduo selecione qual script é executado a partir do cartão. Também tem o LED, que indica quando um script concluiu para ser executado. Isso permite que o indivíduo tenha lançado o firmware somente quando, assim como, em seguida, programe os scripts de injeção de tecla que mantidos no cartão Micro-SD, em contraste com a versão Lite que precisa ser interrompida toda vez que um indivíduo deseja executar um script diferente.

Estes são os dois malduinos, bem como desde que são programados diretamente do Arduino IDE, todas as funções que acabei de mencionar podem ser re-programadas, reutilizadas ou descartadas todos juntos. Você pode comprar um, bem como apenas selecionar para utilizá-lo como um arduino ‘normal’, embora não haja uma grande quantidade de pinos para brincar. Essa flexibilidade foi uma das primeiras coisas que gostei sobre isso, bem como realmente me levou a participar da campanha de financiamento de multidões. verificado para a revisão completa.

O hardware

Malduino Elite vs USB Flash Drive
Então, a placa de elite aparecida como rotina, assim como me descobri muito tempo para parecer uma. Apesar de serem mais longos que a versão Lite, ainda é bastante pequeno, medindo aproximadamente 4,6 cm x 1,1 cm (cerca de 1,8 em x 0,43 pol), que você pode se adaptar rapidamente a um antigo caso USB, embora você tenha que cortar alguns furos para os interruptores DIP bem como o cartão Micro-SD. Na campanha de financiamento de multidões, o esboço original foi para uma versão de 3 DIP DIP no entanto, a elite final tem quatro, que descobri. Eu liguei para um computador antigo, depois de alguma consideração sobre qual firmware que ele pode enviar, assim como o que pode fazer com o meu laptop, bem como com certeza suficiente um LED vermelho apareceu. bem como isso foi isso. nada mais.

Depois de brincar com os interruptores, bem como exercitar alguns RTFM, percebi que o firmware que ele é provável que seja provavelmente algum tipo de q.c. Teste para os mergulhos, o que torna a saída do Malduino os números 1 a 4 (realmente simulando um keypress 1 a 4), dependendo de quais switches estão ativados. Até agora é bom, funciona tão bem quanto eu vi pior placas de PCB do que este. A diretoria tem buracos por seis pinos, que eu não traçamos para o micro-controlador, assim como eu não entendo o que são.

A configuração

Configurando as necessidades de Malduino que você tenha o Arduino IDE instalado, bem como tanto quanto a data. Você será necessário abrir o gerenciador de diretoria, bem como configurar as placas Sparkfun, já que a elite é programada como um ‘Sparkfun Pro Micro’ em execução em 3,3 V, bem como 8 MHz. Em seguida, você precisa ir ao site do Malduino Script Converter, que serve a vários fins:

Ele permite converter scripts entre o Lite, bem como as versões de elite

Ele permite que você selecione sua linguagem de design de teclado

Auto produz o trabalho do Arduino para você importar para o IDE

Para a versão de elite, basta produzir um script simples ou até mesmo vazio para baixar o projeto, desde quando em operação ‘normal’ você apenas piscará o Malduino quando, assim como, em seguida, utilizar o cartão Micro-SD para armazenar novos scripts.

Uma nota no piscar, se você estiver utilizando uma distribuição baseada em Debian, você poderá encontrar alguns problemas como se eu fizesse, assim como não conseguir piscar o dispositivo. Como o indivíduo neste post mais útil, meu modem-gerente estava tentando conversar com o Malduino depois de cada reinicialização, bem como confuso avrdude até a morte. A solução é adicionar regras de UDEV a “/etc/udev/rules.d/77-mm-usb-device-blacklist-local.rules”, kudos para [Socrim]:

1.
2.
3.
4.
5.
6.
7.
8.
Ação! = “Adicionar | Alteração” GOTO = & quot; mm_usb_device_blacklist_local_end & quot;
Subsistema! = & Quot; usb & quot; goto = & quot; mm_usb_device_blacklist_local_end & quot;
Env {DEVTYPE}! = & Quot; usb_device & quot; goto = & quot; mm_usb_device_blacklist_local_end & quot;

Attrs {idvendor} ==? 1B4F? Attrs {idproduct} == & quot; 9204 “enV {id_mm_device_ignore} = & quot; 1?
Mtrrs {idvend.or}=="1b4f" ATTRS{idProduct}=="9203", ENV{ID_MM_DEVICE_IGNORE}="1"

LABEL="mm_usb_device_blacklist_local_end"

O software

Since I’m running Linux, a quick shortcut to run a command is the ALT-F2 combination. So I script that into a data as well as save it to 1111.txt. The Elite searches the Micro-SD card for a data corresponding to the present dip switch state. lets state the dip switch 2 as well as 4 are ON. In this case, the software application tries to discover the data named 0101.txt as well as parse its contents (as in dip switch order 1,2,3,4 as well as not the binary representation of the number 2 as well as 4) . When it finishes, the red LED starts flashing quickly. My simple script was:

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DELAY 2000
ALT F2
DELAY 1000
STRING xterm
DELAY 1000
ENTRAR
DELAY 1000
STRING id
DELAY 1000
ENTRAR

But it was not working. almost all commands worked however the ALT-F2 combo was not working properly. Close, however no cigar. No ALT-F2, no run command window. I’ve already lazy-browsed the source code a bit since I truly didn’t have a great deal of time on my hands however I needed to figure this out. The offending code was this:

1.
2.
3.
4.
5.
6.
else if(equals(s,e,"F1",3)) Keyboard.press(KEY_F1);</pre>

else if(equals(s,e,"F2",3)) Keyboard.press(KEY_F2);

else if(equals(s,e,"F10",3)) Keyboard.press(KEY_F10);
else if(equals(s,e,"F11",3)) Keyboard.press(KEY_F11);

A custom equals function was getting size 3 for the strings of the function keys, like “F2”. It was okay for “F10”, “F11” as well as “F12”, however failed for the rest of the keys. altering 3 to 2 did the trick, however my Portuguese keyboard design started to interfere with other test scripts. So I altered the code to include PT as well as UK layouts, altering them in a #define at compile time.

It would be awesome if it was possible to gain access to the SD card from the computer as a routine USB volume. I don’t understand precisely exactly how feasible that is, however it does not include the present firmware. I still wished to be able to output the material of an arbitrary data on the SD card to the screen, so I added one more script function called ECHOFILEHEX that outputs the material of a data in the SD card as getaway characters. For example, if the data a.txt contains “AAA”, the script command ECHOFILEHEX a.txt would output “\x41\x41\x41”. This can be useful to echo binary data into printf or echo -e, in Linux holds at least.

Meanwhile, I had some difficulty reading the original code. You know, all of us have different programming styles. Don’t get me wrong, I’ve been understood to compose some messed-up spaghetti code. I sometimes search old jobs looking for some libs or classes I coded as well as question ‘who the heck composed this steaming stack of code?’ Me, it was me. Anyway, I started to modification a bit right here as well as there as well as ended up altering quite much the entire code. That’s the beauty as well as the curse of open-source. If you’re curious you can inspect it out here.

Conclusão

All in all, as well as in spite of some bumps, I’m rather delighted with Malduino. It is what I expected: an open platform for BadUSB attacks that’s in its infancy. It’s incredible that we can all tinker with it, customize it, make it much better or just make it fit our needs. I hope a genuine neighborhood can begin so we can see its full prospective emerge. My short listing includes simulating other USB devices, much better SD card management, as well as broadening the gadget via the unused pins. What would you add?

It’s a long method to go as well as a great deal can go wrong, so great luck with the job [Seytonic]!

Leave a Reply

Your email address will not be published. Required fields are marked *