Spécialiste en pose de puce PSTWO, PS2, XBOX 360, PSP,GAMECUBE,WII

La boutique des Metagamers!

Metagames-eu:La passion de la technique
Accueil > Articles > XBox > Fonctionnement du hack XBox 007
Fonctionnement du hack XBox 007

Fonctionnement du Hack 007 sur XBox


Disclaimer:


Cet article est donné à but informatif. Les informations que vous y trouverez sont données sans aucune garantie et il est possible qu'il contienne des erreurs. N'oubliez pas que le détournement des moyens de protection utilisées dans les consoles sont légaux dans le cas où ils n'utilisent aucun logiciel, outils ou code soumis à copyright et que leur utilisation est faîte dans un cadre légal. C'est le cas ici où l'exploit 007 (ou autre) peut servir à installer une distribution Linux sur sa XBox sans puce.

Introduction:


Cet article passe en revue les méthodes mises au point permettant de contourner les protections de sa console de jeux sans puce. Seules les méthodes utilisant des problèmes de sécurité applicatifs seront analysées ici. En effet, depuis la découverte d'un trou de sécurité dans le module de sauvegarde du jeux XBox 007: Agent Under Fire, de nombreux autres exploits sont sortis permettant entre autre de booter des isos Gamecube via une faille dans le jeux Phantasy Star Online et d'executer des programmes PS2 stockés sur carte mémoire via un trou de sécurité dans le module de compatibilité des jeux Psone de la Playstation 2.

1) Mars 2003: La première sauvegarde corrompue


C'est le 29 mars 2003 qu'une team utilisant le pseudo Free-X poste un message sur les forums de xboxhackers.net où elle explique comment booter n'importe quel executable xbe non signé sans puce. Pour ça, ils fournissent le code d'une sauvegarde corrompue du jeux 007:Agent Under Fire. La manipulation consiste (en gros) à  copier la sauvegarde et le programme à executer sur le disque dur XBox, de lancer le jeux Agent 007, et enfin de charger la sauvegarde corrompue. Une fois la sauvegarde chargée l'executable se lance... Si vous connaissiez cette méthode, vous vous êtes peut être déjà demandé comment une telle manipulation était possible. C'est ce que je vais tenter de vous expliquer dans les lignes qui suivent.

2) Buffers Overflows: présentation


La technique expliquée plus haut ne marche que sur le jeux Agent007. C'est donc grâce à ce jeux que ce hacker a réussi a lancer des executables non signés. C'est en effet dans le module de sauvegarde de ce jeux qu'il existe un trou de sécurité bien connu des spécialistes de la sécurité informatique, et qui répond au nom de buffer overflow. Les failles de type buffer overflow permettent entre autre de faire executer du code sur le système visé, avec les privilèges de l'application exploitée.
Pour vous expliquer grossièrement le fonctionnement du buffer overflow, considérez le programme C suivant (je n'entrerais pas dans les détails techniques d'exploitation dans cet article, tout simplement car je n'en ai pas les compétences et que ce site n'est pas un site de sécurité informatique):

void main(int argc, char * argv[])
{
  char chaine[20];
   if(argc>0)
 {
    remplir_buffer(chaine,argv[1]);
    printf("L'argument est: %s\n",chaine);
 }
}

void remplir_buffer(char * string1, char * string2)
{
  strcpy(string1,string2);
}


Le premier argument passé au programme est copié dans le tableau de caractères chaine. Vous aurez remarqué que la taille de ce tableau est de 20 caractères. Que se passe t-il si je passe un argument de plus de 20 caractères à ce programme? Sous Linux vous aurez droit à un joli "Segmentation Fault" dans la plupart des cas. En fait la fonction strcpy n'effectue aucune vérification quant à la taille du buffer de destination. Si la chaîne de caractères à stocker est plus longue que le buffer de destination, la fonction strcpy va continuer de copier les caractères dans la mémoire à la suite de l'espace mémoire réservé pour le buffer de destination. Des données essentielles à la bonne continuation du programme risquent donc d'être écrasées par les données saisies !


Des techniques d'exploitation ont été mises au point dans le but de tirer profit de ce problème.  En effet, parmi les données que l'on peut écraser en mémoire avec cette technique, il en est une qui est particulièrement interessante. Il s'agit de la copie en mémoire du registre processeur EIP (Extended instruction Pointer), copie effectuée lors de l'appel d'une fonction. Voyez un registre comme une zone mémoire stockant des données, située dans le processeur, et dont l'accès en lecture et en écriture est extremement rapide. Le registre EIP contient ce que l'on appelle l'adresse de retour d'une fonction.
 L'adresse de retour est en fait l'adresse à laquelle le programme doit continuer son execution une fois que la fonction qui est en train de s'executer est terminée: dans ce cas l'execution du programme doit reprendre juste après l'appel de la fonction. On a vu precedemment qu'il était possible d'écrire (et d'effacer par là même) des données en mémoire via un débordement de buffer. En cherchant à réécrire l'adresse de retour stockée en mémoire, on peut arriver à faire continuer l'execution d'un programme où bon nous semble!
En pratique, on s'arrange pour que l'adresse de retour réécrite pointe vers le début de la chaine passée en argument (en général), et que cette chaine contienne des instructions directement compréhensibles par le processeur (on parle souvent de shellcode car les buffers overflow sont frequemment utilisés pour donner une invite de commande à l'attaquant, mais ils peuvent être utilisés pour d'autres types d'actions comme on va le voir pour les consoles de jeux).

Historiquement, la première grosse exploitation connue de ce type de faille remonte à la diffusion du vers de Moris en 1988. Il faut savoir que les vers infectant les systèmes d'exploitation de Microsoft (Blaster, etc,...) exploitent pratiquement tous des failles de type buffer overflow.

3) Méthode de protection des executables XBox


Voici une brève introduction à la méthode de protection des executables XBox employée par Microsoft. En fait, tous les jeux produits par les sociétés de développement doivent être envoyés à Microsoft qui va "signer"  les executables. Signer l'executable veut en fait dire que Microsoft va apposer une marque sur le fichier en question. Cette marque est générée grâce à ce que l'on appelle une clef privé et dépend du fichier à signer. La clé privé de Micro$oft est ultra-secrète et la posséder permettrait de signer soi-même ses executables et donc de lancer n'importe quel programme XBox de la même façon qu'un jeux original!
La création de cette fameuse signature est basée sur l'alogrithme RSA. La signature de microsoft est vérifiée dans la XBox à l'aide d'une clef appelée clef publique, chargée en mémoire dans la console. Pour déterminer la clef privé de Microsoft, il faudrait factoriser en produit de nombres premiers la clef publique, ce qui necessiterait en pratique une énorme puissance de calcul (la clef publique n'a pas été choisie au hasard)... Mais si la clef publique était modifiée directement en mémoire de façon à ce qu'elle soit très facilement factorisable, il ne serait pas dur de déterminer une clef privé et de resigner un executable... C'est ce qui a été fait dans le hack 007 à l'aide d'un buffer overflow.

4) Buffer overflow dans le module de gestion des sauvegardes de 007: Agent Under Fire


Dans le jeux 007 : Agent Under Fire, il existe un problème de type buffer overflow dans le module de sauvegarde. En fait la faille semble être présente dans la fonction réalisant la copie en mémoire du nom du profil à qui appartient la sauvegarde. Le programme executé par le processeur suite à l'exploitation de la faille via la sauvegarde hackée va réécrire la clef publique de la XBox en mémoire de telle façon qu'elle soit très facilement factorisable. Il faut ensuite récupérer la clef privé correspondante (connue sous le nom de la clef habibi ;) et resigner l'executable. Ainsi il est possible de lancer Linux version XBox ou tout autre programme sans puce...


5) Les autres failles découvertes dans la XBox


Depuis la découverte de la team Free-X, d'autres problèmes ont été trouvés dans différents jeux et dans le dashboard d'origine de la console:
- Jeux Splinter Cell et Mechassault
- Le 4 juillet 2003: BOF trouvé dans le module de chargement des polices du dashboard XBox (Exploit Bert et Ernie)
- BOF trouvé dans le module audio du dashboard XBox
Il existe peut être d'autres problèmes de sécurité trouvés ne figurant pas dans la liste ci-dessus.

Toutes ces failles permettent d'executer des xbe non signés et des packs sont apparus qui flashent même le bios de la console en utilisant l'exploit. Plus besoin de puce pour modifier sa console à long terme.

6) La Playstation 2 : l'exploit de Marcus R. Brown (PS1DRV HACK)


Le 15 août 2003, Marcus R. Brown, sur son site http://www.0xd6.org/, annonce la "PS2 Independance". Un exploit est mis en ligne permettant de modifier la séquence de démarrage de la console. La faille exploitée est un buffer overflow dans la fonction de lecture du fichier TITLE.DB du driver PS1 (PS1DRV) de la Playstation 2. La mise en oeuvre de l'exploit est simple:
- Récupérer un jeux psone
- Patcher le fichier TITLE.DB à l'aide de Titleman avec l'ID de son jeux psone
- Faire l'image du fichier TITLE.DB et des fichiers de l'exploit puis graver comme une image PS2
- Booter sur ce CD avec une méthode de swap : l'exploit s'installe alors automatiquement
- Redémarrer la console et insérer le jeux psone


Liens à visiter pour plus d'infos:

- Flasher son bios XBox sans puce: Phoenix Bios Loader
- Article de référence sur les buffers overflow : Smashing The Stack For Fun And Profit
- Analyse technique de l'exploit 007: Technical Analysis of 007: Agent Under Fire save game hack
- Analyse technique de l'exploit "Bert & Ernie" :  Technical analyses of Free-X’s “Bert & Ernie” exploit
- Page de Marcus R. Brown : PS2 Independance
- gcdev.com : Le Hack Gamecube PSO avec PSO Loader
- Liste des exploits XBox: XBox-Scene

Ecrit le 13/09/2004 par Leo - Hits: 37824


[Disclaimer] [Team et contributeurs] [Articles] [Forums]

(C) metagames-eu.com / 2002-2007

News Puces WII,PS2,XBOX,XBOX360 Forums Consoles Tutoriaux Consoles Téléchargements Rechercher Castes

Sites amis : PS3