Een Duitse hacker heeft een satelliet tot leven weten te wekken die sinds 2013 niet meer werkte. Daarvoor hoefde PistonMiner niet naar de ruimte; de satelliet kon vanaf de grond weer worden gerepareerd door eerst de telemetrie te herstellen en daarna de originele code te hacken.
Hacker PistonMiner presenteerde de hack tijdens de CCC-hackersconferentie in Hamburg. Het gaat om de satelliet BeeSAT-1, wat staat voor de Berlin Experimental and Education Satellite. Dat is een kleine cubesat van 10x10x10cm die in 2009 door de Technische Universiteit van Berlijn werd gelanceerd. In 2011 begon de satelliet foutieve telemetrie terug te sturen naar de aarde. Nadat de beheerders de satelliet daarop overzetten naar de back-upcomputer, kreeg ook die in 2013 problemen. Sindsdien is de satelliet, die op een hoogte van 700 kilometer boven de aarde vliegt, niet meer bruikbaar. BeeSAT-1 stuurt namelijk alleen nog nullen door als telemetrie.
PistonMiner ontdekte al snel dat het niet mogelijk was om zomaar een firmware-update naar de satelliet te sturen. De functionaliteit daarvoor werd namelijk niet afgemaakt voor de lancering. Maar de hacker ontdekte ook dat de computer niet fysiek stuk was gegaan door bijvoorbeeld straling in de ruimte; in diens talk heeft PistonMiner het over softwareproblemen. De cubesat stuurt bijvoorbeeld data terug die corrupt lijkt te zijn. Dat kan in theorie gerepareerd worden in het flashgeheugen. PistonMiner ontdekte dat het probleem lag in de bootcounter van de computer aan boord. De hacker bouwde daarom een eigen BeeSAT hier op aarde om te simuleren of het probleem op afstand kon worden gerepareerd.
Daar kwam uit dat het mogelijk moest zijn om de vtables van de satellietsoftware, die in C++ werd geschreven, te onderscheppen. Zo kon PistonMiner commando’s uitvoeren op de satelliet zelf. In de talk vertelt de hacker ook hoe het mogelijk werd om de camera van de satelliet uiteindelijk te beheren. Die werkte aanvankelijk niet omdat er voorafgaand aan de lancering te weinig tijd was de firmware daarvoor te schrijven, maar PistonMiner kreeg het alsnog voor elkaar die bug te repareren en de camera werkend te krijgen.
PistonMiner vertelt in de talk verder ook hoe ingewikkeld het was om in de eerste plaats contact te leggen met de satelliet; die vliegt eens per anderhalf uur over Berlijn, waarin de hacker maximaal een kwartiertje de tijd had commando’s door te voeren naar de kleine cubesat. Uiteindelijk is dat wel gelukt. BeeSAT-1 is weer operationeel en kan worden gebruikt voor zijn originele doel om bijvoorbeeld signalen naar radioamateurs te sturen.
Update, 16.55 uur – aangepast dat CCC in Hamburg plaatsvond en niet in Berlijn.