Elgondolkodtál már azon, mennyire kiszolgáltatott a géped, amikor csak úgy bedugsz egy ismeretlen pendrive-ot az USB-portba? A legtöbben vakon bízunk a hardverben, pedig egy apró, ártalmatlannak tűnő eszköz másodpercek alatt átveheti az irányítást a rendszerünk felett. Ma arról beszélgetünk, hogyan építs saját "bad USB" kivédő hardveres tűzfalat egy mikrokontroller és egy optocsatoló segítségével, hogy nyugodtabban alhass éjszaka. Nem kell hozzá mérnöki diploma, csak egy kis kíváncsiság és forrasztópáka.
A "bad USB" támadások lényege, hogy a támadó eszköz billentyűzetként regisztrálja magát a számítógépen. Mivel a rendszer alapértelmezetten bízik a billentyűzetekben, a kis eszköz villámgyors parancsokat gépel be, amivel kártevőket tölt le vagy adatokat lop el. A célunk ezzel a projekttel egy olyan köztes réteg létrehozása, ami megszűri a gyanús adatforgalmat, még mielőtt az elérné az operációs rendszert.
Mielőtt belevágnánk a bütykölésbe, tisztázzuk, mit is csinál pontosan ez a védelmi vonal. A hardveres tűzfalunk egyfajta fordítóként és ellenőrként viselkedik az USB-eszköz és a számítógép között. A mikrokontroller figyeli az adatfolyamot, az optocsatoló pedig a fizikai elszigetelést biztosítja, így megakadályozva, hogy az USB-eszköz elektromos tüskéi vagy szokatlan feszültségingadozásai kárt tegyenek a gépünkben.
Az összeállításhoz a következő eszközökre lesz szükséged:
A folyamat során a mikrokontroller "csapdába ejti" a beérkező jeleket. Ha olyan utasítássorozatot észlel, ami nem egyezik meg a szokványos billentyűleütésekkel, egyszerűen blokkolja a kommunikációt.
A hardveres védelem akkor a leghatékonyabb, ha a fizikai jelátviteli réteget is kontrolláljuk. Az optocsatoló használata azért kulcsfontosságú, mert ez a komponens fény segítségével továbbítja a jelet az áramkörök között. Mivel nincs közvetlen fémes kapcsolat a két oldal között, a számítógéped védve marad a feszültség alapú támadásoktól.
A tervezéskor a következőkre figyelj:
A mikrokontroller szoftveres oldaláról nézve a dolgot, a kódnak a "HID report" típusú csomagokat kell elemeznie. Ha az USB eszköz olyan konfigurációt küld, ami eltér a standard billentyűzet-profiltól, a mikrokontrollerünknek meg kell szakítania a kapcsolatot, vagy figyelmeztetést kell küldenie egy külső LED segítségével.
A mikrokontrollerünk szoftvere határozza meg a tűzfalunk intelligenciáját. Mivel egy "bad USB" támadó eszköz szinte mindig "HID" (Human Interface Device) profilt használ, a védelmünknek a billentyűzet-emulációt kell alapos vizsgálat alá vonnia.
Íme néhány szempont, amit a kód írásakor érdemes szem előtt tartani:
Ne próbálj meg mindent egyszerre megoldani. Kezdd egy egyszerű szűrővel, ami csak a karakterek bevitelének frekvenciáját vizsgálja. Ha ez jól működik, utána finomíthatsz a logikán, és szigoríthatod a szabályokat. Ez a fokozatosság segít elkerülni a felesleges hibákat, miközben pontosan látod, melyik fejlesztés milyen hatással van a rendszer sebességére.
Természetesen nem minden fenékig tejfel, és a hardveres hackelésnek is vannak korlátai. A legnagyobb kihívás az USB protokoll bonyolultsága. Mivel az USB egy kétirányú, folyamatosan kommunikáló rendszer, a mikrokontrollernek nagyon gyorsnak kell lennie ahhoz, hogy ne okozzon észrevehető késleltetést.
Amikor elkezded az éles tesztelést, számíts a következőkre:
A legfontosabb tanácsom, hogy ne csüggedj, ha az első próba nem hozza a kívánt eredményt. Ez a hobbi lényege. A legtöbb sikeres projekt mögött számtalan elrontott prototípus és átgondolt nyomtatott áramkör áll. Ha a mikrokontrollered nem ismeri fel azonnal a billentyűzetet, ellenőrizd az adatvonalak bekötését és az optocsatolók polaritását. Gyakran egy apró forrasztási hiba vagy egy rosszul kiválasztott ellenállás okozza a bosszúságot.
Ezzel a kis eszközzel nemcsak a gépedet véded, hanem rengeteg tapasztalatot is szerzel a hardveres biztonság terén. A legjobb az egészben, hogy a saját kezed munkája az, ami ott duruzsol az USB-port és a külvilág között. Ha pedig egyszer igazán belejössz, akár saját funkciókkal is bővítheted, mint például egy fizikai kapcsoló, amivel teljesen leválaszthatod a portot, ha éppen nem akarod használni. Sok sikert az építéshez, és élvezd a biztonságosabb számítógépezést!