Defcon 2014

Ah, Las Vegas…

Comme chaque année, une délégation de SCRT s’est rendue dans la capitale du jeu pour participer à la conférence Defcon. Cette année toutefois, sept ingénieurs ont pris part à cette expédition :

  • Une personne pour assister aux conférences
  • Une personne pour participer en tant que conférencier (et au CTF)
  • Le reste de l’équipe (6 personnes) pour participer au Capture The Flag

Après un week-end plutôt intense, voici un petit aperçu du CTF tel que nous l’avons vécu.

Capture The Flag

Le challenge Capture The Flag de Defcon est le plus prisé des concours de ce type. Son fonctionnement est un peu différent de concours comme Insomni’hack où il s’agit uniquement de résoudre des énigmes et épreuves techniques. Ici, chaque équipe se voit attribuer un serveur sur lequel plusieurs services sont disponibles. Chaque service renferme un "flag" qui doit être protégé et ce flag change toutes les cinq minutes. Chaque équipe possède les mêmes services et le but du jeu est multiple :

  1. Garder ses services fonctionnels durant tout le jeu, sous peine de perdre des points si le service ne répond plus
  2. Analyser les services afin de trouver les vulnérabilités qu’ils contiennent et :
    1. Corriger ces failles pour que les adversaires volent plus vos flags sinon, perte de points.
    2. Exploiter la vulnérabilité chez les adversaires afin de voler leurs flags, et ainsi gagner des points.

Comme on peut le voir, la tâche n’est pas de tout repos, et l’action est permanente, ne laissant que peu de répit à toute l’équipe.

Qualifications

Nous avons obtenu notre place en finale de justesse après avoir terminé en dix-septième place aux qualifications qui ont eu lieu un peu plus tôt dans l’année. Cette place nous a permis de nous retrouver parmi les vingt équipes qualifiées.

flag

Une fois dans la salle, un bloc de tables était attribué à chaque équipe. Un unique câble permettait de se connecter au réseau du jeu, qui nous a permis de nous connecter à notre serveur. Cette année, le serveur fonctionnait sur une carte ODROID U3 (processeur ARM) avec une distribution Ubuntu. Les organisateurs ont laissé une heure aux équipes pour mettre en place leur stratégie avant d’ouvrir le réseau, et ainsi commencer les hostilités.

Epreuves

En début de jeu, seuls deux services étaient proposés aux équipes, puis les organisateurs ont progressivement ajouté de nouveaux services, augmentant le nombre de paramètres à prendre en compte au cours du jeu.

Une épreuve très originale se présentait sous cette forme :

badge

Ce badge fonctionne avec un FPGA et possède un émetteur/récepteur radio. Il permet d’envoyer et de recevoir des messages aux autres équipes. Le processeur utilisé est un MSP430 modifié et une version du firmware est accessible pour analyse.

Au final, cinq services étaient disponibles. Certains d’entre eux ont été mis à jour plusieurs fois au cours du jeu, mais restaient sensiblement identiques tout en retirant on introduisant de nouvelles vulnérabilités.

La plupart des services étaient des binaires ARM – dynamique et statique – vulnérables à des corruptions mémoire, en particulier buffer overflows et Use-After-Free. Cette année nous retrouvions les services suivants:

  • Un jeu de space trading (binaire x86 lancé par qemu)
  • Un serveur Web
  • Un serveur imap
  • Un protocole binaire inventé par les organisateurs

Attaque

Comme les équipes n’ont pas d’accès root sur les serveurs de jeu, il n’y a pas de possibilité d’analyser le trafic réseau entrant. Les organisateurs ont bien entendu prévu une solution à ce problème et proposaient de télécharger le trafic réseau des cinq dernières minutes de jeu, et ce pour chaque équipe.

Une tactique de jeu que nous avons utilisé consistait à analyser le trafic réseau d’une attaque réussie, de récupérer l’exploit d’une autre équipe et ainsi de gagner du temps sur l’exploitation d’une vulnérabilité.

Toutefois il n’est pas possible de se contenter d’analyser et de rejouer les attaques des autres équipes: plusieurs vulnérabilités ne sont pas immédiatement rejouables et nécessitent une bonne compréhension du binaire affecté et du chemin d’exécution menant à la vulnérabilité. Il est donc nécessaire de consacrer beaucoup de resources sur le reverse-engineering des binaires afin de comprendre leur fonctionnement, trouver des vulnérabilités, les patcher puis les exploiter.

