Een Hardware-Cracking Howto
Welkom in dit topic! We gaan hier met z'n allen kijken of we hardware-beveiligingen kunnen kraken. Als je je daar niets bij kan voorstellen: denk bijvoorbeeld aan een met een keypad beveiligde deur in een standaard actiefilm, maar ook het uitlezen van een beveiligde USB-stick zonder het bijbehorende password te kennen.Waarom?
Ik wil nog wel eens beveiligde hardware reviewen, en morrelen aan de security hoort daar natuurlijk ook bij. Toen ik laatst daar weer eens mee bezig was besefde ik dat het eigenlijk best leuk is: het vinden van de juiste technieken en de creativiteit om ze in de praktijk toe te passen is net als het oplossen van een raadsel.Verder is het natuurlijk interessant voor iedereen zelf ook beveiligde projecten wil maken: als je weet wat de technieken zijn kan je je eigen product ertegen beveiligen.
Opzet
De opzet van het geheel is zowel practisch als theoretisch. Ik zal proberen om van elke mogelijke manier van aanvallen een stukje theorie uiteen te zetten: hoe werkt het, wat heb je nodig, wat zijn de toepassingsmogelijkheden? Daarna komt het practische stuk: je krijgt een hex-bestand wat je in een microcontroller (een AVR) moet branden wat bijvoorbeeld om een pincode vraagt. De bedoeling is dat je door middel van de theorie je geprogrammeerde microcontroller overtuigt om te doen wat 'ie eigenlijk niet zou horen te doen...Het nivo
Als je hieraan begint, is het nuttig om iets van microcontrollers programmeren te weten: die kennis word hier redelijk veel gebruikt. Elektro-kennis an sich is niet echt hard nodig: zolang je weet wat een pull-up-weerstand doet en wat het verschil is tussen spanning en stroom is zit je wel ongeveer goed. Kennis van digitale elektronica is daarentegen wel noodzakelijk: je moet ongeveer weten hoe een uC van binnen werkt en termen als 'program counter' en 'register' moeten je in ieder geval vaag bekend voorkomen. Ik raad je verder aan om in ieder geval een keer de assebleertaal van een (willekeurige) processor gezien te hebben.Verder is het erg handig als je, naast de slachtoffer-AVR, een tweede microcontroller hebt waar je mee bekend bent en programma's voor kan schrijven. Dat is handig voor klusjes als brute-forcing (als in: veel pincodes per seconde heautomatiseerd uitproberen), meten van gebeurtenissen op microseconde-nauwkeurigheid etc. Ik ga er niet van uit dat iedereen AVRs compleet kent, maar je moet redelijk goed met je eigen uC-systeempje om kunnen gaan, of heeel veel geduld hebben en sommige klusjes handmatig doen.
Benodigdheden
Je kan de theorie natuurlijk altijd doorlezen, maar het hele verschil met $ander_droog_theoretisch_document is nou juist dat je hier hetgene waarover gepraat word, ook in de praktijk kan uitoefenen. Daar heb je een aantal dingen voor nodig:- Een ATTiny2313. Da's een uC van een paar euro, en het slachtoffer van alle praktijkoefeningen: je gaat hier het programma wat je dient te kraken inzetten.
- Een kristal van 8MHz.
- Een 'iets' om met TTL-nivo seriele communicatie te kunnen praten. Een MAX232, een FT232-bord, een gesloopte datakabel, wees creatief. Hier staan een aantal opties op; ook een stel die je kan gebruiken als je computer geen seriele poort heeft.
- Een programmer voor de AVR. Dat kan als je PC een parallele poort heeft niet meer zijn dan een paar draden of je kan een usb-programmer bouwen als je ergens een AVR met de juiste code kan ritselen. (Mocht dat laatste echt een probleem zijn, dm dan even.) Mocht je nog een Arduino hebben is die ook te misbruiken.
- Waar nodig een weerstand, condensator of ledje. Ik ga ervanuit dat je wel wat los grut aan componentjes hebt liggen, of er in ieder geval aan kan komen. Wat je precies nodig hebt word in de opdrachten wel duidelijk
- Een voeding. Eentje die een spanning van 3.3V of 5V kan uitspugen op een mA of 100 is al prima; in het slechtste geval zet je maar 3 AA-batterijen in serie en voed je je AVR met de 4.5V die daaruitkomt.
- Iets om alles op te zetten. Breadboard is OK, experimenteerprintplaat is ook prima. In het slechtste geval soldeer je alles tijdelijk met draden aan elkaar als 't moet
- Een oscilloscoop. Digitaal en/of een storage-oscilloscoop is hier beter. Ik zal een poging doen om alles zo traag te houden dat je in 't slechtste geval met de line-in van je geluidskaart en een programma als Audacity afkan: ik kan me voorstellen dat niet iedereen een goede scoop heeft.
- Een multimeter. Niet eens specifiek voor dit project handig
- Een set goede hersenen
Goed kunnen observeren wat een systeem doet, logisch denken en creativiteit komen je erg goed van pas bij dit soort zaken.
Regels
Een paar regeltjes:• Mocht je iets willen zeggen waardoor anderen ongewild dichter in de buurt van het antwoord kunnen komen, zet er dan [spoiler]-tags omheen!
• Blijf ontopic aub.
• Errm... Verdere regels bedenk ik wel als ze nodig zijn
Opdrachten
• Opdracht 1• Opdracht 2
Nieuwe opdrachten komen uit zodra ik er tijd en zin voor heb. Mocht je zelf een gaaf idee hebben, schroom dan niet me te DMmen.
Disclaimer
Ik weet niet alles en kan fouten maken: mocht je door de instructies hierin $heel_duur_apparaat opblazen is de auteur of Tweakers.net niet verantwoordelijk. Mocht je huis met $duur_beveiligingssysteem leeggeroofd zijn door iemand die dit topic gelezen heeft, zijn de auteur of Tweakers.net evenmin verantwoordelijk. Deze howto is op dit moment geschreven voor GoT; vraag me om toestemming als je het wilt herdistribueren. De hex-bestanden die hier gepost zijn door de auteur vallen in het publieke domein, tenzij anders aangegeven. Alle rechten voorbehouden, void when prohibited, bladiebla etc.
[ Voor 6% gewijzigd door Sprite_tm op 01-07-2010 22:18 ]
Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog