Das riesengroße Problem an der XBox 360 ist, dass MS da ausnahmsweise mal echt extrem gute Arbeit geleistet hat.
Angenommen, wir wollten Homebrew ausführen, müssten wir den Signaturcheck der Executables aus dem Kernel patchen. Den können wir zwar einfach verändern und in den Flash schreiben, das doofe ist nur, dass der Bootloader ihn nicht laden wird, weil die Signatur vom Kernel selber nun nicht mehr stimmt.
Wir können nicht im RAM rumsauen wie wir wollen, weil...
A) alles an Code verschlüsselt ist. Der Hypervisor ver- und entschlüsselt die Daten transparent für die Userspace Programme.
B) es ein NX-Bit gibt, das genutzt wird. Alle Daten, die von Userspace Programmen geladen werden, landen unverschlüsselt im Arbeitsspeicher. Hat den Grund, dass die gesamte Peripherie ja auch über den RAM drauf zugreifen will. Die Pages haben allerdings das NX-Bit gesetzt, das der CPU klar macht, dass dieser Code nicht ausgeführt werden kann.
C) jede Page im Arbeitsspeicher wird gehasht. Selbst, wenn man den RAM ändern sollte, stimmt anschließend der Hash nicht mehr. Soll jetzt von dieser Page etwas gelesen werden, checkt der Hypervisor den gespeicherten Hash mit dem aus den aktuellen Daten resultierenden und hält die CPU an, wenn er nicht stimmt.
Der Arbeitsspeicher wird jeweils mit einem Key verschlüsselt, der beim Start der Box generiert wird, also total random. Die Keys, die irgendwo genutzt werden verlassen die CPU nie. Somit kann man sie nicht sniffen.
Die Private Keys versuchen zu berechnen (Brute force) ist ebenfalls keine Option. Das sind 2048 Bit RSA-Keys.
Der 1st Stage Bootloader, also das Stück Software, dass als erstes gestartet wird und danach weitere Bootloader (2nd Stage, 4th Stage usw.) überprüft (Signatur und/oder Hashes) befindet sich in einem ROM auf der CPU-Die. Insgesamt sind es diesmal 32KB und nicht schlappe 512 Bytes, wie bei der ersten XBox. 32KB sind massig Platz für nen Bootloader. Da kann man schöne kryptografische Routinen unterbringen.
Man kann ihn nicht sniffen, man kann ihn nicht austauschen, deaktivieren oder überschreiben.
Dann haben wir da noch die Fusebits. Diese werden zu 3 (eigentlich nur 2) verschiedenen Zwecken genutzt:
A) Die Unique Seriennummer der Box wird gespeichert.
B) Die Bits werden zerblasen, wenn der 2nd Stage Loader geupdatet wird. Somit wird eine alte Version revoked und startet nicht mehr. Diesen check kann man natürlich nicht einfach rauspatchen, da sonst die Signatur, die vom 1st Stage Loader gecheckt wird nicht mehr stimmt -> BÄM
C) Die Bits werden bei Kernelupdates zerblasen. Ist im Prinzip dasselbe, wie beim Bootloader.
Der Kernel wird beim Start on the fly mit Patches versehen. Nach dem 2nd Stage Loader wird ein Patcher (ja, auch signiert) gestartet, welcher den Base Kernel im Flash mit Version 1888 patcht. Die Patches liegen auch im Flash. Die sind ebenfalls signiert und der Bereich in dem die liegen ist mit einem Hash versehen. Somit kann man A) keine eigenen Patches hinzufügen und B) bestehende Patches nicht ändern.
Weiteres zum Hack und Sicherheitssystem gibts im Video vom 24C3:
http://chaosradio.ccc.de/24c3_m..._2279.html
Ich zermarter mir schon das Hirn, wie man bei den neueren Boxen ein wenig spielen kann.
Ich habe zwei Ansätze:
.Net und NXE
Microsoft liefert das XNA SDK aus. Hier kann man mit .NET eigene Spiele schreiben. Im Prinzip Applikationen, die dann in der .NET VM auf der Konsole laufen.
Die .NET Runtime verändern wird nicht gehen, da sie zwar auf der Festplatte liegt, aber jede Executable bekanntlich gehasht ist.
Also werd ich mir die mal von der Platte ziehen und mal anschauen. Evtl. gibts da irgendwo was verwundbares, bei dem man mit ner modifierten .NET Assembly ein wenig Spaß haben kann.
Leider hab ich mit "aus VMs ausbrechen" keine Ahnung. Evtl. finden sich auf dem diesjährigen 25C3 ein paar Leute, die da Bock drauf haben :rockon:
Das blöde ist nur, wenn man da eigenen Code laufen hat, dass man immernoch nicht am Hypervisor vorbei kommt.
Der NXE-Ansatz geht davon aus, dass Änderungen am Hypervisor gemacht werden mussten. Das muss allerdings nicht sein.
Falls sie das gemacht haben, könnten sie einen Fehler eingebaut haben. Aber das ist mehr eine letzte Hoffnung.
So viel zum Thema Homebrew und Hacks... MS hat leider sehr, sehr gute Arbeit gemacht. Die haben aus der XBox 1 gelernt. Wahrscheinlich hats die auch ordentlich Geld gekostet damals.