[INFO] Le processus de boot d'une 360
Alors voilà je trouve rarement des topics sur les détails techniques de la Xbox360 sur des forums FR ou même simplement en français. J'ai donc décidé de réunir certaines infos, pour les curieux ou ceux qui chercheraient à comprendre ce qu'il ce passe quand ils modifient la nand ou autre. Ce premier topic a donc pour but d'expliciter le processus de boot d'une 360, les infos qui sont chargées etc.
Il calcule une clé RotSumSha1 qu'il utilise pour vérifier la signature RSA du CB, si cette étape est passée correctement, il Charge et décrypte le CB (_A dans certains cas, voir "CB") puis le lance.
Note : le 1BL est contenue dans le CPU et c'est une ROM il est donc quasi impossible de la modifier, c'est pourquoi lancer du code non signé est compliqué c'est cette partie qui est à la base du processus de sécurité de la Xbox360.
*Uniquement Slims et Fat en kernel 14699 et sup (nécessitant le RGH2.0)*
CB_A : charge et décrypte le CB dans la RAM, il calcule une clé RotSumSha1 et la compare au hash du CB_B, si cela correspond, il le lance.
CB_B : lance une machine virtuelle qui :
Le CB_B calcule la RotSumSha1 du CD, si elle correspond à son hash, il le charge puis le décrypte dans la RAM.
Calcule la RotSumSha1 du CE la compare à son hash, si ils correspondent, le kernel de base (compréssé avec un algo LZX) est décompressé.
Il vérifie ensuite les offset de patch, si il en trouve un, il charge et décrypte le CF correspondant à ce patch. Enfin, il charge la clé RotSumSha1 si elle correspond à la signature il charge les CF/CG qui forment une paire, afin de patcher le kernel.
Charge le CG dans la mémoire à partir des informations contenue dans le header de la NAND (les premiers offsets) et lis le reste des données dpuis les blocs d'offsets du CG indiqués dans le header du CF ( ils peuvent changer car les patchs CF chargés depuis les offsets de patch du kernel de base dépendent de la version/révision de 360 ).
Ensuite, il charge et décrypte le CG dans la mémoire en utilisant la clé générée par le CF décrypté. Pour vérifier, il compare la RotSumSha1 et la compare encore au hash.
Si cela correspond, l'algo LZX delta pour décompresser et appliquer le patch au kernel de base dans la mémoire.
Une fois terminé il réalise un saut conditionnel vers le CD, qui, une fois ses opérations terminées il réalise un saut dans le reset vector de l'hyperviseur.
Note : Les différents types de hash cryptos utilisés lors du boot de la 360 :
-Signatures RSA : Les CB et CF sont signés avec cette algorithme. Il n'y a pas moyen de les casser, (Microsoft possède les clés privées) .
-SHA1 hash : Le CD,CE, CG sont signés avec. Leurs Hash sont contenu dans la signature RSA du processus précédent. Prévu pour empêcher la modification du processus de boot.
- 1BL
Il calcule une clé RotSumSha1 qu'il utilise pour vérifier la signature RSA du CB, si cette étape est passée correctement, il Charge et décrypte le CB (_A dans certains cas, voir "CB") puis le lance.
Note : le 1BL est contenue dans le CPU et c'est une ROM il est donc quasi impossible de la modifier, c'est pourquoi lancer du code non signé est compliqué c'est cette partie qui est à la base du processus de sécurité de la Xbox360.
- CB
*Uniquement Slims et Fat en kernel 14699 et sup (nécessitant le RGH2.0)*
CB_A : charge et décrypte le CB dans la RAM, il calcule une clé RotSumSha1 et la compare au hash du CB_B, si cela correspond, il le lance.
CB_B : lance une machine virtuelle qui :
- Initialise le PCI Bridge
- Désactive le GPU PCIE Jtag test port
- Initialise les ports séries
- Lance une instruction pour que le SMC efface le "handshake" bit
- Initialise la mémoire
- Génère un ROD si l'initialisation de la mémoire échoue
Le CB_B calcule la RotSumSha1 du CD, si elle correspond à son hash, il le charge puis le décrypte dans la RAM.
- CD
Calcule la RotSumSha1 du CE la compare à son hash, si ils correspondent, le kernel de base (compréssé avec un algo LZX) est décompressé.
Il vérifie ensuite les offset de patch, si il en trouve un, il charge et décrypte le CF correspondant à ce patch. Enfin, il charge la clé RotSumSha1 si elle correspond à la signature il charge les CF/CG qui forment une paire, afin de patcher le kernel.
- CF
Charge le CG dans la mémoire à partir des informations contenue dans le header de la NAND (les premiers offsets) et lis le reste des données dpuis les blocs d'offsets du CG indiqués dans le header du CF ( ils peuvent changer car les patchs CF chargés depuis les offsets de patch du kernel de base dépendent de la version/révision de 360 ).
Ensuite, il charge et décrypte le CG dans la mémoire en utilisant la clé générée par le CF décrypté. Pour vérifier, il compare la RotSumSha1 et la compare encore au hash.
Si cela correspond, l'algo LZX delta pour décompresser et appliquer le patch au kernel de base dans la mémoire.
Une fois terminé il réalise un saut conditionnel vers le CD, qui, une fois ses opérations terminées il réalise un saut dans le reset vector de l'hyperviseur.
Note : Les différents types de hash cryptos utilisés lors du boot de la 360 :
-Signatures RSA : Les CB et CF sont signés avec cette algorithme. Il n'y a pas moyen de les casser, (Microsoft possède les clés privées) .
-SHA1 hash : Le CD,CE, CG sont signés avec. Leurs Hash sont contenu dans la signature RSA du processus précédent. Prévu pour empêcher la modification du processus de boot.
Hackorporation.
-
TNTcity Gamer Bronze
- Messages: 1045
- Inscription: 29 Jan 2011, 20:52
- Prénom: ---
- Pays: USA
- Sexe: Homme