A while back, I composed an article about Malduino, an Arduino-based, open-source BadUSB device. I discovered the job fascinating so I signed up for an Elite version as well as sure enough, the friendly postman dropped it off in my mail box last Friday, which means I got to play around with it over the weekend. For those who missed the article, Malduino is USB gadget which is able to emulate a keyboard as well as inject keystrokes, among other things. When in a appropriate casing, it will just look like a USB flash drive. It’s like those things you see in the movies where a guy plugs in a gadget as well as it auto hacks the computer. It ships in two versions, Lite as well as Elite, both based on the ATmega32U4.
The Lite version is truly small, besides the USB connector it only contains a switch, which enables the individual to select between running as well as programming mode, as well as a LED, which indicates when the script has completed running.
Original Malduino Elite sketch as well as Lite prototype
The Elite version is bigger, includes a Micro-SD card visitor as well as four DIP switches, which enable the individual to select which script to run from the card. It likewise has the LED, which indicates when a script has completed to run. This enables the individual to shed the firmware only when as well as then program the keystroke injection scripts that kept in the Micro-SD card, in contrast to the Lite version which needs to be flashed each time a individual wishes to run a different script.
These are the two Malduinos as well as since they are programmed directly from the Arduino IDE, every function I just mentioned can be re-programmed, re-purposed or dropped all together. You can buy one as well as just select to utilize it like a ‘normal’ Arduino, although there are not a great deal of pins to play around with. This flexibility was one the very first things I liked about it as well as really drove me to take part in the crowd-funding campaign. checked out on for the full review.
The Hardware
Malduino Elite vs USB flash drive
So the Elite board shown up as routine as well as I discovered myself a long time to look an it. in spite of being longer than the Lite version, it’s still rather small, measuring approximately 4.6 cm x 1.1 cm (around 1.8 in x 0.43 in), which you can quickly adapt to an old USB case, although you’ll have to cut some holes for the DIP switches as well as the Micro-SD card. In the crowd-funding campaign, the original sketch was for a 3 DIP switch version however the final Elite has four, which I discovered nice. I plugged it in to an old computer, after some consideration about which firmware it might ship with as well as what it might do to my laptop, as well as sure sufficient a red LED appeared. as well as that was it. nic jiného.
After playing around with the switches as well as exercising some RTFM, I realised that the firmware it ships with is most likely some kind of Q.C. test for the dips, which makes the Malduino output the numbers 1 to 4 (actually simulating a keypress 1 to 4), depending upon which switches are ON. So far so good, it works as well as I’ve seen worse PCB boards than this one. The board has holes for six pins, which I did not trace to the micro-controller as well as I don’t understand what they are for.
The Setup
Setting up the Malduino needs that you have the Arduino IDE installed as well as as much as date. You’ll requirement to open up the board manager as well as set up the Sparkfun boards since the Elite is programmed as a ‘Sparkfun pro Micro’ running at 3.3 V as well as 8 MHz. then you requirement to go the Malduino script Converter website which serves a number of purposes:
It enables to convert scripts between the Lite as well as Elite versions
It enables you to select your keyboard design language
It auto produces the Arduino job for you to import to the IDE
For the Elite version, just produce a simple or even empty script to download the project, since when in ‘normal’ operation you will just flash the Malduino when as well as then utilize the Micro-SD card to store new scripts.
A note on flashing, if you are utilizing a Debian-based distribution you may come across some issues like I did as well as not be able to flash the device. like the individual on this most useful post, my modem-manager was trying to talk with the Malduino after every reset as well as confused AVRDUDE to death. The solution is to add udev rules to “/etc/udev/rules.d/77-mm-usb-device-blacklist-local.rules”, kudos to [socrim]:
1
2
3
4
5
6
7
8
ACTION!="add|change", GOTO="mm_usb_device_blacklist_local_end"
SUBSYSTEM!="usb", GOTO="mm_usb_device_blacklist_local_end"
ENV{DEVTYPE}!="usb_device", GOTO="mm_usb_device_blacklist_local_end"
ATTRS{idVendor}=="1b4f" ATTRS{idProduct}=="9204", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendnebo} == “1b4f”. Attrs {idproduct} == “9203”, env er ess {id_mm_device_ignore} = & Quot; 1 ”
Štítek = “mm_usb_device_blackist_local_end & quot;
Software
Protože běží Linux, rychlá zkratka pro spuštění příkazu je kombinace Alt-F2. Takže jsem to skript do dat, stejně jako uložení na 1111.txt. Elite vyhledá kartu Micro-SD pro data odpovídající současnému stavu DIP přepínače. Umožňuje uvést přepínač DIP 2, stejně jako 4. V tomto případě se softwarová aplikace snaží objevit data s názvem 0101.txt, stejně jako analyzovat jeho obsah (jako v přepínači DIP Objednat 1,2,3,4, stejně jako ne binární reprezentace čísla 2, stejně jako 4 ). Když skončí, červená LED začne rychle blikat. Můj jednoduchý skript byl:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Zpoždění 2000.
Alt F2.
Zpoždění 1000.
String Xterm.
Zpoždění 1000.
Enter.
Zpoždění 1000.
ID řetězce
Zpoždění 1000.
Enter.
Ale to nefungovalo. Téměř všechny příkazy fungovaly, ale Alt-F2 combo nefungovaly správně. Zavřít, nicméně žádný doutník. Ne Alt-F2, žádné příkazové okno. Již jsem líný-procházení zdrojového kódu trochu od té doby, co jsem opravdu neměl hodně času na mých rukou, ale musel jsem to přijít na to. Tenký kód byl tento:
1.
2.
3.
4.
5.
6.
jinak, pokud (rovná se (s, E, “f1”, 3)) klávesnice.Stiskem (klíč_f1);
jinak, pokud (rovná se (s, E, “f2”, 3)) klávesnice.Stiskem (key_f2);
…
jinak, pokud (rovná se (s, E, “F10”, 3)) klávesnice.Stiskem (key_f10);
jinak, pokud (rovná se (s, E, “F11”, 3)) klávesnice.Stiskem (key_f11);
Funkce Custom Roquals byla získána velikost 3 pro struny funkčních kláves, jako “F2”. Bylo to v pořádku pro “F10”, “F11”, stejně jako “F12”, nicméně selhal pro zbytek klíčů. Změna 3 až 2 dělal trik, nicméně můj portugalský design klávesnice začal zasahovat do jiných zkušebních skriptů. Takže jsem změnil kód zahrnout PT, stejně jako britské rozložení, mění je v #define při kompilaci.
Bylo by úžasné, kdyby bylo možné získat přístup k SD kartě z počítače jako rutinní objem USB. Nerozumím přesně přesně, jak je to možné, to však nezahrnuje současný firmware. Stále jsem si přál být schopen výstup materiálu libovolných dat na kartě SD na obrazovce, takže jsem přidal ještě jednu funkci skriptů s názvem Echofilehex, která vydává materiál dat v SD kartě jako únikové znaky. Například, pokud data A.txt obsahuje “AAA”, příkaz Script EchofileHex A.txt by vystoupil “X41 X41 X41”. To může být užitečné pro ozvěnu binárních dat do printfu nebo echo -e, v Linuxu je přinejmenším.
Mezitím jsem měl nějaké potíže s čtením původního kódu. Víš, všichni máme různé programovací styly. Nedostávejte mě špatně, bylo jsem pochopen sestavit nějaký nepořádek kód špagety. Někdy hledám staré práce, které hledají nějaké libs nebo třídy, které jsem kódoval, stejně jako otázka ‘kdo sakra složil tento párující stoh kódu? Každopádně jsem začal modifikovat trochu právě tady, stejně jako tam, stejně jako tam, stejně jako se zdrželo změnu celého kodexu. To je krása, stejně jako prokletí open-source. Pokud jste zvědaví, můžete to zkontrolovat.
Závěr
Celkově, stejně jako navzdory některým hrbolům, jsem raději potěšen Malduino. To je to, co jsem očekával: otevřená platforma pro útoky Badusb, která je v plenkách. Je to neuvěřitelné, že se s ním můžeme všimnout, přizpůsobit ho, aby to bylo mnohem lepší nebo jen to, aby to odpovídalo našim potřebám. Doufám, že může začít originální sousedství, abychom mohli vidět jeho plné perspektivní objetí. Můj krátký zápis zahrnuje simulaci dalších zařízení USB, mnohem lepší správu SD karet, stejně jako rozšiřování gadgetu prostřednictvím nevyužitých pinů. 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]!