Malduino Elite – mycket första intryck
ett tag tillbaka, jag komponerade en artikel om Malduino, en Arduino-baserad, Open-source Badusb-enhet. Jag upptäckte jobbet fascinerande så jag registrerade mig för en elitversion såväl som säker nog, den vänliga postmanen släppte det i min brevlåda i fredags, vilket innebär att jag måste leka med det under helgen. För dem som missade artikeln är Malduino USB-gadget som kan emulera ett tangentbord samt injicera tangenttryckningar, bland annat. När det är i ett lämpligt hölje, ser det bara ut som en USB-flash-enhet. Det är som de saker du ser i filmerna där en kille pluggar i en gadget samt det automatiskt hackar datorn. Det skickas i två versioner, Lite samt Elite, båda baserat på ATMEGA32U4.
Lite-versionen är verkligen liten, förutom USB-kontakten innehåller den bara en strömbrytare, vilket gör det möjligt för individen att välja mellan drift såväl som programmeringsläge, såväl som en LED, vilket indikerar när skriptet har slutfört körning.
Original Malduino Elite Sketch samt Lite Prototype
Elite-versionen är större, innehåller en mikro-SD-kortbesökare samt fyra DIP-omkopplare, vilket gör det möjligt för individen att välja vilket skript som ska köras från kortet. Det har också lysdioden, vilket indikerar när ett skript har slutförts. Detta gör det möjligt för individen att bara kasta firmware när så är och sedan programmera de tangenttryckningsskript som hålls på mikro-SD-kortet, i motsats till Lite-versionen som måste blinkas varje gång en individ vill köra ett annat skript.
Dessa är de två malduinerna såväl som eftersom de är programmerade direkt från Arduino IDE, varje funktion som jag just nämnde kan omprogrammeras, återanvändas eller tappas ihop. Du kan köpa en såväl som bara välja att använda det som en “normal” arduino, även om det inte finns en hel del stift att leka med. Denna flexibilitet var en de allra första sakerna jag gillade om det, såväl som verkligen körde mig att delta i crowd-finansieringskampanjen. Checkas ut för hela recensionen.
Hårdvaran
Malduino Elite vs USB-flashenhet
Så elitkortet visade sig som rutin såväl som jag upptäckte mig länge för att se en den. Trots att det är längre än Lite-versionen är det fortfarande ganska litet och mäter ca 4,6 cm x 1,1 cm (runt 1,8 i x 0,43 tum), som du snabbt kan anpassa sig till ett gammalt usb-fall, även om du måste skära lite Hål för DIP-omkopplarna såväl som Micro-SD-kortet. I crowd-finansieringskampanjen var den ursprungliga skissen för en 3-dip switch-version men den slutliga eliten har fyra, som jag upptäckte trevligt. Jag pluggade in den till en gammal dator, efter att ha tagit hänsyn till vilken firmware som det kan skickas med såväl som det som det kan göra för min bärbara dator, såväl som säkert att en röd lysdiod uppträdde. såväl som det var det. inget annat.
Efter att ha spelat med omkopplarna såväl som att utöva lite rtfm insåg jag att den firmware som det skickas med är mest sannolikt någon typ av q.c. Test för dopparna, vilket gör att Malduino utmatar siffrorna 1 till 4 (som faktiskt simulerar en knapptryckning 1 till 4) beroende på vilka omkopplare som är på. Hittills är det så bra, det fungerar lika bra som jag har sett sämre PCB-brädor än den här. Styrelsen har hål för sex stift, som jag inte spårade till mikrokontrollen såväl som jag inte förstår vad de är för.
Upplägget
Ställa in Malduino behöver du har Arduino IDE installerat såväl som så mycket som datum. Du kommer att kräva att öppna styrschefen samt inrätta Sparkfun-korten, eftersom eliten är programmerad som en “Sparkfun Pro Micro” som körs på 3,3 V samt 8 MHz. Då kravet på att gå på webbplatsen Malduino Script Converter som tjänar ett antal ändamål:
Det gör det möjligt att konvertera skript mellan Lite samt elitversioner
Det gör att du kan välja ditt tangentbordsdesignspråk
Det producerar ARDUINO-jobbet för dig att importera till IDE
För elitversionen, producera bara ett enkelt eller till och med tomt skript för att ladda ner projektet, eftersom när du är i “Normal” -operation, blinkar du bara Malduino när så väl och sedan använder Micro-SD-kortet för att lagra nya skript.
En anteckning om blinkning, om du använder en Debian-baserad distribution kan du komma över några problem som jag gjorde såväl som inte kunna blinka enheten. Liksom individen på den här mest användbara inlägget, försökte min Modem-Manager prata med Malduino efter varje återställning och förvirrad avrdude till döds. Lösningen är att lägga till UDEV-regler för att “/etc/eudev/rules.d/77-mm-usb-device-blacklist-local.rules”, Kudos till [Socrim]:
1
2
3
4
5
6
7
8
Åtgärd! = “Lägg till | Byt & quot;, goto = & quot; mm_usb_device_blacklist_local_end & quot;
Delsystem! = “USB & quot;, goto =” mm_usb_device_blacklist_local_end ”
Env {devtype}! = & Quot; usb_device & quot;, goto = & quot; mm_usb_device_blacklist_local_end & quot;
Attraktiver {iDVendor} == “1B4F” ATTRES {IDPRODUCT} == “9204”, env {id_mm_device_ignore} = & quot; 1 & quot;
ATTRES {IDVENDor}=="1b4f" ATTRS{idProduct}=="9203", ENV{ID_MM_DEVICE_IGNORE}="1"
LABEL="mm_usb_device_blacklist_local_end"
Mjukvaran
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
STIGA PÅ
DELAY 1000
STRING id
DELAY 1000
STIGA PÅ
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.
Slutsats
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]!