2010/08/04

Xbox 360 Security : Chapter 1

Me revoila ;-) .

Depuis plusieurs mois , la 3LRVS avait debute des recherches sur la securite des consoles Xbox360.

Malheureusement , faute de temps et surtout de matos , nous avions mis de coté ces recherches , attendant de pouvoir avancer de façon plus "concrete".

C'est chose faite , la 3LRVS va reprendre du service \o/ , voila donc le moment opportunt pour vous proposer un article condensé sur l'architecture et les bases de la securite sur ce type de machines en attendant nos premiere trouvailles (enfin , espérons le :P ).

Let's go :

[*]Caractéristiques de l'architecture de la Xbox 360 :

- Processeur (XCPU Xenon):

PowerPC G5 d'IBM x64 3-cores cadence a 3.2Ghz (1,6 Ghz en reel) .

Multithreads (2 threads [SMT] par core : 1 en FPU + 1 en VMX)

192Mo de cache total en L1 (level 1 ) et 1Mo en L2 (mode utilisateur)

*Soit: 32Kb en cache (instructions) + 32Kb en cache (donnees) , en Level 1 (kernel mode).

- Memoire vive (RAM): 512 GDDR3 - 700 Mhz partagee avec le cpu Bande passante de 21.6 Go/s

- Architecture : PPC Big Endian (IBM)

( http://fr.wikipedia.org/wiki/Xenon_(processeur) )

[*] Prerequis :

- FPU (Floating Point Unit) :

Est un processeur dédié spécialement conçu pour effectuer des opérations sur des nombres à virgule flottante

( http://fr.wikipedia.org/wiki/Unit%C3%A9_de_calcul_en_virgule_flottante )

- VMX: les VMX implémentent des instructions ternaires spécifiant deux registres source et un registre destination, ainsi qu’un registre de modification optionnel.

Ils sont utilisés notament dans le cadre d’additions ou de multiplications (ici étendu a 128 Bits) a raison de 2 cycles gérant 4 instructions chacun.

( http://fr.wikipedia.org/wiki/AltiVec )

- SIMD: le SIMD regroupe les deux coprocesseurs vectoriels VMX128 (similaires à AltiVec) avec 2 bancs de registres (128×128 bits) pour chaques coeurs.

- SMT (Symetric Material Thread):

Systeme de multi threads symétriques

(2 par coeurs soit 6 threads au total pour les jeux)

- eFuse :

Securite sur le bootloader permettant de tester la présence du firmware proprietaire .

Capacité: 768 bits -

Patche depuis la version (ou MaJ) kernel >= 4552 (afin d'eviter les downgrade , voir la partie "securite").

[+]Schema simplifié du processeur PowerPC (Xenon) d'IBM utilisé:


128 Registres:

Les 32 premiers mappés aux 32 registres(enregistreurs) qui existent dans la génération précédente

de processeurs PowerPC(pour la compatibilité binaire) .

A ce processeur triple coeur viennent s'ajouter les 2 coprocesseur vectoriels (relatif aux données) VMX128 (similaires à AltiVec) avec 2 bancs de registres (128×128 bit) pour chaque coeur.(VMX128 Bits doubles coeurs)

L'utilisateur a en outre la possibilité d'utiliser l'ensemble des registres normaux fournis par le PowerPC et les 32 registres vectoriels fournis par VMX de manière simultanée.

(jeu de 32 registres vectoriels 128 bits permettent alors de stocker 16 entiers 8 bits signés ou non signés, 8 entiers 16 bits signés ou non signés, 4 entiers 32 bits signés ou non signés ou bien 4 nombre réels 32-bit en virgule flottantes)

[*] Sécurité :

Les concepts de sécurité sont identiques à ceux définis sur l'architecture POWER (contrôle des accès au niveau des segments et des pages).

La séparation superviseur / utilisateur se fait au niveau des segments ou des blocs. Chaque processus utilisateur dispose de 16 segments dont deux sont réservés au noyau (accessible en mode superviseur).

À noter cependant qu'il est possible d'effectuer des accès à la mémoire qui ne supportent aucun contrôle. Il suffit pour cela de désactiver tous les mécanismes de traduction d'adresses.

ROM (et SRAM de 64 kbytes) contenant le programme de démarrage Secure Bootloader de Microsoft, et un Hyperviseur de cryptage pour générer des clés

de chiffrement aléatoire.

Ce meme Hyperviseur a pu permettre par exemple une exploitation

(il y en a eu d'autres, et d'autre sont a l'etude)

via une injection au travers de shaders de jeu (King Kong) , permettant ainsi d'executer du code arbitraire directement en mode kernel .

En effet , les vectors shaders utilises benefient d'un acces a la memoire non controles .

(Ce jeu utilise des shaders compilés avec Microsoft D3DX9 Shader Compiler 9.04.91.0000)

Pour ce faire , Crawler360 (la super crapule :P) a du convertir son code en shader puis developper un petit loader utilisable par le port de serie .

Malheureusement , les MaJ du kernel vers la version 4552 (ou superieure) bloquent les tentatives de Downgrades et donc l'exploitation de cette vulnerabilitee de l'Hyperviseur .

Neanmoins , d''autre exploitations de ce type restent a envisager (et font l'objet de recherche active) .

Voila , la petite presentation de la Xbox 360 est maintenant finie , j'espere que ça pourra servir a d'autres , n'hésitez pas a partager vos idées/trouvailles , c'est important .

See you ..

/--------------- RESSOURCES UTILES ---------------\

2010/08/01

flux now avaible

Salut a tous!

Etant donné que je compte balancer pas mal d'anneries ici dans les mois a venir, j'ai décidé de lancer mon flux afin de se tenir informé de l'activitée du blog .

Pour ceux que ça intéresse: link

A trés bientot ;-)