Défense

Le maintien du serveur est également une tâche difficile tant les attaques sont nombreuses et leur suivi difficile. Le maintien des services opérationnels est important puisqu’il influe directement sur le score. Dès lors, de nombreux scripts et outils d’analyse ont été mis en place pour que nous ayons un suivi presque continu sur de nombreux éléments du système, comme par exemple :

  • les fichiers créés par les services
  • les modifications des services en eux-même
  • la limitation du temps d’exécution des services

Au cours du jeu, certaines failles ont permis aux équipes d’obtenir un shell sur les serveurs adverses. Dès lors, une partie du travail du sysadmin consiste a constamment surveiller les processus du serveur et de tuer les processus non désirables en attendant un patch de la vulnérabilité exploitée. Tâche rendue compliquée par la créativité de nos adversaires pour maintenir un accès à notre serveur. A titre d’exemple, nos scripts ont tué environ 1338 processus /bin/sh sur la journée de dimanche…

Conférence – "Playing with car firmware… or how to brick your car"

photo

Cette année (et pour la deuxième année consécutive),  nous avons également eu la chance d’être sélectionnés pour présenter un sujet lors de cette 22ème édition de Defcon.

De nos jours, les voitures ne sont plus purement mécaniques. Les véhicules actuels contiennent tous de nombreux composants électroniques (ECU) reliés entre eux grâce à un réseau (CAN BUS).

Les communications sur le réseau CAN Bus sont d’ailleurs quelque chose de normalisé grâce aux standards ISO-TP ou ISO 15765-2.
Ces différents ECU surveillent et contrôlent en permanence l’état du véhicule.
Plusieurs travaux de recherche ont d’ailleurs été présentés lors de la dernière édition de Defcon, on retiendra entre autres la démonstration assez impressionnante de Charlie Miller & Chris Valasek. Pour rappel, leurs recherches portaient sur les modèles Ford Escape (2010) et Toyota Prius (2010) et ils ont notamment expliqué comment ils avaient réussi à prendre le contrôle de la direction, de l’accélération, du freinage et d’autres fonctions importantes de ces véhicules. Les chercheurs ont même trouvé un moyen de réaliser des attaques persistantes en modifiant le firmware de l’ECU pour envoyer de mauvais signaux, même quand ils n’étaient plus physiquement connectés aux unités de contrôle.

La plupart des recherches faites jusqu’à présent ont principalement porté sur les interactions possibles avec les différents ECU du véhicule au travers du réseau CAN Bus et plus particulièrement au travers de la prise OBD2.

Je n’ai trouvé que peu de publications concernant les systèmes multimédia qui équipent la plupart des véhicules récents. Ces équipements se matérialisent généralement au travers d’un écran permettant de contrôler le GPS et diverses fonctionnalités du véhicule : Bluetooth, lecteur musique/MP3, lecteurs vidéo, carnet d’adresse, GPS.. mais aussi : climatisation, éclairage, verrouillage centralisé, position des sièges pour ne citer que quelques exemples…

Comme on peut s’en rendre compte ces équipements ont une interaction assez importante avec le véhicule et peuvent contrôler bien plus de choses que le simple volume de la musique.
Il semblerait même que certaines options du véhicule (wifi à bord, télévision…) soient présentes « par défaut » sur tous les véhicules équipés du GPS et qu’il s’agisse juste d’une activation électronique.

….c’est donc le fruit de mes recherches sur ce thème que j’ai eu la chance de présenter pour Defcon.

Utilisateurs codés en dur dans le véhicule, mots de passe "par défaut", SSID, ranges IP internes du constructeur…. il semblerait bien que l’industrie automobile aient encore quelques progrès à faire dans le domaine de la sécurité…

Ce fut un véritable plaisir de présenter ce sujet à un salle enthousiaste … et, il faut l’avouer, assez impressionnante (tant par sa taille, que par les personnes qui étaient présentes)

Les slides de ma conférences seront très prochainement disponibles sur le site de la defcon (en attendant, si vous demandez gentiment, c’est avec plaisir que nous vous les fournirons)

 

Conclusions

Le CTF fut une vraie réussite, tant sur le système de jeu que sur l’organisation et le niveau très élevé de la compétition.

Defcon reste une "immense" conférence avec les avantages et les inconvénients que cela représente…. il faut être motivés pour faire la queue partout (pour obtenir son badge, pour essayer d’accéder aux salles des conférences, pour manger…) mais c’est une occasion unique de croiser et cotoyer de nombreux passionnés et professionnels de la sécurité informatique.

Nicolas,Paul, Adrien, Michael, Alain,Florian,Karim

Publié dans Events, news

Metasploit psexec resurrect

What a joy !

I just received tonight this nice email from github :

Meatballs1 merged commit 1a3b319 into  from 

My 2 years old pull request to metasploit was just accepted !

Long story short

Annoyed to have to chain msfencode and msfencode and msfencode to bypass anti-virus during penetration testing, we wanted to create some packers that do the job. Better than that, we wanted to integrate it in metasploit to use it with all the framework features and improve our performances :D.

I firstly figured it out that most of AVs detect ‘exe’ loader creation technique (from msfpayload) even if you put a "foobar" payload : echo -n "foobar" | msfencode -t exe -e generic/none => HIGH SCORE on virustotal.

I proposed "exe-only" technique. Shortly, it write the payload at the original entry-point of your exe template and put the section RWX so it reduces the loader signature to one RWX section only.

So next we could focus on the payload encoding.

For information, I scanned every native windows exe and find that ntkrnlpa.exe and ntoskrnl.exe contains RWX section (if AVs shoots files for having RWX sections, it would shoot Windows native exe too).

After some debate this exe-only technique was added to metasploit.

Next part was to use it with the famous psexec module that nobody use anymore because every AVs trigger it.

It’s simply because service executable created by psexec module use subsitution method, replacing "PAYLOAD:" with the payload in a template. Again, AVs trigger template regardless of the payload and to create a working template it was such a pain that we prefered use a "normal" executable and send it using psexec custom_exe feature…

So I wanted to use the previously merged "exe-only" technique to create a register service payload prepended to the user encoded payload.

That’s that stuff that took two years to land in Metasploit, mostly because I’m a noob in ruby and git (booo) and a little bit of scepticism from some metasploit guys.

Anyway, I’m proud it’s finally merged, you could just track it for fun :

07/09/2012 – https://dev.metasploit.com/redmine/issues/7231

14/10/2012 – https://github.com/rapid7/metasploit-framework/pull/903

19/05/2013 – https://github.com/rapid7/metasploit-framework/pull/1850

20/11/2013 – https://github.com/rapid7/metasploit-framework/pull/2657

07/06/2014 – Merged !

I hope you will re-use psexec now and I’m sure it bypass a lot of BIG AV at this moment because their sandbox executes the service PE that actually register itself to the SVC manager and exit. SVC manager then re run the PE beginning at the registered service entry-point.

It was very cool to speak with Metasploit guys and I know I would have to persevere for my next pull request !

Publié dans Metasploit, news, vulnérabilité

Area 41

Après une année d’absence, les Hashdays reviennent avec un nouveau nom, une nouvelle localisation et des nouvelles dates.

La conférence se passait les 2 et 3 juin 2014 au Komplex 457 de Zurich.

Fini le Radisson et les berges du lac des quatre cantons et direction les salles de concert dans le noir.

Les organisateurs proposaient deux tracks en parallèle, un dans la plus grand salle avec caméra, projecteur et canon à fumée et l’autre plus discrète dans un ancien strip club.

Keynote: Halvar Flake

Slide

Halvar Flake nous parle des tests à faire afin d’être sûr que notre ordinateur n’est pas compromis. Il propose divers tests dont la vérification des signatures des binaires dans le userspace, des binaires dans le kernelspace, des éléments du BIOS, des firmwares des différents composants et management engine des cartes mères et la possibilité de vérifier que les CAs sont bien la source des certificats délivrés.

Malheureusement, à l’heure actuelle, il n’est pas possible de valider ces points. Très peu d’exécutables sont signés et même s’ils le sont leurs extensions ne le sont pas forcément. Pour les éléments du BIOS, les firmwares et les management engine, il n’est même pas possible de connaitre les binaires et les signatures.

De plus, même si un élément a été signé, il est difficile d’être sûr que la CA en soit bien la source.

Il termine sa présentation en précisant qu’il reste encore beaucoup de travail pour améliorer la signature des binaires. Les fabricants doivent faire pression pour avoir accès aux contenus des éléments embarqués et il faudrait mettre en place une liste publique des certificats signés par chaque CA afin de garantir que les signatures de proviennent pas d’une version corrompue.

Ange Albertini and Gynvael Coldwind: Schizophrenic Files – A file that thinks it’s many

Slide

Possibilité pour moi de voir cette présentation que j’avais ratée à Insomni’hack 2014 et en plus cette fois, Ange était accompagné de Gynvael.

Première bonne surprise , Gynvael portait son tshirt Insomni’hack :-)

Ce talk parle de la possibilité d’abuser les parser de différents logiciels afin d’obtenir un résultat différent en ouvrant le même fichier.

Les premiers exemples concernent les archives zip  et ce procédé a même été déjà utilisé par Jeff Forristal pour abuser le mécanisme de signature des APK pour android (présentation à Blackhat 2013).

Vient ensuite le tour du format PDF qui en plus d’ouvrir un document différent en fonction du lecteur permet d’obtenir un fichier différent lors de l’impression. Cette partie n’étant même pas un bug mais une fonctionnalité offerte par le format.

Les formats BMP et PNG permettent aussi ce comportement en jouant avec les headers du fichier ou avec les palettes de couleurs utilisées.

Ange a aussi joué avec les PE et s’est même offert le luxe d’avoir des fichiers exécutables compatibles avec toutes les versions de Windows de XP à Windows 8 64 bit.

Chris Nickerson – 50 Shades of RED: Stories from the "Playroom"

Slide (venant de Confidence mais identique)

Place à un grand show à l’américaine rempli de lolcats et de blagues en tout genre!

Malgré une présentation sur le ton du deuxième (voir troisième) degré, Chris a quand même un message à faire passer.

Son constat principal est le rapport entre l’argent dépensé dans la sécurité de l’information et l’argent perdu suite à des attaques. Plus les années avancent et plus le montant des deux augmente.

Il proposes quelques idées pour essayer d’améliorer ce constat sous forme de retour d’expérience et d’exemple de sensibilisation d’utilisateur.

On retiendra surtout son explication du terme APT et la citation de Mike Tyson "everyone has a plan until they get punched in the mouth"

Chris John Riley – REDACTED

Ce talk au nom peu indicateur parlait en fait des attaques faites sur les smartphones android au travers de l’ADB.

Deux attaques ont été présentées.

La première concerne l’application mobile de LastPass. Au travers de l’ADB, il est possible de faire un backup de l’application, d’ouvrir l’archive, de modifier un fichier xml de configuration et de supprimer la demande du code PIN permettant la connexion automatique au coffre-fort. Il suffit ensuite de refaire l’archive et de faire un restore au travers de l’ADB pour accéder aux mots de passe.

Même si l’attaque semble dangereuse, elle ne me semble pas vraiment exploitable compte tenu du nombre de prérequis. (téléphone non chiffré, mode debug USB activé et surtout, la pire configuration de lastpass possible)

La deuxième attaque concerne les containers Good. Un mécanisme de wipe du container rend le brute.force de clé impossible. Grâce à l’ADB, il est possible de faire un backup du container, de tester neuf possibilités de clés ( dix essais étant autorisés avant le wipe) et de restaurer le container pour faire passer le compteur à zéro avant de continuer.

 

En conclusion, très bonne conférence au niveau des Hasdays. et j’attends avec impatience les vidéos des talks que je n’ai pas eu l’occasion de voir.

Publié dans Events

PHDays Finals 2014 Homepage + Breadcrumbs Tasks Writeup

We’re going to look at two of the tasks of the PHDays finals, namely breadcrumbs which we solved and homepage, which unfortunately we were not able to solve during the CTF, though the solution seems to be correct. If you have any additional information on this particular task, I’d love to have your comments : @plopz0r.

Breadcrumbs

This was a forensics task where a full virtual machine was provided to us. We were simply told that the task started with the user "user". So after extracting the VM’s disk, we started by searching in that user’s home directory. Easily enough, we discover a file named simple_bsl.png.

simple_bsl

 

In a comment section of the image, we can find :

Next breadcrumb is located at /usr/share/doc/ranger/
But first find password...

And in this folder, there is a file named "hacking.gpg" which obviously needs a password. The name of the first image points in the direction of information being hidden in the least-significant bit of each pixel (bsl -> lsb). The answer is not quite as straight forward though, as actually only the first 8 out of every 9 bits must be considered to find the password.

The file then decrypts this message:

here is md5 sum of file you need to find: 30055312e086ea49424c759f3deb751a. Password is the name of the folder, where file is located. Let the force be with you, good luck, etc :)

We can easily find this file with the following command:

find . | xargs md5sum | grep 30055312e086ea49424c759f3deb751a

The file is /etc/magic, it is also a GPG encrypted file. We can decrypt it with "etc" as a password. This now reveals:

Now you need to collect parts of the flag that are located in this folder. Valid flag's parts can contain ONLY alphabet symbols, underscore ("_") and exclamation ("!") mark. First part of the flag is "Not_". Good luck!

We quickly see that Not_ is prepended by Key_part: and so we grepped for all "Key_part: " followed by alphabet, underscore and exclamation mark characters. This however reveals way too many results to find the flag immediately… So we tried ordering the parts by file modification date, or line number within the file, but this didn’t really give any results, so we proceeded with a bit of guessing.

The flag starts with "Not_" and there is a key part "_nor_" and another one "tel!". So we decided it was likely that the flag would be of the format "Not_XXXXX_nor_YYYYYtel!"

One other key part is "gre", which can be added before "tel!" to give "gretel!".  Since the name of the task is "breadcrumbs", We guessed the flag was "Not_hansel_nor_gretel!", which was correct!

Homepage

This was a web task and when you connect to the application, there is not much you can do. Essentially, create a user, login with that user, view a blog page in english or russian, and send a message to the admin. The blog page itself talks about XSS, CSRF, Response Splitting and Clickjacking. There is an admin page, but we cannot access the contents.

We first started looking for XSS flaws in the site, but to no avail, everything is correctly encoded. We tried sending messages to the admin and noticed that he would click on links that are sent to him (though this did not seem to work at the start of the CTF), therefore allowing us to do CSRF attacks on the site. How could we exploit this?

We noticed that there is a session fixation flaw in the login mechanism, as the JSESSIONID is not regenerated when a user logs in.And the only remaining action that can be done on the website is to change the language that is set for the blog page. This is done through a parameter named "locale" which then has the server set a cookie for the user:

Set-cookie: locale="XXX"; path=/HomePage/blog/; HttpOnly

Could we maybe directly inject new HTTP headers and set the admin’s JSESSIONID cookie into the response by inserting CR/LF characters? The answer is no… They are converted to "space" characters in the response, so no new lines allowed :(

Pretty much any other characters are allowed though. So we tried to set multiple cookies in a single set-cookie header, but again this failed. However, it turns out that Tomcat will accept "," as a cookie separator when a request is received. So it is actually possible to smuggle several cookies into a single one! Pretty cool! For example, if you decide to set the locale like this:

?locale=en", JSESSIONID=XXXXXXXXXXXXXXXXXXXXXX, toto="

When your browser sends this cookie to the server, it will look like this:

Cookie: locale="en", JSESSIONID=XXXXXXXXXXXXX, toto=""; JSESSIONID=origsessionid

The server will then see three different cookies, and only take the first JSESSIONID which is the one set by us! We’re definitely on the right track.

The only problem is the cookie that we set for the locale is only set for /HomePage/blog/ and none of the other pages of the site. No login, no access to the admin interface, nothing. So even if we can force the admin to use a specific sessionid, it will only be used on a page that doesn’t interest us…

At this point, we’re pretty sure we’re on the right track and that we just have to find a way to set the cookie for the whole domain instead of the blog page. Once that is done, we can get the admin to click our link, set the cookie and just wait for him to login again and we can reuse the sessionid to access the page as an admin (because of the session fixation flaw).

Now this took ages and a little hint from the organisers to actually get it done. We tried adding various cookie parameters such as an additional path, or domain, secure and so on, but apparently the browser will only use the last path that is specified if there are more than one :(

But (and this is where the orgas gave us a little hint) if you add the path parameter multiple times, Chrome will actually ignore the last one and select one of the ones that was specified before hand. Wtf?

I’m not quite sure what the exact number is, but if you set the following locale, you will actually end up with a JSESSIONID that is valid for the whole web site (at least in the latest version of Chrome).

?locale=en", JSESSIONID=XXXXXXXXXXXXXXXXXXXXXXXXXXX, toto="; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/; path=/HomePage/;

This was discovered 10 minutes before the end of the CTF, so I quickly sent the link to an admin with my own JSESSIONID in there and waited for him to click and hope that he then logged in to the site again. Unfortunately nothing happened, I never got the admin privs and couldn’t access the admin page to get the flag. So I’m wondering if I’m still missing something or if the challenge was broken?

Interesting challenge though!

 

 

Publié dans Events

Finales PHDays 2014

S’étant qualifiés en ligne pour les finales, quelques ingénieurs de SCRT se sont rendus à Moscou pour participer avec l’équipe "w3stormz" à la finale du concours de piratage éthique PHDays.

BoOpw2CIcAANsbv

Le format de la finale était de type "Attaque/Défense" avec un certain nombre de tâches annexes qui pouvaient être débloquées une fois que l’équipe avait récupéré suffisamment de points avec l’attaque et/ou la défense. En parallèle, certaines quêtes étaient accessibles pendant un temps limité.

20140521_090820

Au final, ce sont (encore) les Dragon Sector qui l’ont emporté devant les Int3pids et BalalaikaCr3w. Après un bon départ, nous avons fini en 8ème position sur les 10 équipes présentes.

Malgré une belle diversité des tâches présentes (Web, Reverse, Forensics, Network, Ucucuga, Crypto, Pwn), très peu d’entre elles ont été résolues, même par les premières équipes et c’est au final surtout le score de l’attaque/défense qui a départagé les équipes.

Nous nous sommes par contre démarqués lors du concours "2drunk2hack" en plaçant 4 personnes dans le Top 5! Il s’agit d’un concours basé sur la rapidité et le bypass d’un WAF pour obtenir un max de flags en 30 minutes. Les participants ayant été détectés le plus souvent doivent régulièrement boire un shot de Tequila, d’où le nom du concours. Il faut croire qu’on a su rester discret :)

BoP9cCaIIAAhguN

Au final, PHDays est un événement fort intéressant proposant également des conférences et un nombre impressionant de concours annexes. Nous espérons pouvoir nous qualifier de nouveau l’année prochaine.

Publié dans Events

Neo4j – "Enter the GraphDB"

Following interest for NoSQL (see MongoDB exploit :D), this time I wanted to check Neo4j, the famous Graph Database. As you can see on their blog http://blog.neo4j.org/, Neo4j is really active and updates come really often ! The v1 was released in 2010 and v2 in 2013 and I didn’t find any specific paper about security so it may be interesting… Don’t hesitate to correct me if I say something wrong ! Lire la suite

Publié dans Uncategorized

Analyse d’un malware iOS : Unflod.dylib

Suite à la parution de commentaires sur /r/jailbreak concernant un malware ciblant iOS, je me suis dis qu’une analyse serait intéressante vu que cette plateforme est encore peu ciblée par ce type de menaces du à son architecture.

La première étape fut de récupérer des informations sur le binaire, ie. Entitlements et signature du code. Le premier point n’apporte pas grand chose sur le binaire, à part qu’il peut être débuggé et accéder au Keychain.

checksignBien que n’ayant été trouvée que sur des terminaux jailbreakés, cette bibliothèque est signée avec le compte iPhone Developer de Wang Xin. Ce procédé est étrange vu que le jailbreak désactive la validation de code signé sur iOS.

L’EntryPoint de la bibliothèque est assez simple et ne réalise qu’une seule action: remplacer la fonction SSLWrite du système par une fonction implémentée dans la bibliothèque: replace_SSLWrite. Le hooking de la fonction est réalisée à l’aide de la fonction libsubstrate.dylib!MSHookFunction. La bibliothèque MobileSubstrate est utilisée par  beaucoup d’applications provenant d’AppStore tierce afin de réaliser du Swizzling/hooking, il n’est donc pas étonnant de la voir utilisée ici.

call_mshookfunction

La fonctionnalité de la fonction remplaçant SSLWrite est elle aussi très simple: détecter une tentative d’authentification sur les serveurs d’Apple et intercepter les authentifiants de l’utilisateur. Pour ce faire, la chaine /WebObjects/MZFinance.woa/wa/authenticate est recherchée dans les données envoyées via SSL. Cette chaine fait en général partie des URLs pointants sur *.itunes.apple.com.

searching_iTunes_login

Une fois identifiés, les authentifiants sont envoyés à un serveur en écoute sur le port 7878 soit à l’IP 23.88.10.4, soit à l’IP 23.228.204.55.sending_info

Pour le moment, aucune information n’est disponible quant-à la source de l’infection. Il est toutefois intéressant de voir que les terminaux iOS jailbreakés commencent à être la cible de malware grand-public.

Publié dans forensics | Tagué , , , , ,