
cabine analyse partielle
Avant de commencer à lire, je dois faire cette annonce : PRENEZ TOUT CE QUE VOUS LISEZ AVEC DES PINCETTES CAR JE NE SUIS NULLEMENT UN DÉVELOPPEUR SymbianOS NI QUELQU’UN DE FAMILIER AVEC L’ENVIRONNEMENT SymbianOS.
Mais pourquoi analyser un truc aussi vieux que ça ? Parce que c’est le moyen le plus simple de se lancer dans le hacking à distance, puisque de nos jours ce genre de conneries se fait avec des ndays/0days valant 1 million 🤑🤑🤑. Et parce que je n’ai pas encore l’expertise nécessaire pour faire ce genre de choses.
Cool, maintenant qu’on a évacué cette merde, c’est parti. C’est quoi, bordel, Cabir ? C’est un ver Bluetooth qui tourne sur les téléphones mobiles Symbian. Pour ceux qui se demandent ce qu’est un téléphone Symbian et tout ce bordel. Eh bien, c’est essentiellement un téléphone qui tourne sur ARM, donc du nouveau sous le soleil :) Des infos plus concises (https://en.wikipedia.org/wiki/S60_(software_platform))
Nous avons eu la chance que le code source de ce truc soit en ligne (merci à vxug) (SymbianOS.Cabir.7z). Nous allons l’utiliser comme référence mais, franchement, on s’en fout. Une des autres raisons pour lesquelles je fais ça, c’est que je veux toucher à ARM. Donc on va voir ça d’un point de vue source/assembly/émulateur/débogage/sniffing.
Cool, donc #1 Comment, bordel, on compile le code source ?
Eh bien, ce n’est pas si compliqué...
D’abord, installez carbide ++(http://www.mediafire.com/file/6z54qrceef73x9s/Carbide_cpp_v2_7_en.exe/file)(depuis https://gist.github.com/artem78/cb2b9650af186844f7b5654964676284)
ensuite, installez n’importe quel moteur Perl
ensuite, installez Nokia PC Suite(https://www.usitility.com/nokia-pc-suite/)
installez le SDK (http://www.mediafire.com/file/9uc7fjb2ynmxlud/s60v3.1_SDK.zip/file )
installez le plugin C/C++ (https://ia800905.us.archive.org/7/items/nokia_sdks_n_dev_tools/s60_open_c_cpp_plug_in_v1_7_en.zip)
Et voilà, on a l’environnement :)
PS : mieux vaut utiliser Windows 7 car apparemment sur Windows 10, des trucs cassent et ne fonctionnent pas correctement.
Infection en environnement réel
TBD
Pour cette partie, sachez que vous devez jailbreaker (oui, vous avez bien entendu, jailbreaker) votre téléphone. Comment ça se passe ?
Analyse de rétro-ingénierie
Cool, donc comment, bordel, on compile ce truc ? Très bonne question. Ce que j’ai fait, c’est d’abord exécuter ABLT.BAT depuis le dossier caribe\group, comme ceci
Cool, ensuite ce qu’on fait maintenant, c’est aller là où le SDK est installé, identifier le dossier de plateforme (S60_3rd_fp1) dans mon cas, trouver le dossier epoc32, aller dans le dossier build, choisir le dossier user, le dossier username, puis encore deux ou trois autres répertoires, et vous devriez arriver dans un dossier qui ressemble à ceci
C’est le chemin actuel, qui devrait être à peu près similaire à ce que vous devriez avoir (C:\Symbian\9.2\S60_3rd_FP1\Epoc32\BUILD\Users\pwn\Desktop\CabirSourceCodes\caribe\group)
Cool, ensuite il faut aller dans le dossier caribe (ou selon le nom que vous avez donné au code source) et vous trouverez un dossier avec différents noms, comme on le voit ici
C’est quoi, ça ? Eh bien, en gros, quand on lance ablt.bat (je ne sais toujours pas à ce jour à quoi ça sert, mais peu importe), on obtient différentes options de plateforme pour construire notre fichier pkg à partir duquel on générera notre fichier sis. Dans ce cas précis, on voit GCCE et WINSCW. Si vous exécutez par défaut la commande ablt.bat build, ça construira pour WINSCW (qui est le nom de code de la plateforme émulateur). Pour apprendre à compiler le code source, on va utiliser GCCE pour l’instant, mais le processus est le même si vous choisissez, je ne sais pas, la plateforme arm pour pouvoir l’envoyer sur votre téléphone. Donc en gros, ablt build arm_whatever, puis refaites exactement les mêmes étapes jusqu’ici. Cool, maintenant on va dans le dossier GCCE.
Allez dans le dossier urel et il devrait y avoir un fichier appelé caribe.app. À partir de là, ouvrez une ligne de commande et exécutez
Alors, qu’est-ce que ça fait ??? Eh bien, en gros, on a exécuté makesis, qui génère un fichier sis pour qu’on puisse l’installer sur notre téléphone. Et pourquoi on obtient un sis à partir du code source de caribe ? Eh bien, il fallait spécifier caribe.pkg à makesis. Cool, alors pourquoi toute cette galère pour arriver au dossier build et tout le tralala ? Parce qu’il faut le spécifier au paramètre -d pour que ça génère le fichier .sis.
Cool, donc cette méthode ne fonctionne qu’avec le SDK v3, celui mentionné dans ce write-up. Apparemment, pendant que j’expérimentais, un dev d’un serveur Discord dédié à Symbian a fait remarquer que Cabir est codé pour le SDK v2, et donc ce que je présente ici sera inutile..... c’est TBD quand je pourrai le joindre... car il est assez inactif sur Discord ces jours-ci...
Cool, alors comment fait-on de la rétro-ingénierie sur un fichier .sis ?
Simplement : un fichier .sis est une archive. Donc... on utilise l’application siscontents pour dézipper, puis on balance le fichier .app dans IDA.
Point de vue assembleur
Donc, tout le processus ressemble à ceci
Donc maintenant on va dans ce dossier et ensuite on obtient le fichier app.app.
Cool, si vous le balancez dans IDA.
Cool, donc en gros un exécutable ARM. COOL, DINGUE ! LA SUITE, S’IL VOUS PLAÎT ! HMM OUI S’IL VOUS PLAÎT ~~~
IL Y A des symboles dans le fichier, ouais !!! Eh bien oui, puisque pour une raison bizarre on a compilé le binaire avec des symboles de débogage, on a eu de la chance